diff --git a/I18N_PLACEHOLDER_REMEDIATION.md b/I18N_PLACEHOLDER_REMEDIATION.md new file mode 100644 index 000000000..0af2dcf24 --- /dev/null +++ b/I18N_PLACEHOLDER_REMEDIATION.md @@ -0,0 +1,51 @@ +# I18N Placeholder Remediation + +This document records the repeatable steps used to detect and fix leftover English placeholder text and invalid-quote issues in translation map files under `lib/core/translations/language/`. + +## Problem Patterns + +### 1) English placeholders inside non-English locales + +Symptoms: +- UI shows English strings in a non-English locale. +- `tools/i18n_audit.py --mode englishy` reports items for a locale file. + +Fix: +- Replace English values with accurate localized text. +- Keep placeholder syntax intact (examples: `@minutes`, `{count}`, `{filePath}`, `{error}`). + +### 2) Invalid “smart quotes” used as Dart string delimiters + +Symptoms: +- `flutter analyze` reports `illegal_character`, `expected_token`, `expression_in_map`, `undefined_identifier` in a language file. + +Root cause: +- Curly quotes like `‘ ’` are not valid Dart string delimiters, so map entries stop being parsed as strings. + +Fix: +- Replace `‘` and `’` with ASCII `'` and ensure every entry is in the form `'key': 'value',`. + +## Verification Checklist + +Run these commands from the repo root: + +```bash +python3 tools/i18n_audit.py --mode englishy +flutter analyze lib/core/translations/language/.dart +dart format lib/core/translations/language/.dart +flutter test test/_translations_test.dart +``` + +Recommended additional checks: + +```bash +rg "[‘’]" lib/core/translations/language/.dart +``` + +## Test Convention + +For each locale file, add a `test/_translations_test.dart` test that asserts: +- The map can be imported and accessed. +- Its key set matches `enUS`. +- It contains no empty string values. + diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 16798fdab..6599a0b8a 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -57,6 +57,16 @@ android { } jniLibs { useLegacyPackaging = true + // Google Play 渠道排除高德地图 .so(尚未支持 16KB 页面对齐) + val envFile = rootProject.file("../.env") + if (envFile.exists()) { + val channel = envFile.readLines() + .firstOrNull { it.trim().startsWith("Channel=") } + ?.substringAfter("=")?.trim() + if (channel == "GLOBAL_GOOGLE") { + excludes += setOf("**/libAMapSDK*.so") + } + } } } diff --git a/android/gradle.properties b/android/gradle.properties index f018a6181..7cf4e3166 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,4 @@ org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true +android.max.page.size=16384 diff --git a/doc/ar/privacy_policy.html b/doc/ar/privacy_policy.html new file mode 100644 index 000000000..cee3dd5ac --- /dev/null +++ b/doc/ar/privacy_policy.html @@ -0,0 +1,382 @@ + + + + + + + سياسة خصوصية Voitrans + + + + +
+

سياسة خصوصية Voitrans

+

آخر تحديث: 27 مايو 2025

+

تاريخ السريان: 27 مايو 2025

+ +

مرحباً بكم في استخدام برنامج وخدمات Voitrans

+

1. يتم توفير Voitrans بواسطة شركة Saitong Industries Inc. (المشار إليها فيما بعد بـ "الشركة"). يمكن أن يساعد المستخدمين في إدارة أجهزة Bluetooth ومنتجات أخرى. نحن ندرك أهمية المعلومات الشخصية لمستخدمينا (المشار إليهم فيما بعد بـ "أنت") وأن الحماية الفعالة لمعلوماتك الشخصية هي حجر الأساس للتطور الصحي والمستدام لأعمالنا. شكراً لاستخدامك وثقتك في منتجات أو خدمات Voitrans! نحن ندرك تماماً أن هذه الثقة لا تأتي بسهولة، نلتزم بمبدأ الانفتاح والشفافية، للتعبير لك عن قواعدنا لمعالجة معلوماتك الشخصية، نستخدم طرقاً قانونية ومشروعة وأغراضاً واضحة ومعقولة لمعالجة معلوماتك الشخصية. ملاحظة خاصة: يرجى التأكد من قراءة وفهم سياسة الخصوصية هذه بعناية قبل استخدام منتجاتنا أو خدماتنا حتى تتمكن من اتخاذ الخيارات المناسبة.

+

2. توضح لك سياسة الخصوصية هذه كيف نقوم بجمع واستخدام وتخزين ومشاركة معلوماتك الشخصية عند استخدامك لـ Voitrans. تشير المعلومات الشخصية إلى جميع أنواع المعلومات المسجلة بوسائل إلكترونية أو غيرها والتي يمكن أن تحدد هوية شخص طبيعي معين أو تعكس أنشطة شخص طبيعي معين بمفردها أو بالاشتراك مع معلومات أخرى. يحترم Voitrans ويحمي الخصوصية الشخصية لجميع مستخدمي الخدمة. ما لم ينص على خلاف ذلك في سياسة الخصوصية هذه، لن يكشف Voitrans عن هذه المعلومات للجمهور أو يقدمها لأطراف ثالثة دون إذنك المسبق.

+

3. عندما تستخدم منتج أو خدمة طرف ثالث من خلال منتج أو خدمة App Marketplace، تخضع معلوماتك الشخصية لسياسة خصوصية الطرف الثالث.

+

4. سيتم تحديث سياسة خصوصية Voitrans هذه من وقت لآخر. بموافقتك على اتفاقية استخدام خدمة Voitrans والبدء في استخدام Voitrans، يُعتبر أنك وافقت على جميع بنود سياسة الخصوصية هذه. إذا كنت لا توافق على سياسة الخصوصية هذه، يرجى عدم استخدام برنامج وخدمات Voitrans.

+

5. من أجل تحليل وقياس فعالية الخدمات ذات الصلة، سنستخدم ونكشف عن معلوماتك الشخصية وفقاً لأحكام سياسة الخصوصية هذه.

+ +

ستساعدك سياسة الخصوصية هذه على فهم ما يلي:

+
    +
  • 1 المعلومات التي نجمعها
  • +
  • 2 تخزين المعلومات
  • +
  • 3 أمن المعلومات
  • +
  • 4 كيف نستخدم المعلومات التي نجمعها
  • +
  • 5 مشاركة المعلومات
  • +
  • 6 كيف تدير معلوماتك الشخصية
  • +
  • 7 وصف أذونات التطبيق
  • +
  • 8 الوصول إلى SDK الأطراف الثالثة
  • +
  • 9 حماية القاصرين
  • +
  • 10 سريان وتحديث سياسة الخصوصية
  • +
  • 11 كيفية الاتصال بنا
  • +
+ +

1. المعلومات التي نجمعها

+

1. استخدام Voitrans في البداية: سنبدأ في جمع البيانات حول استخدامك للتطبيق

+

2. قد يحصل Voitrans على معلومات شخصية عنك من أطراف ثالثة أو شركاء أعمال بوسائل قانونية

+

3. من أجل تزويدك بمنتجات وخدمات أفضل، ومنحك أمان الشبكة أثناء الاستخدام، والحفاظ على التشغيل العادي للمنتجات والتحسين والتطوير، ولغرض خدماتنا المعلوماتية، بعد أن تنقر بنشاط للموافقة على سياسة الخصوصية هذه، نستخدم المعلومات التي نقدمها. أثناء الخدمة، بالإضافة إلى المعلومات الشخصية اللازمة لضمان التشغيل العادي للوظائف الأساسية للتطبيق وفقاً للقوانين واللوائح الوطنية، سنجمع معلومات شخصية أخرى منك:

+

3.1 من أجل تحديد المستخدمين المعرضين للخطر، والحكم على أصالة المستخدمين ومنع الاحتيال بشكل شامل، سنقرأ معلومات جهازك في كل مرة تفتح فيها البرنامج، بما في ذلك: (طراز الجهاز، عنوان MAC للجهاز، المعرف الفريد للجهاز (IMEI، AndroidID، Device ID، MEID، UUID، GAID، OAID، IDFA، OpenUDID، GUID، IMSI، CCID، إلخ) MEID، الرقم التسلسلي، SSID وBSSID لـ WIFI)، قراءة عنوان Bluetooth، إصدار نظام التشغيل، اسم نظام التشغيل، معلومات حساب تسجيل الدخول وكلمة المرور للمستخدم؛

+

3.2 عندما تستخدم منتجاتنا وخدماتنا، قد نجمع معلومات معينة من خلال معلومات سجل الشبكة أو برامج وتطبيقات معينة، قد تتضمن هذه المعلومات: تفاصيل استخدام المنتجات والخدمات، مثل وقت فتح تطبيقك ومدة الاستخدام وعنوان الصفحة التي تمت زيارتها؛ معلومات أحداث الجهاز، مثل الأعطال وأنشطة النظام وما إلى ذلك، لتحسين جهازك وتحسين خدماتنا؛

+

3.3 لتحديد التطبيقات التي يكون فيها الجهاز معرضاً للخطر، وتوفير خدمات وظيفية أكثر أماناً. لذلك، نحتاج إلى الحصول على قائمة التطبيقات/التطبيقات المثبتة لديك في هذه العملية لضمان التشغيل العادي للمنتج وحماية أمان الجهاز.

+

3.4 من أجل تحليل استخدام وظائف التطبيق من قبل المستخدمين وتحديد أصالة المستخدمين، نحتاج إلى إجراء إحصاءات البيانات وجمع معلومات الجهاز المذكورة أعلاه، بما في ذلك عنوان MAC للجهاز والمعرف الفريد للجهاز، عندما يكون جهازك قيد الاستخدام.

+

3.5 إشارة الجهاز: حالة الشبكة للجهاز الذي تستخدمه، ومعلومات نقطة وصول WIFI، إلخ.

+

3.6 معلومات الموقع: قد نستخدم GPS أو WiFi أو وسائل تقنية أخرى لجمع ومعالجة معلومات حول موقعك لتحديث المعلومات المحلية وتقديم خدمات المحتوى وما إلى ذلك.

+

لمزيد من المعلومات، يرجى النقر على "قائمة جمع المعلومات الشخصية".

+ +

1. بالنسبة للمعلومات الشخصية الأكثر حساسية في المعلومات المذكورة أعلاه، مثل معلومات جهاز المستخدم (رقم IMEI وحالة المكالمة ورقم التعريف)، ومعلومات موقع GPS، ومحتوى الوسائط والصور وحقوق الوصول إلى الملفات، سنحصل على موافقتك قبل الجمع. بالنسبة لبعض المعلومات غير الحساسة، قد يكون الجمع افتراضياً وتلقائياً. يمكنك تقييد جمعنا للمعلومات ذات الصلة أو استخدام أذونات معينة من جهازك المحمول عن طريق ضبط خيار الإعدادات لجهازك المحمول. عندما تقيد وصولنا إلى إذن معين، قد لا نتمكن من الاستمرار في تقديم الخدمات المقابلة لك، ولن نعالج معلوماتك المقابلة بعد الآن.

+

2. لن نجمع رقم بطاقة هويتك أو المعلومات البيومترية الشخصية أو رقم الحساب البنكي أو معلومات الممتلكات أو معلومات الائتمان أو المعلومات الصحية والفسيولوجية وغيرها من المعلومات الشخصية الحساسة.

+

3. حول الأذونات الحساسة: من أجل استخدام وظائف التطبيق بشكل صحيح، يحتاج المنتج إلى الحصول على الأذونات التالية لتقديم خدمات وظيفية متعلقة بالمنتجات العادية.

+ +

1 الحصول على أذونات القراءة والكتابة للتخزين

+

1 كيفية الحصول: نافذة منبثقة، عند الحصول على الإذن، سينقر المستخدم بنشاط على الموافقة وسيستخدم التطبيق هذا الإذن

+

2 الغرض ونطاق الاستخدام: يُستخدم لمسح ملفات ذاكرة التخزين المؤقت للموارد والصور المصغرة في النظام، وتحميل موارد الموسيقى وصور المنتجات. يتم عرضها على واجهة التطبيق لتسهيل المشاهدة والتشغيل من قبل المستخدمين

+ +

2 الحصول على إذن قائمة التطبيقات المثبتة

+

1 كيفية الحصول: نافذة منبثقة، عند الحصول على الإذن، سينقر المستخدم بنشاط على الموافقة وسيستخدم التطبيق هذا الإذن

+

2 الغرض ونطاق الاستخدام: عندما يحتاج التطبيق إلى استخدام خدمات الترويج الإعلاني، تحتاج منصة الإعلانات الخارجية، Youmon +SDK، إلى الحصول على "إذن قائمة البرامج المثبتة" للجهاز لمنع دفع التطبيقات التي يمتلكها المستخدم بالفعل وتحسين تجربة المستخدم.

+ +

3 إذن الحصول على معلومات حالة الجهاز

+

يشمل: (طراز الجهاز، عنوان MAC للجهاز، المعرف الفريد للجهاز (IMEI، AndroidID، Device ID، MEID، UUID، GAID، OAID، IDFA، OpenUDID، GUID، IMSI، CCID، إلخ) MEID، الرقم التسلسلي، SSID وBSSID لـ WIFI، قراءة عنوان Bluetooth)، إصدار نظام التشغيل، اسم نظام التشغيل، إلخ؛

+

1 كيفية الحصول: نافذة منبثقة، عند الحصول على الإذن، سينقر المستخدم بنشاط على الموافقة وسيستخدم التطبيق هذا الإذن

+

2 الغرض ونطاق الاستخدام: عند استخدام تطبيقنا، من أجل تحليل استخدام المستخدم لوظائف التطبيق والحكم على أصالة المستخدم، سنقوم بمزامنة الإذن مع SDK الأطراف الثالثة، بما في ذلك Autonavi SDK، Youmon +SDK، إلخ.

+ +

4 الوصول إلى معلومات الموقع

+

1 كيفية الحصول: نافذة منبثقة، عند الحصول على الإذن، سيستخدم المستخدم هذا الإذن فقط عندما ينقر بنشاط على الموافقة مع التطبيق.

+

2 الغرض ونطاق الاستخدام: عندما يحتاج التطبيق إلى استخدام GPS أو WiFi أو وظائف أخرى، يحتاج المنتج إلى جمع موقعك ومعلوماتك للبحث عن أجهزة Bluetooth في المواقع القريبة.

+

ملاحظة: لمزيد من أذونات التطبيق، راجع هذا المستند "سياسة الخصوصية" القسم 7 "وصف أذونات التطبيق"

+ +

2. تخزين المعلومات

+

1. أين يتم تخزين المعلومات

+

سيتم تخزين المعلومات الشخصية التي نجمعها وننشئها في جمهورية الصين الشعبية على خوادمنا و/أو خوادم الشركات التابعة لنا.

+

2. تخزين ومعالجة المعلومات

+

نحتفظ بمعلوماتك الشخصية فقط للفترة اللازمة لتحقيق الغرض أو طالما يتطلب القانون واللوائح. بعد التوقف عن استخدام هذا المنتج، سنتوقف فوراً عن جمع ومعالجة معلوماتك الشخصية وبيانات التطبيق. عند تجاوز الفترة المذكورة أعلاه، سنحذف أو نجعل المعلومات الشخصية التي قدمتها لنا مجهولة الهوية.

+

بالإضافة إلى الوظائف الضرورية، يحتاج Voitrans إلى التقدم للحصول على أذونات النظام المقابلة. لا يخزن جانب الخادم السحابي المعلومات الشخصية للمستخدم، وسيتم إخفاء هوية SDK الطرف الثالث الذي يتم الوصول إليه وإزالة تعريفه بواسطة مزود الخدمة (Amu Statistics SDK، Autonavi SDK)، لذلك لا يمكن تتبع المستخدمين. سيتم حذف المعلومات المخزنة على هاتف المستخدم تلقائياً عندما يقوم المستخدم بإلغاء تثبيت Voitrans أو مسح ذاكرة التخزين المؤقت.

+ +

3. أمن المعلومات

+

1. يخزن Voitrans ويحمي معلوماتك الشخصية باستخدام إجراءات وتقنيات أمنية متوافقة مع معايير الصناعة، مثل المصادقة وتشفير البيانات وتقييد الوصول إلى مركز البيانات وإجراءات أمنية أخرى لضمان أن معلوماتك آمنة من الكشف والتغيير والتدمير. على الرغم من إجراءات الأمان المذكورة أعلاه، يرجى ملاحظة أنه لا يوجد إجراء أمني يمكن أن يكون آمناً بنسبة 100%.

+

2. عند استخدامك للخدمات التي يقدمها Voitrans، يرجى حماية معلوماتك الشخصية. إذا اكتشفت أن معلوماتك الشخصية قد تعرضت للاختراق، يرجى الاتصال بنا فوراً حتى نتمكن من اتخاذ الإجراءات المناسبة.

+ +

4. كيف نستخدم المعلومات التي نجمعها

+

1. عند تنفيذ وظائف أعمال التطبيق، قد نستخدم معلوماتك الشخصية لضمان سلامة وأمان المنتجات والخدمات التي نقدمها لك؛

+

2. سنفهم عاداتك في الاستخدام من خلال المعلومات المجمعة، وبمساعدة تحليل البيانات، نحدد قبول الخدمات وعاداتك في الاستخدام وما إلى ذلك، من أجل اختبار وإنشاء منتجات ووظائف وخدمات جديدة، وتحسين مستوى الخدمة، ومساعدتنا في تحسين الخدمات الحالية وتطوير خدمات جديدة؛

+

3. قد نستخدم معلوماتك الشخصية لاستطلاعات العملاء حول المنتجات والخدمات، ولإرسال إشعارات حول المنتجات والخدمات، وللترويج التجاري؛

+

4. قد نستخدم معلوماتك للتحليل الداخلي والبحث المتعلق بالتطبيق؛

+ +

5. مشاركة المعلومات

+

في الوقت الحالي، لن نشارك أو ننقل معلوماتك الشخصية بشكل نشط إلى أطراف ثالثة خارج الشركة. إذا كانت هناك مشاركة أو نقل آخر لمعلوماتك الشخصية، فسنؤكد مباشرة أو نتأكد من أن الطرف الثالث قد حصل على موافقتك الصريحة على السلوك المذكور أعلاه.

+

لن نكشف علناً عن المعلومات الشخصية التي نجمعها. إذا كان من الضروري الكشف عنها علناً، فسنبلغك بالغرض من الكشف العلني ونوع المعلومات المكشوفة والمعلومات الحساسة التي قد تكون متضمنة ونحصل على موافقتك الصريحة.

+

مع استمرار تطور أعمالنا، قد نشارك في عمليات الاندماج والاستحواذ ونقل الأصول ومعاملات أخرى، وسنبلغك بالظروف ذات الصلة، وفقاً للقوانين واللوائح وبما لا يقل عن المعايير المطلوبة في هذا الدليل لمواصلة حماية معلوماتك الشخصية أو مطالبة المتحكم الجديد بمواصلة حماية معلوماتك الشخصية.

+

بالإضافة إلى ذلك، وفقاً للقوانين واللوائح والمعايير الوطنية ذات الصلة، يجوز لنا مشاركة ونقل والكشف علناً عن المعلومات الشخصية دون إذن مسبق وموافقة صاحب المعلومات الشخصية في الظروف التالية:

+
    +
  • 1 مرتبطة مباشرة بالأمن القومي وأمن الدفاع؛
  • +
  • 2 مرتبطة مباشرة بالسلامة العامة والصحة العامة أو المصالح العامة الكبرى؛
  • +
  • 3 مرتبطة مباشرة بالتحقيق الجنائي والملاحقة القضائية والمحاكمة وتنفيذ الأحكام؛
  • +
  • 4 من أجل حماية حياة وممتلكات والحقوق والمصالح المشروعة الكبرى الأخرى لصاحب البيانات الشخصية أو أفراد آخرين، ولكن يصعب الحصول على موافقة الشخص؛
  • +
  • 5 المعلومات الشخصية التي كشف عنها صاحب المعلومات الشخصية للجمهور؛
  • +
  • 6 جمع المعلومات الشخصية من المعلومات المكشوفة علناً بشكل قانوني، مثل التقارير الإخبارية المشروعة والكشف الحكومي عن المعلومات وقنوات أخرى.
  • +
+ +

6. كيف تدير معلوماتك الشخصية

+

وفقاً للقوانين واللوائح والمعايير ذات الصلة في الصين، وكذلك الممارسات الشائعة في البلدان والمناطق الأخرى، نضمن لك ممارسة الحقوق التالية فيما يتعلق بمعلوماتك الشخصية:

+ +

1. تصحيح معلوماتك الشخصية

+

إذا اكتشفت خطأ في معلوماتك الشخصية التي نعالجها، فلديك الحق في تصحيح أو تحديث المعلومات الخاطئة أو غير الكاملة. إذا لم تتمكن من العمل بشكل مستقل في مركز الحساب، يمكنك إرسال بريد إلكتروني إلى saitong.voitrans@gmail.com للتواصل معنا

+ +

2. حذف معلوماتك الشخصية

+

في الحالات التالية، يمكنك تقديم طلب إلينا لحذف معلوماتك الشخصية:

+
    +
  • إذا عالجنا المعلومات الشخصية بالمخالفة للقوانين واللوائح؛
  • +
  • إذا جمعنا واستخدمنا معلوماتك الشخصية دون موافقتك؛
  • +
  • إذا كانت معالجتنا للمعلومات الشخصية تنتهك اتفاقيتنا معك؛
  • +
  • إذا لم تعد تستخدم منتجاتنا أو خدماتنا؛
  • +
  • إذا لم نعد نقدم لك المنتجات أو الخدمات.
  • +
+

تواصل معنا. سنعالج طلبك على saitong.voitrans@gmail.com. سنرسل لك رداً خلال 30 يوم عمل من الاستلام

+ +

3. تغيير نطاق موافقتك

+

يمكنك الاتصال بنا عبر البريد الإلكتروني saitong.voitrans@gmail.com. بناءً على طلبك، لن نقوم بعد الآن بجمع أو استخدام أو الكشف عن معلوماتك الشخصية. يرجى ملاحظة أن سحب موافقتك أو حذف معلوماتك الشخصية قد يؤثر على استخدامك لبعض خدماتنا.

+ +

4 الوصول إلى المعلومات الشخصية ونسخها

+

يمكنك، وفقاً لأحكام القوانين ذات الصلة، تقديم IMEI (الرقم التسلسلي للهاتف) أو OAID أو Android ID بعد معلومات الحساب ومعلومات أخرى، والتقدم إلينا للوصول إلى معلوماتك الشخصية ونسخها، يمكنك إرسال بريد إلكتروني إلى 3514406195@qq.com للتواصل معنا.

+ +

5. استجابةً لطلبك المذكور أعلاه

+

لأغراض أمنية، قد تحتاج إلى تقديم طلب كتابي أو إثبات هويتك بطريقة أخرى. قد نطلب منك التحقق من هويتك قبل معالجة طلبك. بالنسبة لطلبك المعقول، سنستجيب ونتعامل معه في الوقت المناسب. قد نرفض الطلبات المتكررة بشكل غير ضروري، أو التي تتطلب تكنولوجيا كبيرة (مثل تطوير أنظمة جديدة أو إجراء تغييرات جوهرية على الممارسات الحالية)، أو التي تشكل خطراً على المصالح المشروعة للآخرين، أو غير العملية للغاية.

+

في الظروف التالية، وفقاً لمتطلبات القوانين واللوائح، لن نتمكن من الاستجابة لطلبك:

+
    +
  • متعلقة بالأمن القومي وأمن الدفاع؛
  • +
  • فيما يتعلق بالتحقيق الجنائي والملاحقة القضائية والمحاكمة؛
  • +
  • وجود أدلة كافية على أن لديك نية خبيثة ذاتية أو إساءة استخدام للحقوق؛
  • +
  • الاستجابة لطلبك ستسبب ضرراً جسيماً بالحقوق والمصالح المشروعة لك أو لأفراد ومنظمات أخرى.
  • +
+ +

6. إلغاء الحساب

+

يمكن للمستخدم إجراء [إلغاء الحساب] في التطبيق. خطوات العملية:

+
    +
  1. اذهب إلى صفحة [حسابي]
  2. +
  3. انقر على زر [الإعدادات] في الأعلى
  4. +
  5. انقر على [إلغاء الحساب] للتأكيد
  6. +
+

بعد تسجيل الخروج، يتم مسح معلومات حساب المستخدم

+ +

7. وصف أذونات التطبيق

+

من أجل تقديم منتجات وخدمات أفضل، عند استخدامك للبرنامج، سنتقدم للحصول على الحقوق التالية، وعند دخولك الصفحة الرئيسية أو استخدام الوظيفة سيُطلب الإذن، وإذا رفضت فلن تعمل بعض الوظائف المقابلة بشكل طبيعي. يتم وصف الأغراض والتذكيرات المحددة للأذونات بالتفصيل على النحو التالي:

+ +

1 أذونات الموقع:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

استخدام WiFi أو محطة الجوال الأساسية للحصول على معلومات خط العرض والطول لموقع المستخدم

+

عند استخدامك Voitrans، سنبحث عن جهاز Bluetooth الخاص بك المرفق بناءً على موقعك الجغرافي. في الوقت نفسه، من أجل تقديم خدمات أكثر استقراراً وتحسين المنتجات وتحسين التجربة، سنشارك المعلومات المذكورة أعلاه مع ثلاث حزم SDK، مثل Youmon وAutonavi، للحصول على بيانات تشغيل وخدمات وظيفية Voitrans.

+

طريقة التذكير: يتم عرض مطالبة تشير إلى إذن بدء التطبيق لأول مرة، مما يتطلب من المستخدم تأكيد القبول. اتفاقية المستخدم وسياسة الخصوصية.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

هذا الإذن مطلوب عند الوصول إلى تطبيق لأداء وظائف إدارة التطبيق.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

3 أذونات الشبكة:

+

android.permission.INTERNET

+

عند استخدامك، هذه الأذونات مطلوبة لخدمات المعلومات وخدمات ترقية الإصدار لـ Voitrans، ومن أجل تحسين تجربة المستخدم وتحسين قدرات الخدمة، ستستخدم حزم SDK الأطراف الثالثة مثل Friends أيضاً هذه الأذونات.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

4 أذونات الحصول على حالة الشبكة:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

يُستخدم للحصول على ما إذا كان اتصال الشبكة الحالي صالحاً، وتحديد ما إذا كانت بيئة 4G الحالية، وما إذا كان يجب التذكير بتغييرات بيئة الشبكة، مما يؤثر على تحميل محتوى المعلومات. يتم التقدم لهذا الإذن عند استخدامك Voitrans.

+

تؤثر التغييرات في حالة الشبكة على تحميل البيانات وتنزيلها. لذلك، سيتم مشاركة إذن الوصول إلى حالة الشبكة مع الأصدقاء + ومنصات أخرى.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

5 أذونات الحصول على قائمة المهام:

+

android.permission.GET_TASKS

+

يُستخدم هذا الإذن للحصول على قائمة التطبيقات لوظيفة إدارة البرامج. عند استخدام وظيفة إدارة البرامج، يلزم قراءة التطبيقات المثبتة على الهاتف المحمول.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

6 الحصول على إذن عنوان MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

عند استخدامك Voitrans، سيحتاج التطبيق إلى الحصول على أذونات عنوان MAC:

+

عندما يحتاج التطبيق إلى الإبلاغ عن بيانات التحويل المستهدفة، تحتاج منصات الأطراف الثالثة مثل Youmon +SDK إلى استخدام MAC.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

7 الحصول على إذن تسجيل الصوت

+

android.permission.RECORD_AUDIO

+

عند استخدامك لوظيفة الإدخال الصوتي لـ Voitrans، تحتاج إلى استخدام إذن تسجيل الصوت، ويُستخدم بشكل رئيسي الإدخال الصوتي للترجمة والوظائف ذات الصلة الأخرى.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية، تظهر نافذة منبثقة ديناميكية للمستخدم عند الحاجة.

+ +

8 الحصول على إذن SSID لـ WIFI

+

عند استخدام هذا الإذن، يقرأ التطبيق إذن SSID لـ WIFI:

+

نطاق الاستخدام والغرض: عندما يحتاج التطبيق إلى استخدام خدمات تحليل البيانات، تحتاج منصات الأطراف الثالثة مثل +SDK إلى قراءة "إذن WIFI SSID" للجهاز لتزويد المستخدمين بخدمات وظيفية أكثر دقة وفعالية.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

9 الحصول على وصول Bluetooth

+

عند استخدام هذا الإذن، يقرأ التطبيق إذن Bluetooth:

+

نطاق الاستخدام والغرض: أجهزة Bluetooth للبحث عن الملحقات وتكوينها، مثل سماعات Bluetooth وساعات Bluetooth وما إلى ذلك. سهل الإدارة من قبل المستخدمين

+

طريقة التذكير: يتم عرض مطالبة تشير إلى إذن بدء التطبيق لأول مرة، مما يتطلب من المستخدم تأكيد القبول. اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

10 الحصول على إذن BSSID لـ WiFi

+

عندما يحتاج التطبيق إلى تمييز وتحديد المستخدم لتقديم خدمات وظيفية وإحصاءات البيانات، سيقرأ إذن "WiFi BSSID" للجهاز لـ:

+

نطاق الاستخدام والغرض: 1 منصات الأطراف الثالثة: مثل Youmeng SDK، Bugly SDK، Autonavi SDK

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

11 الحصول على إذن تثبيت التطبيق

+

android.permission.REQUEST_INSTALL_PACKAGES

+

سيستخدم البرنامج إذن تثبيت التطبيق، والذي يُستخدم بشكل رئيسي للسماح للمستخدمين بتثبيت إصدار جديد وتجربة ميزات جديدة عند توفر إصدار جديد.

+

طريقة التذكير: اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

12 الحصول على أذونات الكاميرا

+

android.permission.CAMERA

+

يستخدم Voitrans أذونات الكاميرا لمسح رموز QR وربط أجهزة Bluetooth مثل سماعات Bluetooth والساعات.

+

طريقة التذكير: يتم عرض مطالبة تشير إلى إذن بدء التطبيق لأول مرة، مما يتطلب من المستخدم تأكيد القبول. اتفاقية المستخدم ووصف سياسة الخصوصية.

+ +

ملاحظة خاصة:

+

1 تكامل التطبيق داخل SDK الحلفاء، Scott map SDK بموافقة المستخدم على السماح بعد الاستخدام، التطبيق في الخلفية/المقدمة لـ ICCID، IMSI، IMEI، SN، ANDROID، BSSID، ANDROID ID، SSID، IMSI ومعلومات شخصية أخرى؛

+

ملاحظات: المزيد يرجى الاطلاع على محتوى وأذونات SDK ذات الصلة التالية [VIII. الوصول إلى قائمة SDK الأطراف الثالثة]

+ +

8. الوصول إلى SDK الأطراف الثالثة

+

1 من أجل ضمان التشغيل المستقر والتنفيذ الوظيفي لعميلنا، حتى تتمكن من استخدام والاستمتاع بمزيد من الخدمات والوظائف، سيقوم تطبيقنا بتضمين مجموعات أدوات تطوير البرامج (SDK) أو تطبيقات مماثلة أخرى من أطراف ثالثة، ستقوم هذه الأطراف الثالثة بجمع ومعالجة المعلومات ذات الصلة وفقاً لسياسات الخصوصية الخاصة بها، من أجل تقديم الوظائف وخدمات الإعلان بشكل طبيعي. يمكنك التعرف على قواعد جمع ومعالجة المعلومات الخاصة بالطرف الثالث في القسم التالي. سنجري اختبارات أمنية صارمة على مجموعات التطوير (SDK) للشركاء للحصول على المعلومات، من أجل حماية الاستخدام المعقول وأمان معلوماتك الشخصية. يرجى ملاحظة أن SDK الأطراف الثالثة قد تغير أنواع معالجة البيانات بسبب ترقيات الإصدار الخاصة بها. يرجى الرجوع إلى سياسات الخصوصية المنشورة من قبل SDK الأطراف الثالثة. انظر التفاصيل أدناه أو انقر لعرض قائمة SDK الأطراف الثالثة.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

المعلومات المحصل عليها: رقم الجهاز، عنوان IP، معلومات برامج الجهاز، رمز تعريف الجهاز (IMEI، Android ID، IDFA، OAID، OPENUDID، GUID، ICCID، معلومات IMSI لبطاقة SIM، IP، عنوان MAC)، معرف الجهاز، المنطقة، معلومات التطبيقات المتعلقة بالجهاز، ومعلومات سجل الخدمة الأخرى

+

الغرض من الاستخدام: تسجيل الدخول والمشاركة عبر WeChat

+

المطور: Shenzhen Tencent Computer Systems Company Limited

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

المعلومات المحصل عليها: اسم التطبيق، رقم إصدار التطبيق، علامة تجارية وطراز الجهاز، نظام التشغيل، معلومات شركة الاتصالات، دقة الشاشة، معلومات المستشعرات (المتجه، التسارع، الضغط، الاتجاه، المغناطيسية الأرضية، الجيروسكوب، درجة الحرارة، مستشعر الضوء، إشارة NMEA)، معلومات قوة إشارة الجهاز

+

الغرض من الاستخدام: الملاحة باستخدام Amap

+

المطور: Beijing Gaode Tuqiang Technology Co., Ltd.

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

المعلومات المحصل عليها: اسم التطبيق، إصدار التطبيق، علامة تجارية وطراز الجهاز، نظام التشغيل، معلومات الشبكة، قوة إشارة الجهاز، إلخ.

+

الغرض من الاستخدام: عرض الخريطة والتفاعل

+

المطور: Beijing Gaode Tuqiang Technology Co., Ltd.

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

المعلومات المحصل عليها: معلومات الموقع (GPS، Wi-Fi، المحطات الأساسية)، معلومات الجهاز، معلومات الشبكة، إلخ.

+

الغرض من الاستخدام: تقديم خدمات الموقع

+

المطور: Beijing Gaode Tuqiang Technology Co., Ltd.

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

المعلومات المحصل عليها: اسم التطبيق، إصدار التطبيق، معلومات الجهاز، معلومات الشبكة، إلخ.

+

الغرض من الاستخدام: أدوات الخرائط وتحسين العرض

+

المطور: Beijing Gaode Tuqiang Technology Co., Ltd.

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

المعلومات المحصل عليها: معرفات الأجهزة، معلومات أساسية عن الجهاز، قائمة البرامج المثبتة، ومعلومات الشبكة (راجع سياسة الخصوصية الرسمية للتفاصيل)

+

الغرض من الاستخدام: تسجيل الدخول إلى حساب Alipay واستدعاء الدفع

+

المطور: Alipay (Hangzhou) Information Technology Co., Ltd.

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

المعلومات المحصل عليها: إصدار SDK/API، المنصة، الطابع الزمني، معرف التطبيق، إصدار التطبيق، الشركة المصنعة للجهاز، إصدار نظام التشغيل، الإعدادات المحلية، المنطقة الزمنية، حالة الشبكة (Wi-Fi، إلخ)، سجلات الشبكة، بيانات الأعطال والاستخدام، عنوان IP، إلخ. (راجع سياسة الخصوصية الرسمية للتفاصيل)

+

الغرض من الاستخدام: خدمة مراقبة جودة التطبيق وتقارير البيانات

+

المطور: Shenzhen Tencent Computer Systems Company Limited

+

طريقة الجمع: جمع ذاتي بواسطة SDK

+

رابط سياسة الخصوصية: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. حماية القاصرين

+

قد يشمل مستخدمو منتجاتنا وخدماتنا قاصرين دون سن 18 عاماً، يجب على المستخدمين القاصرين طلب مشورة والديهم أو أولياء أمورهم بشأن سياسة الخصوصية هذه قبل استخدام منتجاتنا، واستخدام خدماتنا أو تقديم معلوماتهم إلينا بعد الحصول على موافقة وإرشاد والديهم أو أولياء أمورهم. يمكن لأولياء أمور القاصرين الذين لديهم أسئلة الاتصال بنا من خلال تفاصيل الاتصال في سياسة الخصوصية هذه.

+

إذا كنت لا توافق على جمع المعلومات المذكورة أعلاه من قبل مقدمي خدمات الأطراف الثالثة المذكورين أعلاه، يرجى التوقف عن استخدام البرنامج فوراً. أثناء استخدامك للبرنامج، ستقوم هذه الأطراف الثالثة بجمع ومعالجة المعلومات ذات الصلة وفقاً لسياسات الخصوصية الخاصة بها لتقديم بعض الوظائف والإعلانات وخدمات أخرى. إذا تم تسريب المعلومات بسبب جمع المعلومات المذكورة أعلاه من قبل مقدم خدمة الطرف الثالث ذي الصلة، يتحمل مقدم خدمة الطرف الثالث ذو الصلة المسؤولية القانونية المقابلة.

+ +

10. سريان وتحديث سياسة الخصوصية

+

1. تسري سياسة الخصوصية هذه من تاريخ النشر.

+

2. مع تطور أعمالنا وتغيرها، قد تتغير سياسة الخصوصية الخاصة بنا. نحتفظ بالحق في تغيير سياسة الخصوصية الخاصة بنا في أي وقت، لذا يرجى التحقق بشكل متكرر. إذا أجرينا تغييرات على سياسة الخصوصية الخاصة بنا، فسننشر هذه التحديثات على موقعنا الإلكتروني وتطبيقاتنا وحيثما نراه مناسباً لإبقائك على اطلاع. إذا تم تحديث سياسة الخصوصية، فستكون سارية من تاريخ التحديث. استمرارك في استخدام منتجاتنا أو خدماتنا يعني أنك توافق على سياسة الخصوصية المعدلة الخاصة بنا.

+ +

11. كيفية الاتصال بنا

+

Saitong Industries Inc تأسست في 22 نوفمبر 2024، العنوان المسجل: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. إذا كنت ترغب في معرفة المزيد عن شركتنا ومنصتنا، يمكنك الاتصال بنا من خلال معلومات الاتصال المقدمة في هذه السياسة (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/ar/user_agreement.html b/doc/ar/user_agreement.html new file mode 100644 index 000000000..b85dbda82 --- /dev/null +++ b/doc/ar/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + اتفاقية مستخدم تطبيق Voitrans + + + +
+
العربية
+ +

اتفاقية مستخدم تطبيق Voitrans

+ +

تُخبرك شروط وأحكام الاستخدام هذه بكيفية الوصول إلى تطبيق Voitrans واستخدامه والخدمات عبر الإنترنت ("الخدمات"). تُذكّر شركة Saitong Industries Inc. (المشار إليها فيما بعد بـ "Saitong") المستخدمين بقراءة وفهم اتفاقية المستخدم هذه (المشار إليها فيما بعد بـ "الاتفاقية") بعناية وبشكل كامل. يجب على المستخدمين قراءة وفهم شروط هذه الاتفاقية بعناية تامة. يرجى القراءة بعناية واختيار قبول أو رفض هذه الاتفاقية. سيُعتبر استخدامك لتطبيق Voitrans APP (المشار إليه فيما بعد بـ "التطبيق" أو "البرنامج") قبولاً لهذه الاتفاقية وأنك توافق على الالتزام بشروطها. إذا كنت لا توافق على هذه الاتفاقية، فلا تستخدم التطبيق.

+

تحتفظ Saitong بالحق في تعديل هذه الاتفاقية، وسيتم نشر الشروط المحدثة للاتفاقية في هذا التطبيق، وتكون سارية من تاريخ النشر.

+ +

1. القواعد العامة

+

1.1 هذا التطبيق هو برنامج تقدمه Saitong للاتصال بمنتجات سماعات الرأس التي تصدرها Saitong وشركاتها الشريكة. حقوق الملكية والتشغيل للبرنامج والخدمات ذات الصلة مملوكة بالكامل لشركة Saitong.

+

1.2 هذه الاتفاقية هي اتفاق بينك (المشار إليه فيما بعد بـ "المستخدم") وبين الشركة وشركائها وشركاء التشغيل (المشار إليهم فيما بعد بـ "الشركاء") فيما يتعلق باستخدام المستخدم للتطبيق والخدمات ذات الصلة.

+

1.3 يتضمن البرنامج والخدمات:

+

1.3.1 يوفر البرنامج لمستخدمي Voitrans الاتصال والربط مع Voitrans، وإدارة إعدادات الوظائف وخدمات برمجية أخرى، وفقاً لخدمات البرنامج الفعلية التي يقدمها التطبيق.

+

1.3.2 تحديثات وترقيات وخدمات أخرى للبرنامج.

+ +

2. نطاق ترخيص البرنامج

+

2.1 نمنح المستخدم ترخيصاً شخصياً وغير قابل للتحويل وغير قابل للترخيص من الباطن وغير حصري للبرنامج.

+

2.2 يمكن للمستخدمين تثبيت واستخدام وعرض وتشغيل البرنامج على جهاز محمول واحد لأغراض غير تجارية. ومع ذلك، لا يجوز للمستخدم تثبيت أو استخدام أو تشغيل البرنامج لأغراض تجارية، أو نسخ أو تغيير أو تعديل أو ربط أو تشغيل البرنامج أو البيانات المنشورة في ذاكرة أي جهاز طرفي أثناء تشغيل البرنامج أو بيانات التفاعل بين العميل والخادم أثناء تشغيل البرنامج، أو إنشاء أي منتجات مشتقة. يتضمن ذلك، على سبيل المثال لا الحصر، استخدام الإضافات أو الملحقات أو أدوات/خدمات الأطراف الثالثة غير المصرح بها للوصول إلى البرنامج والأنظمة ذات الصلة. للبيع التجاري والنسخ والتوزيع، مثل التثبيت المسبق للبرنامج والتجميع، يجب الحصول على إذن وتفويض كتابي.

+

2.3 لا يجوز للمستخدم تثبيت البرنامج على أجهزة طرفية أخرى دون إذن صريح من المنشئ، بما في ذلك على سبيل المثال لا الحصر أجهزة التلفزيون وأجهزة الاستقبال الرقمية وأجهزة الألعاب وغيرها من الأجهزة.

+

2.4 باستثناء ما هو مصرح به صراحةً في هذه الاتفاقية، لا تُمنح أي حقوق أخرى للمستخدم، ويجب على المستخدم الحصول على موافقة كتابية لاستخدام حقوق أخرى.

+ +

3. ترقية البرنامج

+

3.1 يجب على المستخدم اختيار إصدار البرنامج المناسب لإعداد الجهاز الطرفي المثبت. وإلا فإن مشاكل البرنامج أو مشاكل الجهاز أو الأضرار الناجمة عن أي إصدار برنامج غير مناسب لنوع الجهاز تكون مسؤولية المستخدم وحده.

+

3.2 من أجل تحسين تجربة المستخدم وتحسين محتوى الخدمة، يحق لشركة Saitong تزويدك بإصدارات بديلة ومعدلة ومحدثة من البرنامج من وقت لآخر. يتم تمكين وظيفة "تذكير الترقية" للمستخدمين بشكل افتراضي. بعد إصدار نسخة جديدة من البرنامج، لا تضمن Saitong استمرار توفر النسخة القديمة من البرنامج.

+ +

4. مواصفات الاستخدام

+

4.1 يجوز للمستخدمين استخدام البرنامج والخدمات وفقاً لهذه الاتفاقية بشرط الامتثال للقانون وهذه الاتفاقية، ولا يجوز للمستخدمين القيام بالأعمال التالية:

+

4.1.1 حذف جميع معلومات حقوق النشر على البرنامج والنسخ الأخرى، وتعديل أو حذف أو التحايل على التدابير التقنية التي وضعها البرنامج لحماية حقوق الملكية الفكرية.

+

4.1.2 الهندسة العكسية للبرنامج، مثل التفكيك أو فك التجميع أو محاولات أخرى للحصول على الكود المصدري للبرنامج.

+

4.1.3 عن طريق تعديل أو تزوير التعليمات والبيانات في تشغيل البرنامج، أو إضافة أو حذف أو تغيير وظيفة أو تأثير تشغيل البرنامج، أو البرامج أو الأساليب المستخدمة للأغراض المذكورة أعلاه للتشغيل أو النشر للجمهور، بغض النظر عما إذا كانت هذه الأعمال لأغراض تجارية.

+

4.1.4 استخدام البرنامج لأي سلوك يهدد أمن الشبكة، بما في ذلك على سبيل المثال لا الحصر: استخدام بيانات غير مصرح بها أو الوصول إلى خوادم/حسابات غير مصرح بها؛ الوصول إلى الشبكات العامة أو أنظمة التشغيل الأخرى دون إذن وحذف أو تعديل أو إضافة معلومات مخزنة؛ محاولات غير مصرح بها لاستكشاف أو فحص أو اختبار نقاط ضعف نظام أو شبكة البرنامج أو أعمال أخرى تقوض أمن الشبكة؛ محاولات التدخل في أو تدمير التشغيل العادي لنظام البرنامج أو الموقع الإلكتروني، ونشر البرامج الضارة أو الفيروسات عمداً، وأعمال أخرى تعطل خدمات المعلومات الشبكية العادية؛ تزوير أسماء حزم TCP/IP أو أجزاء من الأسماء.

+

4.1.6 بدون موافقة كتابية من الشركة، يقوم المستخدم بشكل تعسفي بالأعمال التالية على البرنامج والمعلومات الموجودة فيه، بما في ذلك على سبيل المثال لا الحصر: الاستخدام والتأجير والإعارة والنسخ والتعديل والربط وإعادة الطباعة والتجميع والنشر وإنشاء مواقع مرآة وتطوير منتجات وأعمال وخدمات وإضافات وملحقات مشتقة والتوافق والترابط وغيرها، بمساعدة البرنامج.

+

4.1.7 استخدام البرنامج لنشر وإرسال وتوزيع وتخزين محتوى ينتهك قوانينك المحلية.

+

4.1.8 استخدام البرنامج لنشر وإرسال ونشر وتخزين محتوى ينتهك حقوق الملكية الفكرية والأسرار التجارية وغيرها من الحقوق المشروعة للآخرين.

+

4.1.9 استخدام هذا البرنامج لنشر وإرسال ونشر معلومات إعلانية ومعلومات غير مرغوب فيها بكميات كبيرة.

+

4.1.10 استخدام البرنامج والخدمات الأخرى بأي طريقة غير قانونية، أو لأي غرض غير قانوني، أو بأي طريقة تتعارض مع الاستخدام المرخص لهذه الاتفاقية.

+

4.2 مواصفات نشر المعلومات

+

4.2.1 إذا كنت تستخدم البرنامج لنشر محتوى معلوماتي (إن وجد)، يجب أن تضمن أنك تمتلك حقوق الملكية الفكرية للمحتوى المعلوماتي الذي تحمّله أو أنك حصلت على تفويض قانوني، وأن أي سلوك لك في استخدام البرنامج والخدمات لا ينتهك الحقوق والمصالح المشروعة لأي طرف ثالث.

+

4.2.2 عند استخدام البرنامج، لا يجوز للمستخدم استخدام البرنامج للقيام بالأنشطة التالية، بما في ذلك على سبيل المثال لا الحصر:

+

4.2.2.1 إنشاء ونسخ ونشر وتوزيع وتخزين محتوى ينتهك القوانين واللوائح الوطنية المحلية.

+

4.2.2.2 نشر وإرسال وتوزيع وتخزين محتوى ينتهك الحقوق القانونية للآخرين مثل السمعة والصورة وحقوق الملكية الفكرية والأسرار التجارية.

+

4.2.2.3 اختلاق الحقائق وإخفاء الحقيقة بهدف تضليل أو خداع الآخرين.

+

4.2.2.4 نشر وإرسال وتوزيع معلومات إعلانية ومعلومات غير مرغوب فيها.

+

4.2.2.5 الانخراط في أعمال أخرى تنتهك القوانين واللوائح المحلية.

+

4.2.3 لا يجوز لك القيام بأي أنشطة تجارية مثل الإعلان وبيع البضائع في البرنامج دون إذن الشركة.

+

4.3 يفهم المستخدم ويوافق على ما يلي:

+

4.3.1 ستحدد Saitong ما إذا كان المستخدم يُشتبه في انتهاكه لمواصفات الاستخدام المذكورة أعلاه، ووفقاً لنتائج التحديد، تعليق أو إنهاء ترخيصك للاستخدام أو اتخاذ إجراءات تقييدية أخرى يمكن اتخاذها وفقاً لهذه الاتفاقية.

+

4.3.2 بالنسبة للمعلومات التي ينشرها المستخدم باستخدام البرنامج المرخص والمشتبه في أنها غير قانونية أو تنتهك الحقوق القانونية للآخرين أو تنتهك هذه الاتفاقية، سيتم حذفها مباشرة.

+

4.3.3 إذا تسبب انتهاك المستخدم لقواعد الاستخدام المذكورة أعلاه في ضرر لأطراف ثالثة، فأنت بحاجة إلى تحمل المسؤولية القانونية بشكل مستقل باسمك الخاص، ويجب أن تضمن أن الشركة خالية من الخسائر أو التكاليف المتزايدة.

+

4.3.4 إذا انتهك المستخدم الأحكام القانونية أو الاتفاقيات ذات الصلة، مما تسبب في خسائر لشركة Saitong، أو خضع لمطالبات أطراف ثالثة، أو عوقب من قبل السلطة الإدارية، يجب على المستخدم تعويض الخسارة و/أو النفقات التي تكبدتها Saitong، بما في ذلك أتعاب المحاماة المعقولة وتكاليف التحقيق وجمع الأدلة.

+ +

5. وصف خدمات الأطراف الثالثة

+

5.1 يفهم المستخدم ويوافق على أن نظام البرنامج قد يحتوي على خدمات تقدمها شركات تابعة للشركة أو أطراف ثالثة، وأن الشركة توفر فقط الوحدات الوظيفية ذات الصلة في النظام لتسهيل الأمر على المستخدمين وتوفير الوصول إلى خدمات الأطراف الثالثة.

+

5.2 سواء كانت خدمات الأطراف الثالثة مضمنة مسبقاً في خدمات نظام البرنامج، أو تم فتحها أو طلبها من قبل المستخدمين أنفسهم، يفهم المستخدمون ويوافقون على أن Saitong لا تقدم أي ضمان أو كفالة صريحة أو ضمنية بشأن شرعية وفعالية مقدمي خدمات الأطراف الثالثة أو المستخدمين، وكذلك شرعية ودقة وفعالية وأمان خدمات الأطراف الثالثة.

+

5.3 لا تشرف الشركة على خدمات الأطراف الثالثة أو تتحكم فيها أو تقدم أي ضمان أو كفالة من أي نوع لها، ولا تتحمل أي مسؤولية عنها.

+

5.4 أي نزاع أو خلاف بين المستخدم ومقدم خدمة الطرف الثالث يتم حله من قبل المستخدم والطرف الثالث وفقاً لعملية الأعمال ومعايير الأعمال لمقدم خدمة الطرف الثالث، ولا تتحمل الشركة أي مسؤولية.

+ +

6. سياسة الخصوصية وحماية المعلومات الشخصية

+

6.1 تلتزم Saitong بحماية خصوصية المستخدمين وفقاً لسياسة الخصوصية، يرجى الاطلاع على: سياسة خصوصية Voitrans.

+ +

7. المسؤولية عن خرق العقد

+

7.1 يحق لشركة Saitong الحكم على ما إذا كان سلوك المستخدم يتوافق مع أحكام هذه الاتفاقية. إذا اعتُقد أن المستخدم قد انتهك القوانين واللوائح ذات الصلة أو أحكام هذه الاتفاقية والقواعد ذات الصلة، وفقاً لخطورة انتهاك المستخدم، يحق لشركة Saitong حذف المعلومات غير القانونية، وتقييد أو تعليق أو إنهاء استخدام المستخدم لخدمة البرنامج، وملاحقة المسؤولية القانونية للمستخدم واتخاذ إجراءات أخرى تراها Saitong مناسبة. إذا تعرضنا لأي خسارة (بما في ذلك على سبيل المثال لا الحصر تلقي مطالبات من أطراف ثالثة أو عقوبات من أي إدارة حكومية)، يتحمل المستخدم المسؤولية الكاملة.

+ +

8. مخاطر الخدمة وإخلاء المسؤولية

+

8.1 نسعى لتقديم دعم الخدمة بالتكنولوجيا الحالية. لا تضمن Saitong أن خدمة البرنامج ستعمل دون انقطاع أو خطأ، أو أن جميع عيوب خدمة البرنامج سيتم تصحيحها، أو أن خدمة البرنامج ستلبي جميع متطلبات المستخدمين. لا تتحمل Saitong أي مسؤولية عن العواقب الناتجة.

+

8.2 جميع الخسائر التي يتكبدها المستخدم بسبب أطراف ثالثة مثل أعطال خطوط الاتصال والمشاكل التقنية وأعطال الشبكة والكمبيوتر والأجهزة الطرفية وعدم استقرار النظام وأسباب القوة القاهرة الأخرى لا تخضع للمسؤولية.

+

8.3 لا تضمن Saitong شرعية وأصالة ودقة وفعالية المحتوى المعلوماتي الذي يتم الحصول عليه من خلال البرنامج (بما في ذلك على سبيل المثال لا الحصر محتوى خدمات الأطراف الثالثة)، ولا تتحمل Saitong أي مسؤولية عن نتائج أي سلوك يقوم به المستخدمون بناءً على الاستعلام والمشاهدة.

+

8.4 البرنامج، مثل معظم برامج الإنترنت، يتأثر بالاختلافات في عوامل تشمل على سبيل المثال لا الحصر أسباب المستخدم وجودة خدمة الشبكة والبيئة الاجتماعية وعوامل أخرى، وقد يتعرض لمشاكل أمنية مختلفة، مثل استخدام الآخرين لمعلومات المستخدم مما يؤدي إلى مضايقات في الحياة الواقعية؛ البرامج الأخرى التي يقوم المستخدمون بتنزيلها وتثبيتها أو المواقع الإلكترونية الأخرى التي يزورها المستخدمون تحتوي على فيروسات مثل "أحصنة طروادة" التي تهدد أمن معلومات وبيانات الجهاز الطرفي للمستخدم وبالتالي تؤثر على الاستخدام العادي للبرنامج. يجب على المستخدمين تعزيز الوعي بأمن المعلومات وحماية بيانات المستخدم والانتباه لتعزيز حماية كلمة المرور لتجنب الخسائر والمضايقات.

+

8.5 عندما يستخدم المستخدمون البرنامج أو يطلبون من Saitong تقديم خدمات محددة، قد يستدعي البرنامج أنظمة أو برامج أطراف ثالثة لدعم استخدام أو وصول المستخدمين، ويتم تقديم نتائج الاستخدام أو الوصول من قبل الطرف الثالث. بالإضافة إلى الامتثال للقواعد ذات الصلة في هذه الاتفاقية، يجب على المستخدمين أيضاً الامتثال لاتفاقيات وقواعد الطرف الثالث ذات الصلة. يجب على المستخدمين فهم وقبول أنه عند استخدام خدمات الأطراف الثالثة، قد تقرأ الأطراف الثالثة بيانات المستخدم، ولا تضمن Saitong سلامة ودقة وفعالية والمخاطر غير المؤكدة الأخرى للنتائج المحققة من خلال دعم أنظمة أو برامج الأطراف الثالثة، ويجب على المستخدمين ممارسة الحكم الدقيق، ولا تتحمل Saitong أي مسؤولية عن أي نزاعات وأضرار ناتجة عن ذلك.

+

8.6 من أجل ضمان استقلالية تطوير الأعمال وتعديلها، يجوز للشركة تعديل أو مقاطعة الخدمة في أي وقت بعد إخطار المستخدم بطريقة معقولة.

+

8.7 ما لم تنص القوانين واللوائح صراحةً على خلاف ذلك، ستبذل Saitong قصارى جهدها لضمان أن البرنامج والتكنولوجيا والمعلومات المعنية آمنة وفعالة ودقيقة وموثوقة، ولكن بسبب قيود التكنولوجيا الحالية، يفهم المستخدم أن Saitong لا تستطيع ضمان ذلك.

+

8.8 التعويض عن الإصابات الشخصية أو الأضرار الاقتصادية العرضية وغير المباشرة الناجمة عن أو المتعلقة بأي من الظروف التالية، بما في ذلك على سبيل المثال لا الحصر خسارة الأرباح وفقدان البيانات والتعويضات عن انقطاع الأعمال أو أضرار أو خسائر أعمال أخرى، يتحملها المستخدم:

+

1) استخدام أو عدم القدرة على استخدام البرنامج المرخص.

+

2) الاستخدام غير المصرح به للبرنامج أو تغيير بيانات المستخدم من قبل أطراف ثالثة.

+

3) النفقات والخسائر الناجمة عن أعمال المستخدم مع البرنامج.

+

4) سوء فهم المستخدم للبرنامج.

+

5) أي خسارة أخرى متعلقة بالبرنامج لا تُعزى إلى أسباب Saitong.

+

8.9 يوافق المستخدم على أن للشركة الحق في تعليق أو مقاطعة أو إنهاء كل أو جزء من الخدمة للمستخدم بناءً على متطلبات السلطات القضائية والتنظيمية والرقابية أو لأسباب تجارية خاصة بها. لا تتحمل Saitong أي مسؤولية عن ذلك.

+

8.10 يفهم المستخدم ويوافق على أن الشركة ستستخدم جهوداً معقولة تجارياً لضمان أمن تخزين البيانات في البرنامج والخدمات، لكن الشركة لا تستطيع تقديم ضمان كامل، ويفهم المستخدم أن الشركة ليست مسؤولة عن حذف أو تخزين أو فشل النسخ الاحتياطي للبيانات في الخدمة.

+

8.11 إلى أقصى حد يسمح به القانون، لن يكون المطور أو المورد مسؤولاً عن أي أضرار مباشرة أو غير مباشرة أو عرضية أو خاصة أو تبعية ناتجة عن استخدام التطبيق. إذا كان لدى المستخدم احتياجات إضافية، يرجى التوجه إلى مستشفى معتمد لإجراء فحص متعمق.

+ +

9. بيان حقوق الملكية الفكرية

+

9.1 شركة Saitong هي صاحبة حقوق الملكية الفكرية لهذا البرنامج. جميع حقوق النشر والعلامات التجارية وبراءات الاختراع والأسرار التجارية وحقوق الملكية الفكرية الأخرى للبرنامج، وكذلك جميع المحتوى المعلوماتي المتعلق بالبرنامج (بما في ذلك على سبيل المثال لا الحصر النصوص والصور والصوت والفيديو والرسومات وتصميم الواجهة وإطار التخطيط والبيانات ذات الصلة أو المستندات الإلكترونية وغيرها) محمية بالقوانين واللوائح المحلية والمعاهدات الدولية المقابلة.

+

9.2 بدون موافقة كتابية من الشركة، لا يجوز للمستخدم تنفيذ أو استخدام أو نقل حقوق الملكية الفكرية المذكورة أعلاه لأي غرض تجاري أو غير تجاري، أو السماح لأي طرف ثالث بذلك، وتحتفظ الشركة بالحق في ملاحقة المسؤولية القانونية عن الأعمال المذكورة أعلاه.

+ +

10. تعديل الاتفاقية

+

10.1 يحق لشركة Saitong تعديل شروط هذه الاتفاقية عند الضرورة. عند تغيير شروط الاتفاقية، سيتم نشر الشروط المعدلة للاتفاقية على الصفحة ذات الصلة. إذا كنت لا توافق على المحتوى المعدل، يجب على المستخدم المبادرة بإلغاء هذه الخدمة. إذا استمر المستخدم في استخدام الخدمات، فيُعتبر قبولاً للتغييرات في شروط الاتفاقية.

+

10.2 تحتفظ Saitong بالحق في تعديل أو تغيير الخدمات المدفوعة ومعايير الرسوم وطرق الرسوم ورسوم الخدمة وشروط الخدمة المقدمة حسب الضرورة. عند تقديم الخدمات، قد نفرض رسوماً معينة على مستخدمي بعض الخدمات الآن أو في المستقبل. إذا رفض المستخدمون دفع هذه الرسوم، فلا يمكنهم الاستمرار في استخدام الخدمات ذات الصلة بعد بدء فرض الرسوم.

+
+ + diff --git a/doc/bg/privacy_policy.html b/doc/bg/privacy_policy.html new file mode 100644 index 000000000..92f887a41 --- /dev/null +++ b/doc/bg/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Политика за поверителност на Voitrans + + + + +
+

Политика за поверителност на Voitrans

+

Последна актуализация: 27 май 2025 г.

+

Дата на влизане в сила: 27 май 2025 г.

+ +

Добре дошли да използвате софтуера и услугите на Voitrans

+

1. Voitrans се предоставя от Saitong Industries Inc. (наричана по-долу „Компанията“). Приложението може да помогне на потребителите при управлението на Bluetooth устройства и други продукти. Разбираме значението на личната информация за нашите потребители (наричани по-долу „вие“) и че ефективната защита на вашата лична информация е основата за здравословното и устойчиво развитие на нашия бизнес. Благодарим ви, че използвате и се доверявате на продуктите или услугите на Voitrans! Съзнаваме, че това доверие не се печели лесно, и се придържаме към принципите на откритост и прозрачност, за да ви представим правилата си за обработване на личната ви информация. Използваме законосъобразни и легитимни методи и ясни и разумни цели за обработване на личната ви информация. Важно: Моля, прочетете внимателно и се уверете, че разбирате тази Политика за поверителност, преди да използвате нашите продукти или услуги, за да можете да направите подходящ избор.

+

2. Тази Политика за поверителност обяснява как събираме, използваме, съхраняваме и споделяме вашата лична информация, когато използвате Voitrans. „Лична информация“ означава всякакъв вид информация, записана по електронен или друг начин, която може да идентифицира конкретно физическо лице или да отразява дейността му, самостоятелно или в комбинация с друга информация. Voitrans уважава и защитава личната неприкосновеност на всички потребители. Освен ако не е предвидено друго в настоящата Политика, Voitrans няма да разкрива тази информация публично или да я предоставя на трети страни без вашето предварително разрешение.

+

3. Когато използвате продукт или услуга на трета страна чрез продукт или услуга на App Marketplace, вашата лична информация ще се управлява съгласно политиката за поверителност на съответната трета страна.

+

4. Тази Политика за поверителност на Voitrans може да се актуализира периодично. Със съгласието ви с Договора за използване на услугите на Voitrans и с започване на използването на Voitrans се счита, че сте приели цялата настояща Политика за поверителност. Ако не сте съгласни с тази Политика, моля, не използвайте софтуера и услугите на Voitrans.

+

5. За да анализираме и измерваме ефективността на свързаните услуги, ще използваме и разкриваме вашата лична информация в съответствие с разпоредбите на тази Политика за поверителност.

+ +

Тази Политика за поверителност ще ви помогне да разберете следното:

+
    +
  • 1 Информацията, която събираме
  • +
  • 2 Съхранение на информацията
  • +
  • 3 Сигурност на информацията
  • +
  • 4 Как използваме събраната информация
  • +
  • 5 Споделяне на информация
  • +
  • 6 Как управлявате личната си информация
  • +
  • 7 Описание на разрешенията на приложението
  • +
  • 8 Достъп до SDK на трети страни
  • +
  • 9 Защита на непълнолетни
  • +
  • 10 Влизане в сила и актуализации на Политиката
  • +
  • 11 Как да се свържете с нас
  • +
+ +

1. Информацията, която събираме

+

1. Когато започнете да използвате Voitrans, ние започваме да събираме данни за начина, по който използвате приложението

+

2. Voitrans може да получава лична информация за вас от трети страни или бизнес партньори по законосъобразен начин

+

3. За да ви предоставим по-добри продукти и услуги, да осигурим мрежова сигурност по време на използване, да поддържаме нормалната работа на продукта и да го оптимизираме и подобряваме, след като активно щракнете, че приемате тази политика, по време на предоставяне на услугата, освен личната информация, необходима за нормалната работа на основните функции на приложението съгласно законите и разпоредбите, ще събираме и друга лична информация от вас:

+

3.1 За да идентифицираме рискови потребители, да преценим автентичността на потребителите и да предотвратим измами, ще четем информацията за вашето устройство всеки път, когато отворите софтуера, включително: (модел на устройството, MAC адрес на устройството, уникален идентификатор на устройството (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID и др.) MEID, сериен номер, SSID и BSSID на Wi‑Fi), Bluetooth адрес, версия на операционната система, име на операционната система, информация за акаунт за вход и парола;

+

3.2 Когато използвате нашите продукти и услуги, може да събираме определена информация чрез мрежови логове или определени програми и софтуер, включително: подробности за използването на продуктите и услугите, като време на отваряне на приложението, продължителност на използване и адрес на посетената страница; информация за събития на устройството, като сривове, системна активност и др., с цел оптимизация на устройството и подобряване на услугите;

+

3.3 За да идентифицираме приложения, при които оборудването е в риск, и да предоставим по-сигурни функционални услуги, трябва да получим вашия списък с приложения/списък с инсталирани приложения, за да гарантираме нормална работа на продукта и да защитим сигурността на устройството.

+

3.4 За да анализираме използването на функциите на приложението и да определим автентичността на потребителите, е необходимо да извършваме статистика на данни и да събираме горепосочената информация за устройството (вкл. MAC адрес и уникален идентификатор), докато устройството се използва.

+

3.5 Сигнал на устройството: мрежов статус на използваното от вас устройство, информация за Wi‑Fi точка за достъп и др.

+

3.6 Информация за местоположение: може да използваме GPS, Wi‑Fi или други технически средства за събиране и обработване на информация за местоположението ви, например за актуализиране на локална информация и предоставяне на съдържателни услуги.

+

За повече информация, моля, натиснете „Списък за събиране на лична информация“.

+ +

1. За по-чувствителната лична информация от горното, като информация за устройството (IMEI номер, статус на обаждания и идентификационен номер), GPS информация за местоположение, медийно съдържание (снимки) и права за достъп до файлове, ще получим вашето съгласие преди събиране. За някои нечувствителни данни събирането може да е по подразбиране и автоматично. Можете да ограничите събирането на съответната информация или използването на определени разрешения чрез настройките на мобилното си устройство. Когато ограничите достъпа до дадено разрешение, може да не сме в състояние да продължим да ви предоставяме съответните услуги и да не обработваме повече съответната информация.

+

2. Ние няма да събираме вашия номер на лична карта, биометрична информация, номер на банкова сметка, информация за имущество, кредитна информация, здравна и физиологична информация и друга чувствителна лична информация.

+

3. Относно чувствителните разрешения: за да използвате правилно функциите на приложението, продуктът трябва да получи следните разрешения, за да предоставя функционални услуги, свързани с нормалната работа на продукта.

+ +

1 Разрешение за четене и запис в хранилището

+

1 Как се получава: изскачащ прозорец; при заявяване на разрешението потребителят натиска „Съгласен/а съм“ и приложението използва това разрешение

+

2 Цел и обхват: използва се за сканиране на кеш файлове и миниатюри в системата, зареждане на музикални ресурси и изображения на продукта и показването им в интерфейса на приложението за удобен преглед и работа

+ +

2 Разрешение за достъп до списъка с инсталирани приложения

+

1 Как се получава: изскачащ прозорец; при заявяване на разрешението потребителят натиска „Съгласен/а съм“ и приложението използва това разрешение

+

2 Цел и обхват: когато приложението трябва да използва услуги за рекламно промотиране, рекламната платформа на трета страна (Youmon +SDK) трябва да получи разрешение за „списък с инсталирани приложения“, за да се избегне промотиране на приложения, които потребителят вече има, и да се подобри потребителското изживяване.

+ +

3 Разрешение за получаване на информация за състоянието на устройството

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Как се получава: изскачащ прозорец; при заявяване на разрешението потребителят натиска „Съгласен/а съм“ и приложението използва това разрешение

+

2 Цел и обхват: когато използвате нашето приложение, за да анализираме използването на функциите и да преценим автентичността на потребителя, може да синхронизираме това разрешение със SDK на трети страни, включително Autonavi SDK, Youmon +SDK и др.

+ +

4 Достъп до информация за местоположение

+

1 Как се получава: изскачащ прозорец; потребителят използва това разрешение само след като активно натисне „Съгласен/а съм“

+

2 Цел и обхват: когато приложението трябва да използва GPS, Wi‑Fi или други функции, продуктът трябва да събира вашето местоположение и информация, за да търси Bluetooth устройства в близост.

+

Забележка: за повече разрешения на приложението вижте раздел 7 „Описание на разрешенията на приложението“ в документа „Политика за поверителност“.

+ +

2. Съхранение на информацията

+

1. Къде се съхранява информацията

+

Личната информация, която събираме и генерираме в Китайската народна република, ще се съхранява на нашите сървъри и/или на тези на нашите свързани дружества.

+

2. Съхранение и обработване

+

Съхраняваме вашата лична информация само за периода, необходим за постигане на целта, или толкова дълго, колкото се изисква от закона и регулациите. След като спрете да използвате този продукт, незабавно ще спрем събирането и обработването на вашата лична информация и данните от приложението. След изтичане на посочения период ще изтрием или анонимизираме предоставената от вас лична информация.

+

Освен необходимите функции, Voitrans трябва да заяви съответните системни разрешения. Облачната страна на сървъра не съхранява лична информация на потребителите, а използваните SDK на трети страни ще бъдат анонимизирани и деидентифицирани от доставчика на услуги (Amu Statistics SDK, Autonavi SDK), така че потребителите да не могат да бъдат проследявани. Информацията, съхранявана на телефона на потребителя, ще бъде автоматично изтрита, когато потребителят деинсталира Voitrans или изчисти кеша.

+ +

3. Сигурност на информацията

+

1. Voitrans съхранява и защитава вашата лична информация чрез мерки и технологии за сигурност, съобразени с индустриалните стандарти, като удостоверяване, криптиране на данни, ограничен достъп до центрове за данни и др., за да се гарантира, че информацията ви е защитена от разкриване, промяна и унищожаване. Въпреки това, моля, имайте предвид, че никоя мярка не може да гарантира 100% сигурност.

+

2. Когато използвате услугите, предоставяни от Voitrans, моля, пазете личната си информация. Ако установите, че личната ви информация е компрометирана, свържете се с нас незабавно, за да предприемем подходящи мерки.

+ +

4. Как използваме събраната информация

+

1. При изпълнение на бизнес функциите на приложението може да използваме личната ви информация, за да гарантираме целостта и сигурността на продуктите и услугите, които ви предоставяме;

+

2. Чрез събраната информация ще разберем навиците ви на използване и с помощта на анализ на данни ще оценим приемането на услугите, навиците ви и др., за да тестваме и създаваме нови продукти, функции и услуги, да подобряваме нивото на услугите и да развиваме нови услуги;

+

3. Можем да използваме личната ви информация за анкети относно продуктите и услугите, за изпращане на известия за продуктите и услугите и за търговско промотиране;

+

4. Можем да използваме информацията ви за вътрешен анализ и изследвания, свързани с приложението;

+ +

5. Споделяне на информация

+

Понастоящем няма да споделяме или прехвърляме активно вашата лична информация на трети страни извън Компанията. Ако е необходимо друго споделяне или прехвърляне на лична информация, ще получим вашето изрично съгласие или ще потвърдим, че третата страна е получила вашето изрично съгласие за това действие.

+

Няма да разкриваме публично събраната лична информация. Ако е необходимо публично разкриване, ще ви информираме за целта, вида на разкриваната информация и възможната чувствителна информация и ще получим вашето изрично съгласие.

+

С развитието на бизнеса ни е възможно да се извършват сливания, придобивания, прехвърляне на активи и други сделки. Ще ви информираме за съответните обстоятелства съгласно законите и регулациите и не по-ниско от стандартите, изисквани от настоящия документ, за да продължим да защитаваме личната ви информация или да изискаме нов администратор да продължи да я защитава.

+

Освен това, съгласно релевантните закони, регулации и национални стандарти, можем да споделяме, прехвърляме и публично разкриваме лична информация без предварително разрешение и съгласие на субекта на лични данни при следните обстоятелства:

+
    +
  • 1 Пряко свързано с националната сигурност и отбраната;
  • +
  • 2 Пряко свързано с обществената безопасност, общественото здраве или значими обществени интереси;
  • +
  • 3 Пряко свързано с наказателно разследване, обвинение, съдебен процес и изпълнение на съдебни решения;
  • +
  • 4 За защита на живота, имуществото и други значими законни права и интереси на субекта на данни или други лица, когато е трудно да се получи съгласие;
  • +
  • 5 Лична информация, която субектът на данни е разкрил публично;
  • +
  • 6 Събиране на лична информация от законно публично разкрита информация, като законни новинарски публикации, държавно разкриване на информация и др.
  • +
+ +

6. Как управлявате личната си информация

+

В съответствие с релевантните закони, регулации и стандарти на Китай, както и общите практики в други държави и региони, гарантираме, че можете да упражнявате следните права върху личната си информация:

+ +

1. Коригиране на личната ви информация

+

Ако установите грешка в личната ви информация, която обработваме, имате право да коригирате или актуализирате неверната или непълна информация. Ако не можете да извършите това самостоятелно в центъра за акаунти, можете да се свържете с нас по имейл: saitong.voitrans@gmail.com

+ +

2. Изтриване на личната ви информация

+

В следните случаи можете да поискате от нас да изтрием личната ви информация:

+
    +
  • Ако обработваме лична информация в нарушение на закони и разпоредби;
  • +
  • Ако събираме и използваме личната ви информация без вашето съгласие;
  • +
  • Ако обработването на личната ви информация нарушава нашето споразумение с вас;
  • +
  • Ако вече не използвате нашите продукти или услуги;
  • +
  • Ако вече не ви предоставяме продукти или услуги.
  • +
+

Свържете се с нас на saitong.voitrans@gmail.com. Ще обработим вашето искане и ще ви изпратим резултат в рамките на 30 работни дни от получаването му.

+ +

3. Промяна на обхвата на вашето съгласие

+

Можете да се свържете с нас по имейл: saitong.voitrans@gmail.com. По ваше искане няма да събираме, използваме или разкриваме вашата лична информация. Моля, имайте предвид, че оттеглянето на съгласие или изтриването на лична информация може да повлияе на използването на някои от нашите услуги.

+ +

4 Достъп и копиране на лична информация

+

Съгласно релевантните закони можете да предоставите вашия imei (сериен номер на телефона) или oaid или Android ID, заедно с информация за акаунта и други данни, и да подадете заявление за достъп и копие на личната ви информация. Можете да се свържете с нас по имейл: 3514406195@qq.com

+ +

5. Отговор на вашите искания

+

От съображения за сигурност може да се наложи да предоставите писмено искане или по друг начин да докажете самоличността си. Можем да ви помолим да потвърдите самоличността си, преди да обработим искането. На разумните ви искания ще отговорим своевременно. Можем да откажем искания, които са ненужно повтарящи се, изискват твърде много технически ресурси (например разработване на нови системи или фундаментални промени в съществуващи практики), създават риск за законните интереси на други лица или са практически неизпълними.

+

При следните обстоятелства, съгласно изискванията на законите и разпоредбите, няма да можем да отговорим на вашето искане:

+
    +
  • Свързано с националната сигурност и отбраната;
  • +
  • Свързано с наказателно разследване, обвинение и съдебен процес;
  • +
  • Има достатъчно доказателства за злонамереност или злоупотреба с права;
  • +
  • Отговорът на вашето искане би причинил сериозна вреда на законните права и интереси на вас или други лица/организации.
  • +
+ +

6. Закриване на акаунт

+

Потребителят може да извърши операция [закриване на акаунт] в приложението. Стъпки:

+
    +
  1. Отидете на страницата [My]
  2. +
  3. Натиснете бутона [Settings] горе вдясно
  4. +
  5. Натиснете [Cancel account], за да потвърдите
  6. +
+

След като закриете акаунта, информацията за потребителския акаунт се изчиства

+ +

7. Описание на разрешенията на приложението

+

За да предоставим по-добри продукти и услуги, при използване на софтуера ще заявим следните разрешения. Когато влезете на началната страница или използвате функция, ще бъде поискано разрешение. Ако откажете, някои функции може да не работят нормално. Конкретните цели и напомняния са описани по-долу:

+ +

1 Разрешения за местоположение:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

чрез Wi‑Fi или мобилна базова станция се получава информация за местоположение (географска ширина и дължина) на потребителя

+

Когато използвате Voitrans, ще търсим свързаното ви Bluetooth устройство въз основа на географското ви местоположение. Едновременно с това, за да предоставяме по-стабилни услуги, да оптимизираме продукта и да подобряваме изживяването, можем да споделяме горната информация с SDK на трети страни, като Youmon и Autonavi, за да получаваме данни за работата на Voitrans и да предоставяме функционални услуги.

+

Начин на уведомяване: при първо стартиране на приложението се показва изскачащ прозорец за разрешението и потребителят потвърждава приемането. Описание в Потребителското споразумение и Политиката за поверителност.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Това разрешение е необходимо, когато използвате функция за управление на приложения.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

3 Мрежови разрешения:

+

android.permission.INTERNET

+

Тези разрешения са необходими за информационните услуги и услугите за обновяване на версията на Voitrans. За да подобрим потребителското изживяване и да оптимизираме възможностите на услугата, SDK на трети страни също могат да използват тези разрешения.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

4 Разрешения за статус на мрежата:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Използва се, за да се провери дали текущата мрежова връзка е валидна, да се определя мрежовата среда (напр. 4G) и да се уведомява при промени, които влияят на зареждането на съдържание. Това разрешение се заявява при използване на Voitrans.

+

Промяната на мрежовия статус влияе на качването и зареждането на данни. Затова достъпът до разрешението за мрежов статус може да се използва и от платформи на трети страни.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

5 Разрешение за списък със задачи:

+

android.permission.GET_TASKS

+

Това разрешение се използва за получаване на списък с приложения за функцията за управление на софтуер. Когато използвате тази функция, е необходимо да се прочетат инсталираните на телефона приложения.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

6 Разрешение за MAC адрес

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Когато използвате Voitrans, приложението може да се нуждае от разрешение за MAC адрес:

+

Когато приложение трябва да отчита данни за конверсия, платформи на трети страни като Youmon +SDK могат да използват MAC.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

7 Разрешение за запис на аудио

+

android.permission.RECORD_AUDIO

+

Когато използвате функцията за гласов вход на Voitrans, е необходимо разрешение за запис на аудио, използвано основно за превод и други свързани функции.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност; при необходимост се показва динамичен изскачащ прозорец.

+ +

8 Разрешение за SSID на Wi‑Fi

+

Когато се използва това разрешение, приложението чете SSID на Wi‑Fi:

+

Обхват и цел: когато приложението трябва да използва услуги за анализ на данни, платформи на трети страни могат да прочетат „SSID на Wi‑Fi“ на устройството, за да предоставят по-точни и ефективни функционални услуги.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

9 Достъп до Bluetooth

+

Когато се използва това разрешение, приложението използва Bluetooth разрешенията:

+

Обхват и цел: за търсене и конфигуриране на Bluetooth аксесоари, като Bluetooth слушалки, Bluetooth часовници и др., за по-лесно управление от потребителя

+

Начин на уведомяване: при първо стартиране се показва прозорец за разрешение и потребителят потвърждава приемането. Описание в Потребителското споразумение и Политиката за поверителност.

+ +

10 Разрешение за BSSID на Wi‑Fi

+

Когато приложението трябва да различава и идентифицира потребителя за предоставяне на функционални услуги и статистика, то ще прочете „Wi‑Fi BSSID“ на устройството за:

+

Обхват и цел: 1) Платформи на трети страни: като Youmeng SDK, Bugly SDK, Autonavi SDK

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

11 Разрешение за инсталиране на приложения

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Софтуерът използва разрешение за инсталиране на приложения, основно за да позволи на потребителите да инсталират нова версия и да използват нови функции при налична актуализация.

+

Начин на уведомяване: описание в Потребителското споразумение и Политиката за поверителност.

+ +

12 Разрешение за камера

+

android.permission.CAMERA

+

Voitrans използва разрешение за камера, за да сканира QR кодове и да свързва Bluetooth устройства, като Bluetooth слушалки и часовници.

+

Начин на уведомяване: при първо стартиране се показва прозорец за разрешение и потребителят потвърждава приемането. Описание в Потребителското споразумение и Политиката за поверителност.

+ +

Специална бележка:

+

1 Приложението интегрира SDK на трети страни. След като потребителят даде съгласие, приложението може да събира във фонов/преден режим ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI и друга лична информация;

+

Забележки: За повече информация вижте съдържанието и разрешенията, свързани със SDK, по-долу [VIII. Списък на SDK на трети страни]

+ +

8. Достъп до SDK на трети страни

+

1 За да осигурим стабилна работа и реализиране на функциите на нашия клиент и за да можете да използвате повече услуги и функции, в приложението могат да бъдат вградени SDK (software development kit) или други подобни компоненти на трети страни. Тези трети страни ще събират и обработват съответната информация съгласно собствените си политики за поверителност, за да предоставят функции и рекламни услуги. В следващия раздел можете да се запознаете с правилата за събиране и обработване на информация от трети страни. Провеждаме строги тестове за сигурност на SDK на партньорите, за да защитим разумното използване и сигурността на личната ви информация. Моля, имайте предвид, че SDK на трети страни могат да променят типовете обработвани данни поради обновяване на версии. Моля, вижте политиките за поверителност, публикувани от съответните SDK. Вижте подробностите по-долу или прегледайте „Списък на SDK на трети страни“.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Получавана информация: номер на устройство, IP адрес, информация за софтуера на устройството, идентификационен код на устройството (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, IMSI на SIM карта, IP, MAC адрес), идентификатор на устройството, регион, информация за приложенията на устройството и други логове, свързани с услугата

+

Цел на използване: вход и споделяне чрез WeChat

+

Разработчик: Shenzhen Tencent Computer Systems Company Limited

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Получавана информация: име на приложението, версия на приложението, марка и модел на устройството, операционна система, информация за оператора, резолюция на екрана, информация от сензори (вектор, ускорение, налягане, посока, геомагнитен, жироскоп, температура, сензор за светлина, NMEA сигнал), информация за силата на сигнала

+

Цел на използване: навигация чрез Amap

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Получавана информация: име на приложението, версия на приложението, марка и модел на устройството, операционна система, мрежова информация, сила на сигнала и др.

+

Цел на използване: показване и взаимодействие с карта

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Получавана информация: информация за местоположение (GPS, Wi‑Fi, базова станция), информация за устройството, мрежова информация и др.

+

Цел на използване: предоставяне на услуги за местоположение

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Получавана информация: име на приложението, версия на приложението, информация за устройството, мрежова информация и др.

+

Цел на използване: инструменти за карта и оптимизация на визуализацията

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Получавана информация: идентификатори на устройството, основна информация за устройството, списък с инсталиран софтуер и мрежова информация (за подробности вижте официалната политика за поверителност)

+

Цел на използване: вход в Alipay и извикване на плащане

+

Разработчик: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Получавана информация: версия на SDK/API, платформа, времеви печат, идентификатор на приложение, версия на приложението, производител на устройството, версия на ОС, език/локал, часова зона, мрежов статус (Wi‑Fi и др.), мрежови логове, данни за сривове и използване, IP адрес и др. (вижте официалната политика за поверителност за подробности)

+

Цел на използване: мониторинг на качеството на приложението и услуга за докладване на данни

+

Разработчик: Shenzhen Tencent Computer Systems Company Limited

+

Метод на събиране: самостоятелно събиране от SDK

+

Връзка към Политика за поверителност: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Защита на непълнолетни

+

Потребителите на нашите продукти и услуги могат да включват непълнолетни под 18 години. Непълнолетните потребители следва да потърсят съвет от родителите или настойниците си относно тази Политика за поверителност, преди да използват нашите продукти, и да използват услугите ни или да предоставят информация след получаване на съгласие и под ръководството на родител или настойник. Настойници на непълнолетни с въпроси могат да се свържат с нас чрез данните за контакт в тази Политика.

+

Ако не сте съгласни горепосочената информация да бъде събирана от посочените доставчици на услуги на трети страни, моля, прекратете използването на софтуера незабавно. По време на използването на софтуера тези трети страни ще събират и обработват съответна информация съгласно собствените си политики за поверителност, за да предоставят определени функции, реклама и други услуги. Ако информацията изтече поради събирането на горепосочената информация от съответния доставчик на услуги на трета страна, той носи съответната правна отговорност.

+ +

10. Влизане в сила и актуализации на Политиката

+

1. Настоящата Политика за поверителност влиза в сила от датата на публикуване.

+

2. С развитието и промените в нашия бизнес Политиката за поверителност може да се променя. Запазваме си правото да я променяме по всяко време, затова моля, проверявайте периодично. Ако направим промени, ще публикуваме актуализациите на нашия уебсайт и в приложението, и на други подходящи места. Ако политиката бъде актуализирана, тя влиза в сила от датата на актуализация. Продължаването на използването на нашите продукти или услуги означава, че сте съгласни с променената Политика.

+ +

11. Как да се свържете с нас

+

Saitong Industries Inc е основана на 22 ноември 2024 г., регистриран адрес: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ако искате да научите повече за нашата компания и платформа, можете да се свържете с нас чрез контактната информация, предоставена в тази политика (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/bg/user_agreement.html b/doc/bg/user_agreement.html new file mode 100644 index 000000000..95b52d66c --- /dev/null +++ b/doc/bg/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Потребителски протокол на приложението Voitrans + + + +
+
Български
+ +

Потребителски протокол на приложението Voitrans

+ +

Тези Условия за ползване ви информират как да получите достъп и да използвате приложението Voitrans и онлайн услугите („Услугите"). Saitong Industries Inc. (наричана по-долу „Saitong") напомня на потребителите да прочетат внимателно и да разберат напълно това Потребителско споразумение (наричано по-долу „Споразумението"). Потребителите трябва внимателно да прочетат и напълно да разберат условията на това Споразумение. Моля, прочетете внимателно и изберете дали приемате или не приемате това Споразумение. Използването от ваша страна на приложението Voitrans (наричано по-долу „Приложението" или „Софтуерът") ще се счита за приемане на това Споразумение и вие се съгласявате да бъдете обвързани от условията на това Споразумение. Ако не сте съгласни с това Споразумение, не използвайте Приложението.

+

Saitong си запазва правото да изменя това Споразумение, а актуализираните условия на Споразумението ще бъдат публикувани в това Приложение, като влизат в сила от датата на публикуване.

+ +

1. Общи правила

+

1.1 Това Приложение е софтуерът, предоставен от Saitong за свързване на слушалки, пуснати от Saitong и нейните партньорски компании. Правата на собственост и оперативните права върху софтуера и свързаните услуги са изцяло собственост на Saitong.

+

1.2 Това Споразумение е споразумение между вас (наричан по-долу „Потребителят") и компанията, нейните партньори и оперативни партньори (наричани по-долу „Партньорите") относно използването от потребителя на Приложението и свързаните услуги.

+

1.3 Софтуерът и услугите включват:

+

1.3.1 Предоставеният софтуер осигурява на потребителите на Voitrans свързване и сдвояване на Voitrans, управление на функционални настройки и други софтуерни услуги, в зависимост от действителните софтуерни услуги, предоставяни от Приложението.

+

1.3.2 Актуализации, надстройки и други услуги на софтуера.

+ +

2. Обхват на софтуерния лиценз

+

2.1 Ние предоставяме на потребителя личен, непрехвърлим, несублицензируем и неизключителен лиценз за Софтуера.

+

2.2 Потребителите могат да инсталират, използват, показват и стартират софтуера на едно мобилно крайно устройство за нетърговски цели. Въпреки това, потребителят не трябва да инсталира, използва или стартира софтуера за търговски цели, да копира, променя, модифицира, свързва или стартира софтуера или данните, освободени в паметта на което и да е крайно устройство по време на работата на софтуера, или данните за взаимодействие между клиент и сървър по време на работата на софтуера, или да създава производни произведения. Това включва, но не се ограничава до, използването на плъгини или неоторизирани инструменти/услуги на трети страни за достъп до Софтуера и свързаните системи. За търговска продажба, възпроизвеждане и разпространение, като предварително инсталиране и пакетиране на софтуер, трябва да се получи писмено разрешение.

+

2.3 Потребителят не може да инсталира Софтуера на други крайни устройства без изричното разрешение, включително, но не само, телевизори, цифрови приемници, игрови конзоли и други устройства.

+

2.4 Освен изрично разрешеното от това Споразумение, на Потребителя не се предоставят други права и Потребителят трябва да получи писмено съгласие за използване на други права.

+ +

3. Актуализация на софтуера

+

3.1 Потребителят трябва да избере версията на софтуера, подходяща за конфигурацията на инсталирания терминал. В противен случай проблемите със софтуера, проблемите с устройството или повредите, причинени от версия на софтуера, която не е подходяща за типа устройство, ще бъдат единствено отговорност на потребителя.

+

3.2 За да подобри потребителското изживяване и да подобри съдържанието на услугите, Saitong има право да ви предоставя от време на време версии за замяна, модификация и надстройка на софтуера. Функцията „Съобщение за актуализация" е активирана по подразбиране за потребителите. В зависимост от различните версии на софтуера, използвани от потребителите, Saitong предоставя на потребителите опцията да активират тази функция. След пускането на нова версия на софтуера, Saitong не гарантира продължаващата наличност на старата версия на софтуера.

+ +

4. Спецификация за използване

+

4.1 Потребителите могат да използват Софтуера и Услугите в съответствие с това Споразумение, при условие че спазват закона и това Споразумение, и потребителите не трябва да извършват следните действия:

+

4.1.1 Изтриване на цялата информация за авторски права върху Софтуера и други копия, и модифициране, изтриване или заобикаляне на техническите мерки, установени от Софтуера за защита на правата на интелектуална собственост.

+

4.1.2 Обратен инженеринг на Софтуера, като разглобяване, декомпилиране или други опити за получаване на изходния код на Софтуера.

+

4.1.3 Чрез модифициране или фалшифициране на инструкции и данни при работата на софтуера, добавяне, изтриване или промяна на функцията или ефекта от работата на софтуера, или софтуер и методи, използвани за горепосочените цели за експлоатация или разпространение пред обществеността, независимо дали тези действия са за търговски цели.

+

4.1.4 Използване на софтуера за всяко поведение, което застрашава мрежовата сигурност, включително, но не само: използване на неоторизирани данни или достъп до неоторизирани сървъри/акаунти; Достъп до обществени мрежи или други операционни системи без разрешение и изтриване, модифициране или добавяне на съхранена информация; Неоторизирани опити за проучване, сканиране или тестване на слабостите на системата или мрежата на софтуера или други действия, които подкопават мрежовата сигурност; Опити за намеса или унищожаване на нормалната работа на софтуерната система или уебсайт, умишлено разпространение на зловредни програми или вируси и други действия, които нарушават нормалните мрежови информационни услуги; Фалшифициране на имена или частични имена на TCP/IP пакети.

+

4.1.6 Без писменото съгласие на Компанията, потребителят произволно извършва следните действия със софтуера и информацията в него, включително, но не само: използване, отдаване под наем, заемане, копиране, модифициране, свързване, препечатване, компилиране, публикуване, създаване на огледални сайтове, разработване на производни продукти, произведения, услуги, плъгини, съвместимост, взаимно свързване и др., с помощта на Софтуера.

+

4.1.7 Използване на Софтуера за публикуване, предаване, разпространение и съхранение на съдържание, което нарушава местните закони.

+

4.1.8 Използване на софтуера за публикуване, предаване, разпространение и съхранение на съдържание, което нарушава правата на интелектуална собственост, търговските тайни и други законни права на други лица.

+

4.1.9 Използване на този софтуер за масово публикуване, предаване и разпространение на рекламна информация и нежелана информация.

+

4.1.10 Използване на Софтуера и другите Услуги по всякакъв незаконен начин, за каквато и да е незаконна цел или по начин, несъвместим с лицензираното използване на това Споразумение.

+

4.2 Спецификация за публикуване на информация

+

4.2.1 Ако използвате софтуера за публикуване на информационно съдържание (ако има такова), трябва да гарантирате, че притежавате правата на интелектуална собственост върху информационното съдържание, качено от вас, или сте получили законно разрешение, и всяко ваше поведение при използването на софтуера и услугите не нарушава законните права и интереси на трети страни.

+

4.2.2 При използване на Софтуера, потребителят не трябва да използва Софтуера за следните дейности, включително, но не само:

+

4.2.2.1 Създаване, копиране, публикуване, разпространение и съхранение на съдържание, което нарушава местните национални закони и разпоредби.

+

4.2.2.2 Публикуване, предаване, разпространение и съхранение на съдържание, което нарушава законните права на други лица, като репутация, портрет, интелектуална собственост и търговски тайни.

+

4.2.2.3 Фабрикуване на факти, прикриване на истината с цел заблуждаване или измама на други лица.

+

4.2.2.4 Публикуване, предаване и разпространение на рекламна информация и нежелана информация.

+

4.2.2.5 Извършване на други действия в нарушение на местните закони и разпоредби.

+

4.2.3 Не можете да извършвате търговски дейности като реклама и продажба на стоки в Софтуера без разрешението на Компанията.

+

4.3 Потребителят разбира и се съгласява, че:

+

4.3.1 Saitong ще определи дали потребителят е заподозрян в нарушаване на горепосочените спецификации за използване и съгласно резултатите от определянето ще спре или прекрати вашия лиценз за използване или ще предприеме други ограничителни мерки, които могат да бъдат предприети в съответствие с това Споразумение.

+

4.3.2 За информация, публикувана от потребителя чрез използването на лицензирания софтуер, заподозряна в незаконност или нарушаване на законните права на други лица или нарушаване на това Споразумение, информацията ще бъде директно изтрита.

+

4.3.3 Ако нарушаването от страна на потребителя на горепосочените правила за използване причини вреди на трети страни, вие трябва да носите правна отговорност самостоятелно от свое име и трябва да гарантирате, че компанията няма да понесе загуби или увеличени разходи.

+

4.3.4 Ако потребителят наруши съответните правни разпоредби или споразумения, причинявайки загуби на Saitong или бъдейки обект на претенции от трети страни или наказание от административния орган, потребителят ще компенсира загубите и/или разходите, причинени на Saitong, включително разумни адвокатски хонорари, разходи за разследване и събиране на доказателства.

+ +

5. Описание на услугите на трети страни

+

5.1 Потребителят разбира и се съгласява, че софтуерната система може да съдържа услуги, предоставяни от свързани лица на Компанията или от трети страни, и че Компанията предоставя само съответните функционални модули в системата за удобство на потребителите и осигурява достъп до услуги на трети страни.

+

5.2 Независимо дали услугите на трети страни са предварително зададени в услугите на софтуерната система или са отворени или поръчани от самите потребители, потребителите разбират и се съгласяват, че Saitong не предоставя изрична или подразбираща се гаранция за законността и ефективността на доставчиците на услуги от трети страни или потребителите, както и за законността, точността, ефективността и сигурността на услугите на трети страни.

+

5.3 Компанията не контролира, не наблюдава и не предоставя каквато и да е гаранция или обезпечение за услугите на трети страни и не поема никаква отговорност.

+

5.4 Всякакъв спор или разногласие между потребителя и доставчика на услуги от трета страна ще бъде разрешен от Потребителя и третата страна в съответствие с бизнес процеса и бизнес нормите на доставчика на услуги от трета страна, а компанията няма да поема никаква отговорност.

+ +

6. Политика за поверителност и защита на личната информация

+

6.1 Saitong се ангажира да защитава поверителността на потребителите в съответствие с политиката за поверителност, моля вижте: Политика за поверителност на Voitrans.

+ +

7. Отговорност за нарушаване на договора

+

7.1 Saitong има право да преценява дали поведението на потребителя е в съответствие с разпоредбите на това Споразумение. Ако се счита, че Потребителят е нарушил съответните закони и разпоредби или разпоредбите на това Споразумение и свързаните правила, в зависимост от тежестта на нарушението на потребителя, Saitong има право да изтрие незаконната информация, да ограничи, спре, прекрати използването на услугата за Софтуера от потребителя, да преследва правната отговорност на потребителя и да предприеме други мерки, които Saitong счита за подходящи. Ако понесем загуби (включително, но не само получаване на претенции от трети страни или санкции от административен орган), Потребителят ще носи пълна отговорност.

+ +

8. Рискове на услугата и отказ от отговорност

+

8.1 Ние искаме да предоставяме сервизна поддръжка с настоящата технология. Saitong не гарантира, че услугата за Софтуера ще работи без прекъсване или грешка, че всички дефекти на услугата за Софтуера ще бъдат коригирани или че услугата за Софтуера ще отговори на всички изисквания на потребителите. За произтичащите последици Saitong не поема никаква отговорност.

+

8.2 Всички загуби, понесени от потребителя поради трети страни, като повреда на комуникационната линия, технически проблеми, мрежови проблеми, повреда на компютърно терминално оборудване, нестабилност на системата и други причини от непреодолима сила, няма да бъдат отговорност на компанията.

+

8.3 Saitong не гарантира законността, автентичността, точността и ефективността на информационното съдържание, получено чрез софтуера (включително, но не само, съдържанието на услуги на трети страни), и Saitong не поема никаква отговорност за резултатите от всяко поведение, извършено от потребителите въз основа на запитвания и преглеждане.

+

8.4 Софтуерът, подобно на повечето интернет софтуер, е засегнат от различия в фактори, включително, но не само, причини от страна на потребителя, качество на мрежовата услуга, социална среда и други фактори, и може да бъде подложен на различни проблеми със сигурността, като например използване от други лица на потребителска информация, водещо до тормоз в реалния живот; Друг софтуер, изтеглен и инсталиран от потребители, или други уебсайтове, посетени от потребители, съдържат вируси като „троянски коне", които заплашват сигурността на информацията и данните на крайното оборудване на потребителите и впоследствие засягат нормалното използване на софтуера. Потребителите трябва да засилят осведомеността за информационната сигурност и защитата на потребителските данни и да обърнат внимание на усилването на защитата с парола, за да избегнат загуби и тормоз.

+

8.5 Когато потребителите използват Софтуера или изискват от Saitong да предоставя конкретни услуги, Софтуерът може да извика системи на трети страни или софтуер на трети страни за поддържане на използването или достъпа на потребителите, като резултатите от използването или достъпа се предоставят от третата страна. Освен че спазват съответните правила на това Споразумение, потребителите трябва също да спазват споразуменията и съответните правила на третите страни. Потребителите трябва да разберат и да се съгласят, че при използване на услуги на трети страни третите страни могат да четат потребителски данни и Saitong не гарантира безопасността, точността, ефективността и други несигурни рискове на резултатите, постигнати чрез системи на трети страни или поддръжка на софтуер на трети страни, потребителите трябва да упражняват внимателна преценка и Saitong не поема никаква отговорност за каквито и да е спорове и щети, причинени от това.

+

8.6 За да се гарантира автономията на развитието и коригирането на бизнеса на компанията, компанията може да промени или прекъсне услугата по всяко време след уведомяване на потребителя по разумен начин.

+

8.7 Освен ако изрично е предвидено от закони и разпоредби, Saitong ще положи максимални усилия да гарантира, че софтуерът и включените технологии и информация са безопасни, ефективни, точни и надеждни, но ограничен от съществуващата технология, потребителят разбира, че Saitong не може да гарантира това.

+

8.8 Обезщетението за телесна повреда или случайни и непреки икономически щети, причинени от или във връзка с някое от следните обстоятелства, включително, но не само, загуба на печалби, загуба на данни, щети за прекъсване на бизнеса или други бизнес щети или загуби, ще бъде поето от Потребителя:

+

1) Използване или невъзможност за използване на лицензирания софтуер.

+

2) Неоторизирано използване на софтуера или промяна на потребителски данни от трети страни.

+

3) Разходи и загуби, понесени от действията на потребителя със софтуера.

+

4) Погрешни представи на потребителя за софтуера.

+

5) Всяка друга загуба, свързана със софтуера, която не може да бъде отнесена към причини на Saitong.

+

8.9 Потребителят се съгласява, че Компанията има право да спре, прекъсне или прекрати изцяло или частично Услугата за потребителя въз основа на изискванията на съдебните, регулаторните и надзорните органи или на собствените си бизнес причини. Saitong не поема отговорност за това.

+

8.10 Потребителят разбира и се съгласява, че Компанията ще използва търговски разумни усилия за осигуряване на сигурността на съхранението на данни в Софтуера и Услугите, но компанията не може да предостави пълна гаранция, а Потребителят разбира, че Компанията не носи отговорност за изтриването или неуспеха на съхранението или архивирането на данни в Услугата.

+

8.11 В максималната степен, разрешена от закона, Разработчикът или Доставчикът не носи отговорност за каквито и да е преки, непреки, случайни, специални или последващи щети, произтичащи от използването на Приложението. Ако потребителят има допълнителни нужди, моля, посетете акредитирана болница за задълбочено изследване.

+ +

9. Декларация за интелектуална собственост

+

9.1 Saitong е притежателят на правата върху интелектуалната собственост на този софтуер. Всички авторски права, търговски марки, патенти, търговски тайни и други права на интелектуална собственост на софтуера, както и цялото информационно съдържание, свързано със софтуера (включително, но не само, текст, снимки, аудио, видео, графики, дизайн на интерфейса, рамка на оформлението, свързани данни или електронни документи и др.) са защитени от местните закони и разпоредби и съответните международни договори.

+

9.2 Без писменото съгласие на Компанията, Потребителят не трябва да прилага, използва или прехвърля горепосочените права на интелектуална собственост за каквато и да е търговска или нетърговска цел и не трябва да разрешава на трети лица, а Компанията си запазва правото да преследва правната отговорност за горепосочените действия.

+ +

10. Промяна на протокола

+

10.1 Saitong има право да изменя условията на това Споразумение, когато е необходимо. След като условията на Споразумението бъдат променени, ревизираните условия на Споразумението ще бъдат публикувани на съответната страница. Ако не сте съгласни с промененото съдържание, потребителят трябва да поеме инициативата да отмени тази услуга. Ако Потребителят продължи да използва Услугите, се счита, че приема промените в условията на Споразумението.

+

10.2 Saitong си запазва правото да модифицира или промени платените услуги, стандартите за таксуване, методите за таксуване, таксите за услуги и условията за обслужване, предоставяни при необходимост. При предоставянето на услуги можем да начисляваме определени такси на потребителите на някои услуги сега или в бъдеще. Ако потребителите откажат да платят такива такси, те не могат да продължат да използват съответните услуги след началото на таксуването.

+
+ + diff --git a/doc/cs/privacy_policy.html b/doc/cs/privacy_policy.html new file mode 100644 index 000000000..61a7f1f99 --- /dev/null +++ b/doc/cs/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Zásady ochrany osobních údajů + + + + +
+

Voitrans Zásady ochrany osobních údajů

+

Poslední aktualizace: 27. května 2025

+

Datum účinnosti: 27. května 2025

+ +

Vítejte při používání softwaru a služeb Voitrans

+

1. Voitrans je poskytován společností Saitong Industries Inc. (dále jen "Společnost"). Může pomoci uživatelům spravovat zařízení Bluetooth a další produkty. Chápeme důležitost osobních údajů pro naše uživatele (dále jen "vy") a že účinná ochrana vašich osobních údajů je základním kamenem zdravého a udržitelného rozvoje našeho podnikání. Děkujeme za vaše používání produktů nebo služeb Voitrans a za vaši důvěru! Jsme si plně vědomi toho, že tato důvěra nepřichází snadno, dodržujeme zásadu otevřenosti a transparentnosti, abychom vám vyjádřili naše pravidla pro zpracování vašich osobních údajů, používáme legální a legitimní způsoby a jasné a přiměřené účely ke zpracování vašich osobních údajů. Zvláštní upozornění: Před použitím našich produktů nebo služeb si prosím pečlivě přečtěte a pochopte tyto Zásady ochrany osobních údajů, abyste mohli učinit vhodnou volbu.

+

2. Tyto Zásady ochrany osobních údajů vám vysvětlují, jak shromažďujeme, používáme, ukládáme a sdílíme vaše osobní údaje při používání Voitrans. Osobní údaje označují všechny druhy informací zaznamenaných elektronicky nebo jinými prostředky, které mohou identifikovat konkrétní fyzickou osobu nebo odrážet činnosti konkrétní fyzické osoby samostatně nebo v kombinaci s jinými informacemi. Voitrans respektuje a chrání osobní soukromí všech uživatelů služby. Pokud není v těchto Zásadách ochrany osobních údajů stanoveno jinak, Voitrans tyto informace nezveřejní ani neposkytne třetím stranám bez vašeho předchozího souhlasu.

+

3. Když používáte produkt nebo službu třetí strany prostřednictvím produktu nebo služby App Marketplace, vaše osobní údaje se řídí zásadami ochrany osobních údajů třetí strany.

+

4. Voitrans Tyto Zásady ochrany osobních údajů budou průběžně aktualizovány. Souhlasem se smlouvou o používání služeb Voitrans a zahájením používání Voitrans se považujete za souhlasícího se všemi ustanoveními těchto Zásad ochrany osobních údajů. Pokud s těmito Zásadami ochrany osobních údajů nesouhlasíte, nepoužívejte prosím software a služby Voitrans.

+

5. Za účelem analýzy a měření účinnosti příslušných služeb budeme používat a zveřejňovat vaše osobní údaje v souladu s ustanoveními těchto Zásad ochrany osobních údajů.

+ +

Tyto Zásady ochrany osobních údajů vám pomohou pochopit následující:

+
    +
  • 1 Informace, které shromažďujeme
  • +
  • 2 Ukládání informací
  • +
  • 3 Bezpečnost informací
  • +
  • 4 Jak používáme shromážděné informace
  • +
  • 5 Sdílení informací
  • +
  • 6 Jak spravujete své osobní údaje
  • +
  • 7 Popis oprávnění aplikace
  • +
  • 8 Přístup k SDK třetích stran
  • +
  • 9 Ochrana nezletilých
  • +
  • 10 Platné a aktualizované Zásady ochrany osobních údajů
  • +
  • 11 Jak nás kontaktovat
  • +
+ +

1. Informace, které shromažďujeme

+

1. Používejte Voitrans na začátku Začneme shromažďovat data o vašem používání aplikace

+

2. Voitrans může získat osobní údaje o vás od třetích stran nebo obchodních partnerů zákonnými prostředky

+

3. Abychom vám poskytli lepší produkty a služby, zajistili vám síťovou bezpečnost během používání, udržovali normální provoz produktů a optimalizovali a vylepšovali účel našich informačních služeb, poté, co aktivně kliknete na souhlas s těmito zásadami ochrany osobních údajů, použijte informace, které poskytujeme. Během služby, kromě osobních údajů nezbytných k zajištění normálního fungování základních funkcí aplikace v souladu s národními zákony a předpisy, budeme od vás shromažďovat další osobní údaje:

+

3.1 Za účelem identifikace rizikových uživatelů, posouzení pravosti uživatelů a komplexní prevence podvodů budeme při každém otevření softwaru číst informace o vašem zařízení, včetně: (Model zařízení, MAC adresa zařízení, jedinečný identifikátor zařízení (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, atd.) MEID, sériové číslo, SSID a BSSID WIFI), čtení Bluetooth adresy, verze operačního systému, název operačního systému, přihlašovací účet uživatele a informace o hesle;

+

3.2 Když používáte naše produkty a služby, můžeme shromažďovat určité informace prostřednictvím síťových log informací nebo určitých programů a softwaru, takové informace mohou zahrnovat: podrobnosti o používání produktů a služeb, jako je čas otevření vaší aplikace, délka používání a adresa navštívené stránky; Informace o událostech zařízení, jako jsou pády, systémová aktivita atd., k optimalizaci vašeho zařízení a zlepšení našich služeb;

+

3.3 K identifikaci aplikací, kde je zařízení ohroženo, poskytování bezpečnějších funkčních služeb. Proto musíme v procesu získat váš seznam aplikací/instalovaných aplikací, abychom zajistili normální provoz produktu a ochránili bezpečnost zařízení.

+

3.4 Za účelem analýzy používání aplikačních funkcí uživateli a určení pravosti uživatelů musíme provádět datovou statistiku a shromažďovat výše uvedené informace o zařízení, včetně MAC adresy zařízení a jedinečného identifikátoru zařízení, když je vaše zařízení používáno.

+

3.5 Signál zařízení: stav sítě zařízení, které používáte, informace o přístupovém bodu WIFI atd.

+

3.6 Informace o poloze: Můžeme používat GPS, WiFi nebo jiné technické prostředky ke shromažďování a zpracování informací o vaší poloze za účelem aktualizace místních informací, poskytování obsahových služeb atd.

+

Pro více informací klikněte na "Seznam shromažďování osobních údajů".

+ +

1. U citlivějších osobních údajů ve výše uvedených informacích, jako jsou informace o zařízení uživatele (číslo IMEI, stav hovoru a identifikační číslo), informace o poloze GPS, obsah fotografických médií a přístupová práva k souborům, získáme váš souhlas před shromažďováním. U některých necitlivých informací může být shromažďování výchozí a automatické. Můžete omezit naše shromažďování příslušných informací nebo používání určitých oprávnění z vašeho mobilního zařízení úpravou nastavení vašeho mobilního zařízení. Pokud omezíte náš přístup k určitému oprávnění, nemusíme být schopni pokračovat v poskytování odpovídajících služeb a nadále zpracovávat vaše odpovídající informace.

+

2. Nebudeme shromažďovat číslo vašeho občanského průkazu, osobní biometrické údaje, číslo bankovního účtu, majetkové údaje, kreditní údaje, zdravotní a fyziologické údaje a další osobní citlivé údaje.

+

3. O citlivých oprávněních: K řádnému používání funkcí aplikace potřebuje produkt získat následující oprávnění, aby mohl poskytovat funkční služby související s normálními produkty.

+ +

1 Získání oprávnění ke čtení a zápisu úložiště

+

1 Jak získat: vyskakovací výzva, po získání oprávnění uživatel aktivně klikne na souhlas a aplikace toto oprávnění použije

+

2 Účel a rozsah použití: Slouží ke skenování souborů mezipaměti zdrojů a miniatur v systému, načítání hudebních zdrojů a obrázků produktů. Zobrazuje se v rozhraní aplikace, aby uživatelé mohli snadno prohlížet a ovládat

+ +

2 Získání oprávnění k seznamu instalovaných aplikací

+

1 Jak získat: vyskakovací výzva, po získání oprávnění uživatel aktivně klikne na souhlas a aplikace toto oprávnění použije

+

2 Účel a rozsah použití: Když aplikace potřebuje používat reklamní služby, reklamní platforma třetí strany, Youmon +SDK, potřebuje získat "oprávnění k seznamu nainstalovaných aplikací" zařízení, aby uživateli nebyly nabízeny aplikace, které již vlastní, a zlepšil se uživatelský zážitek.

+ +

3 Oprávnění k získání informací o stavu zařízení

+

Zahrnuje: (Model zařízení, MAC adresa zařízení, jedinečný identifikátor zařízení (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, atd.) MEID, sériové číslo, SSID a BSSID WIFI, čtení Bluetooth adresy), verze operačního systému, název operačního systému atd.;

+

1 Jak získat: vyskakovací výzva, po získání oprávnění uživatel aktivně klikne na souhlas a aplikace toto oprávnění použije

+

2 Účel a rozsah použití: Při používání naší aplikace, za účelem analýzy používání funkcí aplikace uživatelem a posouzení pravosti uživatele, synchronizujeme oprávnění s SDK třetích stran, včetně Autonavi SDK, Youmon +SDK atd.

+ +

4 Přístup k informacím o poloze

+

1 Jak získat: vyskakovací výzvy, po získání oprávnění uživatel toto oprávnění použije, pouze když aktivně klikne na souhlas v aplikaci.

+

2 Účel a rozsah použití: Když aplikace potřebuje používat GPS, WiFi nebo jiné funkce, produkt potřebuje shromažďovat vaši polohu a informace pro vyhledávání Bluetooth zařízení v okolních místech.

+

Poznámka: Další oprávnění aplikace naleznete v tomto dokumentu "Zásady ochrany osobních údajů" Oddíl 7 "Popis oprávnění aplikace"

+ +

2. Ukládání informací

+

1. Kde jsou informace ukládány

+

Osobní údaje, které shromažďujeme a generujeme v Čínské lidové republice, budou ukládány na našich serverech a/nebo serverech našich přidružených společností.

+

2. Ukládání a zpracování informací

+

Vaše osobní údaje ukládáme pouze po dobu nezbytnou k dosažení účelu nebo po dobu vyžadovanou zákonem a předpisy. Po ukončení používání tohoto produktu okamžitě přestaneme shromažďovat a zpracovávat vaše osobní údaje a data aplikace. Po uplynutí výše uvedené doby osobní údaje, které jste nám poskytli, vymažeme nebo anonymizujeme.

+

Kromě nezbytných funkcí musí Voitrans požádat o odpovídající systémová oprávnění. Serverová strana cloudu neukládá osobní údaje uživatelů a přistupované SDK třetí strany bude anonymizováno a zbaveno identifikace poskytovatelem služeb (Amu Statistics SDK, Autonavi SDK), takže uživatele nelze sledovat. Informace uložené v telefonu uživatele budou automaticky smazány, když uživatel odinstaluje Voitrans nebo vymaže mezipaměť.

+ +

3. Bezpečnost informací

+

1. Voitrans ukládá a chrání vaše osobní údaje pomocí průmyslově standardních bezpečnostních opatření a technologií, jako je ověřování, šifrování dat, omezený přístup k datovému centru a dalších bezpečnostních opatření, aby bylo zajištěno, že vaše informace jsou chráněny před zveřejněním, změnou a zničením. Navzdory výše uvedeným bezpečnostním opatřením mějte prosím na paměti, že žádné bezpečnostní opatření nemůže být 100% bezpečné.

+

2. Při používání služeb poskytovaných Voitrans prosím chraňte své osobní údaje. Pokud zjistíte, že vaše osobní údaje byly ohroženy, kontaktujte nás prosím okamžitě, abychom mohli přijmout vhodná opatření.

+ +

4. Jak používáme shromážděné informace

+

1. Při implementaci obchodních funkcí aplikace můžeme použít vaše osobní údaje k zajištění integrity a bezpečnosti produktů a služeb, které vám poskytujeme;

+

2. Prostřednictvím shromážděných informací porozumíme vašim zvyklostem používání a pomocí analýzy dat identifikujeme přijatelnost služeb, vaše zvyklosti používání atd., abychom testovali a vytvářeli nové produkty, funkce a služby, zlepšovali úroveň služeb a pomáhali nám zlepšovat stávající služby a vyvíjet nové služby;

+

3. Vaše osobní údaje můžeme použít pro průzkumy zákazníků o produktech a službách, pro zasílání oznámení o produktech a službách a pro komerční propagaci;

+

4. Vaše informace můžeme použít pro interní analýzu a výzkum související s aplikací;

+ +

5. Sdílení informací

+

V současné době nebudeme aktivně sdílet ani přenášet vaše osobní údaje třetím stranám mimo společnost. Pokud dojde k jinému sdílení nebo přenosu vašich osobních údajů, přímo nebo potvrdíme, že třetí strana získala váš výslovný souhlas s výše uvedeným jednáním.

+

Nebudeme veřejně zveřejňovat shromážděné osobní údaje. Pokud je nezbytné je veřejně zveřejnit, budeme vás informovat o účelu veřejného zveřejnění, typu zveřejňovaných informací a citlivých informacích, které mohou být dotčeny, a získáme váš výslovný souhlas.

+

Jak se naše podnikání dále rozvíjí, můžeme se účastnit fúzí, akvizic, převodů aktiv a dalších transakcí a budeme vás informovat o příslušných okolnostech v souladu se zákony a předpisy a ne nižšími standardy, než vyžaduje tento Průvodce, abychom nadále chránili vaše osobní údaje nebo požadovali, aby nový správce pokračoval v ochraně vašich osobních údajů.

+

Kromě toho, podle příslušných zákonů a předpisů a národních standardů, můžeme sdílet, přenášet a veřejně zveřejňovat osobní údaje bez předchozího souhlasu a souhlasu subjektu osobních údajů za následujících okolností:

+
    +
  • 1 Přímo související s národní bezpečností a obranou státu;
  • +
  • 2 Přímo související s veřejnou bezpečností, veřejným zdravím nebo významnými veřejnými zájmy;
  • +
  • 3 Přímo související s vyšetřováním trestných činů, stíháním, soudem a výkonem rozsudků;
  • +
  • 4 Za účelem ochrany života, majetku a dalších významných oprávněných práv a zájmů subjektu osobních údajů nebo jiných osob, ale je obtížné získat souhlas dané osoby;
  • +
  • 5 Osobní údaje zveřejněné subjektem osobních údajů veřejnosti;
  • +
  • 6 Shromažďování osobních údajů z legálně zveřejněných informací, jako jsou legitimní zpravodajské zprávy, zveřejnění vládních informací a další kanály.
  • +
+ +

6. Jak spravujete své osobní údaje

+

V souladu s příslušnými zákony, předpisy a standardy Číny, jakož i běžnými postupy jiných zemí a regionů, zaručujeme, že budete uplatňovat následující práva k vašim osobním údajům:

+ +

1. Oprava vašich osobních údajů

+

Pokud zjistíte, že ve vašich osobních údajích zpracovávaných námi je chyba, máte právo chybné nebo neúplné informace opravit nebo aktualizovat. Pokud nemůžete působit samostatně v centru účtu, můžete napsat e-mail na adresu saitong.voitrans@gmail.com Kontaktujte nás

+ +

2. Vymazání vašich osobních údajů

+

V následujících případech nám můžete podat žádost o vymazání vašich osobních údajů:

+
    +
  • Pokud zpracováváme osobní údaje v rozporu se zákony a předpisy;
  • +
  • Pokud shromažďujeme a používáme vaše osobní údaje bez vašeho souhlasu;
  • +
  • Pokud naše zpracování osobních údajů porušuje naši smlouvu s vámi;
  • +
  • Pokud již nepoužíváte naše produkty nebo služby;
  • +
  • Pokud vám již neposkytujeme produkty nebo služby.
  • +
+

Kontaktujte nás. Vaši žádost zpracujeme prostřednictvím saitong.voitrans@gmail.com Kontaktujte nás. Zašleme vám ji po obdržení do 30 pracovních dnů od přijetí

+ +

3. Změna rozsahu vašeho souhlasu

+

Můžete nás kontaktovat e-mailem saitong.voitrans@gmail.com Kontaktujte nás. Na vaši žádost již nebudeme shromažďovat, používat ani zveřejňovat vaše osobní údaje. Mějte prosím na paměti, že odvolání vašeho souhlasu nebo vymazání vašich osobních údajů může ovlivnit vaše používání některých našich služeb.

+ +

4 Přístup k osobním údajům a jejich kopírování

+

V souladu s ustanoveními příslušných zákonů můžete poskytnout své imei (sériové číslo telefonu) nebo oaid Nebo Android ID Po informacích o účtu a dalších informacích můžete u nás požádat o přístup k vašim osobním údajům a jejich kopírování, můžete napsat e-mail na adresu 3514406195@qq.com Kontaktujte nás.

+ +

5. V reakci na vaši výše uvedenou žádost

+

Z bezpečnostních důvodů může být nutné podat písemnou žádost nebo jinak prokázat vaši totožnost. Můžeme vás požádat o ověření vaší totožnosti před zpracováním vaší žádosti. Na vaši přiměřenou žádost odpovíme a budeme se jí zabývat včas. Můžeme odmítnout žádosti, které jsou zbytečně opakované, vyžadují příliš mnoho technologie (například vývoj nových systémů nebo zásadní změny stávajících postupů), představují riziko pro oprávněné zájmy jiných osob nebo jsou vysoce nepraktické.

+

Za následujících okolností, podle požadavků zákonů a předpisů, nebudeme schopni vyhovět vaší žádosti:

+
    +
  • Souvisí s národní bezpečností a obranou státu;
  • +
  • V souvislosti s vyšetřováním trestných činů, stíháním a soudem;
  • +
  • Existují dostatečné důkazy o tom, že máte subjektivní zlý úmysl nebo zneužíváte práva;
  • +
  • Vyhovění vaší žádosti způsobí vážné poškození oprávněných práv a zájmů vás nebo jiných osob a organizací.
  • +
+ +

6. Zrušení účtu

+

Uživatel může provést operaci [zrušení účtu] v aplikaci. Kroky operace:

+
    +
  1. Přejděte na stránku [Můj]
  2. +
  3. Klikněte na tlačítko [Nastavení] vpravo nahoře
  4. +
  5. Klikněte na [Zrušit účet] pro potvrzení
  6. +
+

Po odhlášení budou informace o uživatelském účtu vymazány

+ +

7. Popis oprávnění aplikace

+

Abychom poskytli lepší produkty a služby, při používání softwaru požádáme o následující oprávnění. Když přejdete na domovskou stránku nebo použijete funkci, bude vyžádána autorizace. Pokud odmítnete, některé odpovídající funkce nebudou fungovat normálně. Konkrétní účely a připomenutí oprávnění jsou podrobně popsány níže:

+ +

1 Oprávnění k poloze:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

prostřednictvím WiFi nebo mobilní základnové stanice k získání informací o zeměpisné šířce a délce uživatele

+

Při používání Voitrans budeme vyhledávat vaše připojené Bluetooth zařízení na základě vaší geografické polohy. Současně, abychom poskytli stabilnější služby, optimalizovali produkty a zlepšili zážitek, budeme výše uvedené informace sdílet se třemi SDK, jako jsou Youmon a Autonavi, abychom získali provozní data a funkční služby Voitrans.

+

Režim připomenutí: Při prvním spuštění aplikace se zobrazí výzva k oprávnění vyžadující potvrzení souhlasu uživatele. Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Toto oprávnění je vyžadováno při přístupu k aplikaci za účelem provádění funkcí správy aplikace.

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

3 Síťová oprávnění:

+

android.permission.INTERNET

+

Při používání informačních služeb Voitrans a služeb upgradu verze jsou tato oprávnění vyžadována a za účelem zlepšení uživatelského zážitku a optimalizace schopností služeb budou tato oprávnění využívat i SDK třetích stran, jako jsou Friends.

+

Režim připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

4 Získání oprávnění ke stavu sítě:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Slouží k získání informace, zda je aktuální síťové připojení platné, k určení, zda je aktuální prostředí 4G, a zda upozornit na změny síťového prostředí, čímž ovlivňuje načítání informačního obsahu. Toto oprávnění je požadováno při používání Voitrans.

+

Změny stavu sítě ovlivňují nahrávání a načítání dat. Proto bude přístup k oprávnění stavu sítě sdílen s friends + a dalšími platformami.

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

5 Získání oprávnění k seznamu úloh:

+

android.permission.GET_TASKS

+

Toto oprávnění slouží k získání seznamu aplikací pro funkci správy softwaru. Při používání funkce správy softwaru je nutné číst aplikace nainstalované v mobilním telefonu.

+

Režim připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

6 Získání oprávnění k MAC adrese

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Při používání Voitrans bude aplikace potřebovat získat oprávnění k MAC adrese:

+

Když aplikace potřebuje hlásit data o cílové konverzi, platformy třetích stran, jako je Youmon +SDK, potřebují používat MAC.

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

7 Získání oprávnění k nahrávání zvuku

+

android.permission.RECORD_AUDIO

+

Při používání funkce hlasového vstupu Voitrans potřebujete oprávnění k nahrávání zvuku a hlavně používáte hlasový vstup pro překlad a další související funkce.

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů, uživateli se dynamicky zobrazí vyskakovací okno, když je to požadováno.

+ +

8 Získání oprávnění k SSID WIFI

+

Když je toto oprávnění použito, aplikace čte oprávnění k SSID WIFI:

+

Rozsah použití a účel: Když aplikace potřebuje používat služby analýzy dat, platformy třetích stran, jako je +SDK, potřebují číst "oprávnění k WIFI SSID" zařízení, aby uživatelům poskytly přesnější a efektivnější funkční služby.

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

9 Získání přístupu k Bluetooth

+

Když je toto oprávnění použito, aplikace čte oprávnění Bluetooth:

+

Rozsah použití a účel: Bluetooth zařízení pro vyhledávání a konfiguraci příslušenství, jako jsou Bluetooth headsetty, Bluetooth hodinky atd. Snadné pro uživatele ke správě

+

Metoda připomenutí: Při prvním spuštění aplikace se zobrazí výzva k oprávnění vyžadující potvrzení souhlasu uživatele. Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

10 Získání oprávnění k BSSID WiFi

+

Když aplikace potřebuje rozlišit a identifikovat uživatele za účelem poskytování funkčních služeb a datové statistiky, přečte oprávnění "WiFi BSSID" zařízení pro:

+

Rozsah použití a účel: 1 Platformy třetích stran: jako Youmeng SDK, Bugly SDK, Autonavi SDK

+

Metoda připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

11 Získání oprávnění k instalaci aplikací

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Software bude používat oprávnění k instalaci aplikací, které slouží hlavně k tomu, aby uživatelé mohli nainstalovat novou verzi a vyzkoušet nové funkce, když je k dispozici nová verze.

+

Režim připomenutí: Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

12 Získání oprávnění k fotoaparátu

+

android.permission.CAMERA

+

Voitrans používá oprávnění k fotoaparátu ke skenování QR kódů a párování Bluetooth zařízení, jako jsou Bluetooth headsetty a hodinky.

+

Metoda připomenutí: Při prvním spuštění aplikace se zobrazí výzva k oprávnění vyžadující potvrzení souhlasu uživatele. Uživatelská smlouva a popis Zásad ochrany osobních údajů.

+ +

Zvláštní upozornění:

+

1 Integrace aplikace v rámci jejich Allies SDK, Scott map SDK po souhlasu uživatele s povolením použití, aplikace na pozadí/v popředí pro ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI a další osobní údaje;

+

Poznámky: Více Viz následující obsah a oprávnění související s SDK [VIII. Přístup k seznamu SDK třetích stran]

+ +

8. Přístup k SDK třetích stran

+

1 Abychom zajistili stabilní provoz a realizaci funkcí našeho klienta, abyste mohli používat a využívat více služeb a funkcí, bude naše aplikace obsahovat sady nástrojů pro vývoj softwaru (SDK) nebo jiné podobné aplikace třetích stran, tyto třetí strany budou shromažďovat a zpracovávat příslušné informace v souladu s vlastními zásadami ochrany osobních údajů, aby normálně poskytovaly funkce a reklamní služby. O pravidlech shromažďování a zpracování informací třetími stranami se můžete dozvědět v následující části. Provádíme přísné bezpečnostní testy vývojových sad (SDK) pro partnery k získání informací, abychom chránili přiměřené používání a bezpečnost vašich osobních údajů. Upozorňujeme, že SDK třetích stran mohou změnit typy zpracování dat v důsledku upgradů svých verzí. Viz zásady ochrany osobních údajů publikované SDK třetích stran. Podrobnosti naleznete níže nebo kliknutím zobrazte Seznam SDK třetích stran.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Získané informace: Číslo zařízení, IP adresa, informace o softwaru zařízení, identifikační kód zařízení (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informace o IMSI SIM karty, IP, MAC adresa), identifikátor zařízení, region, informace o aplikacích souvisejících se zařízením a další informace o protokolech souvisejících se službami

+

Účel použití: Přihlášení a sdílení přes WeChat

+

Vývojář: Shenzhen Tencent Computer Systems Company Limited

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Získané informace: Název aplikace, verze aplikace, značka a model zařízení, operační systém, informace o operátorovi, rozlišení obrazovky, informace o senzorech (vektor, zrychlení, tlak, směr, geomagnetický, gyroskop, teplota, senzor osvětlení, signál NMEA), informace o síle signálu zařízení

+

Účel použití: Navigace pomocí Amap

+

Vývojář: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Získané informace: Název aplikace, verze aplikace, značka a model zařízení, operační systém, síťové informace, síla signálu zařízení atd.

+

Účel použití: Zobrazení mapy a interakce

+

Vývojář: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Získané informace: Informace o poloze (GPS, Wi-Fi, základnová stanice), informace o zařízení, síťové informace atd.

+

Účel použití: Poskytování služeb polohy

+

Vývojář: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Získané informace: Název aplikace, verze aplikace, informace o zařízení, síťové informace atd.

+

Účel použití: Mapové nástroje a optimalizace vykreslování

+

Vývojář: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Získané informace: Identifikátory zařízení, základní informace o zařízení, seznam nainstalovaného softwaru a síťové informace (podrobnosti viz oficiální zásady ochrany osobních údajů)

+

Účel použití: Přihlášení k účtu Alipay a vyvolání platby

+

Vývojář: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Získané informace: Verze SDK/API, platforma, časové razítko, identifikátor aplikace, verze aplikace, výrobce zařízení, verze OS, místní nastavení, časové pásmo, stav sítě (Wi-Fi atd.), síťové protokoly, data o pádech a používání, IP adresa atd. (podrobnosti viz oficiální zásady ochrany osobních údajů)

+

Účel použití: Monitorování kvality aplikace a služba hlášení dat

+

Vývojář: Shenzhen Tencent Computer Systems Company Limited

+

Metoda shromažďování: Vlastní shromažďování SDK

+

Odkaz na zásady ochrany osobních údajů: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Ochrana nezletilých

+

Uživatelé našich produktů a služeb mohou zahrnovat nezletilé osoby mladší 18 let. Nezletilí uživatelé by si měli vyžádat radu svých rodičů nebo zákonných zástupců ohledně těchto Zásad ochrany osobních údajů před používáním našich produktů a používat naše služby nebo poskytovat nám své informace po získání souhlasu a pod vedením svých rodičů nebo zákonných zástupců. Zákonní zástupci nezletilých, kteří mají dotazy, nás mohou kontaktovat prostřednictvím kontaktních údajů uvedených v těchto Zásadách ochrany osobních údajů.

+

Pokud nesouhlasíte se shromažďováním výše uvedených informací výše uvedenými poskytovateli služeb třetích stran, přestaňte prosím okamžitě používat Software. Během vašeho používání Softwaru budou tyto třetí strany shromažďovat a zpracovávat příslušné informace v souladu se svými vlastními zásadami ochrany osobních údajů, aby poskytovaly některé funkce, reklamu a další služby. Pokud dojde k úniku informací v důsledku shromažďování výše uvedených informací příslušným poskytovatelem služeb třetí strany, příslušný poskytovatel služeb třetí strany nese odpovídající právní odpovědnost.

+ +

10. Platné a aktualizované Zásady ochrany osobních údajů

+

1. Tyto Zásady ochrany osobních údajů jsou účinné od data zveřejnění.

+

2. Jak se naše podnikání vyvíjí a mění, naše Zásady ochrany osobních údajů se mohou změnit. Vyhrazujeme si právo kdykoli změnit naše zásady ochrany osobních údajů, proto je prosím pravidelně kontrolujte. Pokud provedeme změny v našich Zásadách ochrany osobních údajů, zveřejníme tyto aktualizace na našich webových stránkách, v aplikacích a na místech, která považujeme za vhodná, abychom vás informovali. Pokud jsou zásady ochrany osobních údajů aktualizovány, nabývají účinnosti od data aktualizace. Vaše pokračující používání našich produktů nebo služeb znamená, že souhlasíte s našimi změněnými Zásadami ochrany osobních údajů.

+ +

11. Jak nás kontaktovat

+

Saitong Industries Inc byla založena 22. listopadu 2024, registrovaná adresa: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Pokud chcete vědět více o naší společnosti a platformě, můžete nás kontaktovat prostřednictvím kontaktních informací uvedených v těchto zásadách (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/cs/user_agreement.html b/doc/cs/user_agreement.html new file mode 100644 index 000000000..63238b745 --- /dev/null +++ b/doc/cs/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Uživatelská smlouva aplikace Voitrans + + + +
+
Čeština
+ +

Uživatelská smlouva aplikace Voitrans

+ +

Tyto podmínky použití vám sdělují, jak přistupovat k aplikaci Voitrans a online službám ("Služby") a jak je používat. Saitong Industries Inc. (dále jen "Saitong") tímto upozorňuje uživatele, aby si pečlivě přečetli a plně porozuměli této Uživatelské smlouvě (dále jen "Smlouva"). Uživatelé by si měli pečlivě přečíst a plně porozumět podmínkám této Smlouvy. Přečtěte si ji prosím pozorně a zvolte, zda tuto Smlouvu přijímáte, nebo nepřijímáte. Vaše používání aplikace Voitrans APP (dále jen "Aplikace" nebo "Software") bude považováno za přijetí této Smlouvy a souhlasíte s tím, že budete vázáni podmínkami této Smlouvy. Pokud s touto Smlouvou nesouhlasíte, nepoužívejte Aplikaci.

+

Saitong si vyhrazuje právo tuto Smlouvu změnit a aktualizované podmínky Smlouvy budou zveřejněny v této aplikaci s účinností ode dne zveřejnění.

+ +

1. Obecná pravidla

+

1.1 Tato aplikace je software poskytovaný společností Saitong pro připojení sluchátkových produktů vydaných společností Saitong a jejími partnerskými společnostmi. Vlastnická práva a provozní práva k softwaru a souvisejícím službám náleží výhradně společnosti Saitong.

+

1.2 Tato Smlouva je smlouvou mezi vámi (dále jen "Uživatel") a společností a jejími partnery a provozními partnery (dále jen "Partneři") ohledně používání Aplikace a souvisejících služeb uživatelem.

+

1.3 Software a služby zahrnují:

+

1.3.1 Poskytovaný software nabízí uživatelům Voitrans připojení a párování Voitrans, správu nastavení funkcí a další softwarové služby v závislosti na skutečných softwarových službách poskytovaných Aplikací.

+

1.3.2 Aktualizace, upgrady a další služby softwaru.

+ +

2. Rozsah softwarové licence

+

2.1 Uživateli udělujeme osobní, nepřenosnou, nepodlicencovatelnou a nevýhradní licenci k Softwaru.

+

2.2 Uživatelé mohou instalovat, používat, zobrazovat a spouštět software na jednom mobilním koncovém zařízení pro nekomerční účely. Uživatel však nesmí instalovat, používat ani spouštět software pro komerční provozní účely, kopírovat, měnit, upravovat, připojovat nebo spouštět software nebo data uložená v paměti jakéhokoli koncového zařízení během provozu softwaru nebo interakční data mezi klientem a serverem během provozu softwaru, ani vytvářet jakákoli odvozená díla. To zahrnuje, ale není omezeno na, používání zásuvných modulů, pluginů nebo neoprávněných nástrojů/služeb třetích stran pro přístup k Softwaru a souvisejícím systémům. Pro komerční prodej, reprodukci a distribuci, jako je předinstalace a balíčkování softwaru, musí být získáno písemné oprávnění a povolení od společnosti Saitong.

+

2.3 Uživatel nesmí instalovat Software na jiná koncová zařízení bez výslovného povolení společnosti Saitong, včetně, ale nikoli výhradně, televizorů, digitálních set-top boxů, herních konzolí a dalších zařízení.

+

2.4 S výjimkou práv výslovně udělených touto Smlouvou nejsou Uživateli udělena žádná další práva a Uživatel musí získat písemný souhlas pro použití dalších práv.

+ +

3. Upgrade softwaru

+

3.1 Uživatel musí zvolit verzi softwaru vhodnou pro konfiguraci nainstalovaného koncového zařízení. V opačném případě budou problémy se softwarem, problémy se zařízením nebo poškození způsobené verzí softwaru, která není vhodná pro daný typ zařízení, výhradně odpovědností uživatele.

+

3.2 Za účelem zlepšení uživatelského zážitku a zlepšení obsahu služeb má Saitong právo čas od času poskytovat náhradní, upravené a upgradované verze softwaru. Funkce "Upozornění na upgrade" je pro uživatele ve výchozím nastavení povolena. V závislosti na různých verzích softwaru používaných uživateli poskytuje Saitong uživatelům možnost tuto funkci aktivovat. Po vydání nové verze softwaru Saitong nezaručuje další dostupnost staré verze softwaru.

+ +

4. Specifikace použití

+

4.1 Uživatelé mohou používat Software a Služby v souladu s touto Smlouvou za předpokladu dodržování zákona a této Smlouvy a uživatelé nesmí provádět následující úkony:

+

4.1.1 Odstraňovat veškeré informace o autorských právech na Softwaru a dalších kopiích a upravovat, odstraňovat nebo obcházet technická opatření nastavená Softwarem k ochraně práv duševního vlastnictví.

+

4.1.2 Provádět reverzní inženýrství Softwaru, jako je disassemblace, dekompilace nebo jiné pokusy o získání zdrojového kódu Softwaru.

+

4.1.3 Úpravou nebo paděláním instrukcí a dat při provozu softwaru, přidáváním, odstraňováním nebo změnou funkce nebo provozního efektu softwaru, nebo softwarem či metodami určenými pro výše uvedené účely k provozování nebo šíření veřejnosti, bez ohledu na to, zda jsou tyto úkony pro komerční účely.

+

4.1.4 Používat software pro jakékoli chování ohrožující bezpečnost sítě, včetně, ale nikoli výhradně: používání neautorizovaných dat nebo přístupu k neautorizovaným serverům/účtům; přístupu k veřejným sítím nebo jiným operačním systémům bez povolení a odstraňování, úpravy nebo přidávání uložených informací; neautorizovaných pokusů o zkoumání, skenování nebo testování slabin systému nebo sítě softwaru nebo jiných činů podrývajících bezpečnost sítě; pokusů o narušení nebo zničení normálního provozu softwarového systému nebo webových stránek, úmyslné šíření škodlivých programů nebo virů a jiné činnosti narušující normální síťové informační služby; padělání názvů TCP/IP paketů nebo částí názvů.

+

4.1.6 Bez písemného souhlasu Společnosti uživatel svévolně provádí následující úkony se softwarem a informacemi v něm, včetně, ale nikoli výhradně: používání, pronájem, půjčování, kopírování, úprava, propojení, přetisk, kompilace, publikace, vydání, zřízení zrcadlových stránek, vývoj odvozených produktů, děl, služeb, zásuvných modulů, pluginů, kompatibility, propojení atd. s pomocí Softwaru.

+

4.1.7 Používat Software k publikaci, přenosu, distribuci a ukládání obsahu, který porušuje vaše místní zákony.

+

4.1.8 Používat software k publikaci, přenosu, šíření a ukládání obsahu porušujícího práva duševního vlastnictví, obchodní tajemství a další oprávněné zájmy jiných osob.

+

4.1.9 Používat tento software k hromadné publikaci, přenosu a šíření reklamních informací a nevyžádaných informací.

+

4.1.10 Používat Software a další Služby jakýmkoli nezákonným způsobem, za jakýmkoli nezákonným účelem nebo jakýmkoli způsobem neslučitelným s licencovaným použitím této Smlouvy.

+

4.2 Specifikace zveřejňování informací

+

4.2.1 Pokud používáte software k publikaci informačního obsahu (pokud existuje), měli byste zaručit, že vlastníte práva duševního vlastnictví k informačnímu obsahu, který jste nahráli, nebo že jste získali zákonné oprávnění, a žádné vaše chování při používání softwaru a služeb neporušuje oprávněné práva a zájmy jakékoli třetí strany.

+

4.2.2 Při používání Softwaru nesmí uživatel používat Software k následujícím činnostem, včetně, ale nikoli výhradně:

+

4.2.2.1 Vytvářet, kopírovat, publikovat, šířit a uchovávat obsah porušující místní národní zákony a předpisy.

+

4.2.2.2 Publikovat, přenášet, šířit a uchovávat obsah porušující zákonná práva jiných osob, jako je pověst, podobizna, práva duševního vlastnictví a obchodní tajemství.

+

4.2.2.3 Vymýšlet fakta, zatajovat pravdu za účelem zavádění nebo klamání jiných.

+

4.2.2.4 Publikovat, přenášet a šířit reklamní informace a nevyžádané informace.

+

4.2.2.5 Provádět jiné činnosti porušující místní zákony a předpisy.

+

4.2.3 Bez povolení Společnosti nesmíte provádět v Softwaru žádné komerční aktivity, jako je reklama a prodej zboží.

+

4.3 Uživatel rozumí a souhlasí s tím, že:

+

4.3.1 Saitong posoudí, zda je uživatel podezřelý z porušení výše uvedených specifikací použití, a na základě výsledků posouzení pozastaví nebo ukončí vaši licenci k používání nebo přijme jiná omezující opatření, která mohou být přijata v souladu s touto smlouvou.

+

4.3.2 V případě použití licencovaného softwaru uživatelem zveřejněného podezření z protiprávnosti nebo podezření z porušení zákonných práv jiných osob nebo porušení této Smlouvy budou informace přímo odstraněny.

+

4.3.3 Pokud porušení výše uvedených pravidel použití uživatelem způsobí škodu třetím stranám, musíte nést právní odpovědnost samostatně svým vlastním jménem a měli byste zajistit, aby společnost Saitong byla uchráněna před ztrátami nebo zvýšenými náklady.

+

4.3.4 Pokud uživatel poruší příslušná právní ustanovení nebo smlouvy a způsobí společnosti Saitong ztráty, nebo bude vystaven nárokům třetích stran, nebo bude potrestán správním orgánem, uživatel nahradí ztráty a/nebo výdaje způsobené společnosti Saitong, včetně přiměřených poplatků za právní zastoupení, nákladů na šetření a shromažďování důkazů.

+ +

5. Popis služeb třetích stran

+

5.1 Uživatel rozumí a souhlasí s tím, že softwarový systém může obsahovat služby poskytované přidruženými společnostmi Společnosti nebo třetími stranami a že Společnost poskytuje v systému pouze příslušné funkční moduly pro pohodlí uživatelů a poskytuje přístup ke službám třetích stran.

+

5.2 Bez ohledu na to, zda jsou služby třetích stran přednastaveny v službách softwarového systému nebo otevřeny či objednány samotnými uživateli, uživatelé rozumí a souhlasí s tím, že Saitong neposkytuje žádnou výslovnou ani implicitní záruku zákonnosti a účinnosti poskytovatelů služeb třetích stran nebo uživatelů, ani zákonnosti, přesnosti, účinnosti a bezpečnosti služeb třetích stran.

+

5.3 Společnost nedohlíží, nekontroluje ani neposkytuje žádnou záruku jakéhokoli druhu za služby třetích stran, ani za ně nepřebírá žádnou odpovědnost.

+

5.4 Veškeré spory nebo neshody mezi uživatelem a poskytovatelem služeb třetí strany řeší Uživatel a třetí strana v souladu s obchodním procesem a obchodními normami poskytovatele služeb třetí strany a společnost nenese žádnou odpovědnost.

+ +

6. Zásady ochrany osobních údajů a ochrana osobních informací

+

6.1 Saitong se zavazuje chránit soukromí uživatelů v souladu se zásadami ochrany osobních údajů, viz: Zásady ochrany osobních údajů Voitrans.

+ +

7. Odpovědnost za porušení smlouvy

+

7.1 Saitong má právo posoudit, zda chování uživatele odpovídá ustanovením této Smlouvy. Pokud se má za to, že Uživatel porušil příslušné zákony a předpisy nebo ustanovení této Smlouvy a související pravidla, má Saitong v závislosti na závažnosti porušení uživatele právo odstranit nezákonné informace, omezit, pozastavit nebo ukončit uživatelovo používání Softwarové služby, uplatnit právní odpovědnost vůči uživateli a přijmout další opatření, která Saitong považuje za vhodná. Pokud nám vznikne jakákoli ztráta (včetně, ale nikoli výhradně, přijetí jakýchkoli nároků třetích stran nebo sankcí od jakéhokoli správního orgánu), Uživatel nese plnou odpovědnost.

+ +

8. Rizika služeb a vyloučení odpovědnosti

+

8.1 Chceme poskytovat servisní podporu pomocí současné technologie. Saitong nezaručuje, že Softwarová služba bude fungovat bez přerušení nebo chyb, že všechny vady Softwarové služby budou opraveny nebo že Softwarová služba splní všechny požadavky uživatelů. Saitong nenese žádnou odpovědnost za vzniklé následky.

+

8.2 Za veškeré ztráty, které uživateli vzniknou v důsledku třetích stran, jako jsou poruchy komunikačního vedení, technické problémy, sítě, poruchy koncových zařízení, nestabilita systému a jiné příčiny vyšší moci, nelze nést odpovědnost.

+

8.3 Saitong nezaručuje zákonnost, pravost, přesnost a účinnost informačního obsahu získaného prostřednictvím softwaru (včetně, ale nikoli výhradně, obsahu služeb třetích stran) a Saitong nenese žádnou odpovědnost za výsledky jakéhokoli chování uživatelů na základě dotazu a prohlížení.

+

8.4 Software, stejně jako většina internetového softwaru, je ovlivněn rozdíly ve faktorech včetně, ale nikoli výhradně, uživatelských příčin, kvality síťových služeb, sociálního prostředí a dalších faktorů a může být vystaven různým bezpečnostním problémům, jako je využívání uživatelských informací jinými osobami vedoucí k obtěžování v reálném životě; jiný software stažený a nainstalovaný uživateli nebo jiné webové stránky navštívené uživateli obsahují viry jako "trojské koně", které ohrožují bezpečnost informací a dat koncových zařízení uživatelů a následně ovlivňují normální používání softwaru. Uživatelé by měli posílit povědomí o informační bezpečnosti a ochraně uživatelských dat a věnovat pozornost posílení ochrany heslem, aby se vyhnuli ztrátám a obtěžování.

+

8.5 Když uživatelé používají Software nebo požadují, aby Saitong poskytoval konkrétní služby, Software může volat systémy nebo software třetích stran na podporu používání nebo přístupu uživatelů a výsledky používání nebo přístupu poskytuje třetí strana. Kromě dodržování příslušných pravidel této Smlouvy by uživatelé měli také dodržovat smlouvy a související pravidla třetí strany. Uživatelé musí rozumět a souhlasit s tím, že při používání služeb třetích stran mohou třetí strany číst uživatelská data a Saitong nezaručuje bezpečnost, přesnost, účinnost a další nejistá rizika výsledků dosažených prostřednictvím systémů nebo softwarové podpory třetích stran, uživatelé by měli uplatnit pečlivý úsudek a Saitong nenese žádnou odpovědnost za jakékoli spory a škody tímto způsobené.

+

8.6 Za účelem zajištění autonomie obchodního rozvoje a úprav společnosti může společnost kdykoli upravit nebo přerušit službu po přiměřeném oznámení uživateli.

+

8.7 Není-li zákonem výslovně stanoveno jinak, Saitong vynaloží maximální úsilí k zajištění toho, aby software a související technologie a informace byly bezpečné, účinné, přesné a spolehlivé, ale vzhledem k omezením stávající technologie uživatel chápe, že Saitong to nemůže zaručit.

+

8.8 Náhrada za újmu na zdraví nebo nahodilé a nepřímé ekonomické škody způsobené nebo v souvislosti s některou z následujících okolností, včetně, ale nikoli výhradně, ušlého zisku, ztráty dat, náhrady škody za přerušení podnikání nebo jiných obchodních škod nebo ztrát, nese Uživatel:

+

1) Použití nebo nemožnost použití licencovaného softwaru.

+

2) Neoprávněné použití softwaru nebo změna uživatelských dat třetími stranami.

+

3) Výdaje a ztráty vzniklé uživatelovými činnostmi se softwarem.

+

4) Nesprávné představy uživatele o softwaru.

+

5) Jakékoli jiné ztráty související se softwarem, které nejsou přičitatelné příčinám ze strany Saitongu.

+

8.9 Uživatel souhlasí s tím, že Společnost má právo pozastavit, přerušit nebo ukončit veškeré nebo část Služby uživateli na základě požadavků soudních, regulačních a dozorových orgánů nebo z vlastních obchodních důvodů. Saitong za to nenese žádnou odpovědnost.

+

8.10 Uživatel rozumí a souhlasí s tím, že Společnost vynaloží obchodně přiměřené úsilí k zajištění bezpečnosti ukládání dat v Softwaru a Službách, ale společnost nemůže poskytnout úplnou záruku a Uživatel chápe, že Společnost není odpovědná za smazání nebo selhání ukládání nebo zálohování dat ve Službě.

+

8.11 V maximálním rozsahu povoleném zákonem nenese Vývojář ani Dodavatel odpovědnost za jakékoli přímé, nepřímé, nahodilé, zvláštní nebo následné škody vzniklé používáním Aplikace. Pokud má uživatel další potřeby, navštivte prosím řádnou nemocnici pro podrobné vyšetření.

+ +

9. Prohlášení o duševním vlastnictví

+

9.1 Saitong je držitelem práv duševního vlastnictví tohoto softwaru. Veškerá autorská práva, ochranné známky, patenty, obchodní tajemství a další práva duševního vlastnictví softwaru, jakož i veškerý informační obsah související se softwarem (včetně, ale nikoli výhradně, textu, obrázků, zvuku, videa, grafiky, designu rozhraní, rámců rozložení, příslušných dat nebo elektronických dokumentů atd.) jsou chráněny místními zákony a předpisy a odpovídajícími mezinárodními smlouvami.

+

9.2 Bez písemného souhlasu Společnosti Uživatel nesmí implementovat, využívat ani převádět výše uvedená práva duševního vlastnictví pro jakýkoli komerční nebo nekomerční účel, ani k tomu oprávnit jakoukoli třetí stranu, a Společnost si vyhrazuje právo uplatnit právní odpovědnost za výše uvedené činnosti.

+ +

10. Změna smlouvy

+

10.1 Saitong má právo v případě potřeby změnit podmínky této Smlouvy. Jakmile budou podmínky Smlouvy změněny, revidované podmínky Smlouvy budou zveřejněny na příslušné stránce. Pokud nesouhlasíte se změněným obsahem, uživatel by měl z vlastní iniciativy tuto službu zrušit. Pokud Uživatel nadále používá Služby, má se za to, že přijímá změny podmínek Smlouvy.

+

10.2 Saitong si vyhrazuje právo v případě potřeby upravit nebo změnit poskytované placené služby, standardy poplatků, metody účtování, servisní poplatky a podmínky služeb. Při poskytování služeb můžeme nyní nebo v budoucnu účtovat určité poplatky uživatelům některých služeb. Pokud uživatelé odmítnou tyto poplatky platit, nemohou po zahájení účtování poplatků nadále používat příslušné služby.

+
+ + diff --git a/doc/da/privacy_policy.html b/doc/da/privacy_policy.html new file mode 100644 index 000000000..9b133cd17 --- /dev/null +++ b/doc/da/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Fortrolighedspolitik + + + + +
+

Voitrans Fortrolighedspolitik

+

Sidst opdateret: 27. maj 2025

+

Ikrafttrædelsesdato: 27. maj 2025

+ +

Velkommen til at bruge Voitrans Software og Tjenester

+

1. Voitrans leveres af Saitong Industries Inc. (herefter benævnt "Virksomheden"). Den kan hjælpe brugere med at opnå styring af Bluetooth-enheder og andre produkter. Vi forstår vigtigheden af personlige oplysninger for vores brugere (herefter benævnt "dig"), og at effektiv beskyttelse af dine personlige oplysninger er grundlaget for sund og bæredygtig udvikling af vores forretning. Tak for din brug af og tillid til Voitrans-produkter eller -tjenester! Vi er fuldt ud klar over, at denne tillid ikke kommer let, vi overholder princippet om åbenhed og gennemsigtighed, for at udtrykke vores regler for behandling af dine personlige oplysninger over for dig, bruger vi lovlige og legitime måder og klare og rimelige formål til at behandle dine personlige oplysninger. Særlig bemærkning: Sørg venligst for at læse og forstå denne Fortrolighedspolitik omhyggeligt, før du bruger vores produkter eller tjenester, så du kan træffe passende valg.

+

2. Denne Fortrolighedspolitik forklarer dig, hvordan vi indsamler, bruger, opbevarer og deler dine personlige oplysninger, når du bruger Voitrans. Personlige oplysninger refererer til alle former for oplysninger registreret med elektroniske eller andre midler, der kan identificere en bestemt fysisk person eller afspejle en bestemt fysisk persons aktiviteter alene eller i kombination med andre oplysninger. Voitrans respekterer og beskytter det personlige privatliv for alle brugere af tjenesten. Medmindre andet er bestemt i denne Fortrolighedspolitik, vil Voitrans ikke offentliggøre disse oplysninger eller stille dem til rådighed for tredjeparter uden din forudgående tilladelse.

+

3. Når du bruger en tredjeparts produkt eller tjeneste gennem et App Marketplace-produkt eller -tjeneste, er dine personlige oplysninger underlagt tredjepartens fortrolighedspolitik.

+

4. Voitrans Denne Fortrolighedspolitik vil blive opdateret fra tid til anden. Ved at acceptere Voitrans-servicebrugsaftalen og begynde at bruge Voitrans anses du for at have accepteret hele denne Fortrolighedspolitik. Hvis du ikke er enig i denne Fortrolighedspolitik, bedes du ikke bruge Voitrans Software og Tjenester.

+

5. For at analysere og måle effektiviteten af relevante tjenester vil vi bruge og offentliggøre dine personlige oplysninger i overensstemmelse med bestemmelserne i denne Fortrolighedspolitik.

+ +

Denne Fortrolighedspolitik vil hjælpe dig med at forstå følgende:

+
    +
  • 1 De oplysninger, vi indsamler
  • +
  • 2 Opbevaring af oplysninger
  • +
  • 3 Informationssikkerhed
  • +
  • 4 Hvordan vi bruger de oplysninger, vi indsamler
  • +
  • 5 Deling af oplysninger
  • +
  • 6 Hvordan du administrerer dine personlige oplysninger
  • +
  • 7 Beskrivelse af applikationstilladelser
  • +
  • 8 Adgang til tredjeparts-SDK'er
  • +
  • 9 Beskyttelse af mindreårige
  • +
  • 10 Gyldig og opdateret Fortrolighedspolitik
  • +
  • 11 Sådan kontakter du os
  • +
+ +

1. De oplysninger, vi indsamler

+

1. Brug Voitrans I begyndelsen vil vi begynde at indsamle data om din brug af applikationen

+

2. Voitrans kan indhente personlige oplysninger om dig fra tredjeparter eller forretningspartnere gennem lovlige midler

+

3. For at give dig bedre produkter og tjenester, give dig netværkssikkerhed under brug, opretholde normal drift af produkter og optimere og forbedre, formålet med vores informationstjenester, efter at du aktivt har klikket for at acceptere denne fortrolighedspolitik, bruger du de oplysninger, vi leverer. Under tjenesten, ud over de personlige oplysninger, der er nødvendige for at sikre normal drift af de grundlæggende funktioner i Appen i overensstemmelse med nationale love og regler, vil vi indsamle andre personlige oplysninger fra dig:

+

3.1 For at identificere risikobrugere, bedømme brugernes ægthed og forebygge svindel på en omfattende måde, vil vi læse dine enhedsoplysninger, hver gang du åbner softwaren, herunder: (Enhedsmodel, enhedens MAC-adresse, enhedens unikke identifikator (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID osv.) MEID, serienummer, SSID og BSSID for WIFI), læse Bluetooth-adresse, operativsystemversion, operativsystemnavn, brugerloginkontooplysninger og adgangskode;

+

3.2 Når du bruger vores produkter og tjenester, kan vi indsamle visse oplysninger gennem netværkslogoplysninger eller visse programmer og software, sådanne oplysninger kan omfatte: detaljer om brug af produkter og tjenester, såsom åbningstiden for din applikation, brugslængden og adressen på den besøgte side; enhedshændelsesoplysninger, såsom nedbrud, systemaktivitet osv., for at optimere din enhed og forbedre vores tjenester;

+

3.3 For at identificere applikationer, hvor udstyr er i risiko, og levere mere sikre funktionelle tjenester. Derfor skal vi indhente din applikations-/applikationsinstallationsliste i processen for at sikre normal drift af produktet og beskytte enhedens sikkerhed.

+

3.4 For at analysere brugernes brug af applikationsfunktioner og fastslå brugernes ægthed, skal vi udføre datastatistikker og indsamle ovennævnte enhedsoplysninger, herunder enhedens MAC-adresse og enhedens unikke identifikator, når din enhed er i brug.

+

3.5 Enhedssignal: netværksstatus for den enhed, du bruger, WIFI-adgangspunktoplysninger osv.

+

3.6 Lokationsoplysninger: Vi kan bruge GPS, WiFi eller andre tekniske midler til at indsamle og behandle oplysninger om din placering til opdatering af lokale oplysninger, levering af indholdstjenester osv.

+

For mere information, klik venligst på "Liste over indsamling af personlige oplysninger".

+ +

1. For de mere følsomme personlige oplysninger i ovenstående oplysninger, såsom brugerenhedsoplysninger (IMEI-nummer, opkaldsstatus og identifikationsnummer), GPS-lokationsoplysninger, fotomedieindhold og filadgangsrettigheder, vil vi indhente dit samtykke før indsamling. For visse ikke-følsomme oplysninger kan indsamlingen være standard og automatisk. Du kan begrænse vores indsamling af relevante oplysninger eller brug af visse tilladelser fra din mobile enhed ved at justere indstillingerne på din mobile enhed. Når du begrænser vores adgang til en bestemt tilladelse, kan vi muligvis ikke fortsætte med at levere de tilsvarende tjenester, og vi vil ikke længere behandle dine tilsvarende oplysninger.

+

2. Vi vil ikke indsamle dit id-kortnummer, personlige biometriske oplysninger, bankkontonummer, ejendomsoplysninger, kreditoplysninger, sundheds- og fysiologiske oplysninger og andre personlige følsomme oplysninger.

+

3. Om følsomme tilladelser: For korrekt brug af applikationsfunktionerne skal produktet indhente følgende tilladelser for at kunne levere funktionelle tjenester relateret til normale produkter.

+ +

1 Få læse- og skrivetilladelser til lagring

+

1 Sådan fås: pop op-prompt, når tilladelsen er opnået, vil brugeren aktivt klikke accepter, og applikationen vil bruge denne tilladelse

+

2 Formål og anvendelsesområde: Bruges til at scanne ressourcecachefiler og miniaturebilleder i systemet, indlæse musikressourcer og produktbilleder. Det vises i App-grænsefladen for at lette brugernes visning og betjening

+ +

2 Få tilladelse til applikationsinstallationslisten

+

1 Sådan fås: pop op-prompt, når tilladelsen er opnået, vil brugeren aktivt klikke accepter, og applikationen vil bruge denne tilladelse

+

2 Formål og anvendelsesområde: Når applikationen skal bruge annonceringsfremstødstjenester, skal tredjeparts annonceplatformen Youmon +SDK indhente enhedens "tilladelse til liste over installeret app-software" for at forhindre afsendelse af en applikation, som brugeren allerede har, og forbedre brugeroplevelsen.

+ +

3 Tilladelse til at indhente enhedsstatusoplysninger

+

Inkluderer: (Enhedsmodel, enhedens MAC-adresse, enhedens unikke identifikator (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID osv.) MEID, serienummer, SSID og BSSID for WIFI, læs Bluetooth-adresse), operativsystemversion, operativsystemnavn osv.;

+

1 Sådan fås: pop op-prompt, når tilladelsen er opnået, vil brugeren aktivt klikke accepter, og applikationen vil bruge denne tilladelse

+

2 Formål og anvendelsesområde: Når du bruger vores applikation, for at analysere brugerens brug af applikationsfunktioner og bedømme brugerens ægthed, vil vi synkronisere tilladelsen til tredjeparts-SDK'er, herunder Autonavi SDK, Youmon +SDK osv.

+ +

4 Adgang til lokationsoplysninger

+

1 Sådan fås: pop op-prompts, når tilladelsen er opnået, vil brugeren kun bruge denne tilladelse, når han/hun aktivt klikker accepter med applikationen.

+

2 Formål og anvendelsesområde: Når applikationen skal bruge GPS, WiFi eller andre funktioner, skal produktet indsamle din placering og oplysninger for at søge efter Bluetooth-enheder i nærliggende lokationer.

+

Bemærk: For flere applikationstilladelser, se dette dokument "Fortrolighedspolitik" Afsnit 7 "Beskrivelse af applikationstilladelser"

+ +

2. Opbevaring af oplysninger

+

1. Hvor oplysningerne opbevares

+

De personlige oplysninger, vi indsamler og genererer i Folkerepublikken Kina, vil blive opbevaret på vores servere og/eller vores tilknyttede selskabers servere.

+

2. Opbevaring og behandling af oplysninger

+

Vi opbevarer kun dine personlige oplysninger i den periode, der er nødvendig for at opfylde formålet, eller så længe det kræves af lov og regler. Når du holder op med at bruge dette produkt, vil vi straks stoppe med at indsamle og behandle dine personlige oplysninger og applikationsdata. Når ovennævnte periode er overskredet, vil vi slette eller anonymisere de personlige oplysninger, du har givet os.

+

Ud over de nødvendige funktioner skal Voitrans ansøge om tilsvarende systemtilladelser. Serversiden af skyen opbevarer ikke brugerens personlige oplysninger, og de tilgåede tredjeparts-SDK'er vil blive anonymiseret og afidentificeret af tjenesteudbyderen (Amu Statistics SDK, Autonavi SDK), så brugerne ikke kan spores. Oplysninger, der er gemt på brugerens telefon, slettes automatisk, når brugeren afinstallerer Voitrans eller rydder cachen.

+ +

3. Informationssikkerhed

+

1. Voitrans opbevarer og beskytter dine personlige oplysninger ved hjælp af branchestandardmæssige sikkerhedsforanstaltninger og teknologier, såsom autentificering, datakryptering, begrænset adgang til datacenter og andre sikkerhedsforanstaltninger for at sikre, at dine oplysninger er sikre mod offentliggørelse, ændring og ødelæggelse. På trods af ovennævnte sikkerhedsforanstaltninger skal du være opmærksom på, at ingen sikkerhedsforanstaltning kan være 100% sikker.

+

2. Når du bruger de tjenester, der leveres af Voitrans, bedes du beskytte dine personlige oplysninger. Hvis du opdager, at dine personlige oplysninger er blevet kompromitteret, bedes du kontakte os med det samme, så vi kan tage passende foranstaltninger.

+ +

4. Hvordan vi bruger de oplysninger, vi indsamler

+

1. Ved implementering af applikationens forretningsfunktioner kan vi bruge dine personlige oplysninger til at sikre integriteten og sikkerheden af de produkter og tjenester, vi leverer til dig;

+

2. Vi vil forstå dine brugsvaner gennem de indsamlede oplysninger, og ved hjælp af dataanalyse identificere accepten af tjenester, dine brugsvaner osv., for at teste og skabe nye produkter, funktioner og tjenester, forbedre serviceniveauet og hjælpe os med at forbedre eksisterende tjenester og udvikle nye tjenester;

+

3. Vi kan bruge dine personlige oplysninger til kundeundersøgelser om produkterne og tjenesterne, til afsendelse af meddelelser om produkterne og tjenesterne og til kommerciel promovering;

+

4. Vi kan bruge dine oplysninger til intern analyse og forskning relateret til applikationen;

+ +

5. Deling af oplysninger

+

I øjeblikket vil vi ikke aktivt dele eller overføre dine personlige oplysninger til tredjeparter uden for virksomheden. Hvis der er anden deling eller overførsel af dine personlige oplysninger, vil vi direkte eller bekræfte, at tredjeparten har opnået dit udtrykkelige samtykke til ovenstående adfærd.

+

Vi vil ikke offentligt offentliggøre de personlige oplysninger, vi indsamler. Hvis det er nødvendigt at offentliggøre dem, vil vi informere dig om formålet med offentliggørelsen, typen af oplysninger, der offentliggøres, og de følsomme oplysninger, der kan være involveret, og indhente dit udtrykkelige samtykke.

+

Da vores forretning fortsat udvikler sig, kan vi deltage i fusioner, opkøb, aktivoverførsler og andre transaktioner, og vi vil informere dig om de relevante omstændigheder i overensstemmelse med love og regler og ikke mindre end de standarder, der kræves af denne vejledning, for at fortsætte med at beskytte dine personlige oplysninger eller kræve, at en ny dataansvarlig fortsætter med at beskytte dine personlige oplysninger.

+

Derudover kan vi i henhold til relevante love og regler samt nationale standarder dele, overføre og offentligt offentliggøre personlige oplysninger uden forudgående tilladelse og samtykke fra den registrerede under følgende omstændigheder:

+
    +
  • 1 Direkte relateret til national sikkerhed og nationalt forsvar;
  • +
  • 2 Direkte relateret til offentlig sikkerhed, folkesundhed eller større offentlige interesser;
  • +
  • 3 Direkte relateret til strafferetlig efterforskning, retsforfølgelse, retssag og fuldbyrdelse af domme;
  • +
  • 4 For at beskytte liv, ejendom og andre væsentlige legitime rettigheder og interesser for den registrerede eller andre personer, men det er vanskeligt at opnå personens samtykke;
  • +
  • 5 Personlige oplysninger offentliggjort af den registrerede selv;
  • +
  • 6 Indsamling af personlige oplysninger fra lovligt offentliggjorte oplysninger, såsom legitime nyhedsrapporter, offentliggørelse af offentlige oplysninger og andre kanaler.
  • +
+ +

6. Hvordan du administrerer dine personlige oplysninger

+

I overensstemmelse med de relevante love, regler og standarder i Kina, samt almindelig praksis i andre lande og regioner, garanterer vi, at du udøver følgende rettigheder over dine personlige oplysninger:

+ +

1. Ret dine personlige oplysninger

+

Hvis du finder ud af, at der er en fejl i dine personlige oplysninger, som vi behandler, har du ret til at rette eller opdatere de forkerte eller ufuldstændige oplysninger. Hvis du ikke kan betjene selvstændigt i kontocentret, kan du sende en e-mail til saitong.voitrans@gmail.com Kontakt os

+ +

2. Slet dine personlige oplysninger

+

I følgende tilfælde kan du anmode os om at slette dine personlige oplysninger:

+
    +
  • Hvis vi behandler personlige oplysninger i strid med love og regler;
  • +
  • Hvis vi indsamler og bruger dine personlige oplysninger uden dit samtykke;
  • +
  • Hvis vores behandling af personlige oplysninger krænker vores aftale med dig;
  • +
  • Hvis du ikke længere bruger vores produkter eller tjenester;
  • +
  • Hvis vi ikke længere leverer produkter eller tjenester til dig.
  • +
+

Kontakt os. Vi behandler din anmodning på saitong.voitrans@gmail.com Kontakt os. Vi sender den til dig efter modtagelse inden for 30 arbejdsdage

+ +

3. Ændre omfanget af dit samtykke

+

Du kan kontakte os via e-mail på saitong.voitrans@gmail.com Kontakt os. På din anmodning vil vi ikke længere indsamle, bruge eller offentliggøre dine personlige oplysninger. Bemærk venligst, at tilbagetrækning af dit samtykke eller sletning af dine personlige oplysninger kan påvirke din brug af nogle af vores tjenester.

+ +

4 Adgang til og kopi af personlige oplysninger

+

Du kan i overensstemmelse med bestemmelserne i de relevante love angive din imei (telefonens serienummer) eller oaid eller Android ID kontooplysninger og andre oplysninger, og ansøge os om adgang til og kopi af dine personlige oplysninger, du kan sende en e-mail til 3514406195@qq.com Kontakt os.

+ +

5. Som svar på din ovennævnte anmodning

+

Af sikkerhedshensyn kan du blive bedt om at fremsætte en skriftlig anmodning eller på anden måde bevise din identitet. Vi kan bede dig om at bekræfte din identitet, før vi behandler din anmodning. For din rimelige anmodning vil vi svare og håndtere den rettidigt. Vi kan afvise anmodninger, der er unødvendigt gentagende, kræver for meget teknologi (for eksempel udvikling af nye systemer eller grundlæggende ændringer i eksisterende praksis), udgør en risiko for andres legitime interesser, eller som er yderst upraktiske.

+

Under følgende omstændigheder, i henhold til lovkrav, vil vi ikke kunne svare på din anmodning:

+
    +
  • Relateret til national sikkerhed og nationalt forsvar;
  • +
  • I forbindelse med strafferetlig efterforskning, retsforfølgelse og retssag;
  • +
  • Der er tilstrækkeligt bevis for, at du har subjektiv ond vilje eller misbrug af rettigheder;
  • +
  • At svare på din anmodning vil forårsage alvorlig skade på de legitime rettigheder og interesser for dig eller andre personer og organisationer.
  • +
+ +

6. Kontosletning

+

Brugeren kan udføre [kontosletning] i Appen. Betjeningsskridt:

+
    +
  1. Gå til siden [Min]
  2. +
  3. Klik på knappen [Indstillinger] i øverste højre hjørne
  4. +
  5. Klik på [Slet konto] for at bekræfte
  6. +
+

Når du logger ud, ryddes oplysningerne om brugerkontoen

+ +

7. Beskrivelse af applikationstilladelser

+

For at levere bedre produkter og tjenester, når du bruger softwaren, vil vi ansøge om følgende rettigheder. Når du går ind på startsiden eller bruger funktionen, vil der blive anmodet om autorisation. Hvis du afviser, vil nogle af de tilsvarende funktioner ikke kunne bruges normalt. De specifikke formål og påmindelser om tilladelser beskrives detaljeret som følger:

+ +

1 Lokationstilladelser:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

via WiFi eller mobil basestation at indhente brugerens bredde- og længdegradslokationsoplysninger

+

Når du bruger Voitrans, vil vi søge efter din tilknyttede Bluetooth-enhed baseret på din geografiske placering. Samtidig, for at levere mere stabile tjenester, optimere produkter og forbedre oplevelsen, vil vi dele ovenstående oplysninger med tre SDK'er, såsom Youmon og Autonavi, for at opnå Voitrans-driftsdata og funktionelle tjenester.

+

Påmindelsesmetode: En prompt, der angiver tilladelsen til at starte applikationen for første gang, vises, som kræver, at brugeren bekræfter accept. Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Denne tilladelse er påkrævet, når du tilgår en applikation for at udføre applikationsstyringsfunktioner.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

3 Netværkstilladelser:

+

android.permission.INTERNET

+

Når du bruger Disse tilladelser er påkrævet for Voitrans' informationstjenester og versionsopgraderingstjenester, og for at forbedre brugeroplevelsen og optimere servicekapaciteterne vil tredjeparts-SDK'er som Friends også bruge disse tilladelser.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

4 Få netværksstatustilladelser:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Det bruges til at indhente, om den aktuelle netværksforbindelse er gyldig, afgøre om det aktuelle 4G-miljø er, og om man skal minde om ændringer i netværksmiljøet, hvilket påvirker indlæsningen af informationsindhold. Denne tilladelse ansøges om, når du bruger Voitrans.

+

Ændringer i netværksstatus påvirker upload og indlæsning af data. Derfor vil adgang til netværksstatustilladelsen blive delt med friends + og andre platforme.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

5 Få opgavelistetilladelser:

+

android.permission.GET_TASKS

+

Denne tilladelse bruges til at indhente applikationslisten for softwarestyringsfunktionen. Når du bruger softwarestyringsfunktionen, skal du læse de applikationer, der er installeret på mobiltelefonen.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

6 Indhent MAC-adressetilladelse

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Når du bruger Voitrans, vil applikationen have brug for at indhente MAC-adressetilladelser:

+

Når en applikation skal rapportere målkonverteringsdata, skal tredjepartsplatforme som Youmon +SDK bruge MAC.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

7 Indhent tilladelse til at optage lyd

+

android.permission.RECORD_AUDIO

+

Når du bruger stemmeinputfunktionen i Voitrans, skal du bruge tilladelsen til at optage lyd, og den bruges hovedsageligt til stemmeinput til oversættelse og andre relaterede funktioner.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse, brugeren viser dynamisk en dialogboks, når det er påkrævet.

+ +

8 Indhent SSID-tilladelse til WIFI

+

Når denne tilladelse bruges, læser appen SSID-tilladelsen til WIFI:

+

Anvendelsesområde og formål: Når applikationen skal bruge dataanalysetjenester, skal tredjepartsplatforme som +SDK læse enhedens "WIFI SSID-tilladelse" for at give brugerne mere nøjagtig og effektiv funktionel service.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

9 Få Bluetooth-adgang

+

Når denne tilladelse bruges, læser appen Bluetooth-tilladelsen:

+

Anvendelsesområde og formål: Bluetooth-enheder til søgning og konfiguration af tilbehør, såsom Bluetooth-headset, Bluetooth-ure osv. Let for brugerne at administrere

+

Påmindelsesmetode: En prompt, der angiver tilladelsen til at starte applikationen for første gang, vises, som kræver, at brugeren bekræfter accept. Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

10 Få BSSID-tilladelse til WiFi

+

Når applikationen skal skelne og identificere brugeren for at levere funktionelle tjenester og datastatistikker, vil den læse enhedens "WiFi BSSID"-tilladelse til:

+

Anvendelsesområde og formål: 1 Tredjepartsplatforme: såsom Youmeng SDK, Bugly SDK, Autonavi SDK

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

11 Indhent applikationsinstallationstilladelse

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Softwaren vil bruge applikationsinstallationstilladelsen, som hovedsageligt bruges til at tillade brugere at installere en ny version og opleve nye funktioner, når der er en ny version.

+

Påmindelsesmetode: Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

12 Få kameratilladelser

+

android.permission.CAMERA

+

Voitrans bruger kameratilladelser til at scanne QR-koder og binde Bluetooth-enheder som Bluetooth-headset og ure.

+

Påmindelsesmetode: En prompt, der angiver tilladelsen til at starte applikationen for første gang, vises, som kræver, at brugeren bekræfter accept. Brugeraftale og Fortrolighedspolitikbeskrivelse.

+ +

Særlig bemærkning:

+

1 Applikationsintegration inden for deres Allies SDK, Scott map SDK efter brugerens samtykke til at tillade brug, applikationen i baggrunden/forgrunden for ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI og andre personlige oplysninger;

+

Bemærkninger: Mere Se venligst følgende SDK-relaterede indhold og tilladelser [VIII. Adgang til tredjeparts-SDK'er liste]

+ +

8. Adgang til tredjeparts-SDK'er

+

1 For at sikre stabil drift og funktionel realisering af vores klient, så du kan bruge og nyde flere tjenester og funktioner, vil vores applikation indlejre softwareværktøjsudviklingssæt (SDK) eller andre lignende applikationer fra tredjeparter. Disse tredjeparter vil indsamle og behandle relevante oplysninger i overensstemmelse med deres egne fortrolighedspolitikker for normalt at kunne levere funktioner og annoncetjenester. Du kan lære om tredjepartens regler for indsamling og behandling af oplysninger i det følgende afsnit. Vi vil udføre strenge sikkerhedstest på udviklingssættene (SDK'er) for partnere, der indhenter oplysninger, for at beskytte rimelig brug og sikkerhed af dine personlige oplysninger. Bemærk venligst, at tredjeparts-SDK'er kan ændre databehandlingstyperne på grund af deres versionsopgraderinger. Se venligst de fortrolighedspolitikker, der er offentliggjort af tredjeparts-SDK'er. Se detaljerne nedenfor eller klik for at se listen over tredjeparts-SDK'er.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Indhentede oplysninger: Enhedsnummer, IP-adresse, enhedssoftwareoplysninger, enhedsidentifikationskode (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kort IMSI-oplysninger, IP, MAC-adresse), enhedsidentifikator, region, enhedsrelaterede applikationsoplysninger og andre tjenesterelaterede logoplysninger

+

Formål med brug: WeChat-login og deling

+

Udvikler: Shenzhen Tencent Computer Systems Company Limited

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Indhentede oplysninger: Applikationsnavn, applikationsversionsnummer, enhedsmærke og model, operativsystem, operatøroplysninger, skærmopløsning, sensoroplysninger (vektor, acceleration, tryk, retning, geomagnetisk, gyroskop, temperatur, lyssensor, NMEA-signal), enhedssignalstyrkeoplysninger

+

Formål med brug: Navigation ved hjælp af Amap

+

Udvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Indhentede oplysninger: Applikationsnavn, applikationsversion, enhedsmærke og model, operativsystem, netværksoplysninger, enhedssignalstyrke osv.

+

Formål med brug: Kortvisning og interaktion

+

Udvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Indhentede oplysninger: Lokationsoplysninger (GPS, Wi-Fi, basestation), enhedsoplysninger, netværksoplysninger osv.

+

Formål med brug: Levering af lokationstjenester

+

Udvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Indhentede oplysninger: Applikationsnavn, applikationsversion, enhedsoplysninger, netværksoplysninger osv.

+

Formål med brug: Kortværktøjer og gengivelsesoptimering

+

Udvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Indhentede oplysninger: Enhedsidentifikatorer, grundlæggende enhedsoplysninger, liste over installeret software og netværksoplysninger (se den officielle fortrolighedspolitik for detaljer)

+

Formål med brug: Alipay-kontologin og betalingsanmodning

+

Udvikler: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Indhentede oplysninger: SDK/API-version, platform, tidsstempel, appidentifikator, appversion, enhedsproducent, OS-version, lokale, tidszone, netværksstatus (Wi-Fi osv.), netværkslogs, nedbrud- og brugsdata, IP-adresse osv. (se den officielle fortrolighedspolitik for detaljer)

+

Formål med brug: Appkvalitetsovervågning og datarapporteringstjeneste

+

Udvikler: Shenzhen Tencent Computer Systems Company Limited

+

Indsamlingsmetode: SDK selvindsamling

+

Link til Fortrolighedspolitik: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Beskyttelse af mindreårige

+

Brugere af vores produkter og tjenester kan omfatte mindreårige under 18 år. Mindreårige brugere bør søge råd fra deres forældre eller værger vedrørende denne Fortrolighedspolitik, før de bruger vores produkter, og bruge vores tjenester eller give dine oplysninger til os efter at have opnået samtykke fra og under vejledning af deres forældre eller værger. Værger for mindreårige, der har spørgsmål, kan kontakte os via kontaktoplysningerne i denne Fortrolighedspolitik.

+

Hvis du ikke er enig i, at ovennævnte oplysninger indsamles af ovennævnte tredjepartstjenesteudbydere, bedes du straks stoppe med at bruge Softwaren. Under din brug af Softwaren vil disse tredjeparter indsamle og behandle relevante oplysninger i overensstemmelse med deres egne fortrolighedspolitikker for at levere nogle funktioner, reklamer og andre tjenester. Hvis oplysningerne lækkes på grund af den relevante tredjepartstjenesteudbyders indsamling af ovennævnte oplysninger, skal den relevante tredjepartstjenesteudbyder bære det tilsvarende juridiske ansvar.

+ +

10. Gyldig og opdateret Fortrolighedspolitik

+

1. Denne Fortrolighedspolitik træder i kraft fra offentliggørelsesdatoen.

+

2. Efterhånden som vores forretning udvikler sig og ændrer sig, kan vores Fortrolighedspolitik ændre sig. Vi forbeholder os retten til at ændre vores fortrolighedspolitik til enhver tid, så tjek venligst ofte. Hvis vi foretager ændringer i vores Fortrolighedspolitik, vil vi offentliggøre disse opdateringer på vores hjemmeside, apps og hvor vi finder det passende for at holde dig informeret. Hvis fortrolighedspolitikken opdateres, træder den i kraft fra opdateringsdatoen. Din fortsatte brug af vores produkter eller tjenester betyder, at du accepterer vores ændrede Fortrolighedspolitik.

+ +

11. Sådan kontakter du os

+

Saitong Industries Inc er grundlagt den 22. november 2024, registreret adresse: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Hvis du vil vide mere om vores virksomhed og platform, kan du kontakte os via de kontaktoplysninger, der er angivet i denne politik (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/da/user_agreement.html b/doc/da/user_agreement.html new file mode 100644 index 000000000..5ad9eb5e3 --- /dev/null +++ b/doc/da/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans Applikation Brugeraftale + + + +
+
Dansk
+ +

Voitrans Applikation Brugerprotokol

+ +

Disse Brugsvilkår og -betingelser fortæller dig, hvordan du får adgang til og bruger Voitrans-applikationen og onlinetjenester ("Tjenesterne"). Saitong Industries Inc. (herefter benævnt "Saitong") minder hermed brugerne om omhyggeligt at læse og fuldt ud forstå denne Brugeraftale (herefter benævnt "Aftalen"). Brugerne bør omhyggeligt læse og fuldt ud forstå vilkårene i denne Aftale. Læs venligst omhyggeligt og vælg at acceptere eller ikke acceptere denne Aftale. Din brug af Voitrans APP (herefter benævnt "Appen" eller "Softwaren") vil blive anset som accept af denne Aftale, og du accepterer at være bundet af vilkårene i denne Aftale. Hvis du ikke accepterer denne Aftale, skal du ikke bruge Appen.

+

Saitong forbeholder sig retten til at ændre denne Aftale, og de opdaterede vilkår i Aftalen vil blive offentliggjort i denne App og træder i kraft fra offentliggørelsesdatoen.

+ +

1. Generelle regler

+

1.1 Denne App er software leveret af Saitong til tilslutning af headset-produkter udgivet af Saitong og dets partnervirksomheder. Ejendomsretten og driftsrettighederne til softwaren og relaterede tjenester tilhører udelukkende Saitong.

+

1.2 Denne Aftale er en aftale mellem dig (herefter benævnt "Brugeren") og virksomheden og dens partnere og driftspartnere (herefter benævnt "Partnerne") vedrørende Brugerens brug af Appen og relaterede tjenester.

+

1.3 Softwaren og tjenesterne omfatter:

+

1.3.1 Den leverede software giver Voitrans-brugere Voitrans-forbindelse og -binding, funktionsindstillingsstyring og andre softwaretjenester, underlagt de faktiske softwaretjenester leveret af Appen.

+

1.3.2 Opdateringer, opgraderinger og andre tjenester til softwaren.

+ +

2. Omfang af softwarelicens

+

2.1 Vi giver brugeren en personlig, ikke-overførbar, ikke-underlicenserbar og ikke-eksklusiv licens til Softwaren.

+

2.2 Brugere kan installere, bruge, vise og køre softwaren på en enkelt mobil terminalenhed til ikke-kommercielle formål. Brugeren må dog ikke installere, bruge eller køre softwaren til kommercielle driftsformål, kopiere, ændre, modificere, forbinde eller køre softwaren eller de data, der frigives i hukommelsen på enhver terminalenhed under driften af softwaren, eller interaktionsdataene mellem klienten og serveren under driften af softwaren, eller skabe afledte værker. Dette inkluderer, men er ikke begrænset til, brug af plugins, udvidelser eller uautoriserede tredjepartsværktøjer/-tjenester til at få adgang til Softwaren og relaterede systemer. Til kommercielt salg, reproduktion og distribution, såsom forudinstallation og bundling af software, skal der indhentes skriftlig autorisation og tilladelse.

+

2.3 Brugeren må ikke installere Softwaren på andre terminalenheder uden udtrykkelig tilladelse fra skaberen, herunder men ikke begrænset til tv'er, digitale set-top-bokse, spillekonsoller og andre enheder.

+

2.4 Bortset fra det, der udtrykkeligt er godkendt i denne Aftale, gives der ingen andre rettigheder til Brugeren, og Brugeren skal indhente skriftligt samtykke til at bruge andre rettigheder.

+ +

3. Softwareopgradering

+

3.1 Brugeren skal vælge den softwareversion, der passer til opsætningen af den installerede terminal. Ellers er softwareproblemer, enhedsproblemer eller skader forårsaget af enhver softwareversion, der ikke passer til enhedstypen, udelukkende brugerens ansvar.

+

3.2 For at forbedre brugeroplevelsen og forbedre serviceindholdet har Saitong ret til fra tid til anden at levere udskiftnings-, ændrings- og opgraderingsversioner af softwaren. Funktionen "Opgraderingspåmindelse" er som standard aktiveret for brugere. Afhængigt af de forskellige softwareversioner, som brugerne bruger, giver Saitong brugerne mulighed for at aktivere denne funktion. Efter udgivelsen af en ny version af softwaren garanterer Saitong ikke den fortsatte tilgængelighed af den gamle version af softwaren.

+ +

4. Brugsspecifikation

+

4.1 Brugere kan bruge Softwaren og Tjenesterne i overensstemmelse med denne Aftale under forudsætning af overholdelse af loven og denne Aftale, og brugerne må ikke udføre følgende handlinger:

+

4.1.1 Slette alle ophavsretlige oplysninger på Softwaren og andre kopier og ændre, slette eller omgå de tekniske foranstaltninger, der er oprettet af Softwaren for at beskytte intellektuelle ejendomsrettigheder.

+

4.1.2 Reverse engineering af Softwaren, såsom disassemblering, dekompilering eller andre forsøg på at opnå kildekoden til Softwaren.

+

4.1.3 Ved at ændre eller forfalske instruktioner og data i driften af softwaren, øge, slette eller ændre funktionen eller driftseffekten af softwaren, eller software eller metoder, der skal bruges til ovenstående formål til at operere eller udbrede til offentligheden, uanset om disse handlinger er til kommercielle formål.

+

4.1.4 Bruge softwaren til enhver adfærd, der bringer netværkssikkerheden i fare, herunder men ikke begrænset til: brug af uautoriserede data eller adgang til uautoriserede servere/konti; adgang til offentlige netværk eller andre operativsystemer uden tilladelse og sletning, ændring eller tilføjelse af lagrede oplysninger; uautoriserede forsøg på at undersøge, scanne eller teste svaghederne i softwarens system eller netværk eller andre handlinger, der underminerer netværkssikkerheden; forsøg på at forstyrre eller ødelægge den normale drift af softwaresystemet eller hjemmesiden, bevidst spredning af skadelige programmer eller virus og andre handlinger, der forstyrrer normal netværksinformationstjeneste; forfalskning af TCP/IP-pakkenavne eller delvise navne.

+

4.1.6 Uden skriftligt samtykke fra Virksomheden udfører brugeren vilkårligt følgende handlinger vedrørende softwaren og oplysningerne deri, herunder men ikke begrænset til: brug, udlejning, udlån, kopiering, ændring, linking, genoptryk, kompilering, offentliggørelse, udgivelse, etablering af spejlsider, udvikling af afledte produkter, værker, tjenester, plugins, udvidelser, kompatibilitet, sammenkobling osv. ved hjælp af Softwaren.

+

4.1.7 Bruge Softwaren til at offentliggøre, transmittere, distribuere og lagre indhold, der overtræder dine lokale love.

+

4.1.8 Bruge softwaren til at offentliggøre, transmittere, udbrede og lagre indhold, der krænker andres intellektuelle ejendomsrettigheder, forretningshemmeligheder og andre legitime rettigheder.

+

4.1.9 Bruge denne software til at offentliggøre, transmittere og udbrede reklameoplysninger og uønskede oplysninger i store mængder.

+

4.1.10 Bruge Softwaren og andre Tjenester på enhver ulovlig måde, til ethvert ulovligt formål eller på enhver måde, der er uforenelig med den licenserede brug af denne Aftale.

+

4.2 Informationsudgivelsesspecifikation

+

4.2.1 Hvis du bruger softwaren til at offentliggøre informationsindhold (hvis relevant), bør du garantere, at du ejer de intellektuelle ejendomsrettigheder til det informationsindhold, du uploader, eller har opnået lovlig autorisation, og enhver adfærd ved brug af softwaren og tjenesterne krænker ikke nogen tredjeparts legitime rettigheder og interesser.

+

4.2.2 Ved brug af Softwaren må brugeren ikke bruge Softwaren til at deltage i følgende aktiviteter, herunder men ikke begrænset til:

+

4.2.2.1 Oprette, kopiere, offentliggøre, udbrede og lagre indhold, der overtræder lokale nationale love og regler.

+

4.2.2.2 Offentliggøre, transmittere, udbrede og lagre indhold, der krænker andres juridiske rettigheder såsom omdømme, portræt, intellektuel ejendom og forretningshemmeligheder.

+

4.2.2.3 Opdigte fakta, skjule sandheden for at vildlede eller bedrage andre.

+

4.2.2.4 Offentliggøre, transmittere og udbrede reklameoplysninger og uønskede oplysninger.

+

4.2.2.5 Deltage i andre handlinger i strid med lokale love og regler.

+

4.2.3 Du må ikke udføre kommercielle aktiviteter såsom reklame og salg af varer i Softwaren uden Virksomhedens tilladelse.

+

4.3 Brugeren forstår og accepterer, at:

+

4.3.1 Saitong vil afgøre, om brugeren er mistænkt for at overtræde ovenstående brugsspecifikationer, og i henhold til resultaterne af afgørelsen suspendere eller opsige din licens eller træffe andre restriktive foranstaltninger, der kan træffes i overensstemmelse med denne aftale.

+

4.3.2 For brugerens brug af det licenserede software, der har offentliggjort information mistænkt for at være ulovlig eller mistænkt for at krænke andres juridiske rettigheder eller i strid med denne Aftale, vil informationen blive slettet direkte.

+

4.3.3 Hvis brugerens overtrædelse af ovenstående brugsregler forårsager skade på tredjeparter, skal du bære det juridiske ansvar selvstændigt i dit eget navn, og du skal sikre, at virksomheden er fri for tab eller øgede omkostninger.

+

4.3.4 Hvis brugeren overtræder de relevante juridiske bestemmelser eller aftaler og forårsager Saitong tab eller er genstand for tredjepartskrav eller straffes af den administrative myndighed, skal brugeren kompensere for det tab og/eller de udgifter, som Saitong har lidt, herunder rimelige advokathonorarer, undersøgelses- og bevissikringsomkostninger.

+ +

5. Beskrivelse af tredjepartstjenester

+

5.1 Brugeren forstår og accepterer, at softwaresystemet kan indeholde tjenester leveret af Virksomhedens tilknyttede selskaber eller tredjeparter, og at Virksomheden kun leverer relevante funktionelle moduler i systemet for brugernes bekvemmelighed og giver adgang til tredjepartstjenester.

+

5.2 Uanset om tredjepartstjenesterne er forudindstillet i softwaresystemets tjenester eller er åbnet eller bestilt af brugerne selv, forstår og accepterer brugerne, at Saitong ikke giver nogen udtrykkelig eller underforstået garanti for tredjepartstjenesteudbyderes eller brugeres lovlighed og effektivitet, samt tredjepartstjenesters lovlighed, nøjagtighed, effektivitet og sikkerhed.

+

5.3 Virksomheden overvåger, kontrollerer eller giver ingen garanti af nogen art for eller påtager sig noget ansvar for tredjepartstjenester.

+

5.4 Enhver tvist eller uenighed mellem brugeren og tredjepartstjenesteudbyderen skal løses af Brugeren og tredjeparten i overensstemmelse med tredjepartstjenestudbyderens forretningsprocesser og forretningsnormer, og virksomheden påtager sig intet ansvar.

+ +

6. Fortrolighedspolitik og Beskyttelse af Personlige Oplysninger

+

6.1 Saitong er forpligtet til at beskytte brugernes privatliv i overensstemmelse med fortrolighedspolitikken, se venligst: Voitrans Fortrolighedspolitik.

+ +

7. Ansvar for kontraktbrud

+

7.1 Saitong har ret til at vurdere, om brugerens adfærd overholder bestemmelserne i denne Aftale. Hvis det vurderes, at Brugeren har overtrådt relevante love og regler eller bestemmelserne i denne Aftale og relaterede regler, har Saitong, afhængigt af alvoren af brugerens overtrædelse, ret til at slette ulovlige oplysninger, begrænse, suspendere, opsige brugerens brug af Softwaretjenesten, forfølge brugerens juridiske ansvar og træffe andre foranstaltninger, som Saitong finder passende. Hvis vi lider tab (herunder men ikke begrænset til at modtage tredjepartskrav eller bøder fra enhver administrativ afdeling), bærer Brugeren det fulde ansvar.

+ +

8. Servicerisici og ansvarsfraskrivelser

+

8.1 Vi ønsker at levere servicestøtte med den nuværende teknologi. Saitong garanterer ikke, at Softwaretjenesten vil fungere uden afbrydelse eller fejl, at alle fejl i Softwaretjenesten vil blive rettet, eller at Softwaretjenesten vil opfylde alle brugernes krav. For de deraf følgende konsekvenser påtager Saitong sig intet ansvar.

+

8.2 Alle tab, som brugeren lider på grund af tredjeparter såsom kommunikationslinjefejl, tekniske problemer, netværk, computerterminalekvipmentfejl, systemustabilitet og andre force majeure-årsager, skal der ikke bæres ansvar for.

+

8.3 Saitong garanterer ikke lovligheden, ægtheden, nøjagtigheden og effektiviteten af informationsindholdet opnået gennem softwaren (herunder men ikke begrænset til tredjepartstjenesteindhold), og Saitong påtager sig intet ansvar for resultaterne af enhver adfærd foretaget af brugere baseret på forespørgsel og visning.

+

8.4 Softwaren, som de fleste internetsoftwarer, påvirkes af forskelle i faktorer, herunder men ikke begrænset til brugerrelaterede årsager, netværkstjenestekvalitet, socialt miljø og andre faktorer, og kan udsættes for forskellige sikkerhedsproblemer, såsom at andre bruger brugeroplysninger, hvilket resulterer i chikane i det virkelige liv; anden software, som brugere downloader og installerer, eller andre hjemmesider, som brugere besøger, indeholder virus såsom "trojanske heste", der truer sikkerheden for brugerens terminaludstyrs information og data og derefter påvirker den normale brug af softwaren. Brugere bør styrke bevidstheden om informationssikkerhed og brugerdatabeskyttelse og være opmærksomme på at styrke adgangskodebeskyttelsen for at undgå tab og chikane.

+

8.5 Når brugere bruger Softwaren eller kræver, at Saitong leverer specifikke tjenester, kan Softwaren kalde tredjepartssystemer eller tredjepartssoftware for at understøtte brugernes brug eller adgang, og resultaterne af brug eller adgang leveres af tredjeparten. Ud over at overholde de relevante regler i denne Aftale skal brugerne også overholde tredjepartens aftaler og relaterede regler. Brugere skal forstå og acceptere, at tredjeparter, når de bruger tredjepartstjenester, kan læse brugerdata, og Saitong garanterer ikke sikkerheden, nøjagtigheden, effektiviteten og andre usikre risici ved de resultater, der opnås gennem tredjepartssystemer eller tredjepartssoftwaresupport; brugere bør udvise forsigtig vurdering, og Saitong påtager sig intet ansvar for eventuelle tvister og skader forårsaget heraf.

+

8.6 For at garantere virksomhedens autonomi i forretningsudvikling og -tilpasning kan virksomheden til enhver tid ændre eller afbryde tjenesten efter at have underrettet brugeren på rimelig vis.

+

8.7 Bortset fra det, der udtrykkeligt er fastsat i love og regler, vil Saitong gøre sit bedste for at sikre, at softwaren og den involverede teknologi og information er sikker, effektiv, nøjagtig og pålidelig, men begrænset af den eksisterende teknologi forstår brugeren, at Saitong ikke kan garantere dette.

+

8.8 Erstatning for personskade eller tilfældige og indirekte økonomiske skader forårsaget af eller i forbindelse med nogen af følgende omstændigheder, herunder men ikke begrænset til tab af fortjeneste, tab af data, skader for driftsafbrydelse eller andre forretningsskader eller tab, skal bæres af Brugeren:

+

1) Brug af eller manglende evne til at bruge den licenserede software.

+

2) Uautoriseret brug af softwaren eller ændring af brugerdata af tredjeparter.

+

3) Udgifter og tab forårsaget af brugerens handlinger med softwaren.

+

4) Brugerens misforståelser om softwaren.

+

5) Ethvert andet tab relateret til softwaren, der ikke kan tilskrives Saitong.

+

8.9 Brugeren accepterer, at Virksomheden har ret til at suspendere, afbryde eller opsige hele eller dele af Tjenesten til brugeren baseret på kravene fra de retslige, regulerende og tilsynsmæssige myndigheder eller af egne forretningsmæssige årsager. Saitong påtager sig intet ansvar herfor.

+

8.10 Brugeren forstår og accepterer, at Virksomheden vil bruge kommercielt rimelige bestræbelser på at sikre sikkerheden af datalagring i Softwaren og Tjenesterne, men virksomheden kan ikke give en fuldstændig garanti, og Brugeren forstår, at Virksomheden ikke er ansvarlig for sletning eller lagring eller backup-fejl af data i Tjenesten.

+

8.11 I det videst mulige omfang tilladt af loven er Udvikleren eller Leverandøren ikke ansvarlig for nogen direkte, indirekte, tilfældige, særlige eller følgeskader som følge af brugen af Applikationen. Hvis brugeren har yderligere behov, bedes du henvende dig til et hospital for dybdegående undersøgelse.

+ +

9. Erklæring om intellektuel ejendomsret

+

9.1 Saitong er indehaveren af de intellektuelle ejendomsrettigheder til denne software. Alle ophavsrettigheder, varemærker, patenter, forretningshemmeligheder og andre intellektuelle ejendomsrettigheder til softwaren, samt alt informationsindhold relateret til softwaren (herunder men ikke begrænset til tekst, billeder, lyd, video, grafik, interfacedesign, layoutramme, relaterede data eller elektroniske dokumenter osv.) er beskyttet af lokale love og regler samt tilsvarende internationale traktater.

+

9.2 Uden skriftligt samtykke fra Virksomheden må Brugeren ikke implementere, udnytte eller overføre ovenstående intellektuelle ejendomsrettigheder til noget kommercielt eller ikke-kommercielt formål eller tillade nogen tredjepart, og Virksomheden forbeholder sig retten til at forfølge det juridiske ansvar for ovenstående handlinger.

+ +

10. Aftaleændring

+

10.1 Saitong har ret til at ændre vilkårene i denne Aftale, når det er nødvendigt. Når vilkårene i Aftalen er ændret, vil de reviderede vilkår i Aftalen blive offentliggjort på den relevante side. Hvis du ikke er enig i det ændrede indhold, bør brugeren tage initiativ til at annullere denne tjeneste. Hvis Brugeren fortsætter med at bruge Tjenesterne, anses det for at acceptere ændringerne i Aftalens vilkår.

+

10.2 Saitong forbeholder sig retten til at ændre eller justere de betalte tjenester, opkrævningsstandarder, opkrævningsmetoder, servicegebyrer og servicevilkår, der leveres efter behov. Når vi leverer tjenester, kan vi opkræve visse gebyrer fra brugere af nogle tjenester nu eller i fremtiden. Hvis brugerne nægter at betale sådanne gebyrer, kan de ikke fortsætte med at bruge de relevante tjenester efter gebyrernes ikrafttræden.

+
+ + diff --git a/doc/de/privacy_policy.html b/doc/de/privacy_policy.html new file mode 100644 index 000000000..0c20b8a1d --- /dev/null +++ b/doc/de/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Datenschutzrichtlinie + + + + +
+

Voitrans Datenschutzrichtlinie

+

Letzte Aktualisierung: 27. Mai 2025

+

Datum des Inkrafttretens: 27. Mai 2025

+ +

Willkommen bei der Nutzung von Voitrans Software und Diensten

+

1. Voitrans wird von Saitong Industries Inc. (im Folgenden als "das Unternehmen" bezeichnet) bereitgestellt. Es kann Benutzern helfen, Bluetooth-Geraete und andere Produkte zu verwalten. Wir verstehen die Bedeutung personenbezogener Daten fuer unsere Benutzer (im Folgenden als "Sie" bezeichnet) und dass der wirksame Schutz Ihrer personenbezogenen Daten der Grundstein fuer die gesunde und nachhaltige Entwicklung unseres Geschaefts ist. Vielen Dank fuer Ihre Nutzung und Ihr Vertrauen in Voitrans-Produkte oder -Dienste! Wir sind uns voll bewusst, dass dieses Vertrauen nicht leicht zu gewinnen ist. Wir halten uns an den Grundsatz der Offenheit und Transparenz, um Ihnen unsere Regeln fuer die Verarbeitung Ihrer personenbezogenen Daten mitzuteilen. Wir verwenden legale und legitime Wege und klare und angemessene Zwecke zur Verarbeitung Ihrer personenbezogenen Daten. Besonderer Hinweis: Bitte lesen und verstehen Sie diese Datenschutzrichtlinie sorgfaeltig, bevor Sie unsere Produkte oder Dienste nutzen, damit Sie eine angemessene Wahl treffen koennen.

+

2. Diese Datenschutzrichtlinie erklaert Ihnen, wie wir Ihre personenbezogenen Daten sammeln, verwenden, speichern und teilen, wenn Sie Voitrans nutzen. Personenbezogene Daten beziehen sich auf alle Arten von Informationen, die elektronisch oder auf andere Weise aufgezeichnet werden und die eine bestimmte natuerliche Person identifizieren oder die Aktivitaeten einer bestimmten natuerlichen Person allein oder in Kombination mit anderen Informationen widerspiegeln koennen. Voitrans respektiert und schuetzt die persoenliche Privatsphaere aller Benutzer des Dienstes. Sofern in dieser Datenschutzrichtlinie nicht anders vorgesehen, wird Voitrans diese Informationen ohne Ihre vorherige Genehmigung nicht der Oeffentlichkeit zugaenglich machen oder an Dritte weitergeben.

+

3. Wenn Sie ein Produkt oder eine Dienstleistung eines Dritten ueber ein App-Marktplatz-Produkt oder eine -Dienstleistung nutzen, unterliegen Ihre personenbezogenen Daten der Datenschutzrichtlinie des Dritten.

+

4. Voitrans Diese Datenschutzrichtlinie wird von Zeit zu Zeit aktualisiert. Indem Sie dem Voitrans-Dienstnutzungsvertrag zustimmen und mit der Nutzung von Voitrans beginnen, gelten Sie als mit der gesamten Datenschutzrichtlinie einverstanden. Wenn Sie mit dieser Datenschutzrichtlinie nicht einverstanden sind, nutzen Sie bitte die Voitrans-Software und -Dienste nicht.

+

5. Um die Wirksamkeit der relevanten Dienste zu analysieren und zu messen, werden wir Ihre personenbezogenen Daten gemaess den Bestimmungen dieser Datenschutzrichtlinie verwenden und offenlegen.

+ +

Diese Datenschutzrichtlinie hilft Ihnen, Folgendes zu verstehen:

+
    +
  • 1 Die Informationen, die wir sammeln
  • +
  • 2 Speicherung von Informationen
  • +
  • 3 Informationssicherheit
  • +
  • 4 Wie verwenden wir die gesammelten Informationen
  • +
  • 5 Weitergabe von Informationen
  • +
  • 6 Wie verwalten Sie Ihre personenbezogenen Daten
  • +
  • 7 Beschreibung der Anwendungsberechtigungen
  • +
  • 8 Zugriff auf Drittanbieter-SDKs
  • +
  • 9 Schutz von Minderjaehrigen
  • +
  • 10 Gueltige und aktualisierte Datenschutzrichtlinie
  • +
  • 11 So erreichen Sie uns
  • +
+ +

1. Die Informationen, die wir sammeln

+

1. Bei der Nutzung von Voitrans beginnen wir mit der Erfassung von Daten ueber Ihre Nutzung der Anwendung

+

2. Voitrans kann personenbezogene Daten ueber Sie von Dritten oder Geschaeftspartnern auf legalem Wege erhalten

+

3. Um Ihnen bessere Produkte und Dienstleistungen anzubieten, Ihnen Netzwerksicherheit waehrend der Nutzung zu bieten, den normalen Betrieb der Produkte aufrechtzuerhalten und zu optimieren und zu verbessern, der Zweck unserer Informationsdienste, nachdem Sie aktiv auf die Zustimmung zu dieser Datenschutzrichtlinie geklickt haben, nutzen Sie die von uns bereitgestellten Dienste. Waehrend des Dienstes werden wir, zusaetzlich zu den personenbezogenen Daten, die erforderlich sind, um den normalen Betrieb der Grundfunktionen der App gemaess den nationalen Gesetzen und Vorschriften sicherzustellen, weitere personenbezogene Daten von Ihnen erheben:

+

3.1 Um Risikobenutzer zu identifizieren, die Authentizitaet der Benutzer zu beurteilen und Betrug umfassend zu verhindern, lesen wir Ihre Geraeteinformationen jedes Mal, wenn Sie die Software oeffnen, einschliesslich: (Geraetemodell, MAC-Adresse des Geraets, eindeutiger Geraetebezeichner (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, usw.) MEID, Seriennummer, SSID und BSSID des WIFI), Bluetooth-Adresse lesen, Betriebssystemversion, Betriebssystemname, Benutzer-Login-Konto und Passwortinformationen;

+

3.2 Wenn Sie unsere Produkte und Dienste nutzen, koennen wir bestimmte Informationen ueber Netzwerkprotokollinformationen oder bestimmte Programme und Software sammeln. Solche Informationen koennen umfassen: Details zur Nutzung von Produkten und Diensten, wie die Oeffnungszeit Ihrer Anwendung, die Nutzungsdauer und die Adresse der besuchten Seite; Geraeteereignisinformationen, wie Abstuerze, Systemaktivitaet usw., um Ihr Geraet zu optimieren und unsere Dienste zu verbessern;

+

3.3 Um Anwendungen zu identifizieren, bei denen die Ausruestung gefaehrdet ist, und sicherere funktionale Dienste bereitzustellen. Daher muessen wir Ihre Anwendungs-/Anwendungsinstallationsliste im Prozess erhalten, um den normalen Betrieb des Produkts sicherzustellen und die Sicherheit des Geraets zu schuetzen.

+

3.4 Um die Nutzung der Anwendungsfunktionen durch die Benutzer zu analysieren und die Authentizitaet der Benutzer festzustellen, muessen wir Datenstatistiken durchfuehren und die oben genannten Geraeteinformationen sammeln, einschliesslich der MAC-Adresse des Geraets und des eindeutigen Geraetebezeichners, wenn Ihr Geraet in Benutzung ist.

+

3.5 Geraetesignal: der Netzwerkstatus des von Ihnen verwendeten Geraets, WIFI-Zugangspunktinformationen usw.

+

3.6 Standortinformationen: Wir koennen GPS, WiFi oder andere technische Mittel verwenden, um Informationen ueber Ihren Standort fuer die Aktualisierung lokaler Informationen, die Bereitstellung von Inhaltsdiensten usw. zu sammeln und zu verarbeiten.

+

Fuer weitere Informationen klicken Sie bitte auf "Liste der Erhebung personenbezogener Daten".

+ +

1. Fuer die sensibleren personenbezogenen Daten in den oben genannten Informationen, wie Benutzergeraeteinformationen (IMEI-Nummer, Anrufstatus und Identifikationsnummer), GPS-Standortinformationen, Foto-Medieninhalte und Dateizugriffsrechte, werden wir Ihre Zustimmung vor der Erhebung einholen. Fuer einige nicht-sensible Informationen kann die Erhebung standardmaessig und automatisch erfolgen. Sie koennen unsere Erhebung relevanter Informationen oder die Nutzung bestimmter Berechtigungen von Ihrem Mobilgeraet aus einschraenken, indem Sie die Einstellungsoption Ihres Mobilgeraets anpassen. Wenn Sie unseren Zugriff auf eine bestimmte Berechtigung einschraenken, koennen wir Ihnen moeglicherweise die entsprechenden Dienste nicht mehr weiter anbieten und werden Ihre entsprechenden Informationen nicht mehr verarbeiten.

+

2. Wir werden Ihre Personalausweisnummer, persoenliche biometrische Informationen, Bankkontonummer, Vermoegensinformationen, Kreditinformationen, Gesundheits- und physiologische Informationen und andere persoenliche sensible Informationen nicht erheben.

+

3. Zu sensiblen Berechtigungen: Um die Anwendungsfunktionen ordnungsgemaess zu nutzen, muss das Produkt die folgenden Berechtigungen erhalten, um funktionale Dienste im Zusammenhang mit normalen Produkten bereitzustellen.

+ +

1 Speicher-Lese- und Schreibberechtigungen erhalten

+

1 Wie man sie erhaelt: Popup-Aufforderung, wenn die Berechtigung erhalten wird, wird der Benutzer aktiv auf Zustimmen klicken, damit die Anwendung diese Berechtigung verwendet

+

2 Zweck und Umfang der Nutzung: Wird zum Scannen der Ressourcen-Cache-Dateien und Miniaturbilder im System, zum Laden von Musikressourcen und Produktbildern verwendet. Es wird auf der App-Oberflaeche angezeigt, damit Benutzer es bequem anzeigen und bedienen koennen

+ +

2 Berechtigung fuer die Anwendungsinstallationsliste erhalten

+

1 Wie man sie erhaelt: Popup-Aufforderung, wenn die Berechtigung erhalten wird, wird der Benutzer aktiv auf Zustimmen klicken, damit die Anwendung diese Berechtigung verwendet

+

2 Zweck und Umfang der Nutzung: Wenn die Anwendung Werbefoerderungsdienste nutzen muss, muss die Drittanbieter-Werbeplattform, Youmon +SDK, die "Berechtigung fuer die App-Software-Installationsliste" des Geraets erhalten, um zu verhindern, dass dem Benutzer eine Anwendung angeboten wird, die er bereits besitzt, und das Benutzererlebnis zu verbessern.

+ +

3 Die Berechtigung zum Erhalten von Geraetestatusinformationen

+

Umfasst: (Geraetemodell, MAC-Adresse des Geraets, eindeutiger Geraetebezeichner (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, usw.) MEID, Seriennummer, SSID und BSSID des WIFI, Bluetooth-Adresse lesen), Betriebssystemversion, Betriebssystemname usw.;

+

1 Wie man sie erhaelt: Popup-Aufforderung, wenn die Berechtigung erhalten wird, wird der Benutzer aktiv auf Zustimmen klicken, damit die Anwendung diese Berechtigung verwendet

+

2 Zweck und Umfang der Nutzung: Bei der Nutzung unserer Anwendung werden wir, um die Nutzung der Anwendungsfunktionen durch den Benutzer zu analysieren und die Authentizitaet des Benutzers zu beurteilen, die Berechtigung mit Drittanbieter-SDKs synchronisieren, einschliesslich Autonavi SDK, Youmon +SDK usw.

+ +

4 Zugang zu Standortinformationen

+

1 Wie man sie erhaelt: Popup-Aufforderungen, wenn die Berechtigung erhalten wird, wird der Benutzer diese Berechtigung nur verwenden, wenn er aktiv mit der Anwendung auf Zustimmen klickt.

+

2 Zweck und Umfang der Nutzung: Wenn die Anwendung GPS, WiFi oder andere Funktionen verwenden muss, muss das Produkt Ihren Standort und Informationen sammeln, um Bluetooth-Geraete in der Naehe zu suchen.

+

Hinweis: Fuer weitere Anwendungsberechtigungen siehe dieses Dokument "Datenschutzrichtlinie" Abschnitt 7 "Beschreibung der Anwendungsberechtigungen"

+ +

2. Speicherung von Informationen

+

1. Wo die Informationen gespeichert werden

+

Die personenbezogenen Daten, die wir in der Volksrepublik China sammeln und generieren, werden auf unseren Servern und/oder denen unserer verbundenen Unternehmen gespeichert.

+

2. Informationsspeicherung und -verarbeitung

+

Wir speichern Ihre personenbezogenen Daten nur fuer den Zeitraum, der zur Erreichung des Zwecks erforderlich ist, oder so lange, wie es die Gesetze und Vorschriften verlangen. Nachdem Sie die Nutzung dieses Produkts eingestellt haben, werden wir die Erfassung und Verarbeitung Ihrer personenbezogenen Daten und Anwendungsdaten sofort einstellen. Wenn der oben genannte Zeitraum ueberschritten wird, werden wir die personenbezogenen Daten, die Sie uns zur Verfuegung gestellt haben, loeschen oder anonymisieren.

+

Neben den erforderlichen Funktionen muss Voitrans entsprechende Systemberechtigungen beantragen. Die Serverseite der Cloud speichert keine persoenlichen Benutzerdaten, und das aufgerufene Drittanbieter-SDK wird vom Dienstanbieter (Amu Statistics SDK, Autonavi SDK) anonymisiert und deidentifiziert, sodass Benutzer nicht verfolgt werden koennen. Auf dem Telefon des Benutzers gespeicherte Informationen werden automatisch geloescht, wenn der Benutzer Voitrans deinstalliert oder den Cache leert.

+ +

3. Informationssicherheit

+

1. Voitrans speichert und schuetzt Ihre personenbezogenen Daten unter Verwendung branchenstandard-konformer Sicherheitsmassnahmen und Technologien, wie Authentifizierung, Datenverschluesselung, eingeschraenkter Rechenzentrumszugang und andere Sicherheitsmassnahmen, um sicherzustellen, dass Ihre Informationen vor Offenlegung, Aenderung und Zerstoerung sicher sind. Trotz der oben genannten Sicherheitsmassnahmen beachten Sie bitte, dass keine Sicherheitsmassnahme 100% sicher sein kann.

+

2. Wenn Sie die von Voitrans bereitgestellten Dienste nutzen, schuetzen Sie bitte Ihre personenbezogenen Daten. Wenn Sie feststellen, dass Ihre personenbezogenen Daten kompromittiert wurden, kontaktieren Sie uns bitte sofort, damit wir geeignete Massnahmen ergreifen koennen.

+ +

4. Wie verwenden wir die gesammelten Informationen

+

1. Bei der Umsetzung von Anwendungsgeschaeftsfunktionen koennen wir Ihre personenbezogenen Daten verwenden, um die Integritaet und Sicherheit der Produkte und Dienstleistungen, die wir Ihnen bereitstellen, zu gewaehrleisten;

+

2. Wir werden Ihre Nutzungsgewohnheiten anhand der gesammelten Informationen verstehen und mithilfe der Datenanalyse die Akzeptanz von Diensten, Ihre Nutzungsgewohnheiten usw. identifizieren, um neue Produkte, Funktionen und Dienste zu testen und zu erstellen, das Serviceniveau zu verbessern und uns zu helfen, bestehende Dienste zu verbessern und neue Dienste zu entwickeln;

+

3. Wir koennen Ihre personenbezogenen Daten fuer Kundenbefragungen zu Produkten und Dienstleistungen, fuer den Versand von Mitteilungen ueber Produkte und Dienstleistungen sowie fuer kommerzielle Werbung verwenden;

+

4. Wir koennen Ihre Informationen fuer interne Analysen und Forschung im Zusammenhang mit der Anwendung verwenden;

+ +

5. Weitergabe von Informationen

+

Derzeit werden wir Ihre personenbezogenen Daten nicht aktiv an Dritte ausserhalb des Unternehmens weitergeben oder uebertragen. Wenn es eine andere Weitergabe oder Uebertragung Ihrer personenbezogenen Daten gibt, werden wir direkt bestaetigen oder sicherstellen, dass der Dritte Ihre ausdrueckliche Zustimmung zu dem oben genannten Verhalten erhalten hat.

+

Wir werden die von uns gesammelten personenbezogenen Daten nicht oeffentlich bekannt geben. Wenn es notwendig ist, sie oeffentlich bekannt zu geben, werden wir Sie ueber den Zweck der oeffentlichen Bekanntgabe, die Art der offengelegten Informationen und die moeglicherweise betroffenen sensiblen Informationen informieren und Ihre ausdrueckliche Zustimmung einholen.

+

Da sich unser Geschaeft weiterentwickelt, koennen wir Fusionen, Uebernahmen, Vermoegensuebertraegungen und andere Transaktionen durchfuehren, und wir werden Sie ueber die relevanten Umstaende informieren, in Uebereinstimmung mit den Gesetzen und Vorschriften und nicht weniger als den in diesem Leitfaden geforderten Standards, um Ihre personenbezogenen Daten weiterhin zu schuetzen oder einen neuen Verantwortlichen zu verpflichten, Ihre personenbezogenen Daten weiterhin zu schuetzen.

+

Darueber hinaus koennen wir gemaess den einschlaegigen Gesetzen, Vorschriften und nationalen Standards personenbezogene Daten unter den folgenden Umstaenden ohne vorherige Genehmigung und Zustimmung des Betroffenen weitergeben, uebertragen und oeffentlich bekannt geben:

+
    +
  • 1 Direkt im Zusammenhang mit der nationalen Sicherheit und der Landesverteidigung;
  • +
  • 2 Direkt im Zusammenhang mit der oeffentlichen Sicherheit, der oeffentlichen Gesundheit oder wichtigen oeffentlichen Interessen;
  • +
  • 3 Direkt im Zusammenhang mit strafrechtlichen Ermittlungen, Strafverfolgung, Gerichtsverfahren und Vollstreckung von Urteilen;
  • +
  • 4 Zum Schutz des Lebens, des Eigentums und anderer wichtiger legitimer Rechte und Interessen des Betroffenen oder anderer Personen, wenn es jedoch schwierig ist, die Zustimmung der Person einzuholen;
  • +
  • 5 Personenbezogene Daten, die vom Betroffenen der Oeffentlichkeit zugaenglich gemacht wurden;
  • +
  • 6 Erhebung personenbezogener Daten aus rechtmaessig oeffentlich zugaenglichen Informationen, wie legitime Nachrichtenberichte, Offenlegung von Regierungsinformationen und andere Kanaele.
  • +
+ +

6. Wie verwalten Sie Ihre personenbezogenen Daten

+

In Uebereinstimmung mit den einschlaegigen Gesetzen, Vorschriften und Standards Chinas sowie den gaengigen Praktiken anderer Laender und Regionen garantieren wir Ihnen die Ausuebung der folgenden Rechte an Ihren personenbezogenen Daten:

+ +

1. Ihre personenbezogenen Daten korrigieren

+

Wenn Sie feststellen, dass Ihre von uns verarbeiteten personenbezogenen Daten fehlerhaft sind, haben Sie das Recht, fehlerhafte oder unvollstaendige Informationen zu korrigieren oder zu aktualisieren. Wenn Sie nicht eigenstaendig im Kontozentrum handeln koennen, koennen Sie uns per E-Mail an saitong.voitrans@gmail.com kontaktieren

+ +

2. Ihre personenbezogenen Daten loeschen

+

In den folgenden Faellen koennen Sie uns auffordern, Ihre personenbezogenen Daten zu loeschen:

+
    +
  • Wenn wir personenbezogene Daten unter Verstoss gegen Gesetze und Vorschriften verarbeiten;
  • +
  • Wenn wir Ihre personenbezogenen Daten ohne Ihre Zustimmung sammeln und verwenden;
  • +
  • Wenn unsere Verarbeitung personenbezogener Daten unsere Vereinbarung mit Ihnen verletzt;
  • +
  • Wenn Sie unsere Produkte oder Dienste nicht mehr nutzen;
  • +
  • Wenn wir Ihnen keine Produkte oder Dienstleistungen mehr anbieten.
  • +
+

Kontaktieren Sie uns. Wir werden Ihre Anfrage unter saitong.voitrans@gmail.com bearbeiten. Wir werden Ihnen innerhalb von 30 Werktagen nach Erhalt antworten

+ +

3. Den Umfang Ihrer Zustimmung aendern

+

Sie koennen uns per E-Mail unter saitong.voitrans@gmail.com kontaktieren. Auf Ihre Anfrage hin werden wir Ihre personenbezogenen Daten nicht mehr sammeln, verwenden oder offenlegen. Bitte beachten Sie, dass der Widerruf Ihrer Zustimmung oder die Loeschung Ihrer personenbezogenen Daten Ihre Nutzung einiger unserer Dienste beeintraechtigen kann.

+ +

4 Zugang zu und Kopie von personenbezogenen Daten

+

Sie koennen gemaess den Bestimmungen der einschlaegigen Gesetze Ihre IMEI (Telefon-Seriennummer) oder OAID oder Android ID nach den Kontoinformationen und anderen Informationen angeben und bei uns den Zugang zu und die Kopie Ihrer personenbezogenen Daten beantragen. Sie koennen uns per E-Mail unter 3514406195@qq.com kontaktieren.

+ +

5. Als Antwort auf Ihre obige Anfrage

+

Aus Sicherheitsgruenden muessen Sie moeglicherweise einen schriftlichen Antrag stellen oder Ihre Identitaet auf andere Weise nachweisen. Wir koennen Sie bitten, Ihre Identitaet zu ueberpruefen, bevor wir Ihre Anfrage bearbeiten. Fuer Ihre angemessene Anfrage werden wir zeitnah antworten und sie bearbeiten. Wir koennen Anfragen ablehnen, die unnoettig wiederholend sind, zu viel Technologie erfordern (z.B. die Entwicklung neuer Systeme oder grundlegende Aenderungen bestehender Praktiken), ein Risiko fuer die legitimen Interessen anderer darstellen oder hoechst unpraktisch sind.

+

Unter den folgenden Umstaenden werden wir gemaess den gesetzlichen Anforderungen nicht in der Lage sein, Ihre Anfrage zu beantworten:

+
    +
  • Im Zusammenhang mit der nationalen Sicherheit und der Landesverteidigung;
  • +
  • Im Zusammenhang mit strafrechtlichen Ermittlungen, Strafverfolgung und Gerichtsverfahren;
  • +
  • Es gibt ausreichende Beweise dafuer, dass Sie subjektive Boesartigkeit oder Rechtsmissbrauch aufweisen;
  • +
  • Die Beantwortung Ihrer Anfrage wuerde Ihren oder anderen Personen und Organisationen schweren Schaden an den legitimen Rechten und Interessen zufuegen.
  • +
+ +

6. Kontoloeschung

+

Der Benutzer kann den Vorgang [Kontoloeschung] in der APP durchfuehren. Schritte:

+
    +
  1. Gehen Sie zur Seite [Mein Profil]
  2. +
  3. Klicken Sie auf die Schaltflaeche [Einstellungen] oben rechts
  4. +
  5. Klicken Sie auf [Konto loeschen] zur Bestaetigung
  6. +
+

Nach dem Abmelden werden die Informationen zum Benutzerkonto geloescht

+ +

7. Beschreibung der Anwendungsberechtigungen

+

Um bessere Produkte und Dienstleistungen bereitzustellen, werden wir bei der Nutzung der Software die folgenden Rechte beantragen. Wenn Sie die Startseite aufrufen oder die Funktion nutzen, wird eine Autorisierung angefordert. Wenn Sie ablehnen, koennen einige der entsprechenden Funktionen nicht normal verwendet werden. Die spezifischen Zwecke und Erinnerungen zu den Berechtigungen werden im Folgenden detailliert beschrieben:

+ +

1 Standortberechtigungen:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Ueber WiFi oder mobile Basisstation zur Ermittlung der Breiten- und Laengengrad-Standortinformationen des Benutzers

+

Wenn Sie Voitrans nutzen, suchen wir basierend auf Ihrem geografischen Standort nach Ihrem in der Naehe befindlichen Bluetooth-Geraet. Gleichzeitig, um stabilere Dienste bereitzustellen, Produkte zu optimieren und das Erlebnis zu verbessern, werden wir die oben genannten Informationen mit drei SDKs wie Youmon und Autonavi teilen, um Voitrans-Betriebsdaten und funktionale Dienste zu erhalten.

+

Erinnerungsmodus: Beim erstmaligen Starten der Anwendung wird ein Hinweis angezeigt, der die Bestaetigung der Berechtigung durch den Benutzer erfordert. Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Diese Berechtigung wird benoetigt, wenn Sie auf eine Anwendung zugreifen, um Anwendungsverwaltungsfunktionen auszufuehren.

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

3 Netzwerkberechtigungen:

+

android.permission.INTERNET

+

Diese Berechtigungen werden fuer die Informationsdienste und Versions-Upgrade-Dienste von Voitrans benoetigt, und um das Benutzererlebnis zu verbessern und die Servicefaehigkeiten zu optimieren, werden auch Drittanbieter-SDKs wie Friends diese Berechtigungen nutzen.

+

Erinnerungsmodus: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

4 Netzwerkstatusberechtigungen erhalten:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Es wird verwendet, um festzustellen, ob die aktuelle Netzwerkverbindung gueltig ist, ob die aktuelle 4G-Umgebung aktiv ist und ob Aenderungen der Netzwerkumgebung erinnert werden sollen, was das Laden von Informationsinhalten beeinflusst. Diese Berechtigung wird bei der Nutzung von Voitrans beantragt.

+

Aenderungen des Netzwerkstatus beeinflussen das Hochladen und Laden von Daten. Daher wird die Berechtigung zum Zugriff auf den Netzwerkstatus mit friends + und anderen Plattformen geteilt.

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

5 Aufgabenlistenberechtigungen erhalten:

+

android.permission.GET_TASKS

+

Diese Berechtigung wird verwendet, um die Anwendungsliste fuer die Softwareverwaltungsfunktion zu erhalten. Bei der Nutzung der Softwareverwaltungsfunktion muessen die auf dem Mobiltelefon installierten Anwendungen gelesen werden.

+

Erinnerungsmodus: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

6 MAC-Adressberechtigung erhalten

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Wenn Sie Voitrans nutzen, muss die Anwendung die MAC-Adressberechtigungen erhalten:

+

Wenn eine Anwendung Zielkonversionsdaten melden muss, muessen Drittanbieter-Plattformen wie Youmon +SDK MAC verwenden.

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

7 Audioaufnahmeberechtigung erhalten

+

android.permission.RECORD_AUDIO

+

Wenn Sie die Spracheingabefunktion von Voitrans nutzen, muessen Sie die Berechtigung zur Audioaufnahme verwenden und hauptsaechlich die Spracheingabe fuer die Uebersetzung und andere verwandte Funktionen nutzen.

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie, bei Bedarf wird dem Benutzer dynamisch ein Dialogfeld angezeigt.

+ +

8 WIFI-SSID-Berechtigung erhalten

+

Wenn diese Berechtigung verwendet wird, liest die App die SSID-Berechtigung des WIFI:

+

Nutzungsumfang und Zweck: Wenn die Anwendung Datenanalysedienste nutzen muss, muessen Drittanbieter-Plattformen wie +SDK die "WIFI-SSID-Berechtigung" des Geraets lesen, um den Benutzern genauere und effektivere funktionale Dienste bereitzustellen.

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

9 Bluetooth-Zugang erhalten

+

Wenn diese Berechtigung verwendet wird, liest die App die Bluetooth-Berechtigung:

+

Nutzungsumfang und Zweck: Bluetooth-Geraete zum Suchen und Konfigurieren von Zubehoer, wie Bluetooth-Kopfhoerer, Bluetooth-Uhren usw. Einfach fuer Benutzer zu verwalten

+

Erinnerungsmodus: Beim erstmaligen Starten der Anwendung wird ein Hinweis angezeigt, der die Bestaetigung der Berechtigung durch den Benutzer erfordert. Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

10 WiFi-BSSID-Berechtigung erhalten

+

Wenn die Anwendung den Benutzer unterscheiden und identifizieren muss, um funktionale Dienste und Datenstatistiken bereitzustellen, liest sie die "WiFi BSSID"-Berechtigung des Geraets fuer:

+

Nutzungsumfang und Zweck: 1 Drittanbieter-Plattformen: wie Youmeng SDK, Bugly SDK, Autonavi SDK

+

Erinnerungsmethode: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

11 Anwendungsinstallationsberechtigung erhalten

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Die Software wird die Anwendungsinstallationsberechtigung verwenden, die hauptsaechlich dazu dient, Benutzern die Installation einer neuen Version zu ermoeglichen und neue Funktionen zu erleben, wenn eine neue Version verfuegbar ist.

+

Erinnerungsmodus: Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

12 Kameraberechtigungen erhalten

+

android.permission.CAMERA

+

Voitrans verwendet Kameraberechtigungen zum Scannen von QR-Codes und zum Verbinden von Bluetooth-Geraeten wie Bluetooth-Kopfhoerern und Uhren.

+

Erinnerungsmethode: Beim erstmaligen Starten der Anwendung wird ein Hinweis angezeigt, der die Bestaetigung der Berechtigung durch den Benutzer erfordert. Beschreibung der Benutzervereinbarung und Datenschutzrichtlinie.

+ +

Besonderer Hinweis:

+

1 Die Anwendung integriert das Allies SDK und das Scott Map SDK. Nach Zustimmung des Benutzers erhebt die Anwendung im Hintergrund/Vordergrund ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI und andere personenbezogene Daten;

+

Anmerkungen: Weitere Informationen finden Sie im folgenden SDK-bezogenen Inhalt und den Berechtigungen [VIII. Zugriff auf die Liste der Drittanbieter-SDKs]

+ +

8. Zugriff auf Drittanbieter-SDKs

+

1 Um den stabilen Betrieb und die funktionale Umsetzung unseres Clients zu gewaehrleisten, damit Sie mehr Dienste und Funktionen nutzen und geniessen koennen, wird unsere Anwendung in das Software-Tool-Entwicklungskit (SDK) oder andere aehnliche Anwendungen von Dritten eingebettet. Diese Dritten werden relevante Informationen gemaess ihren eigenen Datenschutzrichtlinien sammeln und verarbeiten, um normalerweise Funktionen und Werbedienste bereitzustellen. Sie koennen sich im folgenden Abschnitt ueber die Informationserhebungs- und Verarbeitungsregeln der Dritten informieren. Wir werden strenge Sicherheitstests fuer die Entwicklungskits (SDKs) der Partner durchfuehren, um Informationen zu erhalten, um die angemessene Nutzung und Sicherheit Ihrer personenbezogenen Daten zu schuetzen. Bitte beachten Sie, dass Drittanbieter-SDKs die Datenverarbeitungstypen aufgrund ihrer Versions-Upgrades aendern koennen. Bitte beziehen Sie sich auf die von den Drittanbieter-SDKs veroeffentlichten Datenschutzrichtlinien. Siehe die Details unten oder klicken Sie, um die Drittanbieter-SDK-Liste anzuzeigen.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Erhaltene Informationen: Geraetenummer, IP-Adresse, Geraetesoftwareinformationen, Geraeteidentifikationscode (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-Karte IMSI-Informationen, IP, MAC-Adresse), Geraetebezeichner, Region, geraetebezogene Anwendungsinformationen und andere dienstbezogene Protokollinformationen

+

Verwendungszweck: WeChat-Anmeldung und -Freigabe

+

Entwickler: Shenzhen Tencent Computer Systems Company Limited

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Erhaltene Informationen: Anwendungsname, Anwendungsversionsnummer, Geraetemarke und -modell, Betriebssystem, Anbieterinformationen, Bildschirmaufloesung, Sensorinformationen (Vektor, Beschleunigung, Druck, Richtung, Geomagnetismus, Gyroskop, Temperatur, Lichtsensor, NMEA-Signal), Geraaetesignalstaerkeinformationen

+

Verwendungszweck: Navigation mit Amap

+

Entwickler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Erhaltene Informationen: Anwendungsname, Anwendungsversion, Geraetemarke und -modell, Betriebssystem, Netzwerkinformationen, Geraetesignalstaerke usw.

+

Verwendungszweck: Kartenanzeige und Interaktion

+

Entwickler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Erhaltene Informationen: Standortinformationen (GPS, Wi-Fi, Basisstation), Geraeteinformationen, Netzwerkinformationen usw.

+

Verwendungszweck: Bereitstellung von Standortdiensten

+

Entwickler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Erhaltene Informationen: Anwendungsname, Anwendungsversion, Geraeteinformationen, Netzwerkinformationen usw.

+

Verwendungszweck: Kartenwerkzeuge und Rendering-Optimierung

+

Entwickler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Erhaltene Informationen: Geraetebezeichner, grundlegende Geraeteinformationen, Liste installierter Software und Netzwerkinformationen (siehe offizielle Datenschutzrichtlinie fuer Details)

+

Verwendungszweck: Alipay-Kontoanmeldung und Zahlungsaufruf

+

Entwickler: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Erhaltene Informationen: SDK/API-Version, Plattform, Zeitstempel, App-Bezeichner, App-Version, Geraetehersteller, OS-Version, Gebietsschema, Zeitzone, Netzwerkstatus (Wi-Fi usw.), Netzwerkprotokolle, Absturz- und Nutzungsdaten, IP-Adresse usw. (siehe offizielle Datenschutzrichtlinie fuer Details)

+

Verwendungszweck: App-Qualitaetsueberwachung und Datenberichterstattungsdienst

+

Entwickler: Shenzhen Tencent Computer Systems Company Limited

+

Erhebungsmethode: SDK-Selbsterhebung

+

Link zur Datenschutzrichtlinie: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Schutz von Minderjaehrigen

+

Benutzer unserer Produkte und Dienste koennen Minderjaehrige unter 18 Jahren umfassen. Minderjaehrige Benutzer sollten vor der Nutzung unserer Produkte den Rat ihrer Eltern oder Erziehungsberechtigten bezueglich dieser Datenschutzrichtlinie einholen und unsere Dienste nutzen oder Ihre Informationen an uns weitergeben, nachdem sie die Zustimmung ihrer Eltern oder Erziehungsberechtigten erhalten haben und unter deren Anleitung. Erziehungsberechtigte von Minderjaehrigen, die Fragen haben, koennen uns ueber die in dieser Datenschutzrichtlinie angegebenen Kontaktdaten kontaktieren.

+

Wenn Sie mit der Erhebung der vorstehend genannten Informationen durch die oben genannten Drittanbieter nicht einverstanden sind, stellen Sie bitte die Nutzung der Software sofort ein. Waehrend Ihrer Nutzung der Software werden diese Dritten relevante Informationen gemaess ihren eigenen Datenschutzrichtlinien sammeln und verarbeiten, um einige Funktionen, Werbung und andere Dienste bereitzustellen. Wenn die Informationen aufgrund der Erhebung der vorstehend genannten Informationen durch den betreffenden Drittanbieter durchgesickert sind, traegt der betreffende Drittanbieter die entsprechende rechtliche Verantwortung.

+ +

10. Gueltige und aktualisierte Datenschutzrichtlinie

+

1. Diese Datenschutzrichtlinie gilt ab dem Datum der Veroeffentlichung.

+

2. Da sich unser Geschaeft entwickelt und veraendert, kann sich unsere Datenschutzrichtlinie aendern. Wir behalten uns das Recht vor, unsere Datenschutzrichtlinie jederzeit zu aendern. Bitte ueberpruefen Sie sie daher regelmaessig. Wenn wir Aenderungen an unserer Datenschutzrichtlinie vornehmen, werden wir diese Aktualisierungen auf unserer Website, in unseren Apps und ueber all dort veroeffentlichen, wo wir es fuer angemessen halten, um Sie informiert zu halten. Wenn die Datenschutzrichtlinie aktualisiert wird, tritt sie ab dem Datum der Aktualisierung in Kraft. Ihre fortgesetzte Nutzung unserer Produkte oder Dienste bedeutet, dass Sie unserer geaenderten Datenschutzrichtlinie zustimmen.

+ +

11. So erreichen Sie uns

+

Saitong Industries Inc Gegruendet am 22. November 2024, eingetragene Adresse: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Wenn Sie mehr ueber unser Unternehmen und unsere Plattform erfahren moechten, koennen Sie uns ueber die in dieser Richtlinie angegebenen Kontaktinformationen erreichen (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/de/user_agreement.html b/doc/de/user_agreement.html new file mode 100644 index 000000000..6373de6a0 --- /dev/null +++ b/doc/de/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans Anwendungs-Benutzerprotokoll + + + +
+
Deutsch
+ +

Voitrans Anwendungs-Benutzerprotokoll

+ +

Diese Nutzungsbedingungen informieren Sie darueber, wie Sie auf die Voitrans-Anwendung und die Online-Dienste (die "Dienste") zugreifen und diese nutzen koennen. Saitong Industries Inc. (im Folgenden als "Saitong" bezeichnet) weist die Benutzer hiermit darauf hin, diese Benutzervereinbarung (im Folgenden als "die Vereinbarung" bezeichnet) sorgfaeltig zu lesen und vollstaendig zu verstehen. Die Benutzer sollten die Bedingungen dieser Vereinbarung sorgfaeltig lesen und vollstaendig verstehen. Bitte lesen Sie sorgfaeltig und waehlen Sie, ob Sie diese Vereinbarung akzeptieren oder nicht. Ihre Nutzung der Voitrans APP (im Folgenden als "die APP" oder "die Software" bezeichnet) gilt als Akzeptanz dieser Vereinbarung, und Sie stimmen zu, an die Bedingungen dieser Vereinbarung gebunden zu sein. Wenn Sie mit dieser Vereinbarung nicht einverstanden sind, nutzen Sie die APP nicht.

+

Saitong behaelt sich das Recht vor, diese Vereinbarung zu aendern, und die aktualisierten Bedingungen der Vereinbarung werden in dieser APP veroeffentlicht und treten ab dem Datum der Veroeffentlichung in Kraft.

+ +

1. Allgemeine Regeln

+

1.1 Diese APP ist die von Saitong bereitgestellte Software zur Verbindung der von Saitong und seinen Partnerunternehmen herausgegebenen Headset-Produkte. Das Eigentum und die Betriebsrechte an der Software und den zugehoerigen Diensten gehoeren ausschliesslich Saitong.

+

1.2 Diese Vereinbarung ist eine Vereinbarung zwischen Ihnen (im Folgenden als "Benutzer" bezeichnet) und dem Unternehmen sowie seinen Partnern und Betriebspartnern (im Folgenden als "Partner" bezeichnet) bezueglich der Nutzung der APP und der zugehoerigen Dienste durch den Benutzer.

+

1.3 Die Software und Dienste umfassen:

+

1.3.1 Die bereitgestellte Software bietet Voitrans-Benutzern Voitrans-Verbindung und -Kopplung, Funktionseinstellungsverwaltung und andere Softwaredienste, vorbehaltlich der tatsaechlichen von der APP bereitgestellten Softwaredienste.

+

1.3.2 Updates, Upgrades und andere Dienste der Software.

+ +

2. Umfang der Softwarelizenz

+

2.1 Wir gewaehren dem Benutzer eine persoenliche, nicht uebertragbare, nicht unterlizenzierbare und nicht-exklusive Lizenz fuer die Software.

+

2.2 Benutzer koennen die Software auf einem einzelnen mobilen Endgeraet fuer nicht-kommerzielle Zwecke installieren, nutzen, anzeigen und ausfuehren. Der Benutzer darf die Software jedoch nicht zu kommerziellen Betriebszwecken installieren, nutzen oder ausfuehren, die Software oder die waehrend des Betriebs der Software im Speicher eines beliebigen Endgeraets gespeicherten Daten oder die Interaktionsdaten zwischen Client und Server waehrend des Betriebs der Software kopieren, aendern, modifizieren, verbinden oder ausfuehren oder abgeleitete Werke erstellen. Dies umfasst, ist aber nicht beschraenkt auf die Verwendung von Plugins, Erweiterungen oder nicht autorisierten Drittanbieter-Tools/Diensten fuer den Zugriff auf die Software und zugehoerige Systeme. Fuer den kommerziellen Verkauf, die Vervielfaeltigung und den Vertrieb, wie z.B. Software-Vorinstallation und Buendelung, muss eine schriftliche Genehmigung und Erlaubnis eingeholt werden.

+

2.3 Der Benutzer darf die Software nicht ohne die ausdrueckliche Genehmigung des Erstellers auf anderen Endgeraeten installieren, einschliesslich, aber nicht beschraenkt auf Fernseher, digitale Set-Top-Boxen, Spielkonsolen und andere Geraete.

+

2.4 Sofern in dieser Vereinbarung nicht ausdruecklich genehmigt, werden dem Benutzer keine weiteren Rechte eingeraeumt, und der Benutzer muss die schriftliche Zustimmung einholen, um andere Rechte zu nutzen.

+ +

3. Software-Upgrade

+

3.1 Der Benutzer muss die fuer die Konfiguration des installierten Endgeraets geeignete Softwareversion auswaehlen. Andernfalls liegen Softwareprobleme, Geraeteprobleme oder Schaeden, die durch eine fuer den Geraetetyp ungeeignete Softwareversion verursacht werden, in der alleinigen Verantwortung des Benutzers.

+

3.2 Um das Benutzererlebnis zu verbessern und den Dienstinhalt zu optimieren, hat Saitong das Recht, Ihnen von Zeit zu Zeit Ersatz-, Aenderungs- und Upgrade-Versionen der Software bereitzustellen. Die Funktion "Upgrade-Hinweis" ist fuer Benutzer standardmaessig aktiviert. Abhaengig von den verschiedenen Softwareversionen, die von den Benutzern verwendet werden, bietet Saitong den Benutzern die Moeglichkeit, diese Funktion zu aktivieren. Nach der Veroeffentlichung einer neuen Version der Software garantiert Saitong nicht die weitere Verfuegbarkeit der alten Version der Software.

+ +

4. Nutzungsvorschriften

+

4.1 Benutzer duerfen die Software und Dienste gemaess dieser Vereinbarung nutzen, sofern sie das Gesetz und diese Vereinbarung einhalten, und Benutzer duerfen folgende Handlungen nicht ausfuehren:

+

4.1.1 Alle Urheberrechtsinformationen auf der Software und anderen Kopien loeschen und die von der Software zum Schutz geistigen Eigentums eingerichteten technischen Massnahmen aendern, loeschen oder umgehen.

+

4.1.2 Reverse Engineering der Software, wie Disassemblierung, Dekompilierung oder andere Versuche, den Quellcode der Software zu erhalten.

+

4.1.3 Durch Aendern oder Faelschen von Anweisungen und Daten im Betrieb der Software die Funktion oder den Betriebseffekt der Software hinzufuegen, loeschen oder aendern, oder Software oder Methoden, die fuer die oben genannten Zwecke verwendet werden sollen, betreiben oder der Oeffentlichkeit zugaenglich machen, unabhaengig davon, ob diese Handlungen kommerziellen Zwecken dienen.

+

4.1.4 Die Software fuer jegliches Verhalten verwenden, das die Netzwerksicherheit gefaehrdet, einschliesslich, aber nicht beschraenkt auf: Verwendung nicht autorisierter Daten oder Zugriff auf nicht autorisierte Server/Konten; Zugriff auf oeffentliche Netzwerke oder andere Betriebssysteme ohne Erlaubnis und Loeschen, Aendern oder Hinzufuegen gespeicherter Informationen; nicht autorisierte Versuche, die Schwaechen des Systems oder Netzwerks der Software zu sondieren, zu scannen oder zu testen, oder andere Handlungen, die die Netzwerksicherheit untergraben; Versuche, den normalen Betrieb des Softwaresystems oder der Website zu stoeren oder zu zerstoeren, absichtliche Verbreitung von Schadprogrammen oder Viren und andere Handlungen, die normale Netzwerkinformationsdienste stoeren; Faelschung von TCP/IP-Paketnamen oder Teilnamen.

+

4.1.6 Ohne schriftliche Zustimmung des Unternehmens fuehrt der Benutzer willkuerlich folgende Handlungen an der Software und den darin enthaltenen Informationen durch, einschliesslich, aber nicht beschraenkt auf: Nutzung, Vermietung, Verleih, Kopieren, Aendern, Verlinken, Nachdruck, Kompilieren, Veroeffentlichen, Erstellen von Spiegelseiten, Entwicklung von abgeleiteten Produkten, Werken, Diensten, Plugins, Erweiterungen, Kompatibilitaet, Vernetzung usw. mithilfe der Software.

+

4.1.7 Die Software verwenden, um Inhalte zu veroeffentlichen, zu uebertragen, zu verbreiten und zu speichern, die gegen Ihre lokalen Gesetze verstossen.

+

4.1.8 Die Software verwenden, um Inhalte zu veroeffentlichen, zu uebertragen, zu verbreiten und zu speichern, die die geistigen Eigentumsrechte, Geschaeftsgeheimnisse und andere legitime Rechte anderer verletzen.

+

4.1.9 Diese Software verwenden, um massenhaft Werbeinformationen und Spam-Informationen zu veroeffentlichen, zu uebertragen und zu verbreiten.

+

4.1.10 Die Software und andere Dienste in einer rechtswidrigen Weise, zu rechtswidrigen Zwecken oder in einer Weise verwenden, die mit der lizenzierten Nutzung dieser Vereinbarung nicht vereinbar ist.

+

4.2 Spezifikation der Informationsveroeffentlichung

+

4.2.1 Wenn Sie die Software zur Veroeffentlichung von Informationsinhalten verwenden (falls zutreffend), sollten Sie garantieren, dass Sie die geistigen Eigentumsrechte an den von Ihnen hochgeladenen Informationsinhalten besitzen oder eine rechtmaessige Genehmigung erhalten haben, und dass kein Verhalten Ihrerseits bei der Nutzung der Software und Dienste die legitimen Rechte und Interessen Dritter verletzt.

+

4.2.2 Bei der Nutzung der Software darf der Benutzer die Software nicht fuer folgende Aktivitaeten nutzen, einschliesslich, aber nicht beschraenkt auf:

+

4.2.2.1 Erstellen, Kopieren, Veroeffentlichen, Verbreiten und Speichern von Inhalten, die gegen lokale nationale Gesetze und Vorschriften verstossen.

+

4.2.2.2 Veroeffentlichen, Uebertragen, Verbreiten und Speichern von Inhalten, die die gesetzlichen Rechte anderer verletzen, wie Ruf, Portraet, geistiges Eigentum und Geschaeftsgeheimnisse.

+

4.2.2.3 Tatsachen erfinden, die Wahrheit verbergen, um andere irrezufuehren oder zu taueschen.

+

4.2.2.4 Werbeinformationen und Spam-Informationen veroeffentlichen, uebertragen und verbreiten.

+

4.2.2.5 Andere Handlungen unter Verstoss gegen lokale Gesetze und Vorschriften begehen.

+

4.2.3 Sie duerfen ohne Genehmigung des Unternehmens keine kommerziellen Aktivitaeten wie Werbung und Warenverkauf in der Software durchfuehren.

+

4.3 Der Benutzer versteht und stimmt zu, dass:

+

4.3.1 Saitong feststellen wird, ob der Benutzer im Verdacht steht, gegen die oben genannten Nutzungsspezifikationen zu verstossen, und je nach Ergebnis der Feststellung Ihre Nutzungslizenz aussetzen oder beenden oder andere einschraenkende Massnahmen ergreifen kann, die gemaess dieser Vereinbarung ergriffen werden koennen.

+

4.3.2 Fuer vom Benutzer unter Verwendung der lizenzierten Software veroeffentlichte Informationen, die im Verdacht stehen, illegal zu sein oder die gesetzlichen Rechte anderer zu verletzen oder gegen diese Vereinbarung zu verstossen, werden die Informationen direkt geloescht.

+

4.3.3 Wenn der Verstoss des Benutzers gegen die oben genannten Nutzungsregeln Dritten Schaeden zufuegt, muessen Sie die rechtliche Verantwortung eigenstaendig in Ihrem eigenen Namen tragen, und Sie sollten sicherstellen, dass Saitong von Verlusten oder erhoehten Kosten freigestellt wird.

+

4.3.4 Wenn der Benutzer gegen die einschlaegigen Rechtsvorschriften oder Vereinbarungen verstoesst und Saitong Verluste erleidet oder Anspruechen Dritter ausgesetzt ist oder von der Verwaltungsbehoerde bestraft wird, muss der Benutzer die Saitong entstandenen Verluste und/oder Kosten erstatten, einschliesslich angemessener Anwaltskosten, Ermittlungs- und Beweiserhebungskosten.

+ +

5. Beschreibung der Drittanbieterdienste

+

5.1 Der Benutzer versteht und stimmt zu, dass das Softwaresystem Dienste enthalten kann, die von verbundenen Unternehmen oder Dritten bereitgestellt werden, und dass das Unternehmen nur relevante Funktionsmodule im System zur Bequemlichkeit der Benutzer bereitstellt und Zugang zu Drittanbieterdiensten bietet.

+

5.2 Unabhaengig davon, ob die Drittanbieterdienste in den Softwaresystemdiensten vorinstalliert sind oder von den Benutzern selbst eroeffnet oder bestellt werden, verstehen und stimmen die Benutzer zu, dass Saitong keine ausdrueckliche oder stillschweigende Garantie oder Zusicherung hinsichtlich der Rechtmaessigkeit und Wirksamkeit der Drittanbieter oder Benutzer sowie der Rechtmaessigkeit, Genauigkeit, Wirksamkeit und Sicherheit der Drittanbieterdienste abgibt.

+

5.3 Das Unternehmen ueberwacht, kontrolliert oder bietet keinerlei Garantie oder Zusicherung fuer Drittanbieterdienste und uebernimmt keinerlei Haftung.

+

5.4 Jeder Streit oder jede Meinungsverschiedenheit zwischen dem Benutzer und dem Drittanbieter ist vom Benutzer und dem Dritten gemaess dem Geschaeftsprozess und den Geschaeftsnormen des Drittanbieters zu loesen, und das Unternehmen uebernimmt keine Verantwortung.

+ +

6. Datenschutzrichtlinie und Schutz personenbezogener Daten

+

6.1 Saitong verpflichtet sich, die Privatsphaere der Benutzer gemaess der Datenschutzrichtlinie zu schuetzen. Bitte lesen Sie: Voitrans Datenschutzrichtlinie.

+ +

7. Haftung bei Vertragsverletzung

+

7.1 Saitong hat das Recht zu beurteilen, ob das Verhalten des Benutzers den Bestimmungen dieser Vereinbarung entspricht. Wenn angenommen wird, dass der Benutzer gegen einschlaegige Gesetze und Vorschriften oder die Bestimmungen dieser Vereinbarung und der zugehoerigen Regeln verstossen hat, hat Saitong je nach Schwere des Verstosses des Benutzers das Recht, die rechtswidrigen Informationen zu loeschen, die Nutzung des Softwaredienstes durch den Benutzer einzuschraenken, auszusetzen oder zu beenden, die rechtliche Haftung des Benutzers zu verfolgen und andere Massnahmen zu ergreifen, die Saitong fuer angemessen haelt. Wenn uns ein Verlust entsteht (einschliesslich, aber nicht beschraenkt auf den Erhalt von Anspruechen Dritter oder Strafen von Verwaltungsbehoerden), haftet der Benutzer vollumfaenglich.

+ +

8. Servicerisiken und Haftungsausschluesse

+

8.1 Wir moechten mit der aktuellen Technologie Service-Support bieten. Saitong garantiert nicht, dass der Softwaredienst ohne Unterbrechung oder Fehler funktioniert, dass alle Maengel des Softwaredienstes behoben werden oder dass der Softwaredienst alle Anforderungen der Benutzer erfuellt. Fuer die daraus resultierenden Konsequenzen uebernimmt Saitong keine Verantwortung.

+

8.2 Fuer alle Verluste, die dem Benutzer durch Dritte wie Kommunikationsleitungsstoerungen, technische Probleme, Netzwerk-, Computerterminalgeraetestoerungen, Systeminstabilitaet und andere Ursachen hoeherer Gewalt entstehen, wird keine Haftung uebernommen.

+

8.3 Saitong garantiert nicht die Rechtmaessigkeit, Authentizitaet, Genauigkeit und Wirksamkeit der ueber die Software erhaltenen Informationsinhalte (einschliesslich, aber nicht beschraenkt auf Drittanbieter-Serviceinhalte), und Saitong uebernimmt keine Verantwortung fuer die Ergebnisse von Handlungen, die Benutzer auf der Grundlage von Abfragen und Einsichtnahmen vornehmen.

+

8.4 Die Software wird, wie die meisten Internet-Software, von Unterschieden in Faktoren beeinflusst, einschliesslich, aber nicht beschraenkt auf Benutzergruende, Qualitaet des Netzwerkdienstes, soziales Umfeld und andere Faktoren, und kann verschiedenen Sicherheitsproblemen ausgesetzt sein, wie z.B. dass andere Benutzerinformationen verwenden, was zu Belaestigungen im realen Leben fuehrt; andere vom Benutzer heruntergeladene und installierte Software oder andere vom Benutzer besuchte Websites enthalten Viren wie "Trojaner", die die Sicherheit der Endgeraetinformationen und -daten der Benutzer bedrohen und die normale Nutzung der Software beeintraechtigen. Benutzer sollten das Bewusstsein fuer Informationssicherheit und den Schutz von Benutzerdaten staerken und auf die Verstaerkung des Passwortschutzes achten, um Verluste und Belaestigungen zu vermeiden.

+

8.5 Wenn Benutzer die Software nutzen oder Saitong auffordern, bestimmte Dienste bereitzustellen, kann die Software Drittanbietersysteme oder Drittanbietersoftware aufrufen, um die Nutzung oder den Zugriff der Benutzer zu unterstuetzen, und die Ergebnisse der Nutzung oder des Zugriffs werden vom Dritten bereitgestellt. Neben der Einhaltung der einschlaegigen Regeln dieser Vereinbarung muessen die Benutzer auch die Vereinbarungen und einschlaegigen Regeln des Dritten einhalten. Die Benutzer muessen verstehen und zustimmen, dass bei der Nutzung von Drittanbieterdiensten Dritte Benutzerdaten lesen koennen, und Saitong garantiert nicht die Sicherheit, Genauigkeit, Wirksamkeit und andere unsichere Risiken der durch Drittanbietersysteme oder Drittanbietersoftware erzielten Ergebnisse, die Benutzer sollten eine sorgfaeltige Beurteilung vornehmen, und Saitong uebernimmt keine Verantwortung fuer daraus resultierende Streitigkeiten und Schaeden.

+

8.6 Um die Autonomie der Geschaeftsentwicklung und -anpassung des Unternehmens zu gewaehrleisten, kann das Unternehmen den Dienst jederzeit nach einer angemessenen Benachrichtigung des Benutzers aendern oder unterbrechen.

+

8.7 Sofern nicht ausdruecklich gesetzlich vorgeschrieben, wird Saitong sein Bestes tun, um sicherzustellen, dass die Software und die beteiligten Technologien und Informationen sicher, effektiv, genau und zuverlaessig sind, aber aufgrund der vorhandenen Technologie versteht der Benutzer, dass Saitong dies nicht garantieren kann.

+

8.8 Die Entschaedigung fuer Personenschaeden oder beilaeufige und indirekte wirtschaftliche Schaeden, die durch oder im Zusammenhang mit einem der folgenden Umstaende verursacht werden, einschliesslich, aber nicht beschraenkt auf entgangene Gewinne, Datenverlust, Schaeden durch Geschaeftsunterbrechung oder andere Geschaeftsschaeden oder -verluste, sind vom Benutzer zu tragen:

+

1) Nutzung oder Nichtnutzung der lizenzierten Software.

+

2) Unbefugte Nutzung der Software oder Aenderung von Benutzerdaten durch Dritte.

+

3) Kosten und Verluste, die durch Handlungen des Benutzers mit der Software entstehen.

+

4) Missverstaendnisse des Benutzers bezueglich der Software.

+

5) Jeder andere Verlust im Zusammenhang mit der Software, der nicht auf Ursachen von Saitong zurueckzufuehren ist.

+

8.9 Der Benutzer stimmt zu, dass das Unternehmen das Recht hat, den gesamten oder einen Teil des Dienstes fuer den Benutzer aufgrund der Anforderungen der Justiz-, Regulierungs- und Aufsichtsbehoerden oder aus eigenen geschaeftlichen Gruenden auszusetzen, zu unterbrechen oder zu beenden. Saitong uebernimmt hierfuer keine Verantwortung.

+

8.10 Der Benutzer versteht und stimmt zu, dass das Unternehmen wirtschaftlich angemessene Anstrengungen unternehmen wird, um die Sicherheit der Datenspeicherung in der Software und den Diensten zu gewaehrleisten, aber das Unternehmen kann keine vollstaendige Garantie geben, und der Benutzer versteht, dass das Unternehmen nicht fuer die Loeschung oder das Scheitern der Speicherung oder Sicherung von Daten im Dienst verantwortlich ist.

+

8.11 Im groessten gesetzlich zulaessigen Umfang haftet der Entwickler oder Lieferant nicht fuer direkte, indirekte, beilaeufige, besondere oder Folgeschaeden, die aus der Nutzung der Anwendung entstehen. Wenn der Benutzer weitere Beduerfnisse hat, wenden Sie sich bitte an ein regulaeres Krankenhaus fuer eingehende Untersuchungen.

+ +

9. Erklaerung zum geistigen Eigentum

+

9.1 Saitong ist Inhaber der geistigen Eigentumsrechte an dieser Software. Alle Urheberrechte, Marken, Patente, Geschaeftsgeheimnisse und sonstigen geistigen Eigentumsrechte der Software sowie alle mit der Software verbundenen Informationsinhalte (einschliesslich, aber nicht beschraenkt auf Text, Bilder, Audio, Video, Grafiken, Schnittstellendesign, Layoutrahmen, relevante Daten oder elektronische Dokumente usw.) sind durch lokale Gesetze und Vorschriften und entsprechende internationale Vertraege geschuetzt.

+

9.2 Ohne die schriftliche Zustimmung des Unternehmens darf der Benutzer die oben genannten geistigen Eigentumsrechte weder zu kommerziellen noch zu nicht-kommerziellen Zwecken umsetzen, nutzen oder uebertragen noch Dritten erlauben, und das Unternehmen behaelt sich das Recht vor, die rechtliche Verantwortung fuer die oben genannten Handlungen zu verfolgen.

+ +

10. Protokollaenderung

+

10.1 Saitong hat das Recht, die Bedingungen dieser Vereinbarung bei Bedarf zu aendern. Sobald die Bedingungen der Vereinbarung geaendert werden, werden die ueberarbeiteten Bedingungen der Vereinbarung auf der entsprechenden Seite veroeffentlicht. Wenn Sie mit dem geaenderten Inhalt nicht einverstanden sind, sollte der Benutzer die Initiative ergreifen, diesen Dienst zu kuendigen. Wenn der Benutzer die Dienste weiterhin nutzt, gilt dies als Akzeptanz der Aenderungen der Vereinbarungsbedingungen.

+

10.2 Saitong behaelt sich das Recht vor, die kostenpflichtigen Dienste, Abrechnungsstandards, Abrechnungsmethoden, Servicegebuehren und Servicebedingungen bei Bedarf zu aendern oder umzugestalten. Bei der Bereitstellung von Diensten koennen wir bestimmte Gebuehren von Benutzern einiger Dienste jetzt oder in Zukunft erheben. Wenn Benutzer die Zahlung dieser Gebuehren verweigern, koennen sie die entsprechenden Dienste nach Beginn der Gebuehrenerhebung nicht mehr nutzen.

+
+ + diff --git a/doc/el/privacy_policy.html b/doc/el/privacy_policy.html new file mode 100644 index 000000000..d84a960d8 --- /dev/null +++ b/doc/el/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Πολιτική Απορρήτου Voitrans + + + + +
+

Πολιτική Απορρήτου Voitrans

+

Τελευταία ενημέρωση: 27 Μαΐου 2025

+

Ημερομηνία ισχύος: 27 Μαΐου 2025

+ +

Καλώς ήρθατε στη χρήση του λογισμικού και των υπηρεσιών Voitrans

+

1. Το Voitrans παρέχεται από τη Saitong Industries Inc. (εφεξής «η Εταιρεία»). Μπορεί να βοηθήσει τους χρήστες να επιτύχουν τη διαχείριση συσκευών Bluetooth και άλλων προϊόντων. Κατανοούμε τη σημασία των προσωπικών πληροφοριών για τους χρήστες μας (εφεξής «εσείς») και ότι η αποτελεσματική προστασία των προσωπικών σας πληροφοριών αποτελεί τον ακρογωνιαίο λίθο της υγιούς και βιώσιμης ανάπτυξης της επιχείρησής μας. Σας ευχαριστούμε για τη χρήση και την εμπιστοσύνη σας στα προϊόντα ή τις υπηρεσίες Voitrans! Γνωρίζουμε πλήρως ότι αυτή η εμπιστοσύνη δεν αποκτάται εύκολα, τηρούμε την αρχή της διαφάνειας και ανοιχτότητας, για να σας εκφράσουμε τους κανόνες μας για την επεξεργασία των προσωπικών σας πληροφοριών, χρησιμοποιούμε νόμιμους και θεμιτούς τρόπους και σαφείς και εύλογους σκοπούς για την επεξεργασία των προσωπικών σας πληροφοριών. Ειδική σημείωση: Παρακαλούμε φροντίστε να διαβάσετε και να κατανοήσετε προσεκτικά αυτή την Πολιτική Απορρήτου πριν χρησιμοποιήσετε τα προϊόντα ή τις υπηρεσίες μας, ώστε να μπορείτε να κάνετε κατάλληλες επιλογές.

+

2. Αυτή η Πολιτική Απορρήτου σας εξηγεί πώς συλλέγουμε, χρησιμοποιούμε, αποθηκεύουμε και μοιραζόμαστε τις προσωπικές σας πληροφορίες όταν χρησιμοποιείτε το Voitrans. Οι προσωπικές πληροφορίες αναφέρονται σε κάθε είδους πληροφορίες που καταγράφονται με ηλεκτρονικά ή άλλα μέσα και μπορούν να ταυτοποιήσουν ένα συγκεκριμένο φυσικό πρόσωπο ή να αντανακλούν τις δραστηριότητες ενός συγκεκριμένου φυσικού προσώπου μόνες τους ή σε συνδυασμό με άλλες πληροφορίες. Το Voitrans σέβεται και προστατεύει το προσωπικό απόρρητο όλων των χρηστών της υπηρεσίας. Εκτός εάν ορίζεται διαφορετικά στην παρούσα Πολιτική Απορρήτου, το Voitrans δεν θα αποκαλύψει αυτές τις πληροφορίες στο κοινό ούτε θα τις παρέχει σε τρίτους χωρίς την προηγούμενη άδειά σας.

+

3. Όταν χρησιμοποιείτε το προϊόν ή την υπηρεσία τρίτου μέσω ενός προϊόντος ή υπηρεσίας App Marketplace, οι προσωπικές σας πληροφορίες υπόκεινται στην πολιτική απορρήτου του τρίτου.

+

4. Αυτή η Πολιτική Απορρήτου Voitrans θα ενημερώνεται κατά καιρούς. Συμφωνώντας με τη Συμφωνία Χρήσης Υπηρεσίας Voitrans και ξεκινώντας τη χρήση του Voitrans, θεωρείται ότι έχετε συμφωνήσει με το σύνολο αυτής της Πολιτικής Απορρήτου. Εάν δεν συμφωνείτε με αυτή την Πολιτική Απορρήτου, παρακαλούμε μην χρησιμοποιείτε το λογισμικό και τις υπηρεσίες Voitrans.

+

5. Προκειμένου να αναλύσουμε και να μετρήσουμε την αποτελεσματικότητα των σχετικών υπηρεσιών, θα χρησιμοποιήσουμε και θα αποκαλύψουμε τις προσωπικές σας πληροφορίες σύμφωνα με τις διατάξεις αυτής της Πολιτικής Απορρήτου.

+ +

Αυτή η Πολιτική Απορρήτου θα σας βοηθήσει να κατανοήσετε τα ακόλουθα:

+
    +
  • 1 Οι πληροφορίες που συλλέγουμε
  • +
  • 2 Αποθήκευση πληροφοριών
  • +
  • 3 Ασφάλεια πληροφοριών
  • +
  • 4 Πώς χρησιμοποιούμε τις πληροφορίες που συλλέγουμε
  • +
  • 5 Κοινοποίηση πληροφοριών
  • +
  • 6 Πώς διαχειρίζεστε τις προσωπικές σας πληροφορίες
  • +
  • 7 Περιγραφή αδειών εφαρμογής
  • +
  • 8 Πρόσβαση σε SDK τρίτων
  • +
  • 9 Προστασία ανηλίκων
  • +
  • 10 Ισχύουσα και ενημερωμένη Πολιτική Απορρήτου
  • +
  • 11 Πώς να επικοινωνήσετε μαζί μας
  • +
+ +

1. Οι πληροφορίες που συλλέγουμε

+

1. Όταν αρχίσετε να χρησιμοποιείτε το Voitrans, θα αρχίσουμε να συλλέγουμε δεδομένα σχετικά με τη χρήση της εφαρμογής από εσάς

+

2. Το Voitrans μπορεί να αποκτήσει προσωπικές πληροφορίες σχετικά με εσάς από τρίτους ή επιχειρηματικούς εταίρους μέσω νόμιμων μέσων

+

3. Για να σας παρέχουμε καλύτερα προϊόντα και υπηρεσίες, να σας εξασφαλίσουμε ασφάλεια δικτύου κατά τη χρήση, να διατηρήσουμε την κανονική λειτουργία των προϊόντων και να βελτιστοποιήσουμε και να βελτιώσουμε τον σκοπό των υπηρεσιών πληροφόρησής μας, αφού κάνετε ενεργά κλικ για να συμφωνήσετε με αυτή την πολιτική απορρήτου, χρησιμοποιήστε τις πληροφορίες που παρέχουμε. Κατά τη διάρκεια της υπηρεσίας, εκτός από τις προσωπικές πληροφορίες που είναι απαραίτητες για τη διασφάλιση της κανονικής λειτουργίας των βασικών λειτουργιών της Εφαρμογής σύμφωνα με τους εθνικούς νόμους και κανονισμούς, θα συλλέξουμε άλλες προσωπικές πληροφορίες από εσάς:

+

3.1 Για την αναγνώριση χρηστών υψηλού κινδύνου, την αξιολόγηση της αυθεντικότητας των χρηστών και την ολοκληρωμένη πρόληψη απάτης, θα διαβάζουμε τις πληροφορίες της συσκευής σας κάθε φορά που ανοίγετε το λογισμικό, συμπεριλαμβανομένων: (Μοντέλο συσκευής, διεύθυνση MAC συσκευής, μοναδικό αναγνωριστικό συσκευής (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID κ.λπ.) MEID, σειριακός αριθμός, SSID και BSSID WIFI), ανάγνωση διεύθυνσης Bluetooth, έκδοση λειτουργικού συστήματος, όνομα λειτουργικού συστήματος, λογαριασμός σύνδεσης χρήστη και πληροφορίες κωδικού πρόσβασης;

+

3.2 Όταν χρησιμοποιείτε τα προϊόντα και τις υπηρεσίες μας, ενδέχεται να συλλέγουμε ορισμένες πληροφορίες μέσω πληροφοριών αρχείου καταγραφής δικτύου ή ορισμένων προγραμμάτων και λογισμικού, αυτές οι πληροφορίες μπορεί να περιλαμβάνουν: λεπτομέρειες χρήσης προϊόντων και υπηρεσιών, όπως ο χρόνος ανοίγματος της εφαρμογής σας, η διάρκεια χρήσης και η διεύθυνση της σελίδας που επισκεφθήκατε· Πληροφορίες συμβάντων συσκευής, όπως σφάλματα, δραστηριότητα συστήματος κ.λπ., για τη βελτιστοποίηση της συσκευής σας και τη βελτίωση των υπηρεσιών μας;

+

3.3 Για τον εντοπισμό εφαρμογών όπου ο εξοπλισμός κινδυνεύει, παρέχοντας πιο ασφαλείς λειτουργικές υπηρεσίες. Επομένως, πρέπει να αποκτήσουμε τη λίστα εφαρμογών/εγκατεστημένων εφαρμογών σας κατά τη διαδικασία διασφάλισης της κανονικής λειτουργίας του προϊόντος και προστασίας της ασφάλειας της συσκευής.

+

3.4 Για την ανάλυση της χρήσης λειτουργιών εφαρμογής από τους χρήστες και τον προσδιορισμό της αυθεντικότητας των χρηστών, πρέπει να διεξάγουμε στατιστικά δεδομένα και να συλλέγουμε τις παραπάνω πληροφορίες συσκευής, συμπεριλαμβανομένης της διεύθυνσης MAC της συσκευής και του μοναδικού αναγνωριστικού της συσκευής, όταν η συσκευή σας είναι σε χρήση.

+

3.5 Σήμα συσκευής: η κατάσταση δικτύου της συσκευής που χρησιμοποιείτε, πληροφορίες σημείου πρόσβασης WIFI κ.λπ.

+

3.6 Πληροφορίες τοποθεσίας: Ενδέχεται να χρησιμοποιήσουμε GPS, WiFi ή άλλα τεχνικά μέσα για τη συλλογή και επεξεργασία πληροφοριών σχετικά με την τοποθεσία σας για ενημέρωση τοπικών πληροφοριών, παροχή υπηρεσιών περιεχομένου κ.λπ.

+

Για περισσότερες πληροφορίες, παρακαλούμε κάντε κλικ στη «Λίστα συλλογής προσωπικών πληροφοριών».

+ +

1. Για τις πιο ευαίσθητες προσωπικές πληροφορίες στις παραπάνω πληροφορίες, όπως πληροφορίες συσκευής χρήστη (αριθμός IMEI, κατάσταση κλήσης και αριθμός ταυτοποίησης), πληροφορίες τοποθεσίας GPS, φωτογραφικό περιεχόμενο πολυμέσων και δικαιώματα πρόσβασης αρχείων, θα λάβουμε τη συγκατάθεσή σας πριν τη συλλογή. Για ορισμένες μη ευαίσθητες πληροφορίες, η συλλογή μπορεί να είναι προεπιλεγμένη και αυτόματη. Μπορείτε να περιορίσετε τη συλλογή σχετικών πληροφοριών ή τη χρήση ορισμένων αδειών από την κινητή σας συσκευή, ρυθμίζοντας τις επιλογές Ρυθμίσεων για την κινητή σας συσκευή. Όταν περιορίσετε την πρόσβασή μας σε κάποια άδεια, ενδέχεται να μην μπορούμε να συνεχίσουμε να σας παρέχουμε τις αντίστοιχες υπηρεσίες και δεν θα επεξεργαζόμαστε πλέον τις αντίστοιχες πληροφορίες σας.

+

2. Δεν θα συλλέξουμε τον αριθμό ταυτότητάς σας, προσωπικές βιομετρικές πληροφορίες, αριθμό τραπεζικού λογαριασμού, πληροφορίες περιουσίας, πιστωτικές πληροφορίες, πληροφορίες υγείας και φυσιολογικές πληροφορίες και άλλες προσωπικές ευαίσθητες πληροφορίες.

+

3. Σχετικά με τις ευαίσθητες άδειες: Για τη σωστή χρήση των λειτουργιών της εφαρμογής, το προϊόν πρέπει να αποκτήσει τις ακόλουθες άδειες προκειμένου να παρέχει λειτουργικές υπηρεσίες που σχετίζονται με τα κανονικά προϊόντα.

+ +

1 Απόκτηση αδειών ανάγνωσης και εγγραφής αποθήκευσης

+

1 Πώς αποκτάται: αναδυόμενη ειδοποίηση, όταν αποκτηθεί η άδεια, ο χρήστης θα κάνει ενεργά κλικ στο αποδέχομαι και η εφαρμογή θα χρησιμοποιήσει αυτή την άδεια

+

2 Σκοπός και πεδίο χρήσης: Χρησιμοποιείται για τη σάρωση αρχείων κρυφής μνήμης πόρων και μικρογραφιών στο σύστημα, τη φόρτωση μουσικών πόρων και εικόνων προϊόντων. Εμφανίζεται στη διεπαφή της Εφαρμογής για τη διευκόλυνση της προβολής και λειτουργίας από τους χρήστες

+ +

2 Απόκτηση άδειας στη λίστα εγκατεστημένων εφαρμογών

+

1 Πώς αποκτάται: αναδυόμενη ειδοποίηση, όταν αποκτηθεί η άδεια, ο χρήστης θα κάνει ενεργά κλικ στο αποδέχομαι και η εφαρμογή θα χρησιμοποιήσει αυτή την άδεια

+

2 Σκοπός και πεδίο χρήσης: Όταν η εφαρμογή χρειάζεται να χρησιμοποιήσει υπηρεσίες διαφημιστικής προώθησης, η πλατφόρμα διαφήμισης τρίτου, Youmon +SDK, χρειάζεται να αποκτήσει «την άδεια λίστας εγκατεστημένου λογισμικού εφαρμογής» της συσκευής για να αποτρέψει την προώθηση στον χρήστη εφαρμογών που ήδη κατέχει και να βελτιώσει την εμπειρία χρήστη.

+ +

3 Η άδεια απόκτησης πληροφοριών κατάστασης συσκευής

+

Περιλαμβάνει: (Μοντέλο συσκευής, διεύθυνση MAC συσκευής, μοναδικό αναγνωριστικό συσκευής (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID κ.λπ.) MEID, σειριακός αριθμός, SSID και BSSID WIFI, ανάγνωση διεύθυνσης Bluetooth), έκδοση λειτουργικού συστήματος, όνομα λειτουργικού συστήματος κ.λπ.;

+

1 Πώς αποκτάται: αναδυόμενη ειδοποίηση, όταν αποκτηθεί η άδεια, ο χρήστης θα κάνει ενεργά κλικ στο αποδέχομαι και η εφαρμογή θα χρησιμοποιήσει αυτή την άδεια

+

2 Σκοπός και πεδίο χρήσης: Όταν χρησιμοποιείτε την εφαρμογή μας, για να αναλύσουμε τη χρήση λειτουργιών εφαρμογής από τον χρήστη και να αξιολογήσουμε την αυθεντικότητα του χρήστη, θα συγχρονίσουμε την άδεια σε SDK τρίτων, συμπεριλαμβανομένων Autonavi SDK, Youmon +SDK κ.λπ.

+ +

4 Πρόσβαση σε πληροφορίες τοποθεσίας

+

1 Πώς αποκτάται: αναδυόμενες ειδοποιήσεις, όταν αποκτηθεί η άδεια, ο χρήστης θα χρησιμοποιήσει αυτή την άδεια μόνο όταν κάνει ενεργά κλικ στο αποδέχομαι στην εφαρμογή.

+

2 Σκοπός και πεδίο χρήσης: Όταν η εφαρμογή χρειάζεται να χρησιμοποιήσει GPS, WiFi ή άλλες λειτουργίες, το προϊόν πρέπει να συλλέξει την τοποθεσία και τις πληροφορίες σας για αναζήτηση συσκευών Bluetooth σε κοντινές τοποθεσίες.

+

Σημείωση: Για περισσότερες άδειες εφαρμογής, ανατρέξτε σε αυτό το έγγραφο «Πολιτική Απορρήτου» Ενότητα 7 «Περιγραφή αδειών εφαρμογής»

+ +

2. Αποθήκευση πληροφοριών

+

1. Πού αποθηκεύονται οι πληροφορίες

+

Οι προσωπικές πληροφορίες που συλλέγουμε και παράγουμε στη Λαϊκή Δημοκρατία της Κίνας θα αποθηκεύονται στους διακομιστές μας ή/και σε αυτούς των θυγατρικών μας.

+

2. Αποθήκευση και επεξεργασία πληροφοριών

+

Αποθηκεύουμε τις προσωπικές σας πληροφορίες μόνο για την περίοδο που είναι απαραίτητη για την επίτευξη του σκοπού ή για όσο χρόνο απαιτεί ο νόμος και οι κανονισμοί. Αφού σταματήσετε να χρησιμοποιείτε αυτό το προϊόν, θα σταματήσουμε αμέσως τη συλλογή και επεξεργασία των προσωπικών σας πληροφοριών και δεδομένων εφαρμογής. Μετά τη λήξη της παραπάνω περιόδου, θα διαγράψουμε ή θα ανωνυμοποιήσουμε τις προσωπικές πληροφορίες που μας παρείχατε.

+

Εκτός από τις απαραίτητες λειτουργίες, το Voitrans χρειάζεται να υποβάλει αίτηση για αντίστοιχες άδειες συστήματος. Η πλευρά διακομιστή cloud δεν αποθηκεύει προσωπικές πληροφορίες χρηστών και τα SDK τρίτων στα οποία αποκτάται πρόσβαση θα ανωνυμοποιηθούν και θα απο-ταυτοποιηθούν από τον πάροχο υπηρεσιών (Amu Statistics SDK, Autonavi SDK), ώστε οι χρήστες να μην μπορούν να εντοπιστούν. Οι πληροφορίες που αποθηκεύονται στο τηλέφωνο του χρήστη θα διαγραφούν αυτόματα όταν ο χρήστης απεγκαταστήσει το Voitrans ή καθαρίσει τη μνήμη cache.

+ +

3. Ασφάλεια πληροφοριών

+

1. Το Voitrans αποθηκεύει και προστατεύει τις προσωπικές σας πληροφορίες χρησιμοποιώντας βιομηχανικά πρότυπα μέτρων ασφαλείας και τεχνολογιών, όπως αυθεντικοποίηση, κρυπτογράφηση δεδομένων, περιορισμένη πρόσβαση στο κέντρο δεδομένων και άλλα μέτρα ασφαλείας για να διασφαλίσουμε ότι οι πληροφορίες σας είναι ασφαλείς από αποκάλυψη, αλλοίωση και καταστροφή. Παρά τα προαναφερθέντα μέτρα ασφαλείας, παρακαλούμε σημειώστε ότι κανένα μέτρο ασφαλείας δεν μπορεί να είναι 100% ασφαλές.

+

2. Όταν χρησιμοποιείτε τις υπηρεσίες που παρέχονται από το Voitrans, παρακαλούμε προστατέψτε τις προσωπικές σας πληροφορίες. Εάν ανακαλύψετε ότι οι προσωπικές σας πληροφορίες έχουν παραβιαστεί, παρακαλούμε επικοινωνήστε μαζί μας αμέσως ώστε να λάβουμε κατάλληλα μέτρα.

+ +

4. Πώς χρησιμοποιούμε τις πληροφορίες που συλλέγουμε

+

1. Κατά την υλοποίηση επιχειρηματικών λειτουργιών εφαρμογής, ενδέχεται να χρησιμοποιήσουμε τις προσωπικές σας πληροφορίες για τη διασφάλιση της ακεραιότητας και ασφάλειας των προϊόντων και υπηρεσιών που σας παρέχουμε;

+

2. Θα κατανοήσουμε τις συνήθειες χρήσης σας μέσω των συλλεγμένων πληροφοριών και, με τη βοήθεια ανάλυσης δεδομένων, θα αναγνωρίσουμε την αποδοχή υπηρεσιών, τις συνήθειες χρήσης σας κ.λπ., προκειμένου να δοκιμάσουμε και να δημιουργήσουμε νέα προϊόντα, λειτουργίες και υπηρεσίες, να βελτιώσουμε το επίπεδο υπηρεσιών και να μας βοηθήσουμε να βελτιώσουμε τις υπάρχουσες υπηρεσίες και να αναπτύξουμε νέες υπηρεσίες;

+

3. Ενδέχεται να χρησιμοποιήσουμε τις προσωπικές σας πληροφορίες για έρευνες πελατών σχετικά με τα προϊόντα και τις υπηρεσίες, για αποστολή ειδοποιήσεων σχετικά με τα προϊόντα και τις υπηρεσίες και για εμπορική προώθηση;

+

4. Ενδέχεται να χρησιμοποιήσουμε τις πληροφορίες σας για εσωτερική ανάλυση και έρευνα που σχετίζεται με την εφαρμογή;

+ +

5. Κοινοποίηση πληροφοριών

+

Προς το παρόν, δεν θα μοιραστούμε ή μεταφέρουμε ενεργά τις προσωπικές σας πληροφορίες σε τρίτους εκτός εταιρείας· εάν υπάρξει άλλη κοινοποίηση ή μεταφορά των προσωπικών σας πληροφοριών, θα λάβουμε άμεσα ή θα επιβεβαιώσουμε ότι ο τρίτος έχει λάβει τη ρητή συγκατάθεσή σας για την παραπάνω συμπεριφορά.

+

Δεν θα αποκαλύψουμε δημόσια τις προσωπικές πληροφορίες που συλλέγουμε. Εάν είναι απαραίτητο να τις αποκαλύψουμε δημόσια, θα σας ενημερώσουμε για τον σκοπό της δημόσιας αποκάλυψης, τον τύπο πληροφοριών που αποκαλύπτονται και τις ευαίσθητες πληροφορίες που ενδέχεται να εμπλέκονται, και θα λάβουμε τη ρητή συγκατάθεσή σας.

+

Καθώς η επιχείρησή μας συνεχίζει να αναπτύσσεται, ενδέχεται να πραγματοποιήσουμε συγχωνεύσεις, εξαγορές, μεταφορές περιουσιακών στοιχείων και άλλες συναλλαγές, και θα σας ενημερώσουμε για τις σχετικές περιστάσεις, σύμφωνα με τους νόμους και κανονισμούς και με πρότυπα όχι λιγότερα από αυτά που απαιτεί αυτός ο Οδηγός, για να συνεχίσουμε να προστατεύουμε τις προσωπικές σας πληροφορίες ή να απαιτήσουμε από νέο υπεύθυνο επεξεργασίας να συνεχίσει να προστατεύει τις προσωπικές σας πληροφορίες.

+

Επιπλέον, σύμφωνα με σχετικούς νόμους και κανονισμούς και εθνικά πρότυπα, ενδέχεται να μοιραστούμε, μεταφέρουμε και αποκαλύψουμε δημόσια προσωπικές πληροφορίες χωρίς προηγούμενη εξουσιοδότηση και συγκατάθεση του υποκειμένου των προσωπικών πληροφοριών στις ακόλουθες περιστάσεις:

+
    +
  • 1 Άμεσα συνδεδεμένες με την εθνική ασφάλεια και την εθνική άμυνα;
  • +
  • 2 Άμεσα συνδεδεμένες με τη δημόσια ασφάλεια, τη δημόσια υγεία ή σημαντικά δημόσια συμφέροντα;
  • +
  • 3 Άμεσα συνδεδεμένες με ποινική έρευνα, δίωξη, δίκη και εκτέλεση αποφάσεων;
  • +
  • 4 Για την προστασία της ζωής, της περιουσίας και άλλων σημαντικών νόμιμων δικαιωμάτων και συμφερόντων του υποκειμένου προσωπικών δεδομένων ή άλλων ατόμων, αλλά είναι δύσκολο να ληφθεί η συγκατάθεση του ατόμου;
  • +
  • 5 Προσωπικές πληροφορίες που αποκαλύφθηκαν στο κοινό από το υποκείμενο των προσωπικών πληροφοριών;
  • +
  • 6 Συλλογή προσωπικών πληροφοριών από νόμιμα δημόσια αποκαλυπτόμενες πληροφορίες, όπως νόμιμα δημοσιεύματα ειδήσεων, αποκάλυψη κυβερνητικών πληροφοριών και άλλα κανάλια.
  • +
+ +

6. Πώς διαχειρίζεστε τις προσωπικές σας πληροφορίες

+

Σύμφωνα με τους σχετικούς νόμους, κανονισμούς και πρότυπα της Κίνας, καθώς και τις κοινές πρακτικές άλλων χωρών και περιοχών, σας εγγυόμαστε ότι ασκείτε τα ακόλουθα δικαιώματα σχετικά με τις προσωπικές σας πληροφορίες:

+ +

1. Διόρθωση των προσωπικών σας πληροφοριών

+

Εάν ανακαλύψετε ότι υπάρχει σφάλμα στις προσωπικές σας πληροφορίες που επεξεργαζόμαστε, έχετε το δικαίωμα να διορθώσετε ή να ενημερώσετε τις λανθασμένες ή ελλιπείς πληροφορίες. Εάν δεν μπορείτε να ενεργήσετε ανεξάρτητα στο κέντρο λογαριασμού, μπορείτε να στείλετε email στο saitong.voitrans@gmail.com για να επικοινωνήσετε μαζί μας

+ +

2. Διαγραφή των προσωπικών σας πληροφοριών

+

Στις ακόλουθες περιπτώσεις, μπορείτε να υποβάλετε αίτημα σε εμάς για τη διαγραφή των προσωπικών σας πληροφοριών:

+
    +
  • Εάν επεξεργαζόμαστε προσωπικές πληροφορίες κατά παράβαση νόμων και κανονισμών;
  • +
  • Εάν συλλέγουμε και χρησιμοποιούμε τις προσωπικές σας πληροφορίες χωρίς τη συγκατάθεσή σας;
  • +
  • Εάν η επεξεργασία προσωπικών πληροφοριών από εμάς παραβιάζει τη συμφωνία μας μαζί σας;
  • +
  • Εάν δεν χρησιμοποιείτε πλέον τα προϊόντα ή τις υπηρεσίες μας;
  • +
  • Εάν δεν σας παρέχουμε πλέον προϊόντα ή υπηρεσίες.
  • +
+

Επικοινωνήστε μαζί μας. Θα επεξεργαστούμε το αίτημά σας στο saitong.voitrans@gmail.com Επικοινωνήστε μαζί μας. Θα σας απαντήσουμε εντός 30 εργάσιμων ημερών από τη λήψη

+ +

3. Αλλαγή του πεδίου εφαρμογής της συγκατάθεσής σας

+

Μπορείτε να επικοινωνήσετε μαζί μας μέσω email στο saitong.voitrans@gmail.com Επικοινωνήστε μαζί μας. Κατόπιν αιτήματός σας, δεν θα συλλέγουμε, χρησιμοποιούμε ή αποκαλύπτουμε πλέον τις προσωπικές σας πληροφορίες. Παρακαλούμε σημειώστε ότι η ανάκληση της συγκατάθεσής σας ή η διαγραφή των προσωπικών σας πληροφοριών μπορεί να επηρεάσει τη χρήση ορισμένων από τις υπηρεσίες μας.

+ +

4 Πρόσβαση και αντιγραφή προσωπικών πληροφοριών

+

Μπορείτε, σύμφωνα με τις διατάξεις των σχετικών νόμων, να παρέχετε το imei σας (σειριακός αριθμός τηλεφώνου) ή oaid ή Android ID μετά τις πληροφορίες λογαριασμού και άλλες πληροφορίες, μπορείτε να υποβάλετε αίτηση σε εμάς για πρόσβαση και αντιγραφή των προσωπικών σας πληροφοριών, μπορείτε να στείλετε email στο 3514406195@qq.com για να επικοινωνήσετε μαζί μας.

+ +

5. Σε απάντηση στο παραπάνω αίτημά σας

+

Για λόγους ασφαλείας, ενδέχεται να χρειαστεί να παρέχετε γραπτό αίτημα ή να αποδείξετε με άλλο τρόπο την ταυτότητά σας. Ενδέχεται να σας ζητήσουμε να επαληθεύσετε την ταυτότητά σας πριν επεξεργαστούμε το αίτημά σας. Για το εύλογο αίτημά σας, θα απαντήσουμε και θα το αντιμετωπίσουμε έγκαιρα. Ενδέχεται να απορρίψουμε αιτήματα που είναι αδικαιολόγητα επαναλαμβανόμενα, απαιτούν υπερβολική τεχνολογία (για παράδειγμα, ανάπτυξη νέων συστημάτων ή θεμελιώδεις αλλαγές υφιστάμενων πρακτικών), θέτουν σε κίνδυνο τα νόμιμα συμφέροντα τρίτων ή είναι εξαιρετικά μη πρακτικά.

+

Στις ακόλουθες περιπτώσεις, σύμφωνα με τις απαιτήσεις νόμων και κανονισμών, δεν θα μπορέσουμε να ανταποκριθούμε στο αίτημά σας:

+
    +
  • Σχετίζεται με την εθνική ασφάλεια και εθνική άμυνα;
  • +
  • Σε σχέση με ποινική έρευνα, δίωξη και δίκη;
  • +
  • Υπάρχουν επαρκή στοιχεία ότι έχετε υποκειμενική κακοβουλία ή κατάχρηση δικαιωμάτων;
  • +
  • Η ανταπόκριση στο αίτημά σας θα προκαλέσει σοβαρή ζημία στα νόμιμα δικαιώματα και συμφέροντα δικά σας ή άλλων ατόμων και οργανισμών.
  • +
+ +

6. Ακύρωση λογαριασμού

+

Ο χρήστης μπορεί να εκτελέσει τη λειτουργία [ακύρωσης λογαριασμού] στην Εφαρμογή. Βήματα λειτουργίας:

+
    +
  1. Μεταβείτε στη σελίδα [Το προφίλ μου]
  2. +
  3. Κάντε κλικ στο κουμπί [Ρυθμίσεις] πάνω δεξιά
  4. +
  5. Κάντε κλικ στο [Ακύρωση λογαριασμού] για επιβεβαίωση
  6. +
+

Μετά την αποσύνδεση, οι πληροφορίες του λογαριασμού χρήστη διαγράφονται

+ +

7. Περιγραφή αδειών εφαρμογής

+

Για να παρέχουμε καλύτερα προϊόντα και υπηρεσίες, όταν χρησιμοποιείτε το λογισμικό, θα υποβάλουμε αίτηση για τα ακόλουθα δικαιώματα· όταν εισέρχεστε στην αρχική σελίδα ή χρησιμοποιείτε τη λειτουργία, θα ζητηθεί εξουσιοδότηση· εάν αρνηθείτε, ορισμένες από τις αντίστοιχες λειτουργίες δεν θα μπορούν να χρησιμοποιηθούν κανονικά. Οι συγκεκριμένοι σκοποί και υπενθυμίσεις αδειών περιγράφονται λεπτομερώς ως εξής:

+ +

1 Δικαιώματα τοποθεσίας:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

μέσω WiFi ή κινητού σταθμού βάσης για τη λήψη πληροφοριών γεωγραφικού πλάτους και μήκους τοποθεσίας χρήστη

+

Όταν χρησιμοποιείτε το Voitrans, θα αναζητούμε τη συνδεδεμένη συσκευή Bluetooth σας βάσει της γεωγραφικής σας τοποθεσίας. Ταυτόχρονα, για να παρέχουμε πιο σταθερές υπηρεσίες, να βελτιστοποιήσουμε τα προϊόντα και να βελτιώσουμε την εμπειρία, θα μοιραστούμε τις παραπάνω πληροφορίες με τρία SDK, όπως Youmon και Autonavi, για να αποκτήσουμε λειτουργικά δεδομένα Voitrans και λειτουργικές υπηρεσίες.

+

Τρόπος υπενθύμισης: Κατά την πρώτη εκκίνηση της εφαρμογής εμφανίζεται ειδοποίηση που υποδεικνύει την άδεια, ζητώντας από τον χρήστη να επιβεβαιώσει την αποδοχή. Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Αυτή η άδεια απαιτείται όταν αποκτάτε πρόσβαση σε μια εφαρμογή για εκτέλεση λειτουργιών διαχείρισης εφαρμογής.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

3 Δικαιώματα δικτύου:

+

android.permission.INTERNET

+

Όταν χρησιμοποιείτε τις υπηρεσίες πληροφόρησης και αναβάθμισης έκδοσης του Voitrans, αυτά τα δικαιώματα είναι απαραίτητα, και για τη βελτίωση της εμπειρίας χρήστη και τη βελτιστοποίηση των δυνατοτήτων υπηρεσίας, τα SDK τρίτων όπως το Friends θα χρησιμοποιήσουν επίσης αυτά τα δικαιώματα.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

4 Λήψη αδειών κατάστασης δικτύου:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Χρησιμοποιείται για τη λήψη εάν η τρέχουσα σύνδεση δικτύου είναι έγκυρη, τον προσδιορισμό εάν το τρέχον περιβάλλον 4G είναι ενεργό και εάν πρέπει να γίνει υπενθύμιση για αλλαγές περιβάλλοντος δικτύου, επηρεάζοντας έτσι τη φόρτωση πληροφοριακού περιεχομένου. Αυτή η άδεια ζητείται όταν χρησιμοποιείτε το Voitrans.

+

Οι αλλαγές στην κατάσταση δικτύου επηρεάζουν τη μεταφόρτωση και φόρτωση δεδομένων. Επομένως, η πρόσβαση στην άδεια κατάστασης δικτύου θα κοινοποιηθεί σε friends + και άλλες πλατφόρμες.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

5 Λήψη αδειών λίστας εργασιών:

+

android.permission.GET_TASKS

+

Αυτή η άδεια χρησιμοποιείται για τη λήψη της λίστας εφαρμογών για τη λειτουργία διαχείρισης λογισμικού. Όταν χρησιμοποιείτε τη λειτουργία διαχείρισης λογισμικού, πρέπει να διαβαστούν οι εφαρμογές που είναι εγκατεστημένες στο κινητό τηλέφωνο.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

6 Λήψη άδειας διεύθυνσης MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Όταν χρησιμοποιείτε το Voitrans, η εφαρμογή θα χρειαστεί άδειες διεύθυνσης MAC:

+

Όταν μια εφαρμογή χρειάζεται να αναφέρει δεδομένα μετατροπής στόχου, πλατφόρμες τρίτων όπως το Youmon +SDK πρέπει να χρησιμοποιήσουν MAC.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

7 Λήψη άδειας εγγραφής ήχου

+

android.permission.RECORD_AUDIO

+

Όταν χρησιμοποιείτε τη λειτουργία φωνητικής εισόδου του Voitrans, πρέπει να χρησιμοποιήσετε την άδεια εγγραφής ήχου και κυρίως χρησιμοποιείτε τη φωνητική εισόδο για μετάφραση και άλλες σχετικές λειτουργίες.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου, ο χρήστης λαμβάνει δυναμικά αναδυόμενο πλαίσιο όταν απαιτείται.

+ +

8 Λήψη άδειας SSID για WIFI

+

Όταν χρησιμοποιείται αυτή η άδεια, η εφαρμογή διαβάζει την άδεια SSID για WIFI:

+

Πεδίο χρήσης και σκοπός: Όταν η εφαρμογή χρειάζεται να χρησιμοποιήσει υπηρεσίες ανάλυσης δεδομένων, πλατφόρμες τρίτων όπως +SDK πρέπει να διαβάσουν την «άδεια WIFI SSID» της συσκευής για να παρέχουν στους χρήστες ακριβέστερες και αποτελεσματικότερες λειτουργικές υπηρεσίες.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

9 Λήψη πρόσβασης Bluetooth

+

Όταν χρησιμοποιείται αυτή η άδεια, η εφαρμογή διαβάζει την άδεια Bluetooth:

+

Πεδίο χρήσης και σκοπός: Συσκευές Bluetooth για αναζήτηση και διαμόρφωση αξεσουάρ, όπως ακουστικά Bluetooth, ρολόγια Bluetooth κ.λπ. Εύκολο για τους χρήστες να διαχειριστούν

+

Τρόπος υπενθύμισης: Κατά την πρώτη εκκίνηση της εφαρμογής εμφανίζεται ειδοποίηση που υποδεικνύει την άδεια, ζητώντας από τον χρήστη να επιβεβαιώσει την αποδοχή. Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

10 Λήψη άδειας BSSID για WiFi

+

Όταν η εφαρμογή χρειάζεται να διακρίνει και να ταυτοποιήσει τον χρήστη για να παρέχει λειτουργικές υπηρεσίες και στατιστικά δεδομένα, θα διαβάσει την άδεια «WiFi BSSID» της συσκευής για:

+

Πεδίο χρήσης και σκοπός: 1 Πλατφόρμες τρίτων: όπως Youmeng SDK, Bugly SDK, Autonavi SDK

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

11 Λήψη άδειας εγκατάστασης εφαρμογής

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Το λογισμικό θα χρησιμοποιήσει την άδεια εγκατάστασης εφαρμογής, η οποία χρησιμοποιείται κυρίως για να επιτρέψει στους χρήστες να εγκαταστήσουν μια νέα έκδοση και να δοκιμάσουν νέες λειτουργίες όταν υπάρχει νέα έκδοση.

+

Τρόπος υπενθύμισης: Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

12 Λήψη αδειών κάμερας

+

android.permission.CAMERA

+

Το Voitrans χρησιμοποιεί άδειες κάμερας για σάρωση κωδικών QR και σύζευξη συσκευών Bluetooth όπως ακουστικά Bluetooth και ρολόγια.

+

Τρόπος υπενθύμισης: Κατά την πρώτη εκκίνηση της εφαρμογής εμφανίζεται ειδοποίηση που υποδεικνύει την άδεια, ζητώντας από τον χρήστη να επιβεβαιώσει την αποδοχή. Περιγραφή Συμφωνίας Χρήστη και Πολιτικής Απορρήτου.

+ +

Ειδική σημείωση:

+

1 Ενσωμάτωση εφαρμογής εντός του Allies SDK, Scott map SDK, αφού ο χρήστης συμφωνήσει να επιτρέψει τη χρήση, η εφαρμογή στο παρασκήνιο/πρώτο πλάνο συλλέγει ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI και άλλες προσωπικές πληροφορίες;

+

Παρατηρήσεις: Περισσότερα παρακαλούμε δείτε το ακόλουθο περιεχόμενο και τις άδειες SDK [VIII. Λίστα πρόσβασης σε SDK τρίτων]

+ +

8. Πρόσβαση σε SDK τρίτων

+

1 Για τη διασφάλιση της σταθερής λειτουργίας και λειτουργικής υλοποίησης του πελάτη μας, ώστε να μπορείτε να χρησιμοποιείτε και να απολαμβάνετε περισσότερες υπηρεσίες και λειτουργίες, η εφαρμογή μας θα ενσωματώσει το κιτ ανάπτυξης εργαλείων λογισμικού (SDK) ή άλλες παρόμοιες εφαρμογές τρίτων, αυτοί οι τρίτοι θα συλλέγουν και θα επεξεργάζονται σχετικές πληροφορίες σύμφωνα με τις δικές τους πολιτικές απορρήτου, προκειμένου να παρέχουν κανονικά λειτουργίες και διαφημιστικές υπηρεσίες. Μπορείτε να μάθετε για τους κανόνες συλλογής και επεξεργασίας πληροφοριών του τρίτου στην επόμενη ενότητα. Θα πραγματοποιήσουμε αυστηρές δοκιμές ασφαλείας στα κιτ ανάπτυξης (SDK) για τους συνεργάτες που λαμβάνουν πληροφορίες, προκειμένου να προστατεύσουμε τη λογική χρήση και ασφάλεια των προσωπικών σας πληροφοριών. Παρακαλούμε σημειώστε ότι τα SDK τρίτων ενδέχεται να αλλάξουν τους τύπους επεξεργασίας δεδομένων λόγω αναβαθμίσεων εκδόσεών τους. Παρακαλούμε ανατρέξτε στις πολιτικές απορρήτου που δημοσιεύονται από τα SDK τρίτων. Δείτε τις λεπτομέρειες παρακάτω ή κάντε κλικ για να δείτε τη Λίστα SDK τρίτων.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Πληροφορίες που λαμβάνονται: Αριθμός συσκευής, διεύθυνση IP, πληροφορίες λογισμικού συσκευής, κωδικός αναγνώρισης συσκευής (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, πληροφορίες IMSI κάρτας SIM, IP, διεύθυνση MAC), αναγνωριστικό συσκευής, περιοχή, πληροφορίες εφαρμογών σχετικών με τη συσκευή και άλλες πληροφορίες αρχείου καταγραφής υπηρεσίας

+

Σκοπός χρήσης: Σύνδεση και κοινοποίηση WeChat

+

Προγραμματιστής: Shenzhen Tencent Computer Systems Company Limited

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Πληροφορίες που λαμβάνονται: Όνομα εφαρμογής, έκδοση εφαρμογής, μάρκα και μοντέλο συσκευής, λειτουργικό σύστημα, πληροφορίες παρόχου, ανάλυση οθόνης, πληροφορίες αισθητήρων (διάνυσμα, επιτάχυνση, πίεση, κατεύθυνση, γεωμαγνητισμός, γυροσκόπιο, θερμοκρασία, αισθητήρας φωτός, σήμα NMEA), πληροφορίες ισχύος σήματος συσκευής

+

Σκοπός χρήσης: Πλοήγηση χρησιμοποιώντας Amap

+

Προγραμματιστής: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Πληροφορίες που λαμβάνονται: Όνομα εφαρμογής, έκδοση εφαρμογής, μάρκα και μοντέλο συσκευής, λειτουργικό σύστημα, πληροφορίες δικτύου, ισχύς σήματος συσκευής κ.λπ.

+

Σκοπός χρήσης: Εμφάνιση χάρτη και αλληλεπίδραση

+

Προγραμματιστής: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Πληροφορίες που λαμβάνονται: Πληροφορίες τοποθεσίας (GPS, Wi-Fi, σταθμός βάσης), πληροφορίες συσκευής, πληροφορίες δικτύου κ.λπ.

+

Σκοπός χρήσης: Παροχή υπηρεσιών τοποθεσίας

+

Προγραμματιστής: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Πληροφορίες που λαμβάνονται: Όνομα εφαρμογής, έκδοση εφαρμογής, πληροφορίες συσκευής, πληροφορίες δικτύου κ.λπ.

+

Σκοπός χρήσης: Εργαλεία χάρτη και βελτιστοποίηση απόδοσης

+

Προγραμματιστής: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Πληροφορίες που λαμβάνονται: Αναγνωριστικά συσκευής, βασικές πληροφορίες συσκευής, λίστα εγκατεστημένου λογισμικού και πληροφορίες δικτύου (δείτε την επίσημη πολιτική απορρήτου για λεπτομέρειες)

+

Σκοπός χρήσης: Σύνδεση λογαριασμού Alipay και κλήση πληρωμής

+

Προγραμματιστής: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Πληροφορίες που λαμβάνονται: Έκδοση SDK/API, πλατφόρμα, χρονοσφραγίδα, αναγνωριστικό εφαρμογής, έκδοση εφαρμογής, κατασκευαστής συσκευής, έκδοση OS, τοπικές ρυθμίσεις, ζώνη ώρας, κατάσταση δικτύου (Wi-Fi κ.λπ.), αρχεία καταγραφής δικτύου, δεδομένα σφαλμάτων και χρήσης, διεύθυνση IP κ.λπ. (δείτε την επίσημη πολιτική απορρήτου για λεπτομέρειες)

+

Σκοπός χρήσης: Παρακολούθηση ποιότητας εφαρμογής και υπηρεσία αναφοράς δεδομένων

+

Προγραμματιστής: Shenzhen Tencent Computer Systems Company Limited

+

Μέθοδος συλλογής: Αυτοσυλλογή SDK

+

Σύνδεσμος πολιτικής απορρήτου: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Προστασία ανηλίκων

+

Οι χρήστες των προϊόντων και υπηρεσιών μας μπορεί να περιλαμβάνουν ανήλικους κάτω των 18 ετών, οι ανήλικοι χρήστες πρέπει να ζητήσουν τη συμβουλή των γονέων ή κηδεμόνων τους σχετικά με αυτή την Πολιτική Απορρήτου πριν χρησιμοποιήσουν τα προϊόντα μας και να χρησιμοποιούν τις υπηρεσίες μας ή να μας παρέχουν τις πληροφορίες τους αφού λάβουν τη συγκατάθεση και υπό την καθοδήγηση των γονέων ή κηδεμόνων τους. Οι κηδεμόνες ανηλίκων που έχουν ερωτήσεις μπορούν να επικοινωνήσουν μαζί μας μέσω των στοιχείων επικοινωνίας σε αυτή την Πολιτική Απορρήτου.

+

Εάν δεν συμφωνείτε με τη συλλογή των προαναφερθέντων πληροφοριών από τους παραπάνω παρόχους υπηρεσιών τρίτων, παρακαλούμε σταματήστε αμέσως τη χρήση του Λογισμικού. Κατά τη χρήση του Λογισμικού, αυτοί οι τρίτοι θα συλλέγουν και θα επεξεργάζονται σχετικές πληροφορίες σύμφωνα με τις δικές τους πολιτικές απορρήτου για να παρέχουν ορισμένες λειτουργίες, διαφήμιση και άλλες υπηρεσίες. Εάν οι πληροφορίες διαρρεύσουν λόγω της συλλογής των προαναφερθέντων πληροφοριών από τον σχετικό πάροχο υπηρεσιών τρίτου, ο σχετικός πάροχος υπηρεσιών τρίτου θα φέρει την αντίστοιχη νομική ευθύνη.

+ +

10. Ισχύουσα και ενημερωμένη Πολιτική Απορρήτου

+

1. Αυτή η Πολιτική Απορρήτου τίθεται σε ισχύ από την ημερομηνία δημοσίευσης.

+

2. Καθώς η επιχείρησή μας εξελίσσεται και αλλάζει, η Πολιτική Απορρήτου μας μπορεί να αλλάξει. Διατηρούμε το δικαίωμα να αλλάξουμε την πολιτική απορρήτου μας ανά πάσα στιγμή, οπότε παρακαλούμε ελέγχετε συχνά. Εάν κάνουμε αλλαγές στην Πολιτική Απορρήτου μας, θα δημοσιεύσουμε αυτές τις ενημερώσεις στον ιστότοπό μας, στις εφαρμογές και όπου θεωρούμε κατάλληλο για να σας κρατήσουμε ενημερωμένους. Εάν η πολιτική απορρήτου ενημερωθεί, θα τεθεί σε ισχύ από την ημερομηνία ενημέρωσης. Η συνεχής χρήση των προϊόντων ή υπηρεσιών μας σημαίνει ότι συμφωνείτε με την αλλαγμένη Πολιτική Απορρήτου μας.

+ +

11. Πώς να επικοινωνήσετε μαζί μας

+

Saitong Industries Inc ιδρύθηκε στις 22 Νοεμβρίου 2024, εγγεγραμμένη διεύθυνση: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Εάν θέλετε να μάθετε περισσότερα για την εταιρεία και την πλατφόρμα μας, μπορείτε να επικοινωνήσετε μαζί μας μέσω των στοιχείων επικοινωνίας που παρέχονται σε αυτή την πολιτική (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/el/user_agreement.html b/doc/el/user_agreement.html new file mode 100644 index 000000000..b7145ddd2 --- /dev/null +++ b/doc/el/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Πρωτόκολλο χρήστη εφαρμογής Voitrans + + + +
+
Ελληνικά
+ +

Πρωτόκολλο χρήστη εφαρμογής Voitrans

+ +

Αυτοί οι Όροι και Προϋποθέσεις Χρήσης σας ενημερώνουν πώς να αποκτήσετε πρόσβαση στη χρήση της εφαρμογής Voitrans και των διαδικτυακών υπηρεσιών (οι «Υπηρεσίες»). Η Saitong Industries Inc. (εφεξής «Saitong») υπενθυμίζει στους χρήστες να διαβάσουν προσεκτικά και να κατανοήσουν πλήρως αυτή τη Συμφωνία Χρήστη (εφεξής «Συμφωνία»). Οι χρήστες πρέπει να διαβάσουν προσεκτικά και να κατανοήσουν πλήρως τους όρους αυτής της Συμφωνίας. Παρακαλούμε διαβάστε προσεκτικά και επιλέξτε αν αποδέχεστε ή δεν αποδέχεστε αυτή τη Συμφωνία. Η χρήση της εφαρμογής Voitrans (εφεξής «η Εφαρμογή» ή «το Λογισμικό») από εσάς θα θεωρηθεί ως αποδοχή αυτής της Συμφωνίας και συμφωνείτε να δεσμεύεστε από τους όρους αυτής της Συμφωνίας. Εάν δεν συμφωνείτε με αυτή τη Συμφωνία, μην χρησιμοποιείτε την Εφαρμογή.

+

Η Saitong διατηρεί το δικαίωμα να τροποποιήσει αυτή τη Συμφωνία και οι ενημερωμένοι όροι της Συμφωνίας θα δημοσιευτούν σε αυτή την Εφαρμογή, με ισχύ από την ημερομηνία δημοσίευσης.

+ +

1. Γενικοί κανόνες

+

1.1 Αυτή η Εφαρμογή είναι το λογισμικό που παρέχεται από τη Saitong για τη σύνδεση των προϊόντων ακουστικών που κυκλοφορούν από τη Saitong και τις εταιρείες-εταίρους της. Τα δικαιώματα ιδιοκτησίας και λειτουργίας του λογισμικού και των σχετικών υπηρεσιών ανήκουν εξ ολοκλήρου στη Saitong.

+

1.2 Αυτή η Συμφωνία αποτελεί συμφωνία μεταξύ εσάς (εφεξής «ο Χρήστης») και της εταιρείας και των εταίρων και λειτουργικών εταίρων της (εφεξής «οι Εταίροι») σχετικά με τη χρήση της Εφαρμογής και των σχετικών υπηρεσιών από τον χρήστη.

+

1.3 Το Λογισμικό και οι υπηρεσίες περιλαμβάνουν:

+

1.3.1 Το παρεχόμενο λογισμικό παρέχει στους χρήστες Voitrans σύνδεση και σύζευξη Voitrans, διαχείριση ρυθμίσεων λειτουργιών και άλλες υπηρεσίες λογισμικού, σύμφωνα με τις πραγματικές υπηρεσίες λογισμικού που παρέχονται από την Εφαρμογή.

+

1.3.2 Ενημερώσεις, αναβαθμίσεις και άλλες υπηρεσίες του λογισμικού.

+ +

2. Πεδίο εφαρμογής της άδειας χρήσης λογισμικού

+

2.1 Παραχωρούμε στον χρήστη μια προσωπική, μη μεταβιβάσιμη, μη υπο-αδειοδοτούμενη και μη αποκλειστική άδεια χρήσης για το Λογισμικό.

+

2.2 Οι χρήστες μπορούν να εγκαταστήσουν, να χρησιμοποιήσουν, να εμφανίσουν και να εκτελέσουν το λογισμικό σε μία μόνο κινητή τερματική συσκευή για μη εμπορικούς σκοπούς. Ωστόσο, ο χρήστης δεν επιτρέπεται να εγκαταστήσει, να χρησιμοποιήσει ή να εκτελέσει το λογισμικό για σκοπούς εμπορικής λειτουργίας, να αντιγράψει, να αλλάξει, να τροποποιήσει, να συνδέσει ή να εκτελέσει το λογισμικό ή τα δεδομένα που αποθηκεύονται στη μνήμη οποιασδήποτε τερματικής συσκευής κατά τη λειτουργία του λογισμικού ή τα δεδομένα αλληλεπίδρασης μεταξύ πελάτη και διακομιστή κατά τη λειτουργία του λογισμικού, ή να δημιουργήσει παράγωγα έργα. Αυτό περιλαμβάνει, χωρίς περιορισμό, τη χρήση πρόσθετων ή μη εξουσιοδοτημένων εργαλείων/υπηρεσιών τρίτων για πρόσβαση στο Λογισμικό και τα σχετικά συστήματα. Για εμπορική πώληση, αναπαραγωγή και διανομή, όπως η προεγκατάσταση και η δέσμευση λογισμικού, πρέπει να ληφθεί γραπτή εξουσιοδότηση και άδεια.

+

2.3 Ο Χρήστης δεν επιτρέπεται να εγκαταστήσει το Λογισμικό σε άλλες τερματικές συσκευές χωρίς ρητή άδεια, συμπεριλαμβανομένων αλλά χωρίς περιορισμό τηλεοράσεων, ψηφιακών αποκωδικοποιητών, κονσολών παιχνιδιών και άλλων συσκευών.

+

2.4 Εκτός εάν ρητά εξουσιοδοτείται από αυτή τη Συμφωνία, δεν παραχωρούνται άλλα δικαιώματα στον Χρήστη και ο Χρήστης πρέπει να λάβει γραπτή συγκατάθεση για τη χρήση άλλων δικαιωμάτων.

+ +

3. Αναβάθμιση λογισμικού

+

3.1 Ο χρήστης πρέπει να επιλέξει την έκδοση λογισμικού που είναι κατάλληλη για τη ρύθμιση του εγκατεστημένου τερματικού. Διαφορετικά, τα προβλήματα λογισμικού, τα προβλήματα συσκευής ή η ζημιά που προκαλείται από οποιαδήποτε έκδοση λογισμικού που δεν είναι κατάλληλη για τον τύπο συσκευής θα αποτελεί αποκλειστική ευθύνη του χρήστη.

+

3.2 Προκειμένου να βελτιωθεί η εμπειρία χρήστη και να βελτιωθεί το περιεχόμενο των υπηρεσιών, η Saitong έχει το δικαίωμα να σας παρέχει κατά καιρούς εκδόσεις αντικατάστασης, τροποποίησης και αναβάθμισης του λογισμικού. Η λειτουργία «Ειδοποίηση αναβάθμισης» είναι ενεργοποιημένη από προεπιλογή για τους χρήστες. Ανάλογα με τις διαφορετικές εκδόσεις λογισμικού που χρησιμοποιούν οι χρήστες, η Saitong παρέχει στους χρήστες τη δυνατότητα ενεργοποίησης αυτής της λειτουργίας. Μετά την κυκλοφορία μιας νέας έκδοσης του λογισμικού, η Saitong δεν εγγυάται τη συνεχή διαθεσιμότητα της παλαιάς έκδοσης του λογισμικού.

+ +

4. Προδιαγραφές χρήσης

+

4.1 Οι χρήστες μπορούν να χρησιμοποιούν το Λογισμικό και τις Υπηρεσίες σύμφωνα με αυτή τη Συμφωνία υπό την προϋπόθεση τήρησης του νόμου και αυτής της Συμφωνίας, και οι χρήστες δεν πρέπει να εκτελούν τις ακόλουθες πράξεις:

+

4.1.1 Διαγραφή όλων των πληροφοριών πνευματικών δικαιωμάτων στο Λογισμικό και σε άλλα αντίγραφα, και τροποποίηση, διαγραφή ή παράκαμψη των τεχνικών μέτρων που έχει θεσπίσει το Λογισμικό για την προστασία δικαιωμάτων πνευματικής ιδιοκτησίας.

+

4.1.2 Αντίστροφη μηχανική του Λογισμικού, όπως αποσυναρμολόγηση, αποσυμπίληση ή άλλες προσπάθειες απόκτησης του πηγαίου κώδικα του Λογισμικού.

+

4.1.3 Μέσω τροποποίησης ή πλαστογράφησης οδηγιών και δεδομένων κατά τη λειτουργία του λογισμικού, προσθήκη, διαγραφή ή αλλαγή της λειτουργίας ή του αποτελέσματος λειτουργίας του λογισμικού, ή χρήση λογισμικού ή μεθόδων για τους παραπάνω σκοπούς για λειτουργία ή διάδοση στο κοινό, ανεξάρτητα αν αυτές οι πράξεις γίνονται για εμπορικούς σκοπούς.

+

4.1.4 Χρήση του λογισμικού για οποιαδήποτε συμπεριφορά που θέτει σε κίνδυνο την ασφάλεια δικτύου, συμπεριλαμβανομένων αλλά χωρίς περιορισμό: χρήση μη εξουσιοδοτημένων δεδομένων ή πρόσβαση σε μη εξουσιοδοτημένους διακομιστές/λογαριασμούς· Πρόσβαση σε δημόσια δίκτυα ή άλλα λειτουργικά συστήματα χωρίς άδεια και διαγραφή, τροποποίηση ή προσθήκη αποθηκευμένων πληροφοριών· Μη εξουσιοδοτημένες προσπάθειες διερεύνησης, σάρωσης ή δοκιμής των αδυναμιών του συστήματος ή του δικτύου του λογισμικού ή άλλες πράξεις που υπονομεύουν την ασφάλεια δικτύου· Προσπάθειες παρεμβολής ή καταστροφής της κανονικής λειτουργίας του συστήματος λογισμικού ή του ιστότοπου, σκόπιμη διάδοση κακόβουλων προγραμμάτων ή ιών και άλλες πράξεις που διαταράσσουν τις κανονικές υπηρεσίες πληροφοριών δικτύου· Πλαστογράφηση ονομάτων ή μερικών ονομάτων πακέτων TCP/IP.

+

4.1.6 Χωρίς τη γραπτή συγκατάθεση της Εταιρείας, ο χρήστης εκτελεί αυθαίρετα τις ακόλουθες πράξεις στο λογισμικό και τις πληροφορίες σε αυτό, συμπεριλαμβανομένων αλλά χωρίς περιορισμό: χρήση, ενοικίαση, δανεισμός, αντιγραφή, τροποποίηση, σύνδεση, αναδημοσίευση, μεταγλώττιση, δημοσίευση, δημιουργία καθρεπτικών ιστότοπων, ανάπτυξη παράγωγων προϊόντων, έργων, υπηρεσιών, πρόσθετων, συμβατότητα, διασύνδεση κ.λπ., με τη βοήθεια του Λογισμικού.

+

4.1.7 Χρήση του Λογισμικού για δημοσίευση, μετάδοση, διανομή και αποθήκευση περιεχομένου που παραβιάζει τους τοπικούς νόμους.

+

4.1.8 Χρήση του λογισμικού για δημοσίευση, μετάδοση, διάδοση και αποθήκευση περιεχομένου που παραβιάζει τα δικαιώματα πνευματικής ιδιοκτησίας, τα εμπορικά μυστικά και άλλα νόμιμα δικαιώματα τρίτων.

+

4.1.9 Χρήση αυτού του λογισμικού για μαζική δημοσίευση, μετάδοση και διάδοση διαφημιστικών πληροφοριών και ανεπιθύμητων πληροφοριών.

+

4.1.10 Χρήση του Λογισμικού και άλλων Υπηρεσιών με οποιονδήποτε παράνομο τρόπο, για οποιονδήποτε παράνομο σκοπό ή με οποιονδήποτε τρόπο ασυμβίβαστο με την αδειοδοτημένη χρήση αυτής της Συμφωνίας.

+

4.2 Προδιαγραφές δημοσίευσης πληροφοριών

+

4.2.1 Εάν χρησιμοποιείτε το λογισμικό για δημοσίευση πληροφοριακού περιεχομένου (εάν υπάρχει), πρέπει να εγγυηθείτε ότι κατέχετε τα δικαιώματα πνευματικής ιδιοκτησίας του πληροφοριακού περιεχομένου που ανεβάζετε ή ότι έχετε λάβει νόμιμη εξουσιοδότηση, και οποιαδήποτε συμπεριφορά σας κατά τη χρήση του λογισμικού και των υπηρεσιών δεν παραβιάζει τα νόμιμα δικαιώματα και συμφέροντα οποιουδήποτε τρίτου.

+

4.2.2 Κατά τη χρήση του Λογισμικού, ο χρήστης δεν πρέπει να χρησιμοποιεί το Λογισμικό για τις ακόλουθες δραστηριότητες, συμπεριλαμβανομένων αλλά χωρίς περιορισμό:

+

4.2.2.1 Δημιουργία, αντιγραφή, δημοσίευση, διάδοση και αποθήκευση περιεχομένου που παραβιάζει τους τοπικούς εθνικούς νόμους και κανονισμούς.

+

4.2.2.2 Δημοσίευση, μετάδοση, διάδοση και αποθήκευση περιεχομένου που παραβιάζει νόμιμα δικαιώματα τρίτων, όπως φήμη, εικόνα, πνευματική ιδιοκτησία και εμπορικά μυστικά.

+

4.2.2.3 Κατασκευή γεγονότων, απόκρυψη της αλήθειας με σκοπό την παραπλάνηση ή εξαπάτηση τρίτων.

+

4.2.2.4 Δημοσίευση, μετάδοση και διάδοση διαφημιστικών πληροφοριών και ανεπιθύμητων πληροφοριών.

+

4.2.2.5 Εμπλοκή σε άλλες πράξεις κατά παράβαση τοπικών νόμων και κανονισμών.

+

4.2.3 Δεν επιτρέπεται να πραγματοποιείτε εμπορικές δραστηριότητες, όπως διαφήμιση και πώληση αγαθών στο Λογισμικό, χωρίς την άδεια της Εταιρείας.

+

4.3 Ο Χρήστης κατανοεί και συμφωνεί ότι:

+

4.3.1 Η Saitong θα καθορίσει αν ο χρήστης υποψιάζεται για παραβίαση των παραπάνω προδιαγραφών χρήσης και, σύμφωνα με τα αποτελέσματα, θα αναστείλει ή θα τερματίσει την άδεια χρήσης σας ή θα λάβει άλλα περιοριστικά μέτρα σύμφωνα με αυτή τη Συμφωνία.

+

4.3.2 Για πληροφορίες που δημοσιεύτηκαν από τον χρήστη μέσω του αδειοδοτημένου λογισμικού και υποψιάζονται για παρανομία ή παραβίαση νόμιμων δικαιωμάτων τρίτων ή παραβίαση αυτής της Συμφωνίας, οι πληροφορίες θα διαγραφούν απευθείας.

+

4.3.3 Εάν η παραβίαση των παραπάνω κανόνων χρήσης από τον χρήστη προκαλέσει ζημία σε τρίτους, πρέπει να αναλάβετε νομική ευθύνη ανεξάρτητα στο δικό σας όνομα και πρέπει να διασφαλίσετε ότι η εταιρεία δεν υφίσταται απώλειες ή αυξημένα κόστη.

+

4.3.4 Εάν ο χρήστης παραβιάσει τις σχετικές νομικές διατάξεις ή συμφωνίες, προκαλώντας απώλειες στη Saitong ή υποβαλλόμενος σε αξιώσεις τρίτων ή κυρώσεις από τη διοικητική αρχή, ο χρήστης θα αποζημιώσει τις απώλειες και/ή τα έξοδα που προκλήθηκαν στη Saitong, συμπεριλαμβανομένων εύλογων δικηγορικών αμοιβών, εξόδων έρευνας και συλλογής αποδεικτικών στοιχείων.

+ +

5. Περιγραφή υπηρεσιών τρίτων

+

5.1 Ο χρήστης κατανοεί και συμφωνεί ότι το σύστημα λογισμικού μπορεί να περιέχει υπηρεσίες που παρέχονται από συνδεδεμένες εταιρείες ή τρίτους και ότι η Εταιρεία παρέχει μόνο τις σχετικές λειτουργικές ενότητες στο σύστημα για τη διευκόλυνση των χρηστών και παρέχει πρόσβαση σε υπηρεσίες τρίτων.

+

5.2 Είτε οι υπηρεσίες τρίτων είναι προεγκατεστημένες στις υπηρεσίες του συστήματος λογισμικού, είτε ανοίγονται ή παραγγέλλονται από τους ίδιους τους χρήστες, οι χρήστες κατανοούν και συμφωνούν ότι η Saitong δεν παρέχει καμία ρητή ή σιωπηρή εγγύηση σχετικά με τη νομιμότητα και αποτελεσματικότητα των παρόχων υπηρεσιών τρίτων ή των χρηστών, καθώς και τη νομιμότητα, ακρίβεια, αποτελεσματικότητα και ασφάλεια των υπηρεσιών τρίτων.

+

5.3 Η Εταιρεία δεν εποπτεύει, δεν ελέγχει και δεν παρέχει καμία εγγύηση ή διαβεβαίωση οποιουδήποτε είδους για τις υπηρεσίες τρίτων και δεν αναλαμβάνει καμία ευθύνη.

+

5.4 Οποιαδήποτε διαφορά ή αμφισβήτηση μεταξύ του χρήστη και του παρόχου υπηρεσιών τρίτου θα επιλύεται από τον Χρήστη και τον τρίτο σύμφωνα με τη διαδικασία εργασίας και τα εμπορικά πρότυπα του παρόχου υπηρεσιών τρίτου, και η εταιρεία δεν αναλαμβάνει καμία ευθύνη.

+ +

6. Πολιτική απορρήτου και προστασία προσωπικών πληροφοριών

+

6.1 Η Saitong δεσμεύεται να προστατεύει το απόρρητο των χρηστών σύμφωνα με την πολιτική απορρήτου, παρακαλούμε δείτε: Πολιτική Απορρήτου Voitrans.

+ +

7. Ευθύνη για παραβίαση συμβολαίου

+

7.1 Η Saitong έχει το δικαίωμα να κρίνει εάν η συμπεριφορά του χρήστη συμμορφώνεται με τις διατάξεις αυτής της Συμφωνίας. Εάν πιστεύεται ότι ο Χρήστης έχει παραβιάσει σχετικούς νόμους και κανονισμούς ή τις διατάξεις αυτής της Συμφωνίας και τους σχετικούς κανόνες, ανάλογα με τη σοβαρότητα της παραβίασης του χρήστη, η Saitong έχει το δικαίωμα να διαγράψει τις παράνομες πληροφορίες, να περιορίσει, να αναστείλει, να τερματίσει τη χρήση της υπηρεσίας Λογισμικού από τον χρήστη, να ασκήσει τη νομική ευθύνη του χρήστη και να λάβει άλλα μέτρα που η Saitong κρίνει κατάλληλα. Εάν υποστούμε οποιαδήποτε απώλεια (συμπεριλαμβανομένων αλλά χωρίς περιορισμό αξιώσεων τρίτων ή κυρώσεων από οποιοδήποτε διοικητικό τμήμα), ο Χρήστης θα φέρει πλήρη ευθύνη.

+ +

8. Κίνδυνοι υπηρεσίας και αποποιήσεις ευθύνης

+

8.1 Θέλουμε να παρέχουμε υποστήριξη υπηρεσιών με την τρέχουσα τεχνολογία. Η Saitong δεν εγγυάται ότι η υπηρεσία Λογισμικού θα λειτουργεί χωρίς διακοπή ή σφάλμα, ότι όλα τα ελαττώματα της υπηρεσίας Λογισμικού θα διορθωθούν ή ότι η υπηρεσία Λογισμικού θα πληροί όλες τις απαιτήσεις των χρηστών. Για τις προκύπτουσες συνέπειες, η Saitong δεν αναλαμβάνει καμία ευθύνη.

+

8.2 Όλες οι απώλειες που υφίσταται ο χρήστης λόγω τρίτων, όπως βλάβη γραμμής επικοινωνίας, τεχνικά προβλήματα, προβλήματα δικτύου, βλάβη τερματικού εξοπλισμού υπολογιστή, αστάθεια συστήματος και άλλες αιτίες ανωτέρας βίας, δεν αποτελούν ευθύνη της εταιρείας.

+

8.3 Η Saitong δεν εγγυάται τη νομιμότητα, αυθεντικότητα, ακρίβεια και αποτελεσματικότητα του πληροφοριακού περιεχομένου που λαμβάνεται μέσω του λογισμικού (συμπεριλαμβανομένου αλλά χωρίς περιορισμό του περιεχομένου υπηρεσιών τρίτων), και η Saitong δεν αναλαμβάνει καμία ευθύνη για τα αποτελέσματα οποιασδήποτε συμπεριφοράς χρηστών βάσει αναζήτησης και προβολής.

+

8.4 Το λογισμικό, όπως τα περισσότερα λογισμικά του Διαδικτύου, επηρεάζεται από διαφορές σε παράγοντες που περιλαμβάνουν αλλά δεν περιορίζονται σε λόγους χρήστη, ποιότητα υπηρεσίας δικτύου, κοινωνικό περιβάλλον και άλλους παράγοντες, και μπορεί να υποστεί διάφορα προβλήματα ασφαλείας, όπως η χρήση πληροφοριών χρήστη από τρίτους, με αποτέλεσμα παρενόχληση στην πραγματική ζωή. Άλλο λογισμικό που λήφθηκε και εγκαταστάθηκε από χρήστες ή άλλοι ιστότοποι που επισκέφθηκαν χρήστες περιέχουν ιούς όπως «Δούρειοι Ίπποι», που απειλούν την ασφάλεια πληροφοριών και δεδομένων τερματικού εξοπλισμού χρηστών και στη συνέχεια επηρεάζουν την κανονική χρήση του λογισμικού. Οι χρήστες πρέπει να ενισχύσουν την ευαισθητοποίηση σχετικά με την ασφάλεια πληροφοριών και την προστασία δεδομένων χρηστών και να δώσουν προσοχή στην ενίσχυση της προστασίας κωδικού πρόσβασης για να αποφύγουν απώλειες και παρενόχληση.

+

8.5 Όταν οι χρήστες χρησιμοποιούν το Λογισμικό ή ζητούν από τη Saitong να παρέχει συγκεκριμένες υπηρεσίες, το Λογισμικό μπορεί να καλεί συστήματα τρίτων ή λογισμικό τρίτων για να υποστηρίξει τη χρήση ή πρόσβαση των χρηστών, και τα αποτελέσματα χρήσης ή πρόσβασης παρέχονται από τρίτους. Εκτός από τη συμμόρφωση με τους σχετικούς κανόνες αυτής της Συμφωνίας, οι χρήστες πρέπει επίσης να συμμορφώνονται με τις συμφωνίες και τους σχετικούς κανόνες των τρίτων. Οι χρήστες πρέπει να κατανοήσουν και να συμφωνήσουν ότι, κατά τη χρήση υπηρεσιών τρίτων, οι τρίτοι μπορεί να διαβάζουν δεδομένα χρηστών, και η Saitong δεν εγγυάται την ασφάλεια, ακρίβεια, αποτελεσματικότητα και άλλους αβέβαιους κινδύνους των αποτελεσμάτων που επιτυγχάνονται μέσω συστημάτων τρίτων ή υποστήριξης λογισμικού τρίτων, οι χρήστες πρέπει να ασκούν συνετή κρίση, και η Saitong δεν αναλαμβάνει καμία ευθύνη για τυχόν διαφορές και ζημίες που προκαλούνται από αυτό.

+

8.6 Για τη διασφάλιση της αυτονομίας ανάπτυξης και προσαρμογής των επιχειρηματικών δραστηριοτήτων της εταιρείας, η εταιρεία μπορεί να τροποποιήσει ή να διακόψει την υπηρεσία ανά πάσα στιγμή αφού ειδοποιήσει τον χρήστη με εύλογο τρόπο.

+

8.7 Εκτός εάν ρητά προβλέπεται από νόμους και κανονισμούς, η Saitong θα καταβάλει κάθε δυνατή προσπάθεια για να διασφαλίσει ότι το λογισμικό και η σχετική τεχνολογία και πληροφορίες είναι ασφαλή, αποτελεσματικά, ακριβή και αξιόπιστα, αλλά λόγω των περιορισμών της υπάρχουσας τεχνολογίας, ο χρήστης κατανοεί ότι η Saitong δεν μπορεί να το εγγυηθεί αυτό.

+

8.8 Η αποζημίωση για σωματική βλάβη ή τυχαία και έμμεση οικονομική ζημία που προκαλείται από ή σε σχέση με οποιαδήποτε από τις ακόλουθες περιστάσεις, συμπεριλαμβανομένων αλλά χωρίς περιορισμό απώλειας κερδών, απώλειας δεδομένων, αποζημιώσεων για διακοπή επιχειρηματικής δραστηριότητας ή άλλων εμπορικών ζημιών ή απωλειών, βαρύνει τον Χρήστη:

+

1) Χρήση ή αδυναμία χρήσης του αδειοδοτημένου λογισμικού.

+

2) Μη εξουσιοδοτημένη χρήση του λογισμικού ή αλλοίωση δεδομένων χρήστη από τρίτους.

+

3) Έξοδα και απώλειες που προκύπτουν από τις ενέργειες του χρήστη με το λογισμικό.

+

4) Λανθασμένες αντιλήψεις του χρήστη σχετικά με το λογισμικό.

+

5) Οποιαδήποτε άλλη απώλεια σχετική με το λογισμικό που δεν οφείλεται σε αιτίες της Saitong.

+

8.9 Ο Χρήστης συμφωνεί ότι η Εταιρεία έχει το δικαίωμα να αναστείλει, να διακόψει ή να τερματίσει το σύνολο ή μέρος της Υπηρεσίας προς τον χρήστη βάσει των απαιτήσεων δικαστικών, ρυθμιστικών και εποπτικών αρχών ή για δικούς της επιχειρηματικούς λόγους. Η Saitong δεν αναλαμβάνει καμία ευθύνη γι' αυτό.

+

8.10 Ο Χρήστης κατανοεί και συμφωνεί ότι η Εταιρεία θα χρησιμοποιήσει εμπορικά εύλογες προσπάθειες για να διασφαλίσει την ασφάλεια αποθήκευσης δεδομένων στο Λογισμικό και τις Υπηρεσίες, αλλά η εταιρεία δεν μπορεί να παρέχει πλήρη εγγύηση, και ο Χρήστης κατανοεί ότι η Εταιρεία δεν ευθύνεται για τη διαγραφή ή αποτυχία αποθήκευσης ή δημιουργίας αντιγράφων ασφαλείας δεδομένων στην Υπηρεσία.

+

8.11 Στο μέγιστο βαθμό που επιτρέπεται από το νόμο, ο Προγραμματιστής ή ο Προμηθευτής δεν ευθύνεται για οποιαδήποτε άμεση, έμμεση, τυχαία, ειδική ή επακόλουθη ζημία που προκύπτει από τη χρήση της Εφαρμογής. Εάν ο χρήστης έχει περαιτέρω ανάγκες, παρακαλούμε μεταβείτε σε πιστοποιημένο νοσοκομείο για εμπεριστατωμένες εξετάσεις.

+ +

9. Δήλωση πνευματικής ιδιοκτησίας

+

9.1 Η Saitong είναι ο κάτοχος δικαιωμάτων πνευματικής ιδιοκτησίας αυτού του λογισμικού. Όλα τα πνευματικά δικαιώματα, εμπορικά σήματα, πατέντες, εμπορικά μυστικά και άλλα δικαιώματα πνευματικής ιδιοκτησίας του λογισμικού, καθώς και όλο το πληροφοριακό περιεχόμενο που σχετίζεται με το λογισμικό (συμπεριλαμβανομένων αλλά χωρίς περιορισμό κειμένου, εικόνων, ήχου, βίντεο, γραφικών, σχεδιασμού διεπαφής, πλαισίου διάταξης, σχετικών δεδομένων ή ηλεκτρονικών εγγράφων κ.λπ.) προστατεύονται από τοπικούς νόμους και κανονισμούς και αντίστοιχες διεθνείς συνθήκες.

+

9.2 Χωρίς τη γραπτή συγκατάθεση της Εταιρείας, ο Χρήστης δεν θα υλοποιήσει, χρησιμοποιήσει ή μεταβιβάσει τα ανωτέρω δικαιώματα πνευματικής ιδιοκτησίας για οποιονδήποτε εμπορικό ή μη εμπορικό σκοπό και δεν θα επιτρέψει σε οποιονδήποτε τρίτο, και η Εταιρεία επιφυλάσσεται του δικαιώματος να ασκήσει νομική ευθύνη για τις ανωτέρω πράξεις.

+ +

10. Αλλαγή πρωτοκόλλου

+

10.1 Η Saitong έχει το δικαίωμα να τροποποιεί τους όρους αυτής της Συμφωνίας όταν είναι απαραίτητο. Μόλις αλλάξουν οι όροι της Συμφωνίας, οι αναθεωρημένοι όροι της Συμφωνίας θα δημοσιευτούν στη σχετική σελίδα. Εάν δεν συμφωνείτε με το αλλαγμένο περιεχόμενο, ο χρήστης θα πρέπει να πάρει την πρωτοβουλία να ακυρώσει αυτή την υπηρεσία. Εάν ο Χρήστης συνεχίσει να χρησιμοποιεί τις Υπηρεσίες, θεωρείται ότι αποδέχεται τις αλλαγές στους όρους της Συμφωνίας.

+

10.2 Η Saitong διατηρεί το δικαίωμα να τροποποιεί ή να αλλάζει τις επί πληρωμή υπηρεσίες, τα πρότυπα χρέωσης, τις μεθόδους χρέωσης, τα τέλη υπηρεσίας και τους όρους υπηρεσίας που παρέχονται, κατά περίπτωση. Κατά την παροχή υπηρεσιών, ενδέχεται να χρεώσουμε ορισμένα τέλη στους χρήστες ορισμένων υπηρεσιών τώρα ή στο μέλλον. Εάν οι χρήστες αρνηθούν να πληρώσουν τέτοια τέλη, δεν μπορούν να συνεχίσουν να χρησιμοποιούν τις σχετικές υπηρεσίες μετά την έναρξη χρέωσης.

+
+ + diff --git a/doc/ysxy_en.html b/doc/en/privacy_policy.html similarity index 100% rename from doc/ysxy_en.html rename to doc/en/privacy_policy.html diff --git a/doc/yhxy_en.html b/doc/en/user_agreement.html similarity index 100% rename from doc/yhxy_en.html rename to doc/en/user_agreement.html diff --git a/doc/es/privacy_policy.html b/doc/es/privacy_policy.html new file mode 100644 index 000000000..d885fe463 --- /dev/null +++ b/doc/es/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Política de Privacidad de Voitrans + + + + +
+

Política de Privacidad de Voitrans

+

Última actualización: 27 de mayo de 2025

+

Fecha de vigencia: 27 de mayo de 2025

+ +

Bienvenido a usar el Software y Servicios de Voitrans

+

1. Voitrans es proporcionado por Saitong Industries Inc. (en adelante denominada "la Empresa"). Puede ayudar a los usuarios a gestionar dispositivos Bluetooth y otros productos. Entendemos la importancia de la información personal para nuestros usuarios (en adelante denominados "usted") y que la protección efectiva de su información personal es la piedra angular del desarrollo saludable y sostenible de nuestro negocio. ¡Gracias por su uso y confianza en los productos o servicios de Voitrans! Somos plenamente conscientes de que esta confianza no es fácil de conseguir, nos adherimos al principio de apertura y transparencia, para expresarle nuestras reglas para el procesamiento de su información personal, utilizamos formas legales y legítimas y propósitos claros y razonables para procesar su información personal. Nota especial: Asegúrese de leer y comprender esta Política de Privacidad cuidadosamente antes de usar nuestros productos o servicios para que pueda tomar las decisiones adecuadas.

+

2. Esta Política de Privacidad le explica cómo recopilamos, usamos, almacenamos y compartimos su información personal cuando usa Voitrans. La información personal se refiere a todo tipo de información registrada por medios electrónicos u otros que puede identificar a una persona natural específica o reflejar las actividades de una persona natural específica sola o en combinación con otra información. Voitrans respeta y protege la privacidad personal de todos los usuarios del servicio. Excepto según lo dispuesto en esta Política de Privacidad, Voitrans no divulgará esta información al público ni la proporcionará a terceros sin su permiso previo.

+

3. Cuando utilice el producto o servicio de un tercero a través de un producto o servicio de App Marketplace, su información personal estará sujeta a la política de privacidad del tercero.

+

4. Esta Política de Privacidad de Voitrans se actualizará periódicamente. Al aceptar el Acuerdo de Uso del Servicio de Voitrans y comenzar a usar Voitrans, se considera que ha aceptado toda esta Política de Privacidad. Si no está de acuerdo con esta Política de Privacidad, no utilice el Software y los Servicios de Voitrans.

+

5. Para analizar y medir la efectividad de los servicios relevantes, utilizaremos y divulgaremos su información personal de acuerdo con las disposiciones de esta Política de Privacidad.

+ +

Esta Política de Privacidad le ayudará a comprender lo siguiente:

+
    +
  • 1 La información que recopilamos
  • +
  • 2 Almacenamiento de información
  • +
  • 3 Seguridad de la información
  • +
  • 4 Cómo usamos la información que recopilamos
  • +
  • 5 Intercambio de información
  • +
  • 6 Cómo gestiona usted su información personal
  • +
  • 7 Descripción de permisos de la aplicación
  • +
  • 8 Acceso a SDKs de terceros
  • +
  • 9 Protección de menores
  • +
  • 10 Política de Privacidad vigente y actualizada
  • +
  • 11 Cómo contactarnos
  • +
+ +

1. La información que recopilamos

+

1. Al comenzar a usar Voitrans, comenzaremos a recopilar datos sobre su uso de la aplicación

+

2. Voitrans puede obtener información personal sobre usted de terceros o socios comerciales por medios legales

+

3. Para proporcionarle mejores productos y servicios, brindarle seguridad de red durante el uso, mantener el funcionamiento normal de los productos y optimizar y mejorar, el propósito de nuestros servicios de información, después de que haga clic activamente para aceptar esta política de privacidad, use la información que proporcionamos. Durante el servicio, además de la información personal necesaria para garantizar el funcionamiento normal de las funciones básicas de la App de acuerdo con las leyes y regulaciones nacionales, recopilaremos otra información personal suya:

+

3.1 Para identificar usuarios de riesgo, juzgar la autenticidad de los usuarios y prevenir el fraude de manera integral, leeremos la información de su dispositivo cada vez que abra el software, incluyendo: (modelo del dispositivo, dirección MAC del dispositivo, identificador único del dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, número de serie, SSID y BSSID de WIFI), lectura de dirección Bluetooth, versión del sistema operativo, nombre del sistema operativo, información de cuenta y contraseña de inicio de sesión del usuario;

+

3.2 Cuando utiliza nuestros productos y servicios, podemos recopilar cierta información a través de información de registro de red o ciertos programas y software, dicha información puede incluir: detalles del uso de productos y servicios, como la hora de apertura de su aplicación, la duración de uso y la dirección de la página visitada; información de eventos del dispositivo, como fallos, actividad del sistema, etc., para optimizar su dispositivo y mejorar nuestros servicios;

+

3.3 Para identificar aplicaciones donde el equipo está en riesgo, proporcionar servicios funcionales más seguros. Por lo tanto, necesitamos obtener su lista de aplicaciones/instalaciones en el proceso para garantizar el funcionamiento normal del producto y proteger la seguridad del dispositivo.

+

3.4 Para analizar el uso de las funciones de la aplicación por parte de los usuarios y determinar la autenticidad de los usuarios, necesitamos realizar estadísticas de datos y recopilar la información del dispositivo mencionada anteriormente, incluida la dirección MAC del dispositivo y el identificador único del dispositivo, cuando su dispositivo está en uso.

+

3.5 Señal del dispositivo: el estado de red del dispositivo que utiliza, información del punto de acceso WIFI, etc.

+

3.6 Información de ubicación: Podemos usar GPS, WiFi u otros medios técnicos para recopilar y procesar información sobre su ubicación para actualizar información local, proporcionar servicios de contenido, etc.

+

Para más información, haga clic en "Lista de Recopilación de Información Personal".

+ +

1. Para la información personal más sensible de la información anterior, como la información del dispositivo del usuario (número IMEI, estado de la llamada y número de identificación), información de ubicación GPS, contenido multimedia de fotos y derechos de acceso a archivos, obtendremos su consentimiento antes de la recopilación. Para cierta información no sensible, la recopilación puede ser predeterminada y automática. Puede restringir nuestra recopilación de información relevante o el uso de ciertos permisos desde su dispositivo móvil ajustando la opción de Configuración de su dispositivo móvil. Cuando restrinja nuestro acceso a un cierto permiso, es posible que no podamos continuar proporcionándole los servicios correspondientes, y ya no procesaremos su información correspondiente.

+

2. No recopilaremos su número de documento de identidad, información biométrica personal, número de cuenta bancaria, información patrimonial, información crediticia, información de salud y fisiológica y otra información personal sensible.

+

3. Sobre permisos sensibles: Para usar correctamente las funciones de la aplicación, el producto necesita obtener los siguientes permisos para proporcionar servicios funcionales relacionados con productos normales.

+ +

1 Obtener permisos de lectura y escritura de almacenamiento

+

1 Cómo obtener: aviso emergente, cuando se obtiene el permiso, el usuario hará clic activamente en aceptar y la aplicación usará este permiso

+

2 Propósito y alcance de uso: Se utiliza para escanear los archivos de caché de recursos y miniaturas del sistema, cargar recursos musicales e imágenes de productos. Se muestra en la interfaz de la App para facilitar a los usuarios la visualización y operación

+ +

2 Obtener permiso para la lista de instalación de aplicaciones

+

1 Cómo obtener: aviso emergente, cuando se obtiene el permiso, el usuario hará clic activamente en aceptar y la aplicación usará este permiso

+

2 Propósito y alcance de uso: Cuando la aplicación necesita usar servicios de promoción publicitaria, la plataforma publicitaria de terceros, Youmon +SDK, necesita obtener el "permiso de lista de instalación de software de aplicaciones" del dispositivo para evitar enviar al usuario aplicaciones que ya posee y mejorar la experiencia del usuario.

+ +

3 El permiso para obtener información del estado del dispositivo

+

Incluye: (modelo del dispositivo, dirección MAC del dispositivo, identificador único del dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, número de serie, SSID y BSSID de WIFI, lectura de dirección Bluetooth), versión del sistema operativo, nombre del sistema operativo, etc.;

+

1 Cómo obtener: aviso emergente, cuando se obtiene el permiso, el usuario hará clic activamente en aceptar y la aplicación usará este permiso

+

2 Propósito y alcance de uso: Al usar nuestra aplicación, para analizar el uso de las funciones de la aplicación por parte del usuario y juzgar la autenticidad del usuario, sincronizaremos el permiso con SDKs de terceros, incluidos Autonavi SDK, Youmon +SDK, etc.

+ +

4 Acceso a información de ubicación

+

1 Cómo obtener: avisos emergentes, cuando se obtiene el permiso, el usuario usará este permiso solo cuando haga clic activamente en aceptar con la aplicación.

+

2 Propósito y alcance de uso: Cuando la aplicación necesita usar GPS, WiFi u otras funciones, el producto necesita recopilar su ubicación e información para buscar dispositivos Bluetooth en ubicaciones cercanas.

+

Nota: Para más permisos de la aplicación, consulte la Sección 7 "Descripción de Permisos de la Aplicación" de este documento "Política de Privacidad"

+ +

2. Almacenamiento de información

+

1. Dónde se almacena la información

+

La información personal que recopilamos y generamos en la República Popular China se almacenará en nuestros servidores y/o los de nuestras filiales.

+

2. Almacenamiento y procesamiento de información

+

Almacenamos su información personal solo durante el período necesario para lograr el propósito o durante el tiempo requerido por la ley y la regulación. Después de que deje de usar este producto, dejaremos inmediatamente de recopilar y procesar su información personal y datos de la aplicación. Cuando se exceda el período mencionado, eliminaremos o anonimizaremos la información personal que nos ha proporcionado.

+

Además de las funciones necesarias, Voitrans necesita solicitar los permisos del sistema correspondientes. El lado del servidor en la nube no almacena información personal del usuario, y el SDK de terceros al que se accede será anonimizado y desidentificado por el proveedor de servicios (Amu Statistics SDK, Autonavi SDK), por lo que no se puede rastrear a los usuarios. La información almacenada en el teléfono del usuario se eliminará automáticamente cuando el usuario desinstale Voitrans o limpie la caché.

+ +

3. Seguridad de la información

+

1. Voitrans almacena y protege su información personal utilizando medidas y tecnologías de seguridad estándar de la industria, como autenticación, cifrado de datos, acceso restringido al centro de datos y otras medidas de seguridad para garantizar que su información esté segura contra divulgación, alteración y destrucción. A pesar de las medidas de seguridad antes mencionadas, tenga en cuenta que ninguna medida de seguridad puede ser 100% segura.

+

2. Cuando utilice los servicios proporcionados por Voitrans, proteja su información personal. Si descubre que su información personal ha sido comprometida, contáctenos inmediatamente para que podamos tomar las medidas adecuadas.

+ +

4. Cómo usamos la información que recopilamos

+

1. Al implementar las funciones comerciales de la aplicación, podemos usar su información personal para garantizar la integridad y seguridad de los productos y servicios que le proporcionamos;

+

2. Comprenderemos sus hábitos de uso a través de la información recopilada, y con la ayuda del análisis de datos, identificaremos la aceptabilidad de los servicios, sus hábitos de uso, etc., para probar y crear nuevos productos, funciones y servicios, mejorar el nivel de servicio y ayudarnos a mejorar los servicios existentes y desarrollar nuevos servicios;

+

3. Podemos usar su información personal para encuestas de clientes sobre los productos y servicios, para enviar avisos sobre los productos y servicios, y para promoción comercial;

+

4. Podemos usar su información para análisis e investigación interna relacionada con la aplicación;

+ +

5. Intercambio de información

+

Actualmente, no compartiremos ni transferiremos activamente su información personal a terceros fuera de la empresa. Si hay otro intercambio o transferencia de su información personal, confirmaremos directamente o confirmaremos que el tercero ha obtenido su consentimiento expreso para el comportamiento anterior.

+

No divulgaremos públicamente la información personal que recopilamos. Si es necesario divulgarla públicamente, le informaremos sobre el propósito de la divulgación pública, el tipo de información divulgada y la información sensible que pueda estar involucrada, y obtendremos su consentimiento expreso.

+

A medida que nuestro negocio continúa desarrollándose, podemos participar en fusiones, adquisiciones, transferencias de activos y otras transacciones, y le informaremos de las circunstancias relevantes, de acuerdo con las leyes y regulaciones y no menos que los estándares requeridos por esta Guía para continuar protegiendo su información personal o requerir que un nuevo controlador continúe protegiendo su información personal.

+

Además, de acuerdo con las leyes y regulaciones pertinentes y los estándares nacionales, podemos compartir, transferir y divulgar públicamente información personal sin la autorización y consentimiento previos del sujeto de la información personal en las siguientes circunstancias:

+
    +
  • 1 Directamente relacionado con la seguridad nacional y la defensa nacional;
  • +
  • 2 Directamente relacionado con la seguridad pública, la salud pública o intereses públicos importantes;
  • +
  • 3 Directamente relacionado con la investigación criminal, enjuiciamiento, juicio y ejecución de sentencias;
  • +
  • 4 Para proteger la vida, la propiedad y otros derechos e intereses legítimos importantes del sujeto de datos personales u otras personas, pero es difícil obtener el consentimiento de la persona;
  • +
  • 5 Información personal divulgada al público por el propio sujeto de la información personal;
  • +
  • 6 Recopilación de información personal de información legalmente divulgada públicamente, como informes de noticias legítimos, divulgación de información gubernamental y otros canales.
  • +
+ +

6. Cómo gestiona usted su información personal

+

De acuerdo con las leyes, regulaciones y estándares pertinentes de China, así como las prácticas comunes de otros países y regiones, garantizamos que usted ejerce los siguientes derechos sobre su información personal:

+ +

1. Corregir su información personal

+

Si descubre que hay un error en su información personal procesada por nosotros, tiene derecho a corregir o actualizar la información errónea o incompleta. Si no puede operar de forma independiente en el centro de cuentas, puede enviarnos un correo electrónico a saitong.voitrans@gmail.com para contactarnos

+ +

2. Eliminar su información personal

+

En los siguientes casos, puede hacernos una solicitud para eliminar su información personal:

+
    +
  • Si procesamos información personal en violación de leyes y regulaciones;
  • +
  • Si recopilamos y usamos su información personal sin su consentimiento;
  • +
  • Si nuestro procesamiento de información personal viola nuestro acuerdo con usted;
  • +
  • Si ya no utiliza nuestros productos o servicios;
  • +
  • Si ya no le proporcionamos productos o servicios.
  • +
+

Contáctenos. Procesaremos su solicitud en saitong.voitrans@gmail.com Contáctenos. Se la enviaremos después de recibirla dentro de los 30 días hábiles siguientes a la recepción

+ +

3. Cambiar el alcance de su consentimiento

+

Puede contactarnos por correo electrónico a saitong.voitrans@gmail.com Contáctenos. A su solicitud, ya no recopilaremos, usaremos ni divulgaremos su información personal. Tenga en cuenta que la retirada de su consentimiento o la eliminación de su información personal puede afectar su uso de algunos de nuestros servicios.

+ +

4 Acceder y copiar información personal

+

Usted puede, de acuerdo con las disposiciones de las leyes pertinentes, proporcionar su IMEI (número de serie del teléfono) u OAID o Android ID después de la información de la cuenta y otra información, puede solicitarnos acceso y copia de su información personal, puede enviar un correo electrónico a 3514406195@qq.com para ponerse en contacto con nosotros.

+ +

5. En respuesta a su solicitud anterior

+

Por razones de seguridad, es posible que deba proporcionar una solicitud por escrito o demostrar su identidad de otro modo. Podemos pedirle que verifique su identidad antes de procesar su solicitud. Para su solicitud razonable, responderemos y la trataremos de manera oportuna. Podemos rechazar solicitudes que sean innecesariamente repetitivas, requieran demasiada tecnología (por ejemplo, el desarrollo de nuevos sistemas o cambios fundamentales en las prácticas existentes), representen un riesgo para los intereses legítimos de otros o sean altamente imprácticas.

+

En las siguientes circunstancias, de acuerdo con los requisitos de las leyes y regulaciones, no podremos responder a su solicitud:

+
    +
  • Relacionado con la seguridad nacional y la defensa nacional;
  • +
  • En relación con la investigación criminal, enjuiciamiento y juicio;
  • +
  • Existe evidencia suficiente de que usted tiene mala intención subjetiva o abuso de derechos;
  • +
  • Responder a su solicitud causará un daño grave a los derechos e intereses legítimos suyos o de otras personas y organizaciones.
  • +
+ +

6. Cancelación de cuenta

+

El usuario puede realizar la operación de [cancelación de cuenta] en la APP. Pasos de operación:

+
    +
  1. Ir a la página [Mi perfil]
  2. +
  3. Hacer clic en el botón [Configuración] en la esquina superior derecha
  4. +
  5. Hacer clic en [Cancelar cuenta] para confirmar
  6. +
+

Después de cerrar sesión, la información sobre la cuenta del usuario se borra

+ +

7. Descripción de permisos de la aplicación

+

Para proporcionar mejores productos y servicios, cuando utilice el software, solicitaremos los siguientes derechos; cuando ingrese a la página de inicio o use la función se solicitará autorización; si rechaza, algunas de las funciones correspondientes no podrán usarse normalmente. Los propósitos específicos y recordatorios de permisos se describen en detalle a continuación:

+ +

1 Permisos de ubicación:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

A través de WiFi o estación base móvil para obtener información de latitud y longitud de la ubicación del usuario

+

Cuando usted usa Voitrans, buscaremos su dispositivo Bluetooth adjunto basándonos en su ubicación geográfica. Al mismo tiempo, para proporcionar servicios más estables, optimizar productos y mejorar la experiencia, compartiremos la información anterior con tres SDKs, como Youmon y Autonavi, para obtener datos operativos de Voitrans y servicios funcionales.

+

Modo de recordatorio: Se muestra un aviso indicando el permiso para iniciar la aplicación por primera vez, requiriendo que el usuario confirme la aceptación. Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Este permiso es necesario cuando accede a una aplicación para realizar funciones de gestión de aplicaciones.

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

3 Permisos de red:

+

android.permission.INTERNET

+

Cuando usted usa estos permisos son necesarios para los servicios de información de Voitrans y los servicios de actualización de versión, y para mejorar la experiencia del usuario y optimizar las capacidades del servicio, SDKs de terceros como Friends también utilizarán estos permisos.

+

Modo de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

4 Permisos para obtener el estado de la red:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Se utiliza para obtener si la conexión de red actual es válida, determinar si el entorno 4G actual está activo y si se debe recordar los cambios del entorno de red, lo que afecta la carga del contenido de información. Este permiso se solicita cuando utiliza Voitrans.

+

Los cambios en el estado de la red afectan la carga y descarga de datos. Por lo tanto, el acceso al permiso de estado de red se compartirá con Friends+ y otras plataformas.

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

5 Permisos para obtener la lista de tareas:

+

android.permission.GET_TASKS

+

Este permiso se utiliza para obtener la lista de aplicaciones para la función de gestión de software. Cuando utiliza la función de gestión de software, necesita leer las aplicaciones instaladas en el teléfono móvil.

+

Modo de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

6 Obtener permiso de dirección MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Cuando utiliza Voitrans, la aplicación necesitará obtener permisos de dirección MAC:

+

Cuando una aplicación necesita informar datos de conversión de objetivos, plataformas de terceros como Youmon +SDK necesitan usar MAC.

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

7 Obtener permiso para grabar audio

+

android.permission.RECORD_AUDIO

+

Cuando utiliza la función de entrada de voz de Voitrans, necesita usar el permiso para grabar audio, y principalmente utiliza la entrada de voz para traducción y otras funciones relacionadas.

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad, el cuadro de diálogo aparece dinámicamente cuando es requerido por el usuario.

+ +

8 Obtener permiso SSID para WIFI

+

Cuando se usa este permiso, la aplicación lee el permiso SSID para WIFI:

+

Alcance de uso y propósito: Cuando la aplicación necesita usar servicios de análisis de datos, plataformas de terceros como +SDK necesitan leer el "permiso SSID de WIFI" del dispositivo para proporcionar a los usuarios servicios funcionales más precisos y efectivos.

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

9 Obtener acceso Bluetooth

+

Cuando se usa este permiso, la aplicación lee el permiso Bluetooth:

+

Alcance de uso y propósito: Dispositivos Bluetooth para buscar y configurar accesorios, como auriculares Bluetooth, relojes Bluetooth, etc. Fácil para los usuarios gestionar

+

Método de recordatorio: Se muestra un aviso indicando el permiso para iniciar la aplicación por primera vez, requiriendo que el usuario confirme la aceptación. Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

10 Obtener el permiso BSSID para WiFi

+

Cuando la aplicación necesita distinguir e identificar al usuario para proporcionar servicios funcionales y estadísticas de datos, leerá el permiso "WiFi BSSID" del dispositivo para:

+

Alcance de uso y propósito: 1 Plataformas de terceros: como Youmeng SDK, Bugly SDK, Autonavi SDK

+

Método de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

11 Obtener el permiso de instalación de aplicaciones

+

android.permission.REQUEST_INSTALL_PACKAGES

+

El software utilizará el permiso de instalación de aplicaciones, que se utiliza principalmente para permitir a los usuarios instalar una nueva versión y experimentar nuevas funciones cuando haya una nueva versión.

+

Modo de recordatorio: Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

12 Obtener permisos para la cámara

+

android.permission.CAMERA

+

Voitrans utiliza permisos de cámara para escanear códigos QR y vincular dispositivos Bluetooth como auriculares Bluetooth y relojes.

+

Método de recordatorio: Se muestra un aviso indicando el permiso para iniciar la aplicación por primera vez, requiriendo que el usuario confirme la aceptación. Descripción del Acuerdo de Usuario y Política de Privacidad.

+ +

Nota especial:

+

1 La integración de la aplicación dentro de su Allies SDK, Scott map SDK, tras el consentimiento del usuario, la aplicación en segundo plano/primer plano para ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI y otra información personal;

+

Observaciones: Para más información, consulte el siguiente contenido y permisos relacionados con SDK [VIII. Acceso a la lista de SDKs de terceros]

+ +

8. Acceso a SDKs de terceros

+

1 Para garantizar el funcionamiento estable y la realización funcional de nuestro cliente, para que pueda usar y disfrutar de más servicios y funciones, nuestra aplicación se integrará con el kit de desarrollo de herramientas de software (SDK) u otras aplicaciones similares de terceros, estos terceros recopilarán y procesarán la información relevante de acuerdo con sus propias políticas de privacidad, para proporcionar normalmente funciones y servicios publicitarios. Puede conocer las reglas de recopilación y procesamiento de información de terceros en la siguiente sección. Realizaremos pruebas de seguridad estrictas en los kits de desarrollo (SDKs) para que los socios obtengan información, con el fin de proteger el uso razonable y la seguridad de su información personal. Tenga en cuenta que los SDKs de terceros pueden cambiar los tipos de procesamiento de datos debido a sus actualizaciones de versión. Consulte las políticas de privacidad publicadas por los SDKs de terceros. Vea los detalles a continuación o haga clic para ver la Lista de SDK de terceros.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Información obtenida: Número de dispositivo, dirección IP, información de software del dispositivo, código de identificación del dispositivo (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, información IMSI de tarjeta SIM, IP, dirección MAC), identificador del dispositivo, región, información de aplicaciones relacionadas con el dispositivo y otra información de registro relacionada con el servicio

+

Propósito de uso: Inicio de sesión y compartir de WeChat

+

Desarrollador: Shenzhen Tencent Computer Systems Company Limited

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Información obtenida: Nombre de la aplicación, versión de la aplicación, marca y modelo del dispositivo, sistema operativo, información del operador, resolución de pantalla, información de sensores (vector, aceleración, presión, dirección, geomagnético, giroscopio, temperatura, sensor de luz, señal NMEA), información de intensidad de señal del dispositivo

+

Propósito de uso: Navegación usando Amap

+

Desarrollador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Información obtenida: Nombre de la aplicación, versión de la aplicación, marca y modelo del dispositivo, sistema operativo, información de red, intensidad de señal del dispositivo, etc.

+

Propósito de uso: Visualización e interacción del mapa

+

Desarrollador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Información obtenida: Información de ubicación (GPS, Wi-Fi, estación base), información del dispositivo, información de red, etc.

+

Propósito de uso: Proporcionar servicios de ubicación

+

Desarrollador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Información obtenida: Nombre de la aplicación, versión de la aplicación, información del dispositivo, información de red, etc.

+

Propósito de uso: Herramientas de mapa y optimización de renderizado

+

Desarrollador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Información obtenida: Identificadores del dispositivo, información básica del dispositivo, lista de software instalado e información de red (consulte la política de privacidad oficial para más detalles)

+

Propósito de uso: Inicio de sesión con cuenta de Alipay e invocación de pago

+

Desarrollador: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Información obtenida: Versión del SDK/API, plataforma, marca de tiempo, identificador de la aplicación, versión de la aplicación, fabricante del dispositivo, versión del SO, configuración regional, zona horaria, estado de la red (Wi-Fi, etc.), registros de red, datos de fallos y uso, dirección IP, etc. (consulte la política de privacidad oficial para más detalles)

+

Propósito de uso: Servicio de monitoreo de calidad de la aplicación e informes de datos

+

Desarrollador: Shenzhen Tencent Computer Systems Company Limited

+

Método de recopilación: Autorrecopilación del SDK

+

Enlace de la Política de Privacidad: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Protección de menores

+

Los usuarios de nuestros productos y servicios pueden incluir menores de 18 años, los usuarios menores deben buscar el consejo de sus padres o tutores con respecto a esta Política de Privacidad antes de usar nuestros productos, y usar nuestros servicios o proporcionarnos su información después de obtener el consentimiento de y bajo la guía de sus padres o tutores. Los tutores de menores que tengan preguntas pueden contactarnos a través de los datos de contacto en esta Política de Privacidad.

+

Si no está de acuerdo con la recopilación de la información mencionada por los proveedores de servicios de terceros anteriores, deje de usar el Software inmediatamente. Durante su uso del Software, estos terceros recopilarán y procesarán la información relevante de acuerdo con sus propias políticas de privacidad para proporcionar algunas funciones, publicidad y otros servicios. Si la información se filtra debido a la recopilación de la información mencionada por el proveedor de servicios de terceros pertinente, el proveedor de servicios de terceros pertinente asumirá la responsabilidad legal correspondiente.

+ +

10. Política de Privacidad vigente y actualizada

+

1. Esta Política de Privacidad es efectiva desde la fecha de publicación.

+

2. A medida que nuestro negocio evoluciona y cambia, nuestra Política de Privacidad puede cambiar. Nos reservamos el derecho de cambiar nuestra política de privacidad en cualquier momento, así que consulte con frecuencia. Si realizamos cambios en nuestra Política de Privacidad, publicaremos estas actualizaciones en nuestro sitio web, aplicaciones y donde consideremos apropiado para mantenerlo informado. Si la política de privacidad se actualiza, entrará en vigor desde la fecha de actualización. Su uso continuado de nuestros productos o servicios significa que acepta nuestra Política de Privacidad modificada.

+ +

11. Cómo contactarnos

+

Saitong Industries Inc establecida el 22 de noviembre de 2024, dirección registrada: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Si desea saber más sobre nuestra empresa y plataforma, puede contactarnos a través de la información de contacto proporcionada en esta política (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/es/user_agreement.html b/doc/es/user_agreement.html new file mode 100644 index 000000000..1a72bbf5d --- /dev/null +++ b/doc/es/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protocolo de Usuario de la Aplicación Voitrans + + + +
+
Español
+ +

Protocolo de Usuario de la Aplicación Voitrans

+ +

Estos Términos y Condiciones de Uso le indican cómo acceder y utilizar la Aplicación Voitrans y los servicios en línea (los "Servicios"). Saitong Industries Inc. (en adelante denominada "Saitong") recuerda a los usuarios que lean cuidadosamente y comprendan completamente este Acuerdo de Usuario (en adelante denominado el "Acuerdo"). Los usuarios deben leer cuidadosamente y comprender completamente los términos de este Acuerdo. Lea atentamente y elija aceptar o no aceptar este Acuerdo. Su uso de la APP Voitrans (en adelante denominada "la APP" o "el Software") se considerará como aceptación de este Acuerdo y usted acepta estar sujeto a los términos de este Acuerdo. Si no está de acuerdo con este Acuerdo, no utilice la APP.

+

Saitong se reserva el derecho de modificar este Acuerdo, y los términos actualizados del Acuerdo se publicarán en esta APP, con efectividad a partir de la fecha de publicación.

+ +

1. Reglas generales

+

1.1 Esta APP es el software proporcionado por Saitong para conectar los productos de auriculares lanzados por Saitong y sus empresas asociadas. La propiedad y los derechos de operación del software y los servicios relacionados son propiedad de Saitong.

+

1.2 Este Acuerdo es un acuerdo entre usted (en adelante denominado el "Usuario") y la empresa y sus socios y socios operativos (en adelante denominados los "Socios") con respecto al uso de la APP y los servicios relacionados por parte del usuario.

+

1.3 El Software y los servicios incluyen:

+

1.3.1 El software proporcionado ofrece a los usuarios de Voitrans conexión y vinculación con Voitrans, gestión de configuración de funciones y otros servicios de software, sujeto a los servicios de software reales proporcionados por la APP.

+

1.3.2 Actualizaciones, mejoras y otros servicios del software.

+ +

2. Alcance de la licencia de software

+

2.1 Otorgamos al usuario una licencia personal, intransferible, no sublicenciable y no exclusiva para el Software.

+

2.2 Los usuarios pueden instalar, usar, mostrar y ejecutar el software en un solo dispositivo terminal móvil con fines no comerciales. Sin embargo, el usuario no deberá instalar, usar o ejecutar el software con fines de operación comercial, copiar, cambiar, modificar, conectar o ejecutar el software o los datos liberados en la memoria de cualquier dispositivo terminal durante la operación del software o los datos de interacción entre el cliente y el servidor durante la operación del software, ni crear trabajos derivados. Esto incluye, entre otros, el uso de complementos, plugins o herramientas/servicios de terceros no autorizados para acceder al Software y sistemas relacionados. Para la venta comercial, reproducción y distribución, como la preinstalación y empaquetado de software, se debe obtener autorización y permiso por escrito.

+

2.3 El Usuario no deberá instalar el Software en otros dispositivos terminales sin el permiso expreso del Creador, incluyendo, entre otros, televisores, decodificadores digitales, consolas de juegos y otros dispositivos.

+

2.4 Excepto según lo expresamente autorizado por este Acuerdo, no se otorgan otros derechos al Usuario, y el Usuario deberá obtener el consentimiento por escrito para utilizar otros derechos.

+ +

3. Actualización del software

+

3.1 El usuario debe seleccionar la versión de software adecuada para la configuración del terminal instalado. De lo contrario, los problemas de software, problemas del dispositivo o daños causados por cualquier versión de software no adecuada para el tipo de dispositivo serán responsabilidad exclusiva del usuario.

+

3.2 Con el fin de mejorar la experiencia del usuario y mejorar el contenido del servicio, Saitong tiene el derecho de proporcionarle versiones de reemplazo, modificación y actualización del software de vez en cuando. La función "Aviso de actualización" está habilitada por defecto para los usuarios. Dependiendo de las diferentes versiones de software utilizadas por los usuarios, Saitong ofrece a los usuarios la opción de activar esta función. Después del lanzamiento de una nueva versión del software, Saitong no garantiza la disponibilidad continua de la versión anterior del software.

+ +

4. Especificaciones de uso

+

4.1 Los usuarios pueden utilizar el Software y los Servicios de acuerdo con este Acuerdo bajo la premisa de cumplir con la ley y este Acuerdo, y los usuarios no deberán realizar los siguientes actos:

+

4.1.1 Eliminar toda la información de derechos de autor del Software y otras copias, y modificar, eliminar o eludir las medidas técnicas establecidas por el Software para proteger los derechos de propiedad intelectual.

+

4.1.2 Ingeniería inversa del Software, como desensamblaje, descompilación u otros intentos de obtener el código fuente del Software.

+

4.1.3 Mediante la modificación o falsificación de instrucciones y datos en la operación del software, aumentar, eliminar o cambiar la función o el efecto de operación del software, o software o métodos destinados a los fines mencionados para operar o difundir al público, independientemente de si estos actos son con fines comerciales.

+

4.1.4 Usar el software para cualquier comportamiento que ponga en peligro la seguridad de la red, incluyendo, entre otros: usar datos no autorizados o acceder a servidores/cuentas no autorizados; acceder a redes públicas u otros sistemas operativos sin permiso y eliminar, modificar o agregar información almacenada; intentos no autorizados de sondear, escanear o probar las debilidades del sistema o la red del software u otros actos que socaven la seguridad de la red; intentos de interferir o destruir el funcionamiento normal del sistema de software o sitio web, difundir intencionalmente programas maliciosos o virus, y otros actos que interrumpan los servicios normales de información de la red; falsificar nombres de paquetes TCP/IP o nombres parciales.

+

4.1.6 Sin el consentimiento por escrito de la Empresa, el usuario realiza arbitrariamente los siguientes actos sobre el software y la información contenida en él, incluyendo, entre otros: usar, alquilar, prestar, copiar, modificar, vincular, reimprimir, compilar, publicar, publicar, establecer sitios espejo, desarrollar productos derivados, obras, servicios, complementos, plugins, compatibilidad, interconexión, etc., con la ayuda del Software.

+

4.1.7 Usar el Software para publicar, transmitir, distribuir y almacenar contenido que viole las leyes locales.

+

4.1.8 Usar el software para publicar, transmitir, difundir y almacenar contenido que infrinja los derechos de propiedad intelectual, secretos comerciales y otros derechos legítimos de terceros.

+

4.1.9 Usar este software para publicar, transmitir y difundir información publicitaria e información basura en grandes cantidades.

+

4.1.10 Usar el Software y otros Servicios de cualquier manera ilegal, para cualquier propósito ilegal o de cualquier manera inconsistente con el uso autorizado de este Acuerdo.

+

4.2 Especificación de publicación de información

+

4.2.1 Si utiliza el software para publicar contenido de información (si lo hubiere), debe garantizar que posee los derechos de propiedad intelectual del contenido de información cargado por usted o que ha obtenido autorización legal, y cualquier comportamiento suyo al usar el software y los servicios no infringe los derechos e intereses legítimos de ningún tercero.

+

4.2.2 Al usar el Software, el usuario no deberá usar el Software para participar en las siguientes actividades, incluyendo, entre otras:

+

4.2.2.1 Crear, copiar, publicar, difundir y almacenar contenido que viole las leyes y regulaciones nacionales locales.

+

4.2.2.2 Publicar, transmitir, difundir y almacenar contenido que infrinja los derechos legales de terceros, como reputación, imagen, propiedad intelectual y secretos comerciales.

+

4.2.2.3 Fabricar hechos, ocultar la verdad con el fin de engañar o confundir a otros.

+

4.2.2.4 Publicar, transmitir y difundir información publicitaria e información basura.

+

4.2.2.5 Participar en otros actos que violen las leyes y regulaciones locales.

+

4.2.3 No podrá realizar ninguna actividad comercial como publicidad y venta de productos en el Software sin el permiso de la Empresa.

+

4.3 El Usuario comprende y acepta que:

+

4.3.1 Saitong determinará si el usuario es sospechoso de violar las especificaciones de uso anteriores, y de acuerdo con los resultados de la determinación, suspenderá o terminará su licencia de uso o tomará otras medidas restrictivas que puedan tomarse de acuerdo con este acuerdo.

+

4.3.2 Para el uso del software licenciado por parte del usuario que publique contenido sospechoso de ser ilegal o sospechoso de infringir los derechos legales de terceros o de violar este Acuerdo, la información será eliminada directamente.

+

4.3.3 Si la violación por parte del usuario de las reglas de uso anteriores causa daños a terceros, usted debe asumir la responsabilidad legal de forma independiente en su propio nombre, y debe garantizar que la empresa quede libre de pérdidas o costos adicionales.

+

4.3.4 Si el usuario viola las disposiciones legales o acuerdos pertinentes, causando pérdidas a Saitong, o es objeto de reclamaciones de terceros, o es sancionado por la autoridad administrativa, el usuario deberá compensar las pérdidas y/o gastos causados a Saitong, incluyendo honorarios razonables de abogados, costos de investigación y recopilación de pruebas.

+ +

5. Descripción de servicios de terceros

+

5.1 El usuario comprende y acepta que el sistema de software puede contener servicios proporcionados por filiales de la Empresa o terceros, y que la Empresa solo proporciona módulos funcionales relevantes en el sistema para la conveniencia de los usuarios y proporciona acceso a servicios de terceros.

+

5.2 Ya sea que los servicios de terceros estén preestablecidos en los servicios del sistema de software, o sean abiertos u ordenados por los propios usuarios, los usuarios comprenden y aceptan que Saitong no ofrece ninguna garantía expresa o implícita sobre la legalidad y efectividad de los proveedores de servicios de terceros o usuarios, así como sobre la legalidad, precisión, efectividad y seguridad de los servicios de terceros.

+

5.3 La empresa no supervisa, controla ni proporciona ninguna garantía de ningún tipo ni asume ninguna responsabilidad por los servicios de terceros.

+

5.4 Cualquier disputa o controversia entre el usuario y el proveedor de servicios de terceros será resuelta por el Usuario y el tercero de acuerdo con el proceso comercial y las normas comerciales del proveedor de servicios de terceros, y la empresa no asumirá ninguna responsabilidad.

+ +

6. Política de Privacidad y Protección de Información Personal

+

6.1 Saitong se compromete a proteger la privacidad de los usuarios de acuerdo con la política de privacidad, consulte: Política de Privacidad de la aplicación Voitrans.

+ +

7. Responsabilidad por incumplimiento

+

7.1 Saitong tiene el derecho de juzgar si el comportamiento del usuario cumple con las disposiciones de este Acuerdo. Si se cree que el Usuario ha violado las leyes y regulaciones pertinentes o las disposiciones de este Acuerdo y las reglas relacionadas, según la gravedad de la violación del usuario, Saitong tiene el derecho de eliminar la información ilegal, restringir, suspender, terminar el uso del servicio del Software por parte del usuario, perseguir la responsabilidad legal del usuario y tomar otras medidas que Saitong considere apropiadas. Si sufrimos alguna pérdida (incluyendo, entre otras, recibir reclamaciones de terceros o sanciones de cualquier departamento administrativo), el Usuario será totalmente responsable.

+ +

8. Riesgos del servicio y exención de responsabilidad

+

8.1 Queremos proporcionar soporte de servicio con la tecnología actual. Saitong no garantiza que el Servicio del Software funcionará sin interrupciones o errores, que todos los defectos del Servicio del Software serán corregidos, o que el Servicio del Software cumplirá con todos los requisitos de los usuarios. Las consecuencias resultantes no serán responsabilidad de Saitong.

+

8.2 Todas las pérdidas sufridas por el usuario debido a terceros como fallos en la línea de comunicación, problemas técnicos, fallos de red, del equipo terminal del ordenador, del sistema, inestabilidad y otras causas de fuerza mayor no serán responsabilidad nuestra.

+

8.3 Saitong no garantiza la legalidad, autenticidad, precisión y efectividad del contenido de información obtenido a través del software (incluyendo, entre otros, el contenido de servicios de terceros), y Saitong no asume ninguna responsabilidad por los resultados de cualquier comportamiento realizado por los usuarios basándose en consultas y visualizaciones.

+

8.4 El software, como la mayoría del software de Internet, se ve afectado por diferencias en factores que incluyen, entre otros, razones del usuario, calidad del servicio de red, entorno social y otros factores, y puede estar sujeto a diversos problemas de seguridad, como que otros utilicen la información del usuario, resultando en acoso en la vida real; otro software descargado e instalado por los usuarios u otros sitios web visitados por los usuarios contienen virus como "troyanos", que amenazan la seguridad de la información y los datos del equipo terminal de los usuarios, y luego afectan el uso normal del software. Los usuarios deben reforzar la conciencia de seguridad de la información y la protección de datos del usuario, y prestar atención a fortalecer la protección de contraseñas para evitar pérdidas y acoso.

+

8.5 Cuando los usuarios usan el Software o requieren que Saitong proporcione servicios específicos, el Software puede llamar a sistemas de terceros o software de terceros para apoyar el uso o acceso de los usuarios, y los resultados del uso o acceso son proporcionados por terceros. Además de cumplir con las reglas pertinentes de este Acuerdo, los usuarios también deben cumplir con los acuerdos y reglas pertinentes de terceros. Los usuarios deben comprender y aceptar que, al usar servicios de terceros, estos pueden leer datos del usuario, y Saitong no garantiza la seguridad, precisión, efectividad y otros riesgos inciertos de los resultados logrados a través de sistemas de terceros o soporte de software de terceros, los usuarios deben ejercer un juicio prudente, y Saitong no asume ninguna responsabilidad por cualquier disputa y daño causado por esto.

+

8.6 Con el fin de garantizar la autonomía del desarrollo empresarial y el ajuste de la empresa, la empresa puede modificar o interrumpir el servicio en cualquier momento después de notificar al usuario de manera razonable.

+

8.7 Excepto según lo expresamente previsto por las leyes y regulaciones, Saitong hará sus mejores esfuerzos para garantizar que el software y la tecnología e información involucradas sean seguros, efectivos, precisos y confiables, pero limitado por la tecnología existente, el usuario comprende que Saitong no puede garantizar esto.

+

8.8 La compensación por lesiones personales o daños económicos incidentales e indirectos causados por o en conexión con cualquiera de las siguientes circunstancias, incluyendo, entre otros, pérdida de beneficios, pérdida de datos, daños por interrupción comercial u otros daños o pérdidas comerciales, será responsabilidad del Usuario:

+

1) Uso o imposibilidad de usar el software licenciado.

+

2) Uso no autorizado del software o alteración de datos del usuario por parte de terceros.

+

3) Gastos y pérdidas incurridos por las acciones del usuario con el software.

+

4) Conceptos erróneos del usuario sobre el software.

+

5) Cualquier otra pérdida relacionada con el software que no sea atribuible a causas de Saitong.

+

8.9 El Usuario acepta que la Empresa tiene el derecho de suspender, interrumpir o terminar todo o parte del Servicio al usuario según los requisitos de las autoridades judiciales, reguladoras y de supervisión o por sus propias razones comerciales. Saitong no acepta ninguna responsabilidad por esto.

+

8.10 El Usuario comprende y acepta que la Empresa utilizará sus esfuerzos comercialmente razonables para garantizar la seguridad del almacenamiento de datos en el Software y los Servicios, pero la empresa no puede proporcionar una garantía completa, y el Usuario comprende que la Empresa no es responsable de la eliminación o el fallo en el almacenamiento o copia de seguridad de datos en el Servicio.

+

8.11 En la máxima medida permitida por la ley, el Desarrollador o Proveedor no será responsable de ningún daño directo, indirecto, incidental, especial o consecuente que surja del uso de la Aplicación. Si el usuario tiene necesidades adicionales, acuda a un hospital regular para pruebas en profundidad.

+ +

9. Declaración de propiedad intelectual

+

9.1 Saitong es el titular de los derechos de propiedad intelectual de este software. Todos los derechos de autor, marcas comerciales, patentes, secretos comerciales y otros derechos de propiedad intelectual del software, así como todo el contenido de información relacionado con el software (incluyendo, entre otros, texto, imágenes, audio, video, gráficos, diseño de interfaz, marco de diseño, datos relevantes o documentos electrónicos, etc.) están protegidos por las leyes y regulaciones locales y los tratados internacionales correspondientes.

+

9.2 Sin el consentimiento por escrito de la Empresa, el Usuario no implementará, utilizará ni transferirá los derechos de propiedad intelectual anteriores para ningún propósito comercial o no comercial, ni permitirá que ningún tercero lo haga, y la Empresa se reserva el derecho de perseguir la responsabilidad legal por los actos anteriores.

+ +

10. Modificación del protocolo

+

10.1 Saitong tiene el derecho de modificar los términos de este Acuerdo cuando sea necesario. Una vez que los términos del Acuerdo sean modificados, los términos revisados del Acuerdo se publicarán en la página correspondiente. Si no está de acuerdo con el contenido modificado, el usuario debe tomar la iniciativa de cancelar este servicio. Si el Usuario continúa usando los Servicios, se considerará que acepta los cambios en los términos del Acuerdo.

+

10.2 Saitong se reserva el derecho de modificar o cambiar los servicios de pago, estándares de cobro, métodos de cobro, tarifas de servicio y términos de servicio proporcionados según sea necesario. Al proporcionar servicios, podemos cobrar ciertas tarifas a los usuarios de algunos servicios ahora o en el futuro. Si los usuarios se niegan a pagar dichas tarifas, no podrán continuar usando los servicios relevantes después del inicio de los cobros.

+
+ + diff --git a/doc/et/privacy_policy.html b/doc/et/privacy_policy.html new file mode 100644 index 000000000..ebc41b865 --- /dev/null +++ b/doc/et/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitransi privaatsuspoliitika + + + + +
+

Voitransi privaatsuspoliitika

+

Viimati uuendatud: 27. mai 2025

+

Jõustumiskuupäev: 27. mai 2025

+ +

Tere tulemast kasutama Voitransi tarkvara ja teenuseid

+

1. Voitransi pakub Saitong Industries Inc. (edaspidi „Ettevõte“). Voitrans aitab kasutajatel hallata Bluetooth-seadmeid ja muid tooteid. Mõistame isikuandmete olulisust meie kasutajatele (edaspidi „teie“) ning et teie isikuandmete tõhus kaitse on meie äritegevuse tervisliku ja jätkusuutliku arengu nurgakivi. Täname teid Voitransi toodete või teenuste kasutamise ja usalduse eest! Oleme täielikult teadlikud, et seda usaldust ei ole lihtne võita. Järgime avatuse ja läbipaistvuse põhimõtet ning selgitame teile oma reegleid teie isikuandmete töötlemisel. Töötleme teie isikuandmeid seaduslikul ja õiguspärasel viisil ning selgete ja mõistlike eesmärkidega. Erimärkus: palun lugege see privaatsuspoliitika enne meie toodete või teenuste kasutamist hoolikalt läbi ja veenduge, et mõistate selle sisu, et saaksite teha sobivaid valikuid.

+

2. See privaatsuspoliitika selgitab, kuidas me kogume, kasutame, säilitame ja jagame teie isikuandmeid, kui te kasutate Voitransi. Isikuandmed on igasugune elektroonilisel või muul viisil salvestatud teave, mis võimaldab tuvastada konkreetset füüsilist isikut või kajastada konkreetse füüsilise isiku tegevust üksikult või koos muu teabega. Voitrans austab ja kaitseb kõigi teenuse kasutajate privaatsust. Välja arvatud käesolevas privaatsuspoliitikas sätestatud juhtudel ei avalda Voitrans seda teavet avalikkusele ega edasta seda kolmandatele isikutele ilma teie eelneva loata.

+

3. Kui kasutate kolmanda osapoole toodet või teenust App Marketplace’i kaudu, kohaldub teie isikuandmetele selle kolmanda osapoole privaatsuspoliitika.

+

4. Voitransi privaatsuspoliitikat võidakse aeg-ajalt uuendada. Nõustudes Voitransi teenuse kasutamise lepinguga ja asudes Voitransi kasutama, loetakse, et olete nõustunud kogu käesoleva privaatsuspoliitikaga. Kui te ei nõustu käesoleva privaatsuspoliitikaga, palun ärge kasutage Voitransi tarkvara ja teenuseid.

+

5. Asjakohaste teenuste tõhususe analüüsimiseks ja mõõtmiseks kasutame ja avaldame teie isikuandmeid kooskõlas käesoleva privaatsuspoliitika sätetega.

+ +

See privaatsuspoliitika aitab teil mõista järgmist:

+
    +
  • 1 Meie kogutav teave
  • +
  • 2 Teabe säilitamine
  • +
  • 3 Teabe turvalisus
  • +
  • 4 Kuidas me kogutud teavet kasutame
  • +
  • 5 Teabe jagamine
  • +
  • 6 Kuidas te oma isikuandmeid haldate
  • +
  • 7 Rakenduse lubade kirjeldus
  • +
  • 8 Kolmandate osapoolte SDK-de kasutamine
  • +
  • 9 Alaealiste kaitse
  • +
  • 10 Privaatsuspoliitika kehtivus ja uuendamine
  • +
  • 11 Kuidas meiega ühendust võtta
  • +
+ +

1. Meie kogutav teave

+

1. Voitransi kasutamise alguses alustame andmete kogumist selle kohta, kuidas te rakendust kasutate.

+

2. Voitrans võib saada teie kohta isikuandmeid kolmandatelt isikutelt või äripartneritelt seaduslikel viisidel.

+

3. Selleks, et pakkuda teile paremaid tooteid ja teenuseid, tagada kasutamise ajal võrgu turvalisus, hoida toodete tavapärast toimimist ning neid optimeerida ja parandada, kogume pärast seda, kui te olete aktiivselt klõpsanud nõustumist käesoleva privaatsuspoliitikaga, lisaks rakenduse põhifunktsioonide tavapäraseks toimimiseks vajalikele isikuandmetele (vastavalt riiklikele seadustele ja määrustele) ka muud isikuandmeid:

+

3.1 Riskikasutajate tuvastamiseks, kasutajate autentsuse hindamiseks ja pettuste ennetamiseks loeme iga kord, kui avate rakenduse, teie seadme teavet, sh: (seadme mudel, seadme MAC-aadress, seadme unikaalne identifikaator (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID jne), MEID, seerianumber, Wi‑Fi SSID ja BSSID), Bluetoothi aadress, operatsioonisüsteemi versioon, operatsioonisüsteemi nimi, kasutaja sisselogimiskonto ja parooli teave;

+

3.2 Kui kasutate meie tooteid ja teenuseid, võime koguda teatud teavet võrgu logiteabe või teatud programmide ja tarkvara kaudu, sh: toodete ja teenuste kasutamise üksikasjad (nt rakenduse avamise aeg, kasutuse kestus ja külastatud lehe aadress); seadme sündmuste teave (nt kokkujooksmised, süsteemi aktiivsus jne) teie seadme optimeerimiseks ja meie teenuste parandamiseks;

+

3.3 Seadme riskis olevate rakenduste tuvastamiseks ja turvalisemate funktsionaalsete teenuste pakkumiseks peame protsessi käigus hankima teie rakenduste/paigaldatud rakenduste loendi, et tagada toote tavapärane toimimine ja kaitsta seadme turvalisust.

+

3.4 Rakenduse funktsioonide kasutamise analüüsimiseks ja kasutajate autentsuse määramiseks peame tegema andmestatistikat ning koguma ülaltoodud seadme teavet (sh seadme MAC-aadress ja seadme unikaalne identifikaator), kui teie seade on kasutusel.

+

3.5 Seadme signaal: kasutatava seadme võrguolek, Wi‑Fi pääsupunkti teave jne.

+

3.6 Asukohateave: võime kasutada GPS-i, Wi‑Fi-d või muid tehnilisi vahendeid teie asukoha teabe kogumiseks ja töötlemiseks, nt kohaliku teabe värskendamiseks ja sisuteenuste pakkumiseks.

+

Lisateabe saamiseks klõpsake „Isikuandmete kogumise loend“.

+ +

1. Ülaltoodud teabes sisalduvate tundlikumate isikuandmete (nt kasutaja seadme teave (IMEI number, kõnede olek ja identifitseerimisnumber), GPS-asukohateave, fotomeedia sisu ja failide juurdepääsuõigused) kogumiseks küsime enne kogumist teie nõusoleku. Mõne mittetundliku teabe kogumine võib olla vaikimisi ja automaatne. Saate meie juurdepääsu vastavale teabele või teatud lubade kasutamisele piirata oma mobiilseadme seadete kaudu. Kui piirate meie juurdepääsu teatud loale, ei pruugi me olla võimelised pakkuma teile vastavaid teenuseid ja me ei töötle enam teie vastavat teavet.

+

2. Me ei kogu teie isikutunnistuse numbrit, biomeetrilist teavet, pangakonto numbrit, varaandmeid, krediidiandmeid, tervise- ja füsioloogilist teavet ega muud tundlikku isikuandmete teavet.

+

3. Tundlike lubade kohta: rakenduse funktsioonide korrektseks kasutamiseks peab toode taotlema järgmisi õigusi, et pakkuda toodete tavapärase toimimisega seotud funktsionaalseid teenuseid.

+ +

1 Salvestusruumi lugemise ja kirjutamise luba

+

1 Kuidas saadakse: hüpikaken; loa taotlemisel klõpsab kasutaja aktiivselt „Nõustun“ ning rakendus kasutab seda luba

+

2 Kasutuse eesmärk ja ulatus: kasutatakse ressursi vahemälu failide ja pisipiltide skannimiseks süsteemis, muusikavahendite ja tootepiltide laadimiseks ning nende kuvamiseks rakenduse liideses, et kasutaja saaks neid vaadata ja kasutada

+ +

2 Paigaldatud rakenduste loendi luba

+

1 Kuidas saadakse: hüpikaken; loa taotlemisel klõpsab kasutaja aktiivselt „Nõustun“ ning rakendus kasutab seda luba

+

2 Kasutuse eesmärk ja ulatus: kui rakendus peab kasutama reklaami- ja turundusteenuseid, vajab kolmanda osapoole reklaamiplatvorm (Youmon +SDK) seadme „paigaldatud rakenduste loendi“ luba, et vältida kasutajale juba olemasolevate rakenduste soovitamist ja parandada kasutuskogemust.

+ +

3 Seadme olekuteabe saamise luba

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Kuidas saadakse: hüpikaken; loa taotlemisel klõpsab kasutaja aktiivselt „Nõustun“ ning rakendus kasutab seda luba

+

2 Kasutuse eesmärk ja ulatus: meie rakenduse kasutamisel võime kasutaja funktsioonikasutuse analüüsimiseks ja autentsuse hindamiseks sünkroonida selle loa kolmandate osapoolte SDK-dega, sh Autonavi SDK, Youmon +SDK jne.

+ +

4 Asukohateabele juurdepääs

+

1 Kuidas saadakse: hüpikaken; kasutaja kasutab seda luba ainult siis, kui ta on rakenduses aktiivselt nõustunud

+

2 Kasutuse eesmärk ja ulatus: kui rakendus peab kasutama GPS-i, Wi‑Fi-d või muid funktsioone, peab toode koguma teie asukoha- ja seotud teavet, et otsida läheduses asuvaid Bluetooth-seadmeid.

+

Märkus: teiste rakenduse lubade kohta vt selle dokumendi „Privaatsuspoliitika“ jaotist 7 „Rakenduse lubade kirjeldus“.

+ +

2. Teabe säilitamine

+

1. Kus teavet säilitatakse

+

Hiina Rahvavabariigis kogutud ja genereeritud isikuandmeid säilitatakse meie serverites ja/või meie sidusettevõtete serverites.

+

2. Teabe säilitamine ja töötlemine

+

Säilitame teie isikuandmeid ainult eesmärgi saavutamiseks vajaliku aja jooksul või nii kaua, kui seadus ja määrused seda nõuavad. Pärast seda, kui lõpetate toote kasutamise, lõpetame viivitamatult teie isikuandmete ja rakenduse andmete kogumise ja töötlemise. Kui ülaltoodud periood on möödunud, kustutame või anonüümime teie poolt meile esitatud isikuandmed.

+

Lisaks vajalikele funktsioonidele peab Voitrans taotlema vastavaid süsteemilube. Pilveserver ei säilita kasutaja isikuandmeid ning kasutatavad kolmandate osapoolte SDK-d anonüümistatakse ja deidentifitseeritakse teenusepakkuja poolt (Amu Statistics SDK, Autonavi SDK), mistõttu kasutajaid ei saa jälgida. Kasutaja telefoni salvestatud teave kustutatakse automaatselt, kui kasutaja eemaldab Voitransi või puhastab vahemälu.

+ +

3. Teabe turvalisus

+

1. Voitrans säilitab ja kaitseb teie isikuandmeid tööstusharu standarditele vastavate turvameetmete ja tehnoloogiatega, näiteks autentimine, andmete krüpteerimine, piiratud juurdepääs andmekeskusele ja muud turvameetmed, et kaitsta teie teavet avalikustamise, muutmise ja hävitamise eest. Hoolimata eeltoodust palume arvestada, et ükski turvameede ei saa tagada 100% turvalisust.

+

2. Voitransi teenuste kasutamisel palun kaitske oma isikuandmeid. Kui märkate, et teie isikuandmed võivad olla ohustatud, võtke meiega kohe ühendust, et saaksime rakendada sobivaid meetmeid.

+ +

4. Kuidas me kogutud teavet kasutame

+

1. Rakenduse ärifunktsioonide elluviimisel võime kasutada teie isikuandmeid, et tagada teile pakutavate toodete ja teenuste terviklikkus ja turvalisus;

+

2. Kogutud teabe abil mõistame teie kasutusharjumusi ning andmeanalüüsi abil hindame teenuste vastuvõetavust, teie kasutusharjumusi jne, et testida ja luua uusi tooteid, funktsioone ja teenuseid, parandada teenuse taset ning aidata meil parandada olemasolevaid teenuseid ja arendada uusi teenuseid;

+

3. Võime kasutada teie isikuandmeid kliendiuuringuteks toodete ja teenuste kohta, toodete ja teenuste teavituste saatmiseks ning kommertspromotsiooniks;

+

4. Võime kasutada teie teavet rakendusega seotud sisemiseks analüüsiks ja teadustööks;

+ +

5. Teabe jagamine

+

Praegu me ei jaga ega edasta aktiivselt teie isikuandmeid ettevõttest väljaspool olevatele kolmandatele isikutele. Kui teie isikuandmete jagamine või edastamine on siiski vajalik, küsime teie selgesõnalist nõusolekut või kinnitame, et kolmas isik on teie selgesõnalise nõusoleku saanud.

+

Me ei avalikusta kogutud isikuandmeid. Kui avalikustamine on vajalik, teavitame teid avalikustamise eesmärgist, avalikustatava teabe liigist ning võimalikult kaasnevast tundlikust teabest ja küsime teie selgesõnalist nõusolekut.

+

Kuna meie äritegevus areneb, võime osaleda ühinemistes, omandamistes, varade ülekandmises ja muudes tehingutes. Teavitame teid asjakohastest asjaoludest kooskõlas seaduste ja määrustega ning mitte madalama standardiga kui käesolevas juhendis nõutud, et jätkata teie isikuandmete kaitsmist või nõuda uuelt vastutavalt isikult teie isikuandmete kaitse jätkamist.

+

Lisaks võime kooskõlas asjakohaste seaduste, määruste ja riiklike standarditega jagada, edastada või avalikustada isikuandmeid ilma eelneva loa ja nõusolekuta järgmistes olukordades:

+
    +
  • 1 Otseselt seotud riigi julgeoleku ja riigikaitse julgeolekuga;
  • +
  • 2 Otseselt seotud avaliku turvalisuse, rahvatervise või oluliste avalike huvidega;
  • +
  • 3 Otseselt seotud kriminaaluurimise, süüdistuse, kohtumenetluse ja kohtuotsuste täitmisega;
  • +
  • 4 Isikuandmete subjekti või teiste isikute elu, vara ja muude oluliste seaduslike õiguste ja huvide kaitsmiseks, kuid nõusolekut on raske saada;
  • +
  • 5 Isikuandmete subjekti enda poolt avalikkusele avalikustatud isikuandmed;
  • +
  • 6 Isikuandmete kogumine seaduslikult avalikustatud teabest, nagu seaduslikud uudislood, valitsuse teabe avalikustamine ja muud kanalid.
  • +
+ +

6. Kuidas te oma isikuandmeid haldate

+

Kooskõlas Hiina asjakohaste seaduste, määruste ja standarditega ning teiste riikide ja piirkondade tavapraktikaga tagame, et saate oma isikuandmete suhtes kasutada järgmisi õigusi:

+ +

1. Oma isikuandmete parandamine

+

Kui leiate, et meie poolt töödeldud isikuandmetes on viga, on teil õigus parandada või uuendada vale või puudulik teave. Kui te ei saa seda kontokeskuses iseseisvalt teha, võite meiega ühendust võtta e-posti teel: saitong.voitrans@gmail.com

+ +

2. Oma isikuandmete kustutamine

+

Järgmistes olukordades võite esitada meile taotluse oma isikuandmete kustutamiseks:

+
    +
  • Kui töötleme isikuandmeid vastuolus seaduste ja määrustega;
  • +
  • Kui kogume ja kasutame teie isikuandmeid ilma teie nõusolekuta;
  • +
  • Kui meie isikuandmete töötlemine rikub meie kokkulepet teiega;
  • +
  • Kui te ei kasuta enam meie tooteid või teenuseid;
  • +
  • Kui me ei paku teile enam tooteid või teenuseid.
  • +
+

Võtke meiega ühendust aadressil saitong.voitrans@gmail.com. Töötleme teie taotluse ja saadame teile vastuse 30 tööpäeva jooksul alates taotluse kättesaamisest.

+ +

3. Nõusoleku ulatuse muutmine

+

Võite meiega ühendust võtta e-posti teel: saitong.voitrans@gmail.com. Teie taotlusel ei kogu, kasuta ega avalikusta me enam teie isikuandmeid. Palun arvestage, et nõusoleku tagasivõtmine või isikuandmete kustutamine võib mõjutada mõnede meie teenuste kasutamist.

+ +

4 Isikuandmete juurdepääs ja kopeerimine

+

Vastavalt asjakohaste seaduste sätetele võite esitada oma imei (telefoni seerianumber) või oaid või Android ID ning kontoandmed ja muu teabe, et taotleda meilt juurdepääsu ja koopiat oma isikuandmetest. Võite meiega ühendust võtta e-posti teel: 3514406195@qq.com

+ +

5. Vastus teie taotlusele

+

Turvalisuse huvides võib teil olla vaja esitada kirjalik taotlus või muul viisil tõendada oma isikut. Võime paluda teil enne taotluse töötlemist oma isikut kinnitada. Mõistlikele taotlustele vastame ja tegeleme nendega õigeaegselt. Võime keelduda taotlustest, mis on tarbetult korduvad, nõuavad liiga palju tehnilisi ressursse (nt uute süsteemide arendamist või olemasolevate praktikate olulist muutmist), kujutavad endast ohtu teiste seaduslikele huvidele või on praktiliselt teostamatud.

+

Järgmistel asjaoludel ei pruugi me seaduste ja määruste nõuete kohaselt olla võimelised teie taotlusele vastama:

+
    +
  • Seotud riigi julgeoleku ja riigikaitse julgeolekuga;
  • +
  • Seoses kriminaaluurimise, süüdistuse ja kohtumenetlusega;
  • +
  • On piisavalt tõendeid, et teil on pahatahtlik kavatsus või te kuritarvitate õigusi;
  • +
  • Teie taotlusele vastamine põhjustaks tõsist kahju teie või teiste isikute/organisatsioonide seaduslikele õigustele ja huvidele.
  • +
+ +

6. Konto kustutamine

+

Kasutaja saab rakenduses teha toimingu [konto kustutamine]. Toimingud:

+
    +
  1. Minge lehele [My]
  2. +
  3. Vajutage paremal ülal [Settings]
  4. +
  5. Kinnitamiseks vajutage [Cancel account]
  6. +
+

Pärast konto kustutamist kustutatakse kasutajakonto teave

+ +

7. Rakenduse lubade kirjeldus

+

Parema toote ja teenuse pakkumiseks taotleme tarkvara kasutamisel järgmisi õigusi. Kui sisenete avalehele või kasutate funktsiooni, küsitakse autoriseerimist. Kui keeldute, ei pruugi mõned vastavad funktsioonid tavapäraselt töötada. Lubade konkreetsed eesmärgid ja teavitused on järgmised:

+ +

1 Asukohaõigused:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Wi‑Fi või mobiilside tugijaama kaudu saadakse kasutaja laius- ja pikkuskraadi asukohateave

+

Voitransi kasutamisel otsime teie seotud Bluetooth-seadet teie geograafilise asukoha alusel. Samal ajal jagame teenuse stabiilsuse tagamiseks, toodete optimeerimiseks ja kasutuskogemuse parandamiseks ülaltoodud teavet kolmandate osapoolte SDK-dega (nt Youmon, Autonavi), et saada Voitransi tööandmeid ja funktsionaalseid teenuseid.

+

Teavitamise viis: rakenduse esmakordsel käivitamisel kuvatakse loa teavituse hüpikaken ning kasutaja peab nõustumise kinnitama. Kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

2 Salvestusõigused

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

See luba on vajalik, kui kasutate rakendust rakenduste haldamise funktsioonide täitmiseks.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

3 Võrguõigused:

+

android.permission.INTERNET

+

Need neid õigused on vajalikud Voitransi teabeserviste ja versiooni uuendamise teenuste jaoks. Kasutuskogemuse parandamiseks ja teenusevõimekuse optimeerimiseks võivad neid õigusi kasutada ka kolmandate osapoolte SDK-d.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

4 Võrguoleku õigused:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Kasutatakse selleks, et tuvastada, kas praegune võrguühendus on kehtiv, hinnata võrgu keskkonda (nt 4G) ning teavitada võrgu keskkonna muutustest, mis võivad mõjutada teabe laadimist. Seda luba taotletakse Voitransi kasutamisel.

+

Võrguoleku muutused mõjutavad andmete üles- ja allalaadimist, seetõttu võib võrguoleku loa kasutamine olla jagatud ka teiste platvormidega.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

5 Ülesannete loendi õigus:

+

android.permission.GET_TASKS

+

Seda luba kasutatakse rakenduste loendi hankimiseks tarkvara haldamise funktsiooni jaoks. Tarkvara haldamise funktsiooni kasutamisel tuleb lugeda telefoni paigaldatud rakendusi.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

6 MAC-aadressi luba

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Voitransi kasutamisel võib rakendus vajada MAC-aadressi luba:

+

Kui rakendus peab raporteerima sihtkonversiooni andmeid, võivad kolmandate osapoolte platvormid nagu Youmon +SDK kasutada MAC-aadressi.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

7 Heli salvestamise luba

+

android.permission.RECORD_AUDIO

+

Kui kasutate Voitransi hääl-sisestuse funktsiooni, on vajalik heli salvestamise luba. Seda kasutatakse peamiselt hääl-sisestuseks tõlkimisel ja muude seotud funktsioonide jaoks.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas; vajadusel kuvatakse dünaamiline hüpikaken.

+ +

8 Wi‑Fi SSID luba

+

Selle loa kasutamisel loeb rakendus Wi‑Fi SSID teavet:

+

Kasutuse eesmärk ja ulatus: kui rakendus peab kasutama andmeanalüüsi teenuseid, võivad kolmandate osapoolte platvormid lugeda seadme „Wi‑Fi SSID“ teavet, et pakkuda kasutajatele täpsemaid ja tõhusamaid funktsionaalseid teenuseid.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

9 Bluetoothi juurdepääs

+

Selle loa kasutamisel kasutab rakendus Bluetoothi õigusi:

+

Kasutuse eesmärk ja ulatus: Bluetooth-seadmete ja tarvikute otsimine ning seadistamine (nt Bluetooth-kõrvaklapid, Bluetooth-kellad jne), et kasutajal oleks lihtne neid hallata

+

Teavitamise viis: rakenduse esmakordsel käivitamisel kuvatakse loa hüpikaken ning kasutaja peab nõustumise kinnitama. Kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

10 Wi‑Fi BSSID luba

+

Kui rakendus peab kasutajat eristama ja tuvastama, et pakkuda funktsionaalseid teenuseid ja koostada statistikat, loeb see seadme „Wi‑Fi BSSID“ teavet:

+

Kasutuse eesmärk ja ulatus: 1) kolmandate osapoolte platvormid, nagu Youmeng SDK, Bugly SDK, Autonavi SDK

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

11 Rakenduste installimise luba

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Tarkvara kasutab rakenduste installimise luba peamiselt selleks, et kasutajad saaksid uue versiooni installida ja uusi funktsioone kasutada, kui uus versioon on saadaval.

+

Teavitamise viis: kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

12 Kaamera luba

+

android.permission.CAMERA

+

Voitrans kasutab kaamera luba QR-koodide skaneerimiseks ning Bluetooth-seadmete (nt Bluetooth-kõrvaklapid ja kellad) sidumiseks.

+

Teavitamise viis: rakenduse esmakordsel käivitamisel kuvatakse loa hüpikaken ning kasutaja peab nõustumise kinnitama. Kirjeldus kasutajalepingus ja privaatsuspoliitikas.

+ +

Erimärkus:

+

1 Rakendus integreerib kolmandate osapoolte SDK-sid. Pärast seda, kui kasutaja on nõustunud, võib rakendus taustal/esiplaanil koguda ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI ja muud isikuandmed;

+

Märkus: lisateabe saamiseks vt allpool SDK-ga seotud sisu ja lube [VIII. Kolmandate osapoolte SDK-de loend].

+ +

8. Kolmandate osapoolte SDK-de kasutamine

+

1 Meie kliendi stabiilse töö ja funktsioonide realiseerimise tagamiseks ning selleks, et saaksite kasutada rohkem teenuseid ja funktsioone, võib meie rakendus integreerida kolmandate osapoolte tarkvaraarenduse komplekte (SDK) või muid sarnaseid komponente. Need kolmandad osapooled koguvad ja töötlevad asjakohast teavet vastavalt oma privaatsuspoliitikatele, et pakkuda funktsioone ja reklaamiteenuseid. Kolmandate osapoolte teabe kogumise ja töötlemise reeglitega saate tutvuda järgmises jaotises. Teostame partnerite SDK-dele ranged turvatestid, et kaitsta teie isikuandmete mõistlikku kasutust ja turvalisust. Pange tähele, et kolmandate osapoolte SDK-d võivad versiooniuuenduste tõttu muuta andmetöötluse liike. Palun viidake kolmandate osapoolte SDK-de avaldatud privaatsuspoliitikatele. Vaadake üksikasju allpool või vaadake kolmanda osapoole SDK-de loendit.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Saadav teave: seadme number, IP-aadress, seadme tarkvarateave, seadme identifitseerimiskood (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kaardi IMSI teave, IP, MAC-aadress), seadme identifikaator, piirkond, seadmega seotud rakenduste teave ja muu teenusega seotud logiteave

+

Kasutuse eesmärk: WeChati sisselogimine ja jagamine

+

Arendaja: Shenzhen Tencent Computer Systems Company Limited

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Saadav teave: rakenduse nimi, rakenduse versioon, seadme bränd ja mudel, operatsioonisüsteem, operaatori teave, ekraani eraldusvõime, andurite teave (vektor, kiirendus, rõhk, suund, geomagnetiline, güroskoop, temperatuur, valgusandur, NMEA signaal), seadme signaali tugevuse teave

+

Kasutuse eesmärk: navigeerimine Amapi abil

+

Arendaja: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Saadav teave: rakenduse nimi, rakenduse versioon, seadme bränd ja mudel, operatsioonisüsteem, võrguteave, seadme signaali tugevus jne.

+

Kasutuse eesmärk: kaardi kuvamine ja interaktsioon

+

Arendaja: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Saadav teave: asukohateave (GPS, Wi‑Fi, tugijaam), seadme teave, võrguteave jne.

+

Kasutuse eesmärk: asukohateenuste pakkumine

+

Arendaja: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Saadav teave: rakenduse nimi, rakenduse versioon, seadme teave, võrguteave jne.

+

Kasutuse eesmärk: kaarditööriistad ja renderduse optimeerimine

+

Arendaja: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Saadav teave: seadme identifikaatorid, seadme põhiandmed, paigaldatud tarkvara loend ja võrguteave (täpsemalt vt ametlikku privaatsuspoliitikat)

+

Kasutuse eesmärk: Alipay kontoga sisselogimine ja maksete käivitamine

+

Arendaja: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Saadav teave: SDK/API versioon, platvorm, ajatempel, rakenduse identifikaator, rakenduse versioon, seadme tootja, OS versioon, lokaadid, ajavöönd, võrguolek (Wi‑Fi jne), võrgulogid, kokkujooksmiste ja kasutuse andmed, IP-aadress jne (täpsemalt vt ametlikku privaatsuspoliitikat)

+

Kasutuse eesmärk: rakenduse kvaliteedi monitoorimine ja andmete raporteerimise teenus

+

Arendaja: Shenzhen Tencent Computer Systems Company Limited

+

Kogumise viis: SDK kogub ise

+

Privaatsuspoliitika link: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Alaealiste kaitse

+

Meie toodete ja teenuste kasutajate hulka võivad kuuluda ka alla 18-aastased alaealised. Alaealised kasutajad peaksid enne meie toodete kasutamist küsima selle privaatsuspoliitika osas nõu oma vanematelt või seaduslikelt esindajatelt ning kasutama meie teenuseid või edastama meile teavet alles pärast vanema või eestkostja nõusolekut ja juhendamist. Alaealiste eestkostjad saavad küsimuste korral meiega ühendust võtta käesolevas privaatsuspoliitikas toodud kontaktandmete kaudu.

+

Kui te ei nõustu, et ülalnimetatud kolmandatest osapooltest teenusepakkujad koguvad eespool nimetatud teavet, palun lõpetage tarkvara kasutamine viivitamatult. Tarkvara kasutamise ajal koguvad ja töötlevad need kolmandad osapooled asjakohast teavet vastavalt oma privaatsuspoliitikatele, et pakkuda mõningaid funktsioone, reklaami ja muid teenuseid. Kui teave lekib nimetatud teabe kogumise tõttu vastava kolmanda osapoole teenusepakkuja poolt, kannab vastav kolmas osapool sellest tuleneva õigusliku vastutuse.

+ +

10. Privaatsuspoliitika kehtivus ja uuendamine

+

1. Käesolev privaatsuspoliitika kehtib alates avaldamise kuupäevast.

+

2. Kuna meie äritegevus areneb ja muutub, võib privaatsuspoliitika muutuda. Jätame endale õiguse privaatsuspoliitikat igal ajal muuta, seega palun kontrollige seda regulaarselt. Kui teeme muudatusi, avaldame need värskendused meie veebisaidil, rakendustes ja muudes sobivates kohtades, et teid teavitada. Privaatsuspoliitika uuendamisel jõustub see uuendamise kuupäevast. Meie toodete või teenuste jätkuv kasutamine tähendab, et nõustute muudetud privaatsuspoliitikaga.

+ +

11. Kuidas meiega ühendust võtta

+

Saitong Industries Inc asutati 22. novembril 2024, registreeritud aadress: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Kui soovite meie ettevõtte ja platvormi kohta rohkem teada, saate meiega ühendust võtta käesolevas poliitikas toodud kontaktandmete kaudu (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/et/user_agreement.html b/doc/et/user_agreement.html new file mode 100644 index 000000000..1dd32ed62 --- /dev/null +++ b/doc/et/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans rakenduse kasutajaprotokoll + + + +
+
Eesti
+ +

Voitrans rakenduse kasutajaprotokoll

+ +

Need kasutustingimused selgitavad, kuidas pääseda ligi Voitrans rakendusele ja veebiteenustele (edaspidi "Teenused") ning kuidas neid kasutada. Saitong Industries Inc. (edaspidi "Saitong") tuletab kasutajatele meelde hoolikalt läbi lugeda ja täielikult mõista käesolevat Kasutajalepingut (edaspidi "Leping"). Kasutajad peaksid hoolikalt läbi lugema ja täielikult mõistma käesoleva Lepingu tingimusi. Palun lugege hoolikalt ja valige, kas nõustute selle Lepinguga või mitte. Voitrans rakenduse (edaspidi "Rakendus" või "Tarkvara") kasutamist loetakse selle Lepingu aktsepteerimiseks ja nõustute olema seotud selle Lepingu tingimustega. Kui te selle Lepinguga ei nõustu, ärge kasutage Rakendust.

+

Saitong jätab endale õiguse seda Lepingut muuta ning Lepingu uuendatud tingimused avaldatakse selles Rakenduses, jõustudes avaldamise kuupäevast.

+ +

1. Üldreeglid

+

1.1 See Rakendus on Saitongi poolt pakutav tarkvara Saitongi ja tema partnerettevõtete väljastatud kõrvaklappide ühendamiseks. Tarkvara ja seotud teenuste omandiõigused ja kasutusõigused kuuluvad Saitongile.

+

1.2 Käesolev Leping on leping teie (edaspidi "Kasutaja") ja ettevõtte ning tema partnerite ja tegevuspartnerite (edaspidi "Partnerid") vahel kasutaja Rakenduse ja seotud teenuste kasutamise kohta.

+

1.3 Tarkvara ja teenused hõlmavad:

+

1.3.1 Pakutav tarkvara pakub Voitrans kasutajatele Voitrans ühendamist ja sidumist, funktsioonide seadete haldamist ning muid tarkvarateenuseid vastavalt Rakenduse tegelikele tarkvarateenustele.

+

1.3.2 Tarkvara uuendused, täiendused ja muud teenused.

+ +

2. Tarkvaralitsentsi ulatus

+

2.1 Anname Kasutajale isikliku, mitteülekantava, mitte-all-litsentsimisel, mitteeksklusiivse Tarkvara litsentsi.

+

2.2 Kasutajad võivad paigaldada, kasutada, kuvada ja käivitada tarkvara ühes mobiilses lõppseadmes mitteärilistel eesmärkidel. Siiski ei tohi kasutaja paigaldada, kasutada ega käivitada tarkvara ärilisel kasutuse eesmärgil, kopeerida, muuta, modifitseerida, ühendada ega käivitada tarkvara ega andmeid, mis on laaditud ükskõik millise lõppseadme mällu tarkvara töötamise ajal, ega vastasmõju andmeid kliendi ja serveri vahel tarkvara töötamise ajal, ega luua mis tahes tuletatud teoseid. See hõlmab, kuid ei piirdu, pistikprogrammide, lisandmoodulite või volitamata kolmandate osapoolte tööriistade/teenuste kasutamisega juurdepääsuks Tarkvarale ja seotud süsteemidele. Ärialase müügi, paljundamise ja levitamise jaoks, nagu tarkvara eelpaigaldamine ja komplekteerimine, tuleb saada kirjalik luba ja nõusolek.

+

2.3 Kasutaja ei tohi paigaldada Tarkvara teistesse lõppseadmetesse ilma looja selgesõnalise loata, sealhulgas, kuid mitte ainult, teleritesse, digitaalsetesse digiboksidesse, mängukonsoolidesse ja muudesse seadmetesse.

+

2.4 Välja arvatud selles Lepingus selgelt lubatud õigused, ei anta Kasutajale muid õigusi ning Kasutaja peab saama kirjaliku nõusoleku muude õiguste kasutamiseks.

+ +

3. Tarkvara uuendamine

+

3.1 Kasutaja peab valima tarkvaraversiooni, mis sobib paigaldatud lõppseadme konfiguratsiooniga. Vastasel juhul vastutab kasutaja ainuisikuliselt tarkvaraprobleemide, seadmeprobleemide või kahjustuste eest, mis on põhjustatud seadme tüübile mittesobivast tarkvaraversioonist.

+

3.2 Kasutajakogemuse parandamiseks ja teenuse sisu täiustamiseks on Saitongil õigus aeg-ajalt pakkuda asendus-, muudetud ja uuendatud tarkvaraversioone. Funktsioon "Uuenduse viip" on kasutajatele vaikimisi lubatud. Sõltuvalt kasutajate kasutatavatest erinevatest tarkvaraversioonidest pakub Saitong kasutajatele võimalust selle funktsiooni aktiveerimiseks. Pärast uue tarkvaraversiooni avaldamist ei garanteeri Saitong tarkvara vana versiooni jätkuvat kättesaadavust.

+ +

4. Kasutamise spetsifikatsioon

+

4.1 Kasutajad võivad kasutada Tarkvara ja Teenuseid vastavalt sellele Lepingule, järgides seadusi ja seda Lepingut, ning ei tohi sooritada järgmisi tegusid:

+

4.1.1 Kustutada kogu autoriõiguse teave Tarkvaralt ja muudelt koopiatelt ning muuta, kustutada või kõrvale hiilida Tarkvara poolt intellektuaalomandi õiguste kaitseks seatud tehnilistest meetmetest.

+

4.1.2 Teostada Tarkvara pöördprojekteerimist, nagu dekompileerimine, lahtivõtmine või muud katsed Tarkvara lähtekoodi saamiseks.

+

4.1.3 Tarkvara töötamise käigus juhiste ja andmete muutmise või võltsimise kaudu tarkvara funktsiooni või tööefekti lisamine, kustutamine või muutmine, või ülalnimetatud eesmärkidel mõeldud tarkvara või meetodite opereerimine või üldsusele levitamine, olenemata sellest, kas need tegevused on ärilistel eesmärkidel.

+

4.1.4 Kasutada tarkvara mis tahes võrguturvalisust ohustavaks käitumiseks, sealhulgas, kuid mitte ainult: volitamata andmete kasutamine või juurdepääs volitamata serveritele/kontodele; juurdepääs avalikele võrkudele või muudele operatsioonisüsteemidele ilma loata ning salvestatud teabe kustutamine, muutmine või lisamine; volitamata katsed uurida, skannida või testida tarkvara süsteemi või võrgu nõrkusi või muud võrguturvalisust kahjustavad tegevused; katsed häirida või hävitada tarkvarasüsteemi või veebisaidi normaalset tööd, pahatahtlike programmide või viiruste tahtlik levitamine ja muud normaalseid võrgu infoteenuseid häirivad tegevused; TCP/IP pakettide nimede või osaliste nimede võltsimine.

+

4.1.6 Ilma Ettevõtte kirjaliku nõusolekuta teostab kasutaja omavoliliselt järgmisi tegusid tarkvara ja selles sisalduva teabega, sealhulgas, kuid mitte ainult: kasutamine, rentimine, laenamine, kopeerimine, muutmine, linkimine, ületrükkimine, kompileerimine, avaldamine, väljaandmine, peegelsaitide loomine, tuletatavate toodete, teoste, teenuste, pistikprogrammide, lisandmoodulite, ühilduvuse, vastastikuse ühendamise jms arendamine Tarkvara abil.

+

4.1.7 Kasutada Tarkvara teie kohalikke seadusi rikkuva sisu avaldamiseks, edastamiseks, levitamiseks ja salvestamiseks.

+

4.1.8 Kasutada tarkvara teiste intellektuaalomandi õigusi, ärisaladusi ja muid seaduslikke õigusi rikkuva sisu avaldamiseks, edastamiseks, levitamiseks ja salvestamiseks.

+

4.1.9 Kasutada seda tarkvara reklaami ja rämpsteadete massiliseks avaldamiseks, edastamiseks ja levitamiseks.

+

4.1.10 Kasutada Tarkvara ja muid Teenuseid mis tahes ebaseaduslikul viisil, mis tahes ebaseaduslikul eesmärgil või mis tahes viisil, mis ei ole kooskõlas selle Lepingu litsentseeritud kasutamisega.

+

4.2 Teabe avaldamise spetsifikatsioon

+

4.2.1 Kui kasutate tarkvara teabe avaldamiseks (kui see on olemas), peaksite tagama, et teil on teie üleslaaditud infosisu intellektuaalomandi õigused või olete saanud seadusliku loa ning et ükski teie käitumine tarkvara ja teenuste kasutamisel ei riku ühegi kolmanda osapoole seaduslikke õigusi ja huve.

+

4.2.2 Tarkvara kasutamisel ei tohi kasutaja Tarkvara kaudu tegeleda järgmiste tegevustega, sealhulgas, kuid mitte ainult:

+

4.2.2.1 Luua, kopeerida, avaldada, levitada ja salvestada kohalikke riigiseadusi ja eeskirju rikkuvat sisu.

+

4.2.2.2 Avaldada, edastada, levitada ja salvestada teiste seaduslikke õigusi, nagu maine, portree, intellektuaalomand ja ärisaladused, rikkuvat sisu.

+

4.2.2.3 Fabriiseerida fakte, varjata tõde eesmärgiga eksitada või petta teisi.

+

4.2.2.4 Avaldada, edastada ja levitada reklaamiteavet ja rämpsteated.

+

4.2.2.5 Tegeleda muude kohalikke seadusi ja eeskirju rikkuvate tegudega.

+

4.2.3 Ilma Ettevõtte loata ei tohi te Tarkvaras teostada ärilisi tegevusi, nagu reklaamimine ja kaupade müümine.

+

4.3 Kasutaja mõistab ja nõustub, et:

+

4.3.1 Saitong otsustab, kas kasutajat kahtlustatakse ülalnimetatud kasutamise spetsifikatsioonide rikkumises, ja vastavalt otsuse tulemustele peatab või lõpetab teie kasutuslitsentsi või võtab muid piiravaid meetmeid, mida on võimalik selle lepingu kohaselt võtta.

+

4.3.2 Kasutaja poolt litsentseeritud tarkvara kasutamisel avaldatud sisu, mida kahtlustatakse ebaseaduslikkuses või teiste seaduslike õiguste rikkumises või selle Lepingu rikkumises, kustutatakse otse.

+

4.3.3 Kui kasutaja ülalnimetatud kasutusreeglite rikkumine põhjustab kahju kolmandatele osapooltele, peate kandma juriidilist vastutust iseseisvalt oma nimel ja tagama, et ettevõte ei kannataks kahjusid ega suurenenud kulusid.

+

4.3.4 Kui kasutaja rikub asjakohaseid õigusnorme või lepinguid, põhjustades Saitongile kahjusid, või allutatakse kolmandate osapoolte nõuetele, või karistatakse haldusvõimu poolt, hüvitab kasutaja Saitongile tekitatud kahjud ja/või kulud, sealhulgas mõistlikud advokaadatasud, uurimis- ja tõendite kogumise kulud.

+ +

5. Kolmandate osapoolte teenuste kirjeldus

+

5.1 Kasutaja mõistab ja nõustub, et tarkvarasüsteem võib sisaldada Ettevõtte sidusettevõtete või kolmandate osapoolte pakutavaid teenuseid ning et Ettevõte pakub süsteemis ainult asjakohaseid funktsionaalseid mooduleid kasutajate mugavuse huvides ja pakub juurdepääsu kolmandate osapoolte teenustele.

+

5.2 Olenemata sellest, kas kolmandate osapoolte teenused on tarkvarasüsteemi teenustes eelhäälestatud või kasutajad ise neid avanud või tellinud, mõistavad ja nõustuvad kasutajad, et Saitong ei anna ühtegi otsest ega kaudset garantiid kolmandate osapoolte teenusepakkujate või kasutajate seaduslikkuse ja tõhususe kohta ega kolmandate osapoolte teenuste seaduslikkuse, täpsuse, tõhususe ja turvalisuse kohta.

+

5.3 Ettevõte ei jälgi, kontrolli ega anna mingit garantiid ega tagatist kolmandate osapoolte teenuste kohta ega kanna nende eest mingit vastutust.

+

5.4 Mis tahes vaidlus või erimeelsus kasutaja ja kolmanda osapoole teenusepakkuja vahel lahendatakse Kasutaja ja kolmanda osapoole vahel vastavalt kolmanda osapoole teenusepakkuja äriprotsessidele ja ärinormidele ning Ettevõte ei kanna mingit vastutust.

+ +

6. Privaatsuspoliitika ja isikuandmete kaitse

+

6.1 Saitong kohustub kaitsma kasutajate privaatsust vastavalt privaatsuspoliitikale, palun vaadake: Voitrans Privaatsuspoliitika.

+ +

7. Rikkumise vastutus

+

7.1 Saitongil on õigus hinnata, kas kasutaja käitumine vastab selle Lepingu sätetele. Kui leitakse, et Kasutaja on rikkunud asjakohaseid seadusi ja eeskirju või selle Lepingu sätteid ja seotud reegleid, on Saitongil vastavalt kasutaja rikkumise raskusele õigus kustutada ebaseaduslik teave, piirata, peatada, lõpetada kasutaja Tarkvara teenuse kasutamine, nõuda kasutajalt juriidilist vastutust ja võtta muid meetmeid, mida Saitong peab asjakohaseks. Kui meile tekib mis tahes kahju (sealhulgas, kuid mitte ainult, mis tahes kolmandate osapoolte nõuete saamine või mis tahes haldusvõimu trahvid), kannab Kasutaja täielikku vastutust.

+ +

8. Teenuse riskid ja vastutuse välistused

+

8.1 Soovime pakkuda teenuse tuge praeguse tehnoloogiaga. Saitong ei garanteeri, et Tarkvara teenus töötab katkestusteta või vigadeta, et kõik Tarkvara teenuse puudused parandatakse või et Tarkvara teenus vastab kõigile kasutajate nõuetele. Sellest tulenevate tagajärgede eest Saitong vastutust ei kanna.

+

8.2 Kõigi kasutajale tekkinud kahjude eest, mis on põhjustatud kolmandatest osapooltest, nagu sideliini rike, tehnilised probleemid, võrk, arvuti lõppseadme rike, süsteemi ebastabiilsus ja muud vääramatu jõu põhjused, vastutust ei kanta.

+

8.3 Saitong ei garanteeri tarkvara kaudu saadud teabesisu (sealhulgas, kuid mitte ainult, kolmandate osapoolte teenuste sisu) seaduslikkust, autentsust, täpsust ja tõhusust ning Saitong ei kanna mingit vastutust kasutajate poolt päringu ja vaatamise põhjal tehtud käitumise tulemuste eest.

+

8.4 Tarkvara, nagu enamik internetitarkvara, on mõjutatud erinevustest tegurites, sealhulgas, kuid mitte ainult, kasutajapoolsetest põhjustest, võrguteenuste kvaliteedist, sotsiaalsest keskkonnast ja muudest teguritest, ning sellele võivad avaldada mõju erinevad turvaprobleemid, näiteks teised kasutavad kasutaja teavet, põhjustades ahistamist päriselus; kasutajate alla laaditud ja paigaldatud muu tarkvara või kasutajate külastatud muud veebisaidid sisaldavad viirusi nagu "Trooja hobused", mis ohustavad kasutajate lõppseadmete teabe ja andmete turvalisust ning mõjutavad seejärel tarkvara normaalset kasutamist. Kasutajad peaksid tugevdama teadlikkust infoturvalisusest ja kasutajaandmete kaitsest ning pöörama tähelepanu paroolikaitse tugevdamisele, et vältida kahjusid ja ahistamist.

+

8.5 Kui kasutajad kasutavad Tarkvara või nõuavad Saitongilt konkreetsete teenuste osutamist, võib Tarkvara kutsuda kolmandate osapoolte süsteeme või kolmandate osapoolte tarkvara kasutajate kasutamise või juurdepääsu toetamiseks ning kasutamise või juurdepääsu tulemused pakub kolmas osapool. Lisaks selle Lepingu asjakohaste reeglite järgimisele peavad kasutajad järgima ka kolmanda osapoole lepinguid ja asjakohaseid reegleid. Kasutajad peavad mõistma ja nõustuma, et kolmandate osapoolte teenuste kasutamisel võivad kolmandad osapooled lugeda kasutajate andmeid ning Saitong ei garanteeri kolmandate osapoolte süsteemide või kolmandate osapoolte tarkvara toe kaudu saavutatud tulemuste turvalisust, täpsust, tõhusust ega muid ebamääraseid riske; kasutajad peaksid teostama hoolikat hindamist ning Saitong ei kanna mingit vastutust sellest tulenevate vaidluste ja kahjude eest.

+

8.6 Ettevõtte äritegevuse arengu ja kohandamise autonoomia tagamiseks võib ettevõte igal ajal teenust muuta või katkestada pärast kasutaja mõistlikku teavitamist.

+

8.7 Välja arvatud juhul, kui seadused ja eeskirjad seda selgesõnaliselt ette näevad, teeb Saitong kõik endast oleneva, et tarkvara ning sellega seotud tehnoloogia ja teave oleksid turvalised, tõhusad, täpsed ja usaldusväärsed, kuid arvestades olemasolevat tehnoloogiat, mõistab kasutaja, et Saitong ei saa seda garanteerida.

+

8.8 Hüvitis kehavigastuse eest või juhuslike ja kaudsete majanduslike kahjude eest, mis on põhjustatud mis tahes järgmisest asjaolust või sellega seotud, sealhulgas, kuid mitte ainult, saamata jäänud kasum, andmete kaotus, kahjuhüvitis äritegevuse katkestuse või muude ärikahjude eest, jääb Kasutaja kanda:

+

1) Litsentseeritud tarkvara kasutamine või suutmatus seda kasutada.

+

2) Kolmandate osapoolte poolt tarkvara volitamata kasutamine või kasutajaandmete muutmine.

+

3) Kasutaja tegevustest tarkvaraga tulenevad kulud ja kahjud.

+

4) Kasutaja väärarusaamad tarkvarast.

+

5) Mis tahes muu tarkvaraga seotud kahju, mis ei ole omistatav Saitongi põhjustele.

+

8.9 Kasutaja nõustub, et Ettevõttel on õigus peatada, katkestada või lõpetada kogu teenus või osa sellest kasutajale kohtu-, regulatiiv- ja järelevalveasutuste nõuete alusel või oma äritegevuse põhjustel. Saitong ei kanna selle eest mingit vastutust.

+

8.10 Kasutaja mõistab ja nõustub, et Ettevõte rakendab äriliselt mõistlikke jõupingutusi andmete salvestamise turvalisuse tagamiseks Tarkvaras ja Teenustes, kuid ettevõte ei saa pakkuda täielikku garantiid ning Kasutaja mõistab, et Ettevõte ei vastuta andmete kustutamise või salvestamise või varundamise ebaõnnestumise eest Teenuses.

+

8.11 Seadusega lubatud ulatuses ei vastuta arendaja ega tarnija mis tahes otseste, kaudsete, juhuslike, eri- ega kaudsete kahjude eest, mis tulenevad Rakenduse kasutamisest. Kui kasutajal on täiendavaid vajadusi, pöörduge süvauuringuks vastava haigla poole.

+ +

9. Intellektuaalomandi avaldus

+

9.1 Saitong on selle tarkvara intellektuaalomandi õiguste omanik. Kõik tarkvara autoriõigused, kaubamärgid, patendid, ärisaladused ja muud intellektuaalomandi õigused ning kogu tarkvaraga seotud teabesisu (sealhulgas, kuid mitte ainult, tekst, pildid, heli, video, graafika, liidese kujundus, paigutuse raamistik, asjakohased andmed või elektroonilised dokumendid jne) on kaitstud kohalike seaduste ja eeskirjadega ning vastavate rahvusvaheliste lepingutega.

+

9.2 Ilma Ettevõtte kirjaliku nõusolekuta ei tohi Kasutaja rakendada, kasutada ega üle kanda ülalnimetatud intellektuaalomandi õigusi mis tahes äriliseks või mitteäriliseks eesmärgiks ega lubada ühtegi kolmandat osapoolt ning Ettevõte jätab endale õiguse nõuda ülalnimetatud tegude eest juriidilist vastutust.

+ +

10. Protokolli muutmine

+

10.1 Saitongil on õigus vajadusel muuta selle Lepingu tingimusi. Kui Lepingu tingimused muutuvad, avaldatakse muudetud Lepingu tingimused vastaval lehel. Kui te muudetud sisuga ei nõustu, peaks kasutaja omal algatusel selle teenuse tühistama. Kui Kasutaja jätkab Teenuste kasutamist, loetakse, et ta nõustub Lepingu tingimuste muudatustega.

+

10.2 Saitong jätab endale õiguse vajadusel muuta või kohandada tasulisi teenuseid, tasustandardeid, tasuviise, teenustasusid ja teenusetingimusi. Teenuste osutamisel võime praegu või tulevikus nõuda teatud teenuste kasutajatelt teatud tasusid. Kui kasutajad keelduvad selliseid tasusid maksmast, ei saa nad jätkata vastavate teenuste kasutamist pärast tasude kehtima hakkamist.

+
+ + diff --git a/doc/fa/privacy_policy.html b/doc/fa/privacy_policy.html new file mode 100644 index 000000000..b594ad58f --- /dev/null +++ b/doc/fa/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + سیاست حفظ حریم خصوصی Voitrans + + + + +
+

سیاست حفظ حریم خصوصی Voitrans

+

آخرین به‌روزرسانی: 27 مه 2025

+

تاریخ اجرا: 27 مه 2025

+ +

به استفاده از نرم‌افزار و خدمات Voitrans خوش آمدید

+

1. Voitrans توسط شرکت Saitong Industries Inc. (از این پس «شرکت») ارائه می‌شود و می‌تواند به کاربران در مدیریت دستگاه‌های بلوتوث و سایر محصولات کمک کند. ما اهمیت اطلاعات شخصی برای کاربران خود (از این پس «شما») را درک می‌کنیم و می‌دانیم که حفاظت مؤثر از اطلاعات شخصی شما سنگ‌بنای توسعه سالم و پایدار کسب‌وکار ما است. از استفاده و اعتماد شما به محصولات یا خدمات Voitrans سپاسگزاریم. ما کاملاً آگاهیم که این اعتماد به‌راحتی به دست نمی‌آید؛ بنابراین با پایبندی به اصل شفافیت، قواعد خود درباره نحوه پردازش اطلاعات شخصی شما را بیان می‌کنیم و اطلاعات شخصی شما را به روش‌های قانونی و با اهداف روشن و معقول پردازش می‌نماییم. نکته مهم: لطفاً پیش از استفاده از محصولات یا خدمات ما، این سیاست حفظ حریم خصوصی را با دقت مطالعه و درک کنید تا بتوانید انتخاب‌های مناسبی انجام دهید.

+

2. این سیاست حفظ حریم خصوصی توضیح می‌دهد که هنگام استفاده شما از Voitrans چگونه اطلاعات شخصی شما را جمع‌آوری، استفاده، ذخیره و به اشتراک می‌گذاریم. «اطلاعات شخصی» به هر نوع اطلاعات ثبت‌شده به صورت الکترونیکی یا سایر روش‌ها گفته می‌شود که می‌تواند یک شخص حقیقی مشخص را شناسایی کند یا فعالیت‌های او را به تنهایی یا در ترکیب با سایر اطلاعات منعکس نماید. Voitrans به حریم خصوصی همه کاربران احترام گذاشته و از آن محافظت می‌کند. مگر در مواردی که در این سیاست به طور دیگری مقرر شده باشد، Voitrans بدون اجازه قبلی شما این اطلاعات را به صورت عمومی افشا نکرده و در اختیار اشخاص ثالث قرار نمی‌دهد.

+

3. اگر از طریق محصولات یا خدمات App Marketplace از محصولات یا خدمات شخص ثالث استفاده کنید، اطلاعات شخصی شما تابع سیاست حفظ حریم خصوصی همان شخص ثالث خواهد بود.

+

4. این سیاست حفظ حریم خصوصی Voitrans ممکن است هر از گاهی به‌روزرسانی شود. با پذیرش «توافق‌نامه استفاده از خدمات Voitrans» و شروع استفاده از Voitrans، شما موافقت خود را با تمامی مفاد این سیاست حفظ حریم خصوصی اعلام کرده‌اید. اگر با این سیاست موافق نیستید، لطفاً از نرم‌افزار و خدمات Voitrans استفاده نکنید.

+

5. برای تحلیل و سنجش اثربخشی خدمات مرتبط، ما اطلاعات شخصی شما را مطابق مفاد این سیاست حفظ حریم خصوصی استفاده و در صورت نیاز افشا خواهیم کرد.

+ +

این سیاست حفظ حریم خصوصی به شما کمک می‌کند موارد زیر را درک کنید:

+
    +
  • 1 اطلاعاتی که جمع‌آوری می‌کنیم
  • +
  • 2 نگهداری اطلاعات
  • +
  • 3 امنیت اطلاعات
  • +
  • 4 چگونه از اطلاعات جمع‌آوری‌شده استفاده می‌کنیم
  • +
  • 5 اشتراک‌گذاری اطلاعات
  • +
  • 6 چگونه اطلاعات شخصی خود را مدیریت می‌کنید
  • +
  • 7 توضیح مجوزهای برنامه
  • +
  • 8 دسترسی به SDKهای شخص ثالث
  • +
  • 9 حفاظت از افراد زیر سن قانونی
  • +
  • 10 اعتبار و به‌روزرسانی سیاست حفظ حریم خصوصی
  • +
  • 11 روش‌های تماس با ما
  • +
+ +

1. اطلاعاتی که جمع‌آوری می‌کنیم

+

1. در آغاز استفاده از Voitrans، جمع‌آوری داده‌ها درباره نحوه استفاده شما از برنامه را شروع می‌کنیم.

+

2. Voitrans ممکن است از طریق روش‌های قانونی، اطلاعات شخصی درباره شما را از اشخاص ثالث یا شرکای تجاری دریافت کند.

+

3. برای ارائه محصولات و خدمات بهتر، تأمین امنیت شبکه هنگام استفاده، حفظ عملکرد عادی محصولات و بهینه‌سازی و بهبود آن‌ها، پس از آن‌که شما به‌طور فعال با این سیاست حفظ حریم خصوصی موافقت می‌کنید، علاوه بر اطلاعات شخصی ضروری برای اجرای صحیح عملکردهای پایه برنامه مطابق قوانین و مقررات، اطلاعات شخصی دیگری نیز از شما جمع‌آوری خواهیم کرد:

+

3.1 برای شناسایی کاربران پرخطر، سنجش اصالت کاربران و جلوگیری همه‌جانبه از تقلب، هر بار که برنامه را باز می‌کنید اطلاعات دستگاه شما را می‌خوانیم، از جمله: (مدل دستگاه، MAC address دستگاه، شناسه یکتای دستگاه (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID و غیره)، MEID، شماره سریال، SSID و BSSID شبکه Wi‑Fi)، همچنین آدرس بلوتوث، نسخه سیستم‌عامل، نام سیستم‌عامل، اطلاعات حساب کاربری و رمز عبور برای ورود؛

+

3.2 هنگام استفاده از محصولات و خدمات ما، ممکن است از طریق اطلاعات لاگ شبکه یا برخی برنامه‌ها و نرم‌افزارها اطلاعاتی جمع‌آوری کنیم؛ این اطلاعات می‌تواند شامل جزئیات استفاده از محصولات و خدمات باشد مانند زمان باز کردن برنامه، مدت استفاده و آدرس صفحه بازدیدشده؛ همچنین اطلاعات رویدادهای دستگاه مانند کرش‌ها و فعالیت سیستم برای بهینه‌سازی دستگاه شما و بهبود خدمات ما؛

+

3.3 برای شناسایی برنامه‌هایی که باعث ریسک برای دستگاه می‌شوند و ارائه خدمات عملکردی امن‌تر، لازم است در فرایند، فهرست برنامه‌ها/فهرست برنامه‌های نصب‌شده شما را دریافت کنیم تا عملکرد عادی محصول تضمین و امنیت دستگاه محافظت شود.

+

3.4 برای تحلیل استفاده کاربران از قابلیت‌های برنامه و تعیین اصالت کاربران، لازم است آمارگیری داده انجام دهیم و هنگام استفاده از دستگاه، اطلاعات دستگاه فوق (از جمله MAC address و شناسه یکتای دستگاه) را جمع‌آوری کنیم.

+

3.5 سیگنال دستگاه: وضعیت شبکه دستگاهی که استفاده می‌کنید، اطلاعات نقطه دسترسی Wi‑Fi و غیره.

+

3.6 اطلاعات مکانی: ممکن است از GPS، Wi‑Fi یا سایر روش‌های فنی برای جمع‌آوری و پردازش اطلاعات مربوط به موقعیت مکانی شما جهت به‌روزرسانی اطلاعات محلی، ارائه خدمات محتوایی و غیره استفاده کنیم.

+

برای اطلاعات بیشتر، لطفاً روی «فهرست جمع‌آوری اطلاعات شخصی» کلیک کنید.

+ +

1. برای اطلاعات شخصی حساس‌تر در موارد فوق، مانند اطلاعات دستگاه کاربر (شماره IMEI، وضعیت تماس و شماره شناسایی)، اطلاعات مکانی GPS، محتوای رسانه‌ای عکس و مجوزهای دسترسی به فایل، پیش از جمع‌آوری رضایت شما را دریافت می‌کنیم. برای برخی اطلاعات غیرحساس، جمع‌آوری ممکن است به صورت پیش‌فرض و خودکار انجام شود. شما می‌توانید از طریق تنظیمات دستگاه همراه خود، جمع‌آوری اطلاعات مرتبط یا استفاده از برخی مجوزها را محدود کنید. هنگامی که دسترسی ما به یک مجوز را محدود می‌کنید، ممکن است نتوانیم ارائه برخی خدمات متناظر را ادامه دهیم و اطلاعات متناظر شما را دیگر پردازش نکنیم.

+

2. ما شماره کارت شناسایی، اطلاعات بیومتریک، شماره حساب بانکی، اطلاعات دارایی، اطلاعات اعتباری، اطلاعات سلامت و فیزیولوژیک و سایر اطلاعات حساس شخصی شما را جمع‌آوری نمی‌کنیم.

+

3. درباره مجوزهای حساس: برای استفاده صحیح از قابلیت‌های برنامه، محصول باید مجوزهای زیر را برای ارائه خدمات عملکردی مرتبط با عملکرد عادی محصول دریافت کند.

+ +

1 دریافت مجوز خواندن و نوشتن حافظه

+

1 نحوه دریافت: پیام پنجره‌ای؛ هنگام درخواست مجوز، کاربر به‌صورت فعال روی «موافقم» کلیک می‌کند و برنامه از این مجوز استفاده خواهد کرد

+

2 هدف و دامنه استفاده: برای اسکن فایل‌های کش منابع و تصاویر کوچک در سیستم، بارگذاری منابع موسیقی و تصاویر محصول و نمایش آن‌ها در رابط برنامه به منظور تسهیل مشاهده و کار با آن‌ها توسط کاربر استفاده می‌شود

+ +

2 دریافت مجوز فهرست برنامه‌های نصب‌شده

+

1 نحوه دریافت: پیام پنجره‌ای؛ هنگام درخواست مجوز، کاربر به‌صورت فعال روی «موافقم» کلیک می‌کند و برنامه از این مجوز استفاده خواهد کرد

+

2 هدف و دامنه استفاده: وقتی برنامه نیاز به استفاده از خدمات تبلیغاتی/ترویجی دارد، پلتفرم تبلیغاتی شخص ثالث (Youmon +SDK) باید مجوز «فهرست برنامه‌های نصب‌شده» دستگاه را دریافت کند تا از پیشنهاد برنامه‌هایی که کاربر از قبل دارد جلوگیری شود و تجربه کاربری بهبود یابد.

+ +

3 مجوز دریافت اطلاعات وضعیت دستگاه

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 نحوه دریافت: پیام پنجره‌ای؛ هنگام درخواست مجوز، کاربر به‌صورت فعال روی «موافقم» کلیک می‌کند و برنامه از این مجوز استفاده خواهد کرد

+

2 هدف و دامنه استفاده: هنگام استفاده از برنامه ما، برای تحلیل نحوه استفاده کاربر از قابلیت‌های برنامه و سنجش اصالت کاربر، ممکن است این مجوز را با SDKهای شخص ثالث همگام‌سازی کنیم، از جمله Autonavi SDK، Youmon +SDK و غیره.

+ +

4 دسترسی به اطلاعات مکانی

+

1 نحوه دریافت: پیام پنجره‌ای؛ کاربر تنها زمانی از این مجوز استفاده می‌کند که به‌صورت فعال روی «موافقم» کلیک کند

+

2 هدف و دامنه استفاده: هنگامی که برنامه نیاز به استفاده از GPS، Wi‑Fi یا سایر قابلیت‌ها دارد، محصول باید اطلاعات موقعیت مکانی شما را برای جستجوی دستگاه‌های بلوتوث در نزدیکی جمع‌آوری کند.

+

توجه: برای سایر مجوزهای برنامه، به بخش 7 «توضیح مجوزهای برنامه» در این سند «سیاست حفظ حریم خصوصی» مراجعه کنید.

+ +

2. نگهداری اطلاعات

+

1. محل ذخیره‌سازی اطلاعات

+

اطلاعات شخصی که در جمهوری خلق چین جمع‌آوری و تولید می‌کنیم بر روی سرورهای ما و/یا سرورهای شرکت‌های وابسته ما ذخیره خواهد شد.

+

2. ذخیره‌سازی و پردازش اطلاعات

+

ما اطلاعات شخصی شما را فقط به مدت لازم برای تحقق هدف یا تا زمانی که قوانین و مقررات الزام می‌کنند نگهداری می‌کنیم. پس از آن‌که استفاده از این محصول را متوقف کنید، فوراً جمع‌آوری و پردازش اطلاعات شخصی و داده‌های برنامه شما را متوقف می‌کنیم. پس از پایان دوره فوق، اطلاعات شخصی ارائه‌شده توسط شما را حذف یا ناشناس‌سازی می‌کنیم.

+

علاوه بر قابلیت‌های ضروری، Voitrans باید مجوزهای سیستم متناظر را درخواست کند. سمت سرور (کلود) اطلاعات شخصی کاربران را ذخیره نمی‌کند و SDKهای شخص ثالثِ مورد استفاده توسط ارائه‌دهنده خدمت (Amu Statistics SDK, Autonavi SDK) ناشناس‌سازی و حذف شناسه می‌شوند؛ بنابراین کاربران قابل ردیابی نیستند. اطلاعات ذخیره‌شده روی تلفن کاربر در صورت حذف نصب Voitrans یا پاک‌کردن کش، به‌طور خودکار حذف می‌شود.

+ +

3. امنیت اطلاعات

+

1. Voitrans اطلاعات شخصی شما را با استفاده از اقدامات و فناوری‌های امنیتی مطابق با استانداردهای صنعت، مانند احراز هویت، رمزنگاری داده، محدودیت دسترسی به مراکز داده و سایر اقدامات امنیتی ذخیره و محافظت می‌کند تا از افشا، تغییر یا تخریب جلوگیری شود. با وجود اقدامات فوق، لطفاً توجه داشته باشید هیچ اقدام امنیتی 100٪ ایمن نیست.

+

2. هنگام استفاده از خدمات Voitrans، لطفاً از اطلاعات شخصی خود محافظت کنید. اگر متوجه شدید اطلاعات شخصی شما به خطر افتاده است، فوراً با ما تماس بگیرید تا اقدامات مناسب انجام دهیم.

+ +

4. چگونه از اطلاعات جمع‌آوری‌شده استفاده می‌کنیم

+

1. هنگام اجرای قابلیت‌های تجاری برنامه، ممکن است از اطلاعات شخصی شما برای تضمین یکپارچگی و امنیت محصولات و خدماتی که ارائه می‌دهیم استفاده کنیم؛

+

2. از طریق اطلاعات جمع‌آوری‌شده، عادات استفاده شما را درک می‌کنیم و با کمک تحلیل داده‌ها میزان پذیرش خدمات، عادات استفاده و موارد مشابه را شناسایی می‌کنیم تا محصولات، قابلیت‌ها و خدمات جدید را آزمایش و ایجاد کنیم، سطح خدمت را بهبود دهیم و خدمات موجود را بهینه کرده و خدمات جدید توسعه دهیم؛

+

3. ممکن است از اطلاعات شخصی شما برای نظرسنجی‌های مشتریان درباره محصولات و خدمات، ارسال اطلاعیه‌های مربوط به محصولات و خدمات و نیز ترویج تجاری استفاده کنیم؛

+

4. ممکن است از اطلاعات شما برای تحلیل و پژوهش‌های داخلی مرتبط با برنامه استفاده کنیم؛

+ +

5. اشتراک‌گذاری اطلاعات

+

در حال حاضر ما اطلاعات شخصی شما را به‌صورت فعال با اشخاص ثالث خارج از شرکت به اشتراک نمی‌گذاریم یا منتقل نمی‌کنیم. اگر لازم باشد اطلاعات شخصی شما به اشتراک گذاشته یا منتقل شود، مستقیماً رضایت صریح شما را دریافت می‌کنیم یا تأیید می‌کنیم که شخص ثالث رضایت صریح شما را برای اقدام فوق دریافت کرده است.

+

ما اطلاعات شخصی جمع‌آوری‌شده را به‌صورت عمومی افشا نمی‌کنیم. اگر افشای عمومی ضروری باشد، هدف افشا، نوع اطلاعات افشاشده و اطلاعات حساس احتمالی را به شما اطلاع می‌دهیم و رضایت صریح شما را دریافت می‌کنیم.

+

با توسعه کسب‌وکار، ممکن است وارد ادغام، تملک، انتقال دارایی و سایر معاملات شویم. ما مطابق قوانین و مقررات شما را از شرایط مرتبط مطلع می‌کنیم و با استانداردی نه کمتر از الزامات این سند، همچنان از اطلاعات شخصی شما محافظت خواهیم کرد یا از کنترل‌کننده جدید می‌خواهیم حفاظت از اطلاعات شخصی شما را ادامه دهد.

+

علاوه بر این، مطابق قوانین، مقررات و استانداردهای ملی مرتبط، ممکن است در شرایط زیر بدون اخذ مجوز و رضایت قبلیِ صاحب داده، اطلاعات شخصی را به اشتراک بگذاریم، منتقل کنیم یا به‌صورت عمومی افشا کنیم:

+
    +
  • 1 به‌طور مستقیم مرتبط با امنیت ملی و امنیت دفاع ملی باشد؛
  • +
  • 2 به‌طور مستقیم مرتبط با امنیت عمومی، سلامت عمومی یا منافع عمده عمومی باشد؛
  • +
  • 3 به‌طور مستقیم مرتبط با تحقیقات کیفری، تعقیب، دادرسی و اجرای احکام باشد؛
  • +
  • 4 برای حفاظت از جان، مال و سایر حقوق و منافع مشروع مهمِ صاحب داده یا سایر افراد، اما دریافت رضایت دشوار باشد؛
  • +
  • 5 اطلاعات شخصی توسط خودِ صاحب داده به‌صورت عمومی افشا شده باشد؛
  • +
  • 6 اطلاعات شخصی از منابعی که به‌طور قانونی عمومی شده‌اند جمع‌آوری شود، مانند گزارش‌های خبری قانونی، افشای اطلاعات دولتی و سایر کانال‌ها.
  • +
+ +

6. چگونه اطلاعات شخصی خود را مدیریت می‌کنید

+

مطابق قوانین، مقررات و استانداردهای مرتبط چین و همچنین رویه‌های رایج سایر کشورها و مناطق، ما تضمین می‌کنیم که شما می‌توانید حقوق زیر را نسبت به اطلاعات شخصی خود اعمال کنید:

+ +

1. اصلاح اطلاعات شخصی

+

اگر متوجه شدید اطلاعات شخصی شما که توسط ما پردازش می‌شود دارای خطا است، حق دارید اطلاعات نادرست یا ناقص را اصلاح یا به‌روزرسانی کنید. اگر نتوانید به‌طور مستقل در مرکز حساب کاربری اقدام کنید، می‌توانید از طریق ایمیل saitong.voitrans@gmail.com با ما تماس بگیرید.

+ +

2. حذف اطلاعات شخصی

+

در موارد زیر می‌توانید از ما درخواست کنید اطلاعات شخصی شما را حذف کنیم:

+
    +
  • اگر ما اطلاعات شخصی را برخلاف قوانین و مقررات پردازش کنیم؛
  • +
  • اگر بدون رضایت شما اطلاعات شخصی را جمع‌آوری و استفاده کنیم؛
  • +
  • اگر پردازش اطلاعات شخصی ما ناقض توافق ما با شما باشد؛
  • +
  • اگر دیگر از محصولات یا خدمات ما استفاده نکنید؛
  • +
  • اگر دیگر به شما محصولات یا خدمات ارائه ندهیم.
  • +
+

با ما در saitong.voitrans@gmail.com تماس بگیرید. درخواست شما را بررسی می‌کنیم و ظرف 30 روز کاری پس از دریافت، نتیجه را به شما اطلاع می‌دهیم.

+ +

3. تغییر دامنه رضایت

+

می‌توانید از طریق ایمیل saitong.voitrans@gmail.com با ما تماس بگیرید. به درخواست شما، دیگر اطلاعات شخصی شما را جمع‌آوری، استفاده یا افشا نخواهیم کرد. لطفاً توجه داشته باشید که لغو رضایت یا حذف اطلاعات شخصی می‌تواند بر استفاده شما از برخی خدمات ما اثر بگذارد.

+ +

4 دسترسی و دریافت نسخه از اطلاعات شخصی

+

مطابق قوانین مرتبط، می‌توانید imei (شماره سریال تلفن) یا oaid یا Android ID خود را به همراه اطلاعات حساب و سایر اطلاعات ارائه دهید و برای دسترسی و دریافت نسخه از اطلاعات شخصی خود درخواست دهید. می‌توانید از طریق ایمیل 3514406195@qq.com با ما در تماس باشید.

+ +

5. پاسخ به درخواست‌های فوق

+

به دلایل امنیتی، ممکن است لازم باشد درخواست کتبی ارائه دهید یا به نحوی دیگر هویت خود را اثبات کنید. ما ممکن است پیش از رسیدگی به درخواست، از شما بخواهیم هویت خود را تأیید کنید. به درخواست‌های معقول شما به‌موقع پاسخ داده و رسیدگی می‌کنیم. ممکن است درخواست‌هایی را که به‌طور غیرضروری تکراری هستند، نیازمند فناوری بیش از حد هستند (برای مثال توسعه سیستم‌های جدید یا تغییرات بنیادی در رویه‌های موجود)، برای منافع مشروع دیگران خطر ایجاد می‌کنند یا به‌شدت غیرعملی هستند رد کنیم.

+

در شرایط زیر، مطابق قوانین و مقررات، ممکن است نتوانیم به درخواست شما پاسخ دهیم:

+
    +
  • مرتبط با امنیت ملی و امنیت دفاع ملی؛
  • +
  • مرتبط با تحقیقات کیفری، تعقیب و دادرسی؛
  • +
  • شواهد کافی از سوءنیت یا سوءاستفاده از حقوق وجود داشته باشد؛
  • +
  • پاسخ‌گویی به درخواست شما باعث آسیب جدی به حقوق و منافع مشروع شما یا سایر افراد و سازمان‌ها شود.
  • +
+ +

6. لغو/حذف حساب

+

کاربر می‌تواند عملیات [لغو حساب] را در برنامه انجام دهد. مراحل:

+
    +
  1. به صفحه [My] بروید
  2. +
  3. روی دکمه [Settings] در بالا سمت راست کلیک کنید
  4. +
  5. برای تأیید روی [Cancel account] کلیک کنید
  6. +
+

پس از لغو حساب، اطلاعات حساب کاربری پاک می‌شود

+ +

7. توضیح مجوزهای برنامه

+

برای ارائه محصولات و خدمات بهتر، هنگام استفاده از نرم‌افزار، مجوزهای زیر را درخواست می‌کنیم. زمانی که وارد صفحه اصلی می‌شوید یا از یک قابلیت استفاده می‌کنید، درخواست مجوز نمایش داده می‌شود؛ اگر رد کنید، برخی قابلیت‌ها ممکن است به‌درستی کار نکنند. اهداف و شیوه‌های اطلاع‌رسانی مجوزها به‌صورت زیر است:

+ +

1 مجوزهای مکان:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

از طریق Wi‑Fi یا ایستگاه پایه موبایل، اطلاعات موقعیت مکانی کاربر (عرض و طول جغرافیایی) دریافت می‌شود

+

هنگام استفاده از Voitrans، بر اساس موقعیت جغرافیایی شما، دستگاه بلوتوث متصل را جستجو می‌کنیم. همچنین برای ارائه خدمات پایدارتر، بهینه‌سازی محصولات و بهبود تجربه، ممکن است اطلاعات فوق را با SDKهای شخص ثالث مانند Youmon و Autonavi به اشتراک بگذاریم تا داده‌های عملیاتی Voitrans و خدمات عملکردی فراهم شود.

+

شیوه اطلاع‌رسانی: در اولین اجرای برنامه، پنجره درخواست مجوز نمایش داده می‌شود و کاربر باید پذیرش را تأیید کند. توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی آمده است.

+ +

2 مجوزهای حافظه

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

این مجوز زمانی لازم است که برای اجرای قابلیت‌های مدیریت برنامه‌ها به یک برنامه دسترسی پیدا می‌کنید.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

3 مجوزهای شبکه:

+

android.permission.INTERNET

+

این مجوزها برای خدمات اطلاعاتی Voitrans و خدمات ارتقای نسخه لازم هستند و برای بهبود تجربه کاربری و بهینه‌سازی توانمندی خدمات، SDKهای شخص ثالث نیز ممکن است از این مجوزها استفاده کنند.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

4 مجوزهای وضعیت شبکه:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

برای تشخیص معتبر بودن اتصال شبکه فعلی، ارزیابی محیط شبکه (مثل 4G) و اطلاع‌رسانی تغییرات محیط شبکه که می‌تواند روی بارگذاری محتوا اثر بگذارد استفاده می‌شود. این مجوز هنگام استفاده از Voitrans درخواست می‌شود.

+

تغییر وضعیت شبکه روی بارگذاری و آپلود داده‌ها اثر می‌گذارد؛ بنابراین دسترسی به مجوز وضعیت شبکه ممکن است با پلتفرم‌های شخص ثالث نیز استفاده شود.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

5 مجوز فهرست وظایف:

+

android.permission.GET_TASKS

+

این مجوز برای دریافت فهرست برنامه‌ها جهت قابلیت مدیریت نرم‌افزار استفاده می‌شود. هنگام استفاده از این قابلیت، لازم است برنامه‌های نصب‌شده روی تلفن همراه خوانده شوند.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

6 مجوز MAC address

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

هنگام استفاده از Voitrans، برنامه ممکن است به مجوز MAC address نیاز داشته باشد:

+

وقتی برنامه نیاز به گزارش داده‌های تبدیل هدف دارد، پلتفرم‌های شخص ثالث مانند Youmon +SDK ممکن است از MAC استفاده کنند.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

7 مجوز ضبط صدا

+

android.permission.RECORD_AUDIO

+

هنگام استفاده از قابلیت ورودی صوتی Voitrans، مجوز ضبط صدا لازم است و عمدتاً برای ورودی صوتی جهت ترجمه و سایر قابلیت‌های مرتبط استفاده می‌شود.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی؛ در صورت نیاز، پنجره درخواست به‌صورت پویا نمایش داده می‌شود.

+ +

8 مجوز SSID شبکه Wi‑Fi

+

با استفاده از این مجوز، برنامه SSID شبکه Wi‑Fi را می‌خواند:

+

دامنه و هدف: زمانی که برنامه نیاز به خدمات تحلیل داده دارد، پلتفرم‌های شخص ثالث ممکن است «Wi‑Fi SSID» دستگاه را بخوانند تا خدمات عملکردی دقیق‌تر و مؤثرتری ارائه شود.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

9 دسترسی به بلوتوث

+

با استفاده از این مجوز، برنامه از مجوزهای بلوتوث استفاده می‌کند:

+

دامنه و هدف: برای جستجو و پیکربندی لوازم جانبی بلوتوث مانند هدست‌های بلوتوث، ساعت‌های بلوتوث و غیره تا مدیریت برای کاربر آسان‌تر باشد

+

شیوه اطلاع‌رسانی: در اولین اجرای برنامه، پنجره درخواست مجوز نمایش داده می‌شود و کاربر باید پذیرش را تأیید کند. توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

10 مجوز BSSID شبکه Wi‑Fi

+

وقتی برنامه برای ارائه خدمات عملکردی و آمارگیری داده نیاز به تفکیک و شناسایی کاربر دارد، «Wi‑Fi BSSID» دستگاه را می‌خواند:

+

دامنه و هدف: 1) پلتفرم‌های شخص ثالث مانند Youmeng SDK، Bugly SDK، Autonavi SDK

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

11 مجوز نصب برنامه‌ها

+

android.permission.REQUEST_INSTALL_PACKAGES

+

نرم‌افزار از مجوز نصب برنامه‌ها استفاده می‌کند که عمدتاً برای این است که کاربران بتوانند هنگام ارائه نسخه جدید، نسخه جدید را نصب کرده و قابلیت‌های جدید را تجربه کنند.

+

شیوه اطلاع‌رسانی: توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

12 مجوز دوربین

+

android.permission.CAMERA

+

Voitrans از مجوز دوربین برای اسکن QR کدها و اتصال دستگاه‌های بلوتوث مانند هدست‌های بلوتوث و ساعت‌ها استفاده می‌کند.

+

شیوه اطلاع‌رسانی: در اولین اجرای برنامه، پنجره درخواست مجوز نمایش داده می‌شود و کاربر باید پذیرش را تأیید کند. توضیحات در توافق‌نامه کاربر و سیاست حفظ حریم خصوصی.

+ +

یادداشت ویژه:

+

1 برنامه SDKهای شخص ثالث را یکپارچه می‌کند. پس از موافقت کاربر، برنامه می‌تواند در پس‌زمینه/پیش‌زمینه اطلاعاتی مانند ICCID، IMSI، IMEI، SN، ANDROID، BSSID، ANDROID ID، SSID، IMSI و سایر اطلاعات شخصی را جمع‌آوری کند؛

+

توضیحات: برای اطلاعات بیشتر، به محتوای مرتبط با SDK و مجوزها در ادامه مراجعه کنید [VIII. فهرست SDKهای شخص ثالث].

+ +

8. دسترسی به SDKهای شخص ثالث

+

1 برای تضمین عملکرد پایدار و تحقق قابلیت‌های کلاینت ما و نیز برای این‌که بتوانید از خدمات و قابلیت‌های بیشتری استفاده کنید، برنامه ما ممکن است SDK (software development kit) یا اجزای مشابهِ اشخاص ثالث را در خود ادغام کند. این اشخاص ثالث مطابق سیاست‌های حفظ حریم خصوصی خود، اطلاعات مرتبط را جمع‌آوری و پردازش می‌کنند تا خدمات عملکردی و تبلیغاتی را به‌طور معمول ارائه دهند. در بخش‌های بعدی می‌توانید درباره قواعد جمع‌آوری و پردازش اطلاعات توسط اشخاص ثالث بیشتر بدانید. ما برای حفاظت از استفاده معقول و امنیت اطلاعات شخصی شما، آزمون‌های امنیتی سخت‌گیرانه‌ای روی SDKهای شرکا انجام می‌دهیم. لطفاً توجه داشته باشید که SDKهای شخص ثالث ممکن است به دلیل ارتقای نسخه، انواع پردازش داده را تغییر دهند. لطفاً به سیاست‌های حفظ حریم خصوصی منتشرشده توسط SDKهای شخص ثالث مراجعه کنید. جزئیات در ادامه آمده است یا می‌توانید فهرست SDKهای شخص ثالث را مشاهده کنید.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

اطلاعات دریافت‌شده: شماره دستگاه، IP address، اطلاعات نرم‌افزار دستگاه، کد شناسایی دستگاه (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, اطلاعات IMSI سیم‌کارت، IP، MAC address)، شناسه دستگاه، منطقه، اطلاعات برنامه‌های مرتبط با دستگاه و سایر اطلاعات لاگ مرتبط با سرویس

+

هدف استفاده: ورود و اشتراک‌گذاری در WeChat

+

توسعه‌دهنده: Shenzhen Tencent Computer Systems Company Limited

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

اطلاعات دریافت‌شده: نام برنامه، نسخه برنامه، برند و مدل دستگاه، سیستم‌عامل، اطلاعات اپراتور، رزولوشن صفحه، اطلاعات حسگرها (vector، acceleration، pressure، direction، geomagnetic، gyroscope، temperature، light sensor، NMEA signal)، اطلاعات قدرت سیگنال دستگاه

+

هدف استفاده: مسیریابی با استفاده از Amap

+

توسعه‌دهنده: Beijing Gaode Tuqiang Technology Co., Ltd.

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

اطلاعات دریافت‌شده: نام برنامه، نسخه برنامه، برند و مدل دستگاه، سیستم‌عامل، اطلاعات شبکه، قدرت سیگنال دستگاه و غیره.

+

هدف استفاده: نمایش نقشه و تعامل

+

توسعه‌دهنده: Beijing Gaode Tuqiang Technology Co., Ltd.

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

اطلاعات دریافت‌شده: اطلاعات مکان (GPS، Wi‑Fi، base station)، اطلاعات دستگاه، اطلاعات شبکه و غیره.

+

هدف استفاده: ارائه خدمات مکان‌یابی

+

توسعه‌دهنده: Beijing Gaode Tuqiang Technology Co., Ltd.

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

اطلاعات دریافت‌شده: نام برنامه، نسخه برنامه، اطلاعات دستگاه، اطلاعات شبکه و غیره.

+

هدف استفاده: ابزارهای نقشه و بهینه‌سازی رندر

+

توسعه‌دهنده: Beijing Gaode Tuqiang Technology Co., Ltd.

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

اطلاعات دریافت‌شده: شناسه‌های دستگاه، اطلاعات پایه دستگاه، فهرست نرم‌افزارهای نصب‌شده و اطلاعات شبکه (برای جزئیات به سیاست رسمی مراجعه کنید)

+

هدف استفاده: ورود به حساب Alipay و فراخوانی پرداخت

+

توسعه‌دهنده: Alipay (Hangzhou) Information Technology Co., Ltd.

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

اطلاعات دریافت‌شده: نسخه SDK/API، پلتفرم، timestamp، شناسه برنامه، نسخه برنامه، سازنده دستگاه، نسخه OS، locale، timezone، وضعیت شبکه (Wi‑Fi و غیره)، لاگ‌های شبکه، داده‌های کرش و استفاده، IP address و غیره (برای جزئیات به سیاست رسمی مراجعه کنید)

+

هدف استفاده: پایش کیفیت برنامه و خدمت گزارش‌دهی داده

+

توسعه‌دهنده: Shenzhen Tencent Computer Systems Company Limited

+

روش جمع‌آوری: جمع‌آوری توسط خودِ SDK

+

لینک سیاست حفظ حریم خصوصی: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. حفاظت از افراد زیر سن قانونی

+

کاربران محصولات و خدمات ما ممکن است شامل افراد زیر 18 سال نیز باشند. کاربران زیر سن قانونی باید پیش از استفاده از محصولات ما، درباره این سیاست حفظ حریم خصوصی از والدین یا سرپرست خود مشورت بگیرند و پس از دریافت رضایت و تحت راهنمایی والدین یا سرپرست، از خدمات ما استفاده کنند یا اطلاعات خود را در اختیار ما قرار دهند. سرپرستان افراد زیر سن قانونی در صورت داشتن سؤال می‌توانند از طریق اطلاعات تماس درج‌شده در این سیاست با ما ارتباط برقرار کنند.

+

اگر با جمع‌آوری اطلاعات فوق توسط ارائه‌دهندگان خدمات شخص ثالث موافق نیستید، لطفاً فوراً استفاده از نرم‌افزار را متوقف کنید. در طول استفاده شما از نرم‌افزار، این اشخاص ثالث مطابق سیاست‌های خود اطلاعات مرتبط را جمع‌آوری و پردازش می‌کنند تا برخی قابلیت‌ها، تبلیغات و سایر خدمات را ارائه دهند. در صورت نشت اطلاعات به دلیل جمع‌آوری اطلاعات فوق توسط ارائه‌دهنده خدمات شخص ثالث مربوطه، مسئولیت حقوقی متناظر بر عهده همان ارائه‌دهنده شخص ثالث خواهد بود.

+ +

10. اعتبار و به‌روزرسانی سیاست حفظ حریم خصوصی

+

1. این سیاست حفظ حریم خصوصی از تاریخ انتشار لازم‌الاجرا است.

+

2. با توسعه و تغییر کسب‌وکار ما، ممکن است سیاست حفظ حریم خصوصی تغییر کند. ما حق تغییر سیاست حفظ حریم خصوصی را در هر زمان برای خود محفوظ می‌دانیم؛ بنابراین لطفاً گهگاه آن را بررسی کنید. اگر تغییری ایجاد کنیم، این به‌روزرسانی‌ها را در وب‌سایت، برنامه‌ها و هر جای دیگری که مناسب بدانیم منتشر می‌کنیم تا شما مطلع شوید. در صورت به‌روزرسانی سیاست حفظ حریم خصوصی، از تاریخ به‌روزرسانی لازم‌الاجرا خواهد بود. ادامه استفاده شما از محصولات یا خدمات ما به معنای پذیرش سیاست حفظ حریم خصوصیِ اصلاح‌شده است.

+ +

11. روش‌های تماس با ما

+

شرکت Saitong Industries Inc در تاریخ 22 نوامبر 2024 تأسیس شده است. نشانی ثبت‌شده: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. اگر می‌خواهید درباره شرکت و پلتفرم ما بیشتر بدانید، می‌توانید از طریق اطلاعات تماس ارائه‌شده در این سیاست با ما تماس بگیرید (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/fa/user_agreement.html b/doc/fa/user_agreement.html new file mode 100644 index 000000000..8f0782a74 --- /dev/null +++ b/doc/fa/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + توافق‌نامه کاربر برنامه Voitrans + + + +
+
فارسی
+ +

توافق‌نامه کاربر برنامه Voitrans

+ +

این شرایط و ضوابط استفاده به شما نحوه دسترسی و استفاده از برنامه Voitrans و خدمات آنلاین ("خدمات") را اطلاع می‌دهد. شرکت Saitong Industries Inc. (از این پس "Saitong" نامیده می‌شود) بدینوسیله به کاربران یادآوری می‌کند که این توافق‌نامه کاربر (از این پس "توافق‌نامه" نامیده می‌شود) را با دقت بخوانند و به طور کامل درک کنند. کاربران باید شرایط این توافق‌نامه را با دقت بخوانند و به طور کامل درک کنند. لطفاً با دقت بخوانید و پذیرش یا عدم پذیرش این توافق‌نامه را انتخاب کنید. استفاده شما از Voitrans APP (از این پس "برنامه" یا "نرم‌افزار" نامیده می‌شود) به منزله پذیرش این توافق‌نامه تلقی خواهد شد و شما موافقت می‌کنید که ملزم به شرایط آن باشید. اگر با این توافق‌نامه موافق نیستید، از برنامه استفاده نکنید.

+

Saitong حق تغییر این توافق‌نامه را برای خود محفوظ می‌دارد و شرایط به‌روزشده توافق‌نامه در این برنامه منتشر خواهد شد و از تاریخ انتشار معتبر خواهد بود.

+ +

1. قوانین عمومی

+

1.1 این برنامه نرم‌افزاری است که Saitong برای اتصال به محصولات هدست منتشر شده توسط Saitong و شرکت‌های شریک آن ارائه می‌دهد. حقوق مالکیت و بهره‌برداری نرم‌افزار و خدمات مرتبط تماماً متعلق به Saitong است.

+

1.2 این توافق‌نامه قراردادی بین شما (از این پس "کاربر" نامیده می‌شود) و شرکت و شرکا و شرکای عملیاتی آن (از این پس "شرکا" نامیده می‌شوند) در مورد استفاده کاربر از برنامه و خدمات مرتبط است.

+

1.3 نرم‌افزار و خدمات شامل موارد زیر است:

+

1.3.1 نرم‌افزار ارائه شده به کاربران Voitrans امکان اتصال و جفت‌سازی با Voitrans، مدیریت تنظیمات عملکرد و سایر خدمات نرم‌افزاری را فراهم می‌کند، مشروط به خدمات نرم‌افزاری واقعی ارائه شده توسط برنامه.

+

1.3.2 به‌روزرسانی‌ها، ارتقاها و سایر خدمات نرم‌افزار.

+ +

2. دامنه مجوز نرم‌افزار

+

2.1 ما به کاربر مجوز شخصی، غیرقابل انتقال، غیرقابل اعطای مجوز فرعی و غیرانحصاری برای نرم‌افزار اعطا می‌کنیم.

+

2.2 کاربران می‌توانند نرم‌افزار را روی یک دستگاه تلفن همراه برای اهداف غیرتجاری نصب، استفاده، نمایش و اجرا کنند. با این حال، کاربر نباید نرم‌افزار را برای اهداف تجاری نصب، استفاده یا اجرا کند، نرم‌افزار یا داده‌های منتشر شده در حافظه هر دستگاه پایانه در حین اجرای نرم‌افزار یا داده‌های تعاملی بین کلاینت و سرور در حین اجرای نرم‌افزار را کپی، تغییر، اصلاح، پیوند یا اجرا کند، و نباید هیچ محصول مشتقی ایجاد کند. این شامل، اما محدود به، استفاده از افزونه‌ها، پلاگین‌ها یا ابزارها/خدمات غیرمجاز شخص ثالث برای دسترسی به نرم‌افزار و سیستم‌های مرتبط می‌شود. برای فروش تجاری، تکثیر و توزیع، مانند پیش‌نصب نرم‌افزار و بسته‌بندی، باید مجوز و اجازه کتبی دریافت شود.

+

2.3 کاربر نباید بدون اجازه صریح سازنده، نرم‌افزار را روی دستگاه‌های پایانه دیگر نصب کند، از جمله اما نه محدود به تلویزیون‌ها، گیرنده‌های دیجیتال، کنسول‌های بازی و سایر دستگاه‌ها.

+

2.4 به جز آنچه صراحتاً در این توافق‌نامه مجاز شده است، هیچ حق دیگری به کاربر اعطا نمی‌شود و کاربر باید رضایت کتبی برای استفاده از سایر حقوق را دریافت کند.

+ +

3. ارتقای نرم‌افزار

+

3.1 کاربر باید نسخه نرم‌افزار مناسب برای تنظیمات دستگاه پایانه نصب شده را انتخاب کند. در غیر این صورت، مشکلات نرم‌افزاری، مشکلات دستگاه یا خسارات ناشی از هر نسخه نرم‌افزاری که برای نوع دستگاه مناسب نیست، تنها مسئولیت کاربر خواهد بود.

+

3.2 به منظور بهبود تجربه کاربر و بهبود محتوای خدمات، Saitong حق دارد از زمان به زمان نسخه‌های جایگزین، اصلاح‌شده و ارتقایافته نرم‌افزار را به شما ارائه دهد. عملکرد "یادآوری ارتقا" به طور پیش‌فرض برای کاربران فعال است. پس از انتشار نسخه جدید نرم‌افزار، Saitong تداوم در دسترس بودن نسخه قدیمی نرم‌افزار را تضمین نمی‌کند.

+ +

4. مشخصات استفاده

+

4.1 کاربران ممکن است از نرم‌افزار و خدمات طبق این توافق‌نامه با رعایت قانون و این توافق‌نامه استفاده کنند و کاربران نباید اقدامات زیر را انجام دهند:

+

4.1.1 حذف تمام اطلاعات حق نسخه‌برداری روی نرم‌افزار و سایر نسخه‌ها، و تغییر، حذف یا دور زدن اقدامات فنی تنظیم شده توسط نرم‌افزار برای حفاظت از حقوق مالکیت فکری.

+

4.1.2 مهندسی معکوس نرم‌افزار، مانند جداسازی، دیکامپایل یا سایر تلاش‌ها برای دستیابی به کد منبع نرم‌افزار.

+

4.1.3 با تغییر یا جعل دستورالعمل‌ها و داده‌ها در عملکرد نرم‌افزار، افزودن، حذف یا تغییر عملکرد یا اثر عملکرد نرم‌افزار، یا نرم‌افزار یا روش‌هایی که برای اهداف فوق‌الذکر برای عملکرد یا انتشار به عموم استفاده می‌شوند، صرف نظر از اینکه این اقدامات برای اهداف تجاری باشند یا خیر.

+

4.1.4 استفاده از نرم‌افزار برای هرگونه رفتاری که امنیت شبکه را به خطر می‌اندازد، از جمله اما نه محدود به: استفاده از داده‌های غیرمجاز یا دسترسی به سرورها/حساب‌های غیرمجاز؛ دسترسی به شبکه‌های عمومی یا سایر سیستم‌های عامل بدون اجازه و حذف، تغییر یا افزودن اطلاعات ذخیره شده؛ تلاش‌های غیرمجاز برای بررسی، اسکن یا آزمایش نقاط ضعف سیستم یا شبکه نرم‌افزار یا سایر اقداماتی که امنیت شبکه را تضعیف می‌کنند؛ تلاش برای تداخل یا تخریب عملکرد عادی سیستم نرم‌افزار یا وب‌سایت، انتشار عمدی برنامه‌های مخرب یا ویروس‌ها و سایر اقداماتی که خدمات اطلاعات شبکه عادی را مختل می‌کنند؛ جعل نام بسته‌های TCP/IP یا بخش‌هایی از نام‌ها.

+

4.1.6 بدون رضایت کتبی شرکت، کاربر به طور خودسرانه اقدامات زیر را روی نرم‌افزار و اطلاعات موجود در آن انجام می‌دهد، از جمله اما نه محدود به: استفاده، اجاره، قرض، کپی، تغییر، پیوند، چاپ مجدد، کامپایل، انتشار، ایجاد سایت‌های آینه‌ای، توسعه محصولات، آثار، خدمات، افزونه‌ها، پلاگین‌های مشتق، سازگاری، اتصال متقابل و غیره، با کمک نرم‌افزار.

+

4.1.7 استفاده از نرم‌افزار برای انتشار، ارسال، توزیع و ذخیره محتوایی که قوانین محلی شما را نقض می‌کند.

+

4.1.8 استفاده از نرم‌افزار برای انتشار، ارسال، پخش و ذخیره محتوایی که حقوق مالکیت فکری، اسرار تجاری و سایر حقوق مشروع دیگران را نقض می‌کند.

+

4.1.9 استفاده از این نرم‌افزار برای انتشار، ارسال و پخش اطلاعات تبلیغاتی و اطلاعات ناخواسته به صورت انبوه.

+

4.1.10 استفاده از نرم‌افزار و سایر خدمات به هر روش غیرقانونی، برای هر هدف غیرقانونی، یا به هر روشی که با استفاده مجاز این توافق‌نامه مغایرت داشته باشد.

+

4.2 مشخصات انتشار اطلاعات

+

4.2.1 اگر از نرم‌افزار برای انتشار محتوای اطلاعاتی (در صورت وجود) استفاده می‌کنید، باید تضمین کنید که مالک حقوق مالکیت فکری محتوای اطلاعاتی بارگذاری شده توسط شما هستید یا مجوز قانونی دریافت کرده‌اید و هیچ رفتاری از شما در استفاده از نرم‌افزار و خدمات حقوق و منافع مشروع هیچ شخص ثالثی را نقض نمی‌کند.

+

4.2.2 هنگام استفاده از نرم‌افزار، کاربر نباید از نرم‌افزار برای فعالیت‌های زیر استفاده کند، از جمله اما نه محدود به:

+

4.2.2.1 ایجاد، کپی، انتشار، پخش و ذخیره محتوایی که قوانین و مقررات ملی محلی را نقض می‌کند.

+

4.2.2.2 انتشار، ارسال، پخش و ذخیره محتوایی که حقوق قانونی دیگران مانند شهرت، تصویر، حقوق مالکیت فکری و اسرار تجاری را نقض می‌کند.

+

4.2.2.3 جعل حقایق، پنهان کردن حقیقت به منظور گمراه کردن یا فریب دیگران.

+

4.2.2.4 انتشار، ارسال و پخش اطلاعات تبلیغاتی و اطلاعات ناخواسته.

+

4.2.2.5 مشارکت در سایر اقدامات مغایر با قوانین و مقررات محلی.

+

4.2.3 شما نمی‌توانید بدون اجازه شرکت هیچ فعالیت تجاری مانند تبلیغات و فروش کالا در نرم‌افزار انجام دهید.

+

4.3 کاربر درک و موافقت می‌کند که:

+

4.3.1 Saitong تعیین خواهد کرد که آیا کاربر مظنون به نقض مشخصات استفاده فوق‌الذکر است یا خیر، و طبق نتایج تعیین، مجوز استفاده شما را تعلیق یا لغو می‌کند یا اقدامات محدودکننده دیگری را که طبق این توافق‌نامه قابل اتخاذ هستند، انجام می‌دهد.

+

4.3.2 اطلاعاتی که توسط کاربر با استفاده از نرم‌افزار مجاز منتشر شده و مظنون به غیرقانونی بودن یا نقض حقوق قانونی دیگران یا نقض این توافق‌نامه هستند، مستقیماً حذف خواهند شد.

+

4.3.3 اگر نقض قوانین استفاده فوق‌الذکر توسط کاربر به اشخاص ثالث آسیب برساند، شما باید مسئولیت قانونی را به طور مستقل و به نام خود بر عهده بگیرید و باید اطمینان حاصل کنید که شرکت از ضررها یا هزینه‌های افزایش‌یافته مصون باشد.

+

4.3.4 اگر کاربر مقررات قانونی یا توافق‌نامه‌های مربوطه را نقض کند و باعث ضرر و زیان Saitong شود، یا مشمول ادعاهای اشخاص ثالث شود، یا توسط مقام اداری مجازات شود، کاربر باید ضرر و/یا هزینه‌های متحمل شده توسط Saitong را جبران کند، از جمله هزینه‌های معقول وکالت، هزینه‌های تحقیق و جمع‌آوری مدارک.

+ +

5. توضیحات خدمات شخص ثالث

+

5.1 کاربر درک و موافقت می‌کند که سیستم نرم‌افزار ممکن است شامل خدمات ارائه شده توسط شرکت‌های وابسته به شرکت یا اشخاص ثالث باشد و شرکت فقط ماژول‌های عملکردی مرتبط را در سیستم برای راحتی کاربران فراهم می‌کند و دسترسی به خدمات اشخاص ثالث را فراهم می‌سازد.

+

5.2 چه خدمات اشخاص ثالث از پیش در خدمات سیستم نرم‌افزار تنظیم شده باشند، یا توسط خود کاربران باز یا سفارش داده شده باشند، کاربران درک و موافقت می‌کنند که Saitong هیچ تضمین یا ضمانت صریح یا ضمنی درباره قانونی بودن و اثربخشی ارائه‌دهندگان خدمات شخص ثالث یا کاربران، و همچنین قانونی بودن، دقت، اثربخشی و امنیت خدمات اشخاص ثالث ارائه نمی‌دهد.

+

5.3 شرکت بر خدمات اشخاص ثالث نظارت، کنترل یا هیچ‌گونه ضمانت یا تعهدی از هر نوع ارائه نمی‌کند و هیچ مسئولیتی در قبال آن‌ها بر عهده نمی‌گیرد.

+

5.4 هرگونه اختلاف یا نزاع بین کاربر و ارائه‌دهنده خدمات شخص ثالث باید توسط کاربر و شخص ثالث طبق فرآیند تجاری و هنجارهای تجاری ارائه‌دهنده خدمات شخص ثالث حل شود و شرکت هیچ مسئولیتی بر عهده نمی‌گیرد.

+ +

6. سیاست حفظ حریم خصوصی و حفاظت از اطلاعات شخصی

+

6.1 Saitong متعهد به حفاظت از حریم خصوصی کاربران طبق سیاست حفظ حریم خصوصی است، لطفاً مراجعه کنید به: سیاست حفظ حریم خصوصی Voitrans.

+ +

7. مسئولیت نقض قرارداد

+

7.1 Saitong حق دارد تشخیص دهد که آیا رفتار کاربر با مفاد این توافق‌نامه مطابقت دارد یا خیر. اگر تشخیص داده شود که کاربر قوانین و مقررات مربوطه یا مفاد این توافق‌نامه و قوانین مرتبط را نقض کرده است، بسته به شدت نقض کاربر، Saitong حق دارد اطلاعات غیرقانونی را حذف کند، استفاده کاربر از خدمات نرم‌افزار را محدود، تعلیق یا خاتمه دهد، مسئولیت قانونی کاربر را پیگیری کند و اقدامات دیگری را که Saitong مناسب می‌داند انجام دهد. اگر ما هرگونه ضرری متحمل شویم (از جمله اما نه محدود به دریافت ادعاهای اشخاص ثالث یا جریمه‌های هر بخش اداری)، کاربر مسئولیت کامل را بر عهده دارد.

+ +

8. خطرات خدمات و سلب مسئولیت

+

8.1 ما تلاش می‌کنیم با فناوری فعلی پشتیبانی خدمات ارائه دهیم. Saitong تضمین نمی‌کند که خدمات نرم‌افزار بدون وقفه یا خطا عمل خواهد کرد، تمام نقص‌های خدمات نرم‌افزار اصلاح خواهند شد، یا خدمات نرم‌افزار تمام نیازهای کاربران را برآورده خواهد کرد. Saitong هیچ مسئولیتی در قبال عواقب ناشی از آن بر عهده نمی‌گیرد.

+

8.2 تمام خسارات متحمل شده توسط کاربر به دلیل اشخاص ثالث مانند خرابی خطوط ارتباطی، مشکلات فنی، خرابی شبکه، رایانه و تجهیزات پایانه، بی‌ثباتی سیستم و سایر علل قوه قاهره مشمول مسئولیت نخواهد بود.

+

8.3 Saitong قانونی بودن، اصالت، دقت و اثربخشی محتوای اطلاعاتی به دست آمده از طریق نرم‌افزار (از جمله اما نه محدود به محتوای خدمات اشخاص ثالث) را تضمین نمی‌کند و Saitong هیچ مسئولیتی در قبال نتایج هرگونه رفتاری که کاربران بر اساس استعلام و مشاهده انجام می‌دهند بر عهده نمی‌گیرد.

+

8.4 نرم‌افزار، مانند اکثر نرم‌افزارهای اینترنتی، تحت تأثیر تفاوت‌ها در عواملی از جمله اما نه محدود به دلایل کاربر، کیفیت خدمات شبکه، محیط اجتماعی و سایر عوامل قرار می‌گیرد و ممکن است با مشکلات امنیتی مختلفی مواجه شود، مانند استفاده دیگران از اطلاعات کاربر که منجر به آزار و اذیت در زندگی واقعی می‌شود؛ نرم‌افزارهای دیگری که کاربران دانلود و نصب می‌کنند یا وب‌سایت‌های دیگری که کاربران بازدید می‌کنند حاوی ویروس‌هایی مانند "اسب‌های تروجان" هستند که امنیت اطلاعات و داده‌های دستگاه پایانه کاربر را تهدید می‌کنند و در نتیجه بر استفاده عادی از نرم‌افزار تأثیر می‌گذارند. کاربران باید آگاهی امنیت اطلاعات و حفاظت از داده‌های کاربر را تقویت کنند و به تقویت حفاظت از رمز عبور توجه کنند تا از ضرر و آزار جلوگیری شود.

+

8.5 هنگامی که کاربران از نرم‌افزار استفاده می‌کنند یا از Saitong می‌خواهند خدمات خاصی ارائه دهد، نرم‌افزار ممکن است سیستم‌ها یا نرم‌افزارهای شخص ثالث را برای پشتیبانی از استفاده یا دسترسی کاربران فراخوانی کند و نتایج استفاده یا دسترسی توسط شخص ثالث ارائه می‌شود. علاوه بر رعایت قوانین مرتبط این توافق‌نامه، کاربران باید توافق‌نامه‌ها و قوانین مرتبط شخص ثالث را نیز رعایت کنند. کاربران باید درک و موافقت کنند که هنگام استفاده از خدمات اشخاص ثالث، اشخاص ثالث ممکن است داده‌های کاربر را بخوانند و Saitong امنیت، دقت، اثربخشی و سایر خطرات نامشخص نتایج حاصل از پشتیبانی سیستم‌ها یا نرم‌افزارهای شخص ثالث را تضمین نمی‌کند، کاربران باید با احتیاط قضاوت کنند و Saitong هیچ مسئولیتی در قبال هرگونه اختلاف و خسارت ناشی از آن بر عهده نمی‌گیرد.

+

8.6 به منظور تضمین استقلال توسعه و تنظیم کسب‌وکار شرکت، شرکت ممکن است در هر زمان پس از اطلاع‌رسانی معقول به کاربر، خدمات را تغییر یا قطع کند.

+

8.7 مگر اینکه قوانین و مقررات صراحتاً مقرر کرده باشند، Saitong بهترین تلاش خود را برای اطمینان از ایمن، مؤثر، دقیق و قابل اعتماد بودن نرم‌افزار و فناوری و اطلاعات مربوطه انجام خواهد داد، اما با توجه به محدودیت‌های فناوری موجود، کاربر درک می‌کند که Saitong نمی‌تواند این را تضمین کند.

+

8.8 جبران خسارت آسیب‌های شخصی یا خسارات اقتصادی اتفاقی و غیرمستقیم ناشی از یا مرتبط با هر یک از شرایط زیر، از جمله اما نه محدود به از دست دادن سود، از دست دادن داده‌ها، خسارات ناشی از وقفه در کسب‌وکار یا سایر خسارات یا ضررهای تجاری، بر عهده کاربر خواهد بود:

+

1) استفاده یا عدم توانایی در استفاده از نرم‌افزار مجاز.

+

2) استفاده غیرمجاز از نرم‌افزار یا تغییر داده‌های کاربر توسط اشخاص ثالث.

+

3) هزینه‌ها و ضررهای ناشی از اقدامات کاربر با نرم‌افزار.

+

4) سوءتفاهم کاربر درباره نرم‌افزار.

+

5) هرگونه ضرر دیگر مرتبط با نرم‌افزار که قابل انتساب به دلایل Saitong نیست.

+

8.9 کاربر موافقت می‌کند که شرکت حق دارد بر اساس الزامات مقامات قضایی، نظارتی و اداری یا دلایل تجاری خود، تمام یا بخشی از خدمات به کاربر را تعلیق، قطع یا خاتمه دهد. Saitong هیچ مسئولیتی در این خصوص نمی‌پذیرد.

+

8.10 کاربر درک و موافقت می‌کند که شرکت تلاش‌های تجاری معقول برای اطمینان از امنیت ذخیره‌سازی داده‌ها در نرم‌افزار و خدمات به کار خواهد برد، اما شرکت نمی‌تواند تضمین کاملی ارائه دهد و کاربر درک می‌کند که شرکت مسئول حذف یا ذخیره‌سازی یا عدم موفقیت در پشتیبان‌گیری از داده‌ها در خدمات نیست.

+

8.11 تا حداکثر حد مجاز توسط قانون، توسعه‌دهنده یا تأمین‌کننده مسئول هیچ‌گونه خسارت مستقیم، غیرمستقیم، اتفاقی، خاص یا تبعی ناشی از استفاده از برنامه نخواهد بود. اگر کاربر نیازهای بیشتری دارد، لطفاً به بیمارستان معتبر مراجعه کنید تا آزمایش عمیق‌تری انجام شود.

+ +

9. بیانیه حقوق مالکیت فکری

+

9.1 Saitong دارنده حقوق مالکیت فکری این نرم‌افزار است. تمام حقوق کپی‌رایت، علائم تجاری، ثبت اختراعات، اسرار تجاری و سایر حقوق مالکیت فکری نرم‌افزار، و همچنین تمام محتوای اطلاعاتی مرتبط با نرم‌افزار (از جمله اما نه محدود به متن، تصاویر، صدا، ویدئو، گرافیک، طراحی رابط کاربری، چارچوب طرح‌بندی، داده‌های مرتبط یا اسناد الکترونیکی و غیره) تحت حفاظت قوانین و مقررات محلی و معاهدات بین‌المللی مربوطه قرار دارند.

+

9.2 بدون رضایت کتبی شرکت، کاربر نباید حقوق مالکیت فکری فوق‌الذکر را برای هیچ هدف تجاری یا غیرتجاری اجرا، استفاده یا انتقال دهد، و نباید به هیچ شخص ثالثی اجازه دهد، و شرکت حق پیگیری مسئولیت قانونی برای اقدامات فوق‌الذکر را برای خود محفوظ می‌دارد.

+ +

10. تغییر توافق‌نامه

+

10.1 Saitong حق دارد در صورت لزوم شرایط این توافق‌نامه را تغییر دهد. هنگامی که شرایط توافق‌نامه تغییر کند، شرایط بازنگری شده توافق‌نامه در صفحه مربوطه منتشر خواهد شد. اگر با محتوای تغییر یافته موافق نیستید، کاربر باید ابتکار عمل را برای لغو این خدمات در دست بگیرد. اگر کاربر به استفاده از خدمات ادامه دهد، پذیرش تغییرات در شرایط توافق‌نامه تلقی می‌شود.

+

10.2 Saitong حق تغییر یا اصلاح خدمات پولی، استانداردهای شارژ، روش‌های شارژ، هزینه‌های خدمات و شرایط خدمات ارائه شده را در صورت لزوم برای خود محفوظ می‌دارد. هنگام ارائه خدمات، ممکن است هزینه‌های خاصی را از کاربران برخی خدمات در حال حاضر یا در آینده دریافت کنیم. اگر کاربران از پرداخت چنین هزینه‌هایی خودداری کنند، نمی‌توانند پس از شروع اخذ هزینه به استفاده از خدمات مربوطه ادامه دهند.

+
+ + diff --git a/doc/fi/privacy_policy.html b/doc/fi/privacy_policy.html new file mode 100644 index 000000000..286692f18 --- /dev/null +++ b/doc/fi/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Tietosuojakäytäntö + + + + +
+

Voitrans Tietosuojakäytäntö

+

Viimeksi päivitetty: 27. toukokuuta 2025

+

Voimaantulopäivä: 27. toukokuuta 2025

+ +

Tervetuloa käyttämään Voitrans-ohjelmistoa ja -palveluita

+

1. Voitrans on Saitong Industries Inc.:n (jäljempänä "Yhtiö") tarjoama. Se voi auttaa käyttäjiä hallitsemaan Bluetooth-laitteita ja muita tuotteita. Ymmärrämme henkilökohtaisten tietojen tärkeyden käyttäjillemme (jäljempänä "sinä") ja että henkilökohtaisten tietojesi tehokas suojaaminen on liiketoimintamme terveen ja kestävän kehityksen perusta. Kiitos Voitrans-tuotteiden tai -palveluiden käytöstäsi ja luottamuksestasi! Olemme täysin tietoisia siitä, ettei tämä luottamus synny helposti, noudatamme avoimuuden ja läpinäkyvyyden periaatetta ilmaistaksemme sinulle sääntömme henkilökohtaisten tietojesi käsittelylle, käytämme laillisia ja oikeutettuja tapoja ja selkeitä ja kohtuullisia tarkoituksia henkilökohtaisten tietojesi käsittelyyn. Erityinen huomautus: Lue ja ymmärrä tämä Tietosuojakäytäntö huolellisesti ennen tuotteidemme tai palveluidemme käyttöä, jotta voit tehdä asianmukaiset valinnat.

+

2. Tämä Tietosuojakäytäntö selittää sinulle, miten keräämme, käytämme, tallennamme ja jaamme henkilökohtaisia tietojasi, kun käytät Voitransia. Henkilökohtaiset tiedot viittaavat kaikkiin sähköisesti tai muulla tavoin tallennettuihin tietoihin, jotka voivat tunnistaa tietyn luonnollisen henkilön tai heijastaa tietyn luonnollisen henkilön toimintaa yksin tai yhdessä muiden tietojen kanssa. Voitrans kunnioittaa ja suojaa kaikkien palvelun käyttäjien henkilökohtaista yksityisyyttä. Ellei tässä Tietosuojakäytännössä toisin mainita, Voitrans ei paljasta näitä tietoja yleisölle tai anna niitä kolmansille osapuolille ilman etukäteen saatua lupaasi.

+

3. Kun käytät kolmannen osapuolen tuotetta tai palvelua App Marketplace -tuotteen tai -palvelun kautta, henkilökohtaisiin tietoihisi sovelletaan kolmannen osapuolen tietosuojakäytäntöä.

+

4. Voitrans Tämä Tietosuojakäytäntö päivitetään ajoittain. Hyväksymällä Voitrans-palvelun käyttösopimuksen ja aloittamalla Voitransin käytön sinun katsotaan hyväksyneen koko tämän Tietosuojakäytännön. Jos et hyväksy tätä Tietosuojakäytäntöä, älä käytä Voitrans-ohjelmistoa ja -palveluita.

+

5. Analysoidaksemme ja mitataksemme asiaankuuluvien palveluiden tehokkuutta käytämme ja paljastamme henkilökohtaisia tietojasi tämän Tietosuojakäytännön mukaisesti.

+ +

Tämä Tietosuojakäytäntö auttaa sinua ymmärtämään seuraavat:

+
    +
  • 1 Keräämämme tiedot
  • +
  • 2 Tietojen tallentaminen
  • +
  • 3 Tietoturvallisuus
  • +
  • 4 Miten käytämme keräämiämme tietoja
  • +
  • 5 Tietojen jakaminen
  • +
  • 6 Miten hallitset henkilökohtaisia tietojasi
  • +
  • 7 Sovelluksen käyttöoikeuskuvaus
  • +
  • 8 Kolmannen osapuolen SDK:iden käyttö
  • +
  • 9 Alaikäisten suoja
  • +
  • 10 Voimassa oleva ja päivitetty Tietosuojakäytäntö
  • +
  • 11 Miten ottaa meihin yhteyttä
  • +
+ +

1. Keräämämme tiedot

+

1. Voitransin käytön alussa aloitamme tietojen keräämisen sovelluksen käytöstäsi

+

2. Voitrans voi saada henkilökohtaisia tietojasi kolmansilta osapuolilta tai liikekumppaneilta laillisin keinoin

+

3. Tarjotaksemme sinulle parempia tuotteita ja palveluita, antaaksemme sinulle verkkoturvallisuutta käytön aikana, ylläpitääksemme tuotteiden normaalia toimintaa ja optimoidaksemme ja parantaaksemme tietopalveluidemme tarkoitusta, sen jälkeen kun olet aktiivisesti napsauttanut hyväksyäksesi tämän tietosuojakäytännön, käytä tarjoamiamme tietoja. Palvelun aikana kansallisten lakien ja asetusten mukaisten Sovelluksen perustoimintojen normaalin toiminnan varmistamiseksi tarpeellisten henkilökohtaisten tietojen lisäksi keräämme sinulta muita henkilökohtaisia tietoja:

+

3.1 Tunnistaaksemme riskikäyttäjät, arvioidaksemme käyttäjien aitouden ja estääksemme huijauksen kokonaisvaltaisesti, luemme laitetietosi joka kerta kun avaat ohjelmiston, mukaan lukien: (Laitemalli, laitteen MAC-osoite, laitteen yksilöllinen tunniste (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, jne.) MEID, sarjanumero, WIFI:n SSID ja BSSID), Bluetooth-osoitteen lukeminen, käyttöjärjestelmän versio, käyttöjärjestelmän nimi, käyttäjän kirjautumistili ja salasanatiedot;

+

3.2 Kun käytät tuotteitamme ja palveluitamme, saatamme kerätä tiettyjä tietoja verkkologitietojen tai tiettyjen ohjelmien ja ohjelmistojen kautta, tällaisia tietoja voivat olla: tuotteiden ja palveluiden käyttötiedot, kuten sovelluksesi avaamisaika, käyttöaika ja vierailtujen sivujen osoite; Laitatapahtumatiedot, kuten kaatumiset, järjestelmätoiminta jne., laitteesi optimoimiseksi ja palveluidemme parantamiseksi;

+

3.3 Tunnistaaksemme sovellukset, joissa laitteisto on vaarassa, tarjotaksemme turvallisempia toiminnallisia palveluita. Siksi meidän on saatava sovellus-/sovellusasennusluettelosi prosessissa varmistaaksemme tuotteen normaalin toiminnan ja suojataksemme laitteen turvallisuutta.

+

3.4 Analysoidaksemme sovellustoimintojen käyttöä käyttäjien toimesta ja määrittääksemme käyttäjien aitouden, meidän on suoritettava tietojen tilastointia ja kerättävä yllä mainitut laitetiedot, mukaan lukien laitteen MAC-osoite ja laitteen yksilöllinen tunniste, kun laitettasi käytetään.

+

3.5 Laitesignaali: käyttämäsi laitteen verkkotila, WIFI-tukiasematiedot jne.

+

3.6 Sijaintitiedot: Saatamme käyttää GPS:ää, WiFi:ä tai muita teknisiä keinoja kerätäksemme ja käsitelläksemme sijaintiasi koskevia tietoja paikallisten tietojen päivittämiseksi, sisältöpalveluiden tarjoamiseksi jne.

+

Lisätietoja saat napsauttamalla "Henkilökohtaisten tietojen keruuluettelo".

+ +

1. Yllä olevien tietojen arkaluonteisempien henkilökohtaisten tietojen, kuten käyttäjän laitetietojen (IMEI-numero, puhelutila ja tunnistenumero), GPS-sijaintitietojen, valokuvamediasisällön ja tiedostojen käyttöoikeuksien osalta pyydämme suostumuksesi ennen keräämistä. Joidenkin ei-arkaluonteisten tietojen osalta kerääminen voi olla oletusarvoista ja automaattista. Voit rajoittaa tietojemme keräämistä tai tiettyjen käyttöoikeuksien käyttöä mobiililaitteestasi säätämällä mobiililaitteesi Asetukset-vaihtoehtoa. Kun rajoitat pääsyämme tiettyyn käyttöoikeuteen, emme ehkä voi jatkaa vastaavien palveluiden tarjoamista sinulle emmekä enää käsittele vastaavia tietojasi.

+

2. Emme kerää henkilötunnustasi, henkilökohtaisia biometrisiä tietojasi, pankkitilinumeroa, omaisuustietoja, luottotietoja, terveys- ja fysiologisia tietoja ja muita henkilökohtaisia arkaluonteisia tietoja.

+

3. Arkaluonteisista käyttöoikeuksista: Sovellustoimintojen asianmukaiseksi käyttämiseksi tuotteen on saatava seuraavat käyttöoikeudet toiminnallisten palveluiden tarjoamiseksi normaaleihin tuotteisiin liittyen.

+ +

1 Tallennustilan luku- ja kirjoitusoikeuksien hankkiminen

+

1 Miten hankkia: ponnahdusviesti, kun käyttöoikeus on saatu, käyttäjä napsauttaa aktiivisesti hyväksyä, jolloin sovellus käyttää tätä oikeutta

+

2 Käyttötarkoitus ja -laajuus: Käytetään järjestelmän resurssien välimuistitiedostojen ja pikkukuvien skannaamiseen, musiikkiresurssien ja tuotekuvien lataamiseen. Se näytetään Sovelluksen käyttöliittymässä helpottaakseen käyttäjien tarkastelua ja hallintaa

+ +

2 Sovellusasennusluettelon käyttöoikeuden hankkiminen

+

1 Miten hankkia: ponnahdusviesti, kun käyttöoikeus on saatu, käyttäjä napsauttaa aktiivisesti hyväksyä, jolloin sovellus käyttää tätä oikeutta

+

2 Käyttötarkoitus ja -laajuus: Kun sovellus tarvitsee mainospalveluja, kolmannen osapuolen mainosalusta, Youmon +SDK, tarvitsee laitteen "sovellusten asennusluettelon käyttöoikeuden" estääkseen käyttäjälle jo kuuluvien sovellusten ehdottamisen ja parantaakseen käyttökokemusta.

+ +

3 Laitteen tilatietojen käyttöoikeus

+

Sisältää: (Laitemalli, laitteen MAC-osoite, laitteen yksilöllinen tunniste (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, jne.) MEID, sarjanumero, WIFI:n SSID ja BSSID, Bluetooth-osoitteen lukeminen), käyttöjärjestelmän versio, käyttöjärjestelmän nimi jne.;

+

1 Miten hankkia: ponnahdusviesti, kun käyttöoikeus on saatu, käyttäjä napsauttaa aktiivisesti hyväksyä, jolloin sovellus käyttää tätä oikeutta

+

2 Käyttötarkoitus ja -laajuus: Käyttäessäsi sovellustamme, analysoidaksemme käyttäjän sovellustoimintojen käyttöä ja arvioidaksemme käyttäjän aitoutta, synkronoimme käyttöoikeuden kolmannen osapuolen SDK:ille, mukaan lukien Autonavi SDK, Youmon +SDK jne.

+ +

4 Pääsy sijaintitietoihin

+

1 Miten hankkia: ponnahdusviestit, kun käyttöoikeus on saatu, käyttäjä käyttää tätä oikeutta vain napsauttaessaan aktiivisesti hyväksyä sovelluksessa.

+

2 Käyttötarkoitus ja -laajuus: Kun sovellus tarvitsee GPS:ää, WiFi:ä tai muita toimintoja, tuotteen on kerättävä sijaintisi ja tietosi etsiäkseen Bluetooth-laitteita lähellä olevista paikoista.

+

Huomautus: Lisää sovelluksen käyttöoikeuksia, katso tämä asiakirja "Tietosuojakäytäntö" Kohta 7 "Sovelluksen käyttöoikeuskuvaus"

+ +

2. Tietojen tallentaminen

+

1. Missä tiedot tallennetaan

+

Kiinan kansantasavallassa keräämämme ja tuottamamme henkilökohtaiset tiedot tallennetaan palvelimillemme ja/tai tytäryhtiöidemme palvelimille.

+

2. Tietojen tallennus ja käsittely

+

Tallennamme henkilökohtaiset tietosi vain tarkoituksen saavuttamiseksi tarvittavan ajan tai lain ja asetuksen edellyttämän ajan. Kun lopetat tämän tuotteen käytön, lopetamme välittömästi henkilökohtaisten tietojesi ja sovellustietojesi keräämisen ja käsittelyn. Kun edellä mainittu aika ylittyy, poistamme tai anonymisoimme meille antamasi henkilökohtaiset tiedot.

+

Tarpeellisten toimintojen lisäksi Voitransin on haettava vastaavia järjestelmäoikeuksia. Pilven palvelinpuoli ei tallenna käyttäjien henkilökohtaisia tietoja, ja käytetty kolmannen osapuolen SDK anonymisoidaan ja tunnistamattomaksi palveluntarjoajan toimesta (Amu Statistics SDK, Autonavi SDK), joten käyttäjiä ei voida jäljittää. Käyttäjän puhelimeen tallennetut tiedot poistetaan automaattisesti, kun käyttäjä poistaa Voitransin asennuksen tai tyhjentää välimuistin.

+ +

3. Tietoturvallisuus

+

1. Voitrans tallentaa ja suojaa henkilökohtaisia tietojasi alan standardin mukaisilla turvatoimilla ja -tekniikoilla, kuten todennuksella, tietojen salauksella, rajoitetulla datakeskuksen pääsyllä ja muilla turvatoimilla varmistaakseen, että tietosi ovat turvassa paljastumiselta, muuttamiselta ja tuhoamiselta. Edellä mainituista turvatoimista huolimatta huomaa, ettei mikään turvatoimi voi olla 100% turvallinen.

+

2. Käyttäessäsi Voitransin tarjoamia palveluita, suojaa henkilökohtaisia tietojasi. Jos huomaat, että henkilökohtaiset tietosi ovat vaarantuneet, ota meihin välittömästi yhteyttä, jotta voimme ryhtyä asianmukaisiin toimenpiteisiin.

+ +

4. Miten käytämme keräämiämme tietoja

+

1. Toteuttaessamme sovelluksen liiketoimintatoimintoja saatamme käyttää henkilökohtaisia tietojasi varmistaaksemme sinulle tarjoamiemme tuotteiden ja palveluiden eheyden ja turvallisuuden;

+

2. Ymmärrämme käyttötottumuksesi kerättyjen tietojen avulla ja tietoanalyysin avulla tunnistamme palveluiden hyväksyttävyyden, käyttötottumuksesi jne., testataksemme ja luodaksemme uusia tuotteita, toimintoja ja palveluita, parantaaksemme palvelutasoa ja auttaaksemme meitä parantamaan olemassa olevia palveluita ja kehittämään uusia palveluita;

+

3. Saatamme käyttää henkilökohtaisia tietojasi asiakastutkimuksiin tuotteista ja palveluista, tuotteita ja palveluita koskevien ilmoitusten lähettämiseen ja kaupalliseen edistämiseen;

+

4. Saatamme käyttää tietojasi sovellukseen liittyvään sisäiseen analyysiin ja tutkimukseen;

+ +

5. Tietojen jakaminen

+

Tällä hetkellä emme aktiivisesti jaa tai siirrä henkilökohtaisia tietojasi yhtiön ulkopuolisille kolmansille osapuolille. Jos henkilökohtaisia tietojasi jaetaan tai siirretään muutoin, varmistamme suoraan tai vahvistamme, että kolmas osapuoli on saanut nimenomaisen suostumuksesi edellä mainittuun toimintaan.

+

Emme julkista keräämiämme henkilökohtaisia tietoja. Jos on tarpeen julkistaa ne, ilmoitamme sinulle julkistamisen tarkoituksen, paljastettujen tietojen tyypin ja mahdolliset arkaluonteiset tiedot ja pyydämme nimenomaisen suostumuksesi.

+

Liiketoimintamme kehittyessä saatamme osallistua sulautumisiin, yritysostoihin, omaisuudensiirtoihin ja muihin liiketoimiin, ja ilmoitamme sinulle asiaan liittyvistä olosuhteista lakien ja asetusten mukaisesti ja tämän Oppaan edellyttämien standardien mukaisesti jatkaaksemme henkilökohtaisten tietojesi suojaamista tai vaatiaksemme uutta rekisterinpitäjää jatkamaan henkilökohtaisten tietojesi suojaamista.

+

Lisäksi asiaan liittyvien lakien, asetusten ja kansallisten standardien mukaisesti saatamme jakaa, siirtää ja julkistaa henkilökohtaisia tietoja ilman rekisteröidyn etukäteen antamaa valtuutusta ja suostumusta seuraavissa olosuhteissa:

+
    +
  • 1 Suoraan kansalliseen turvallisuuteen ja maanpuolustukseen liittyvä;
  • +
  • 2 Suoraan yleiseen turvallisuuteen, kansanterveyteen tai merkittäviin yleisiin etuihin liittyvä;
  • +
  • 3 Suoraan rikostutkintaan, syytteeseenpanoon, oikeudenkäyntiin ja tuomioiden täytäntöönpanoon liittyvä;
  • +
  • 4 Rekisteröidyn tai muiden henkilöiden hengen, omaisuuden ja muiden merkittävien laillisten oikeuksien ja etujen suojaamiseksi, mutta henkilön suostumuksen saaminen on vaikeaa;
  • +
  • 5 Rekisteröidyn itsensä yleisölle paljastamat henkilökohtaiset tiedot;
  • +
  • 6 Henkilökohtaisten tietojen kerääminen laillisesti julkistetusta tiedosta, kuten lailliset uutisraportit, viranomaistiedon julkistaminen ja muut kanavat.
  • +
+ +

6. Miten hallitset henkilökohtaisia tietojasi

+

Kiinan asiaan liittyvien lakien, asetusten ja standardien sekä muiden maiden ja alueiden yleisten käytäntöjen mukaisesti takaamme, että käytät seuraavia oikeuksiasi henkilökohtaisiin tietoihisi:

+ +

1. Henkilökohtaisten tietojesi korjaaminen

+

Jos huomaat virheen käsittelemissämme henkilökohtaisissa tiedoissasi, sinulla on oikeus korjata tai päivittää virheelliset tai puutteelliset tiedot. Jos et voi toimia itsenäisesti tilikeskuksessa, voit lähettää sähköpostia osoitteeseen saitong.voitrans@gmail.com Ota meihin yhteyttä

+ +

2. Henkilökohtaisten tietojesi poistaminen

+

Seuraavissa tapauksissa voit esittää meille pyynnön poistaa henkilökohtaiset tietosi:

+
    +
  • Jos käsittelemme henkilökohtaisia tietoja lakien ja asetusten vastaisesti;
  • +
  • Jos keräämme ja käytämme henkilökohtaisia tietojasi ilman suostumustasi;
  • +
  • Jos henkilökohtaisten tietojen käsittelymme rikkoo sopimustamme kanssasi;
  • +
  • Jos et enää käytä tuotteitamme tai palveluitamme;
  • +
  • Jos emme enää tarjoa sinulle tuotteita tai palveluita.
  • +
+

Ota meihin yhteyttä. Käsittelemme pyyntösi saitong.voitrans@gmail.com Ota meihin yhteyttä. Lähetämme sen sinulle vastaanottamisen jälkeen 30 työpäivän kuluessa vastaanotosta

+ +

3. Suostumuksesi laajuuden muuttaminen

+

Voit ottaa meihin yhteyttä sähköpostitse saitong.voitrans@gmail.com Ota meihin yhteyttä. Pyynnöstäsi emme enää kerää, käytä tai paljasta henkilökohtaisia tietojasi. Huomaa, että suostumuksesi peruuttaminen tai henkilökohtaisten tietojesi poistaminen voi vaikuttaa joidenkin palveluidemme käyttöösi.

+ +

4 Henkilökohtaisten tietojen käyttö ja kopiointi

+

Voit asiaan liittyvien lakien mukaisesti toimittaa imei-numerosi (puhelimen sarjanumero) tai oaid Tai Android ID Tilitietojen ja muiden tietojen jälkeen voit hakea meiltä pääsyä henkilökohtaisiin tietoihisi ja niiden kopiointia, voit lähettää sähköpostia osoitteeseen 3514406195@qq.com Ota meihin yhteyttä.

+ +

5. Vastauksena yllä olevaan pyyntöösi

+

Turvallisuussyistä saatat joutua esittämään kirjallisen pyynnön tai muutoin todistamaan henkilöllisyytesi. Saatamme pyytää sinua vahvistamaan henkilöllisyytesi ennen pyyntösi käsittelyä. Kohtuulliseen pyyntöösi vastaamme ja käsittelemme sen ajoissa. Saatamme hylätä pyynnöt, jotka ovat tarpeettoman toistuvia, vaativat liikaa teknologiaa (esimerkiksi uusien järjestelmien kehittämistä tai nykyisten käytäntöjen perustavanlaatuisia muutoksia), aiheuttavat riskin muiden laillisille eduille tai ovat erittäin epäkäytännöllisiä.

+

Seuraavissa olosuhteissa emme lakien ja asetusten vaatimusten mukaisesti voi vastata pyyntöösi:

+
    +
  • Kansalliseen turvallisuuteen ja maanpuolustukseen liittyvä;
  • +
  • Rikostutkintaan, syytteeseenpanoon ja oikeudenkäyntiin liittyvä;
  • +
  • On riittävästi todisteita siitä, että sinulla on subjektiivinen pahantahtoisuus tai oikeuksien väärinkäyttö;
  • +
  • Pyyntöösi vastaaminen aiheuttaa vakavaa vahinkoa sinun tai muiden henkilöiden ja organisaatioiden laillisille oikeuksille ja eduille.
  • +
+ +

6. Tilin peruuttaminen

+

Käyttäjä voi suorittaa [tilin peruuttaminen] -toiminnon sovelluksessa. Toimintavaiheet:

+
    +
  1. Siirry [Minun]-sivulle
  2. +
  3. Napsauta [Asetukset]-painiketta oikeassa yläkulmassa
  4. +
  5. Napsauta [Peruuta tili] vahvistaaksesi
  6. +
+

Kirjautumisen jälkeen käyttäjätilin tiedot tyhjennetään

+ +

7. Sovelluksen käyttöoikeuskuvaus

+

Tarjotaksemme parempia tuotteita ja palveluita, kun käytät ohjelmistoa, haemme seuraavia oikeuksia. Kun siirryt etusivulle tai käytät toimintoa, valtuutusta pyydetään. Jos kieltäydyt, joitakin vastaavia toimintoja ei voi käyttää normaalisti. Käyttöoikeuksien erityiset tarkoitukset ja muistutukset kuvataan yksityiskohtaisesti alla:

+ +

1 Sijaintioikeudet:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFin tai matkapuhelintukiaseman kautta käyttäjän leveys- ja pituusastesijainnin hankkimiseksi

+

Kun käytät Voitransia, etsimme liitetyn Bluetooth-laitteesi maantieteellisen sijaintisi perusteella. Samalla tarjotaksemme vakaampia palveluita, optimoidaksemme tuotteita ja parantaaksemme kokemusta jaamme yllä mainitut tiedot kolmelle SDK:lle, kuten Youmon ja Autonavi, saadaksemme Voitransin käyttödata ja toiminnalliset palvelut.

+

Muistutustapa: Sovelluksen ensimmäisellä käynnistyskerralla näytetään käyttöoikeutta koskeva ilmoitus, joka edellyttää käyttäjän hyväksymisen vahvistamista. Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Tämä käyttöoikeus vaaditaan, kun käytät sovellusta sovelluksen hallintatoimintojen suorittamiseen.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

3 Verkkokäyttöoikeudet:

+

android.permission.INTERNET

+

Kun käytät Voitransin tietopalveluita ja versiopäivityspalveluita, nämä oikeudet ovat tarpeen, ja käyttökokemuksen parantamiseksi ja palvelukapasiteetin optimoimiseksi kolmannen osapuolen SDK:t kuten Friends käyttävät myös näitä oikeuksia.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

4 Verkon tilan käyttöoikeuksien hankkiminen:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Käytetään selvittämään, onko nykyinen verkkoyhteys kelvollinen, määrittämään, onko nykyinen 4G-ympäristö käytössä, ja muistuttamaan verkkoympäristön muutoksista, jotka vaikuttavat tietosisällön lataamiseen. Tätä oikeutta haetaan, kun käytät Voitransia.

+

Verkon tilan muutokset vaikuttavat tietojen lataamiseen ja lataamiseen. Siksi verkon tilan käyttöoikeus jaetaan friends + -alustojen ja muiden kanssa.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

5 Tehtäväluettelon käyttöoikeuksien hankkiminen:

+

android.permission.GET_TASKS

+

Tätä oikeutta käytetään sovellusluettelon hankkimiseen ohjelmiston hallintatoimintoa varten. Kun käytät ohjelmiston hallintatoimintoa, matkapuhelimeen asennetut sovellukset on luettava.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

6 MAC-osoitteen käyttöoikeuden hankkiminen

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Kun käytät Voitransia, sovellus tarvitsee MAC-osoitteen käyttöoikeudet:

+

Kun sovelluksen on raportoitava kohdekonversiotietoja, kolmannen osapuolen alustat kuten Youmon +SDK tarvitsevat MAC:n käyttöä.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

7 Äänen tallennusoikeuden hankkiminen

+

android.permission.RECORD_AUDIO

+

Kun käytät Voitransin äänisyöttötoimintoa, tarvitset äänen tallennusoikeuden, ja käytät pääasiassa äänisyöttöä käännökseen ja muihin liittyviin toimintoihin.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus, käyttäjälle näytetään dynaaminen ponnahdusikkuna tarvittaessa.

+ +

8 WIFI:n SSID-oikeuden hankkiminen

+

Kun tätä oikeutta käytetään, sovellus lukee WIFI:n SSID-oikeuden:

+

Käyttölaajuus ja -tarkoitus: Kun sovellus tarvitsee data-analytiikkapalveluita, kolmannen osapuolen alustat kuten +SDK tarvitsevat laitteen "WIFI SSID -oikeuden" lukemisen tarjotakseen käyttäjille tarkempia ja tehokkaampia toiminnallisia palveluita.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

9 Bluetooth-pääsyn hankkiminen

+

Kun tätä oikeutta käytetään, sovellus lukee Bluetooth-oikeuden:

+

Käyttölaajuus ja -tarkoitus: Bluetooth-laitteet lisälaitteiden, kuten Bluetooth-kuulokkeiden, Bluetooth-kellojen jne. etsimiseen ja konfigurointiin. Helpottaa käyttäjien hallintaa

+

Muistutustapa: Sovelluksen ensimmäisellä käynnistyskerralla näytetään käyttöoikeutta koskeva ilmoitus, joka edellyttää käyttäjän hyväksymisen vahvistamista. Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

10 WiFin BSSID-oikeuden hankkiminen

+

Kun sovelluksen on erotettava ja tunnistettava käyttäjä toiminnallisten palveluiden ja tietojen tilastoinnin tarjoamiseksi, se lukee laitteen "WiFi BSSID" -oikeuden seuraavaan tarkoitukseen:

+

Käyttölaajuus ja -tarkoitus: 1 Kolmannen osapuolen alustat: kuten Youmeng SDK, Bugly SDK, Autonavi SDK

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

11 Sovellusten asennusoikeuden hankkiminen

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Ohjelmisto käyttää sovellusten asennusoikeutta, jota käytetään pääasiassa antamaan käyttäjien asentaa uusi versio ja kokea uusia toimintoja uuden version julkaisun yhteydessä.

+

Muistutustapa: Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

12 Kameran käyttöoikeuksien hankkiminen

+

android.permission.CAMERA

+

Voitrans käyttää kameran käyttöoikeuksia QR-koodien skannaamiseen ja Bluetooth-laitteiden, kuten Bluetooth-kuulokkeiden ja -kellojen, sitomiseen.

+

Muistutustapa: Sovelluksen ensimmäisellä käynnistyskerralla näytetään käyttöoikeutta koskeva ilmoitus, joka edellyttää käyttäjän hyväksymisen vahvistamista. Käyttäjäsopimus ja Tietosuojakäytännön kuvaus.

+ +

Erityinen huomautus:

+

1 Sovelluksen integrointi heidän Allies SDK:nsa, Scott map SDK:n sisällä käyttäjän suostuttua käyttöön, sovellus taustalla/etualalla ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI ja muiden henkilökohtaisten tietojen osalta;

+

Huomautuksia: Lisää Katso seuraava SDK:hon liittyvä sisältö ja käyttöoikeudet [VIII. Kolmannen osapuolen SDK-luettelon käyttö]

+ +

8. Kolmannen osapuolen SDK:iden käyttö

+

1 Varmistaaksemme asiakkaamme vakaan toiminnan ja toimintojen toteutuksen, jotta voit käyttää ja nauttia useammista palveluista ja toiminnoista, sovellukseemme upotetaan kolmansien osapuolten ohjelmistotyökalukehityspaketteja (SDK) tai muita vastaavia sovelluksia, nämä kolmannet osapuolet keräävät ja käsittelevät asiaan liittyviä tietoja omien tietosuojakäytäntöjensä mukaisesti, tarjotakseen normaalisti toimintoja ja mainospalveluita. Voit tutustua kolmannen osapuolen tiedonkeruu- ja käsittelysääntöihin seuraavassa osiossa. Suoritamme tiukkoja turvallisuustestejä kumppaneiden kehityspaketeille (SDK:ille) tietojen hankkimiseksi, suojataksemme henkilökohtaisten tietojesi kohtuullista käyttöä ja turvallisuutta. Huomaa, että kolmannen osapuolen SDK:t voivat muuttaa tietojenkäsittelytyyppejä versiopäivitystensä vuoksi. Katso kolmannen osapuolen SDK:iden julkaisemat tietosuojakäytännöt. Katso yksityiskohdat alla tai napsauta tarkastellaksesi kolmannen osapuolen SDK-luetteloa.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Hankitut tiedot: Laitenumero, IP-osoite, laitteen ohjelmistotiedot, laitteen tunnistuskoodi (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kortin IMSI-tiedot, IP, MAC-osoite), laitteen tunniste, alue, laitteeseen liittyvät sovellustiedot ja muut palveluun liittyvät lokitiedot

+

Käyttötarkoitus: WeChat-kirjautuminen ja jakaminen

+

Kehittäjä: Shenzhen Tencent Computer Systems Company Limited

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Hankitut tiedot: Sovelluksen nimi, sovelluksen versio, laitteen merkki ja malli, käyttöjärjestelmä, operaattoritiedot, näytön resoluutio, anturitiedot (vektori, kiihtyvyys, paine, suunta, geomagneettinen, gyroskooppi, lämpötila, valoanturi, NMEA-signaali), laitteen signaalin voimakkuustiedot

+

Käyttötarkoitus: Navigointi Amapilla

+

Kehittäjä: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Hankitut tiedot: Sovelluksen nimi, sovelluksen versio, laitteen merkki ja malli, käyttöjärjestelmä, verkkotiedot, laitteen signaalin voimakkuus jne.

+

Käyttötarkoitus: Karttanäkymä ja vuorovaikutus

+

Kehittäjä: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Hankitut tiedot: Sijaintitiedot (GPS, Wi-Fi, tukiasema), laitetiedot, verkkotiedot jne.

+

Käyttötarkoitus: Sijaintipalveluiden tarjoaminen

+

Kehittäjä: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Hankitut tiedot: Sovelluksen nimi, sovelluksen versio, laitetiedot, verkkotiedot jne.

+

Käyttötarkoitus: Karttatyökalut ja renderöinnin optimointi

+

Kehittäjä: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Hankitut tiedot: Laitetunnisteet, peruslaitetiedot, asennettujen ohjelmistojen luettelo ja verkkotiedot (katso virallinen tietosuojakäytäntö lisätiedoista)

+

Käyttötarkoitus: Alipay-tilille kirjautuminen ja maksujen käynnistäminen

+

Kehittäjä: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Hankitut tiedot: SDK/API-versio, alusta, aikaleima, sovellustunniste, sovelluksen versio, laitteen valmistaja, käyttöjärjestelmän versio, maa-asetus, aikavyöhyke, verkon tila (Wi-Fi jne.), verkkolokit, kaatumis- ja käyttödata, IP-osoite jne. (katso virallinen tietosuojakäytäntö lisätiedoista)

+

Käyttötarkoitus: Sovelluksen laadunvalvonta ja tietojen raportointipalvelu

+

Kehittäjä: Shenzhen Tencent Computer Systems Company Limited

+

Keräysmenetelmä: SDK:n oma keräys

+

Tietosuojakäytännön linkki: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Alaikäisten suoja

+

Tuotteidemme ja palveluidemme käyttäjiin voi kuulua alle 18-vuotiaita alaikäisiä. Alaikäisten käyttäjien tulee pyytää neuvoa vanhemmiltaan tai huoltajiltaan tästä Tietosuojakäytännöstä ennen tuotteidemme käyttöä ja käyttää palveluitamme tai antaa tietojaan meille saatuaan vanhempiensa tai huoltajiensa suostumuksen ja ohjauksessa. Alaikäisten huoltajat, joilla on kysyttävää, voivat ottaa meihin yhteyttä tässä Tietosuojakäytännössä annettujen yhteystietojen kautta.

+

Jos et hyväksy edellä mainittujen tietojen keräämistä edellä mainittujen kolmannen osapuolen palveluntarjoajien toimesta, lopeta Ohjelmiston käyttö välittömästi. Ohjelmiston käytön aikana nämä kolmannet osapuolet keräävät ja käsittelevät asiaan liittyviä tietoja omien tietosuojakäytäntöjensä mukaisesti tarjotakseen joitakin toimintoja, mainoksia ja muita palveluita. Jos tiedot vuotavat kyseisen kolmannen osapuolen palveluntarjoajan tietojen keräämisen vuoksi, kyseinen kolmannen osapuolen palveluntarjoaja kantaa vastaavan oikeudellisen vastuun.

+ +

10. Voimassa oleva ja päivitetty Tietosuojakäytäntö

+

1. Tämä Tietosuojakäytäntö on voimassa julkaisupäivästä alkaen.

+

2. Liiketoimintamme kehittyessä ja muuttuessa Tietosuojakäytäntömme voi muuttua. Pidätämme oikeuden muuttaa tietosuojakäytäntöämme milloin tahansa, joten tarkista se usein. Jos teemme muutoksia Tietosuojakäytäntöömme, julkaisemme nämä päivitykset verkkosivuillamme, sovelluksissamme ja muualla, missä katsomme sen tarpeelliseksi pitääksemme sinut ajan tasalla. Jos tietosuojakäytäntöä päivitetään, se tulee voimaan päivityspäivästä. Tuotteidemme tai palveluidemme jatkuva käyttö tarkoittaa, että hyväksyt muuttuneen Tietosuojakäytäntömme.

+ +

11. Miten ottaa meihin yhteyttä

+

Saitong Industries Inc perustettiin 22. marraskuuta 2024, rekisteröity osoite: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Jos haluat tietää lisää yrityksestämme ja alustastamme, voit ottaa meihin yhteyttä tässä käytännössä annettujen yhteystietojen kautta (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/fi/user_agreement.html b/doc/fi/user_agreement.html new file mode 100644 index 000000000..f001808b6 --- /dev/null +++ b/doc/fi/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans-sovelluksen käyttäjäsopimus + + + +
+
Suomi
+ +

Voitrans-sovelluksen käyttäjäsopimus

+ +

Nämä käyttöehdot kertovat, miten voit käyttää Voitrans-sovellusta ja verkkopalveluita ("Palvelut"). Saitong Industries Inc. (jäljempänä "Saitong") kehottaa käyttäjiä lukemaan huolellisesti ja ymmärtämään täysin tämän käyttäjäsopimuksen (jäljempänä "Sopimus"). Käyttäjien tulee lukea huolellisesti ja ymmärtää täysin tämän Sopimuksen ehdot. Lue huolellisesti ja valitse, hyväksytkö vai etkö hyväksy tätä Sopimusta. Voitrans APP:n (jäljempänä "Sovellus" tai "Ohjelmisto") käyttöäsi pidetään tämän Sopimuksen hyväksymisenä ja suostut noudattamaan tämän Sopimuksen ehtoja. Jos et hyväksy tätä Sopimusta, älä käytä Sovellusta.

+

Saitong pidättää oikeuden muuttaa tätä Sopimusta, ja Sopimuksen päivitetyt ehdot julkaistaan tässä sovelluksessa ja tulevat voimaan julkaisupäivästä alkaen.

+ +

1. Yleiset säännöt

+

1.1 Tämä sovellus on Saitongin tarjoama ohjelmisto Saitongin ja sen kumppaniyritysten julkaisemien kuulokeprodukttien yhdistämiseen. Ohjelmiston ja siihen liittyvien palveluiden omistus- ja käyttöoikeudet kuuluvat kokonaisuudessaan Saitongille.

+

1.2 Tämä Sopimus on sopimus sinun (jäljempänä "Käyttäjä") sekä yhtiön ja sen kumppaneiden ja toiminnallisten kumppaneiden (jäljempänä "Kumppanit") välillä koskien käyttäjän Sovelluksen ja siihen liittyvien palveluiden käyttöä.

+

1.3 Ohjelmisto ja palvelut sisältävät:

+

1.3.1 Tarjottu ohjelmisto tarjoaa Voitrans-käyttäjille Voitrans-yhteyden ja -sidonnan, toimintoasetusten hallinnan ja muita ohjelmistopalveluita Sovelluksen todellisten ohjelmistopalveluiden mukaisesti.

+

1.3.2 Ohjelmiston päivitykset, päivitykset ja muut palvelut.

+ +

2. Ohjelmistolisenssin laajuus

+

2.1 Myönnämme käyttäjälle henkilökohtaisen, ei-siirrettävän, ei-alilisensoitavan ja ei-yksinomaisen lisenssin Ohjelmistoon.

+

2.2 Käyttäjät voivat asentaa, käyttää, näyttää ja suorittaa ohjelmiston yhdellä mobiilipäätelaitteella ei-kaupallisiin tarkoituksiin. Käyttäjä ei kuitenkaan saa asentaa, käyttää tai suorittaa ohjelmistoa kaupallisiin tarkoituksiin, kopioida, muuttaa, modifioida, yhdistää tai suorittaa ohjelmistoa tai minkään päätelaitteen muistiin tallennettuja tietoja ohjelmiston toiminnan aikana tai asiakas-palvelin-vuorovaikutustietoja ohjelmiston toiminnan aikana, eikä luoda johdannaistöitä. Tämä sisältää, mutta ei rajoitu, lisäosien tai kolmannen osapuolen luvattomien työkalujen/palveluiden käyttöön Ohjelmiston ja siihen liittyvien järjestelmien käyttämiseksi. Kaupallista myyntiä, kopiointia ja jakelua varten, kuten ohjelmiston esiasennusta ja niputtamista varten, on saatava kirjallinen lupa Saitongilta.

+

2.3 Käyttäjä ei saa asentaa Ohjelmistoa muille päätelaitteille ilman Saitongin nimenomaista lupaa, mukaan lukien mutta ei rajoittuen televisioihin, digitaalisiin digisovittimiin, pelikonsoleihin ja muihin laitteisiin.

+

2.4 Lukuun ottamatta tämän Sopimuksen nimenomaisesti myöntämiä oikeuksia, Käyttäjälle ei myönnetä muita oikeuksia, ja Käyttäjän on hankittava kirjallinen suostumus muiden oikeuksien käyttöön.

+ +

3. Ohjelmistopäivitys

+

3.1 Käyttäjän on valittava asennetun päätelaitteen kokoonpanoon sopiva ohjelmistoversio. Muussa tapauksessa ohjelmisto-ongelmat, laiteongelmat tai laitetyypille sopimattoman ohjelmistoversion aiheuttamat vahingot ovat yksinomaan käyttäjän vastuulla.

+

3.2 Käyttäjäkokemuksen parantamiseksi ja palvelusisällön parantamiseksi Saitongilla on oikeus tarjota ajoittain ohjelmiston korvaavia, muutettuja ja päivitettyjä versioita. "Päivitysmuistutus"-toiminto on oletuksena käytössä käyttäjille. Käyttäjien käyttämistä ohjelmistoversioista riippuen Saitong tarjoaa käyttäjille mahdollisuuden aktivoida tämän toiminnon. Ohjelmiston uuden version julkaisun jälkeen Saitong ei takaa vanhan ohjelmistoversion jatkuvaa saatavuutta.

+ +

4. Käyttöspesifikaatio

+

4.1 Käyttäjät voivat käyttää Ohjelmistoa ja Palveluita tämän Sopimuksen mukaisesti edellyttäen, että he noudattavat lakia ja tätä Sopimusta, eikä käyttäjien tule suorittaa seuraavia toimia:

+

4.1.1 Poistaa kaikki tekijänoikeustiedot Ohjelmistosta ja muista kopioista sekä muokata, poistaa tai kiertää Ohjelmiston asettamia teknisiä toimenpiteitä immateriaalioikeuksien suojaamiseksi.

+

4.1.2 Ohjelmiston käänteinen suunnittelu, kuten purkaminen, kääntäminen tai muut yritykset saada Ohjelmiston lähdekoodi.

+

4.1.3 Muokkaamalla tai väärentämällä ohjelmiston käytössä olevia käskyjä ja tietoja, lisäämällä, poistamalla tai muuttamalla ohjelmiston toimintoa tai toimintavaikutusta, tai ohjelmistoa tai menetelmiä, joita käytetään edellä mainittuihin tarkoituksiin toimiakseen tai levittääkseen yleisölle, riippumatta siitä, ovatko nämä toimet kaupallisia tarkoituksia varten.

+

4.1.4 Käyttää ohjelmistoa mihin tahansa verkkoturvallisuutta vaarantavaan toimintaan, mukaan lukien mutta ei rajoittuen: luvattomien tietojen käyttöön tai luvattomien palvelimien/tilien käyttöön; julkisten verkkojen tai muiden käyttöjärjestelmien käyttöön ilman lupaa ja tallennettujen tietojen poistamiseen, muokkaamiseen tai lisäämiseen; luvattomiin yrityksiin tutkia, skannata tai testata ohjelmiston järjestelmän tai verkon heikkouksia tai muihin verkkoturvallisuutta heikentäviin toimiin; yrityksiin häiritä tai tuhota ohjelmistojärjestelmän tai verkkosivuston normaalia toimintaa, haittaohjelmien tai virusten tahalliseen levittämiseen ja muihin normaaleja verkkopalveluita häiritseviin toimiin; TCP/IP-pakettinimien tai osittaisten nimien väärentämiseen.

+

4.1.6 Ilman Yhtiön kirjallista suostumusta käyttäjä suorittaa mielivaltaisesti seuraavia toimia ohjelmistolla ja sen sisältämillä tiedoilla, mukaan lukien mutta ei rajoittuen: käyttäminen, vuokraaminen, lainaaminen, kopioiminen, muokkaaminen, linkittäminen, uudelleenpainaminen, kokoaminen, julkaiseminen, peilipalvelinten perustaminen, johdettujen tuotteiden, teosten, palveluiden, lisäosien, yhteensopivuuden, yhteenliittämisen jne. kehittäminen Ohjelmiston avulla.

+

4.1.7 Käyttää Ohjelmistoa julkaistakseen, siirtääkseen, jakaakseen ja tallentaakseen sisältöä, joka rikkoo paikallisia lakejasi.

+

4.1.8 Käyttää ohjelmistoa julkaistakseen, siirtääkseen, levittääkseen ja tallentaakseen sisältöä, joka loukkaa muiden immateriaalioikeuksia, liikesalaisuuksia ja muita laillisia oikeuksia.

+

4.1.9 Käyttää tätä ohjelmistoa julkaistakseen, siirtääkseen ja levittääkseen mainostietoja ja roskapostia suurina määrinä.

+

4.1.10 Käyttää Ohjelmistoa ja muita Palveluita millään laittomalla tavalla, mihin tahansa laittomaan tarkoitukseen tai millään tavalla, joka on ristiriidassa tämän Sopimuksen lisensoidun käytön kanssa.

+

4.2 Tietojen julkaisuspesifikaatio

+

4.2.1 Jos käytät ohjelmistoa tietosisällön julkaisemiseen (tarvittaessa), sinun on taattava, että omistat lataamasi tietosisällön immateriaalioikeudet tai olet saanut laillisen valtuutuksen, eikä mikään ohjelmiston ja palveluiden käyttösi loukkaa kolmannen osapuolen laillisia oikeuksia ja etuja.

+

4.2.2 Käyttäessään Ohjelmistoa käyttäjä ei saa käyttää Ohjelmistoa seuraaviin toimintoihin, mukaan lukien mutta ei rajoittuen:

+

4.2.2.1 Luoda, kopioida, julkaista, levittää ja tallentaa paikallisia kansallisia lakeja ja asetuksia rikkovaa sisältöä.

+

4.2.2.2 Julkaista, siirtää, levittää ja tallentaa sisältöä, joka loukkaa muiden laillisia oikeuksia, kuten mainetta, muotokuvaa, immateriaalioikeuksia ja liikesalaisuuksia.

+

4.2.2.3 Keksiä tosiasioita, salata totuus harhauttaakseen tai pettääkseen muita.

+

4.2.2.4 Julkaista, siirtää ja levittää mainostietoja ja roskapostia.

+

4.2.2.5 Osallistua muihin paikallisia lakeja ja asetuksia rikkoviin toimiin.

+

4.2.3 Et saa harjoittaa kaupallista toimintaa, kuten mainontaa ja tavaroiden myyntiä Ohjelmistossa ilman Yhtiön lupaa.

+

4.3 Käyttäjä ymmärtää ja suostuu seuraavaan:

+

4.3.1 Saitong päättää, onko käyttäjän epäilty rikkoneen edellä mainittuja käyttöspesifikaatioita, ja arvioinnin tulosten perusteella keskeyttää tai lopettaa käyttöoikeutesi tai toteuttaa muita rajoittavia toimenpiteitä, jotka voidaan toteuttaa tämän sopimuksen mukaisesti.

+

4.3.2 Käyttäjän lisensoidun ohjelmiston käytöstä julkaistuun lainvastaiseksi tai muiden laillisia oikeuksia loukkaavaksi epäiltyyn tai tätä Sopimusta rikkovaan tietoon sovelletaan suoraa poistamista.

+

4.3.3 Jos käyttäjän edellä mainittujen käyttösääntöjen rikkominen aiheuttaa vahinkoa kolmansille osapuolille, sinun on kannettava oikeudellinen vastuu itsenäisesti omissa nimissäsi, ja sinun tulee varmistaa, ettei Saitongille aiheudu tappioita tai lisäkustannuksia.

+

4.3.4 Jos käyttäjä rikkoo asiaankuuluvia lakisäännöksiä tai sopimuksia aiheuttaen Saitongille tappioita, tai joutuu kolmannen osapuolen vaatimusten kohteeksi, tai viranomainen rankaisee käyttäjää, käyttäjän on korvattava Saitongille aiheutuneet tappiot ja/tai kulut, mukaan lukien kohtuulliset asianajopalkkiot, tutkinta- ja todisteiden keräämiskustannukset.

+ +

5. Kolmannen osapuolen palvelukuvaus

+

5.1 Käyttäjä ymmärtää ja suostuu siihen, että ohjelmistojärjestelmä voi sisältää Yhtiön tytäryhtiöiden tai kolmansien osapuolten tarjoamia palveluita, ja että Yhtiö tarjoaa ainoastaan asiaankuuluvat toimintomoduulit järjestelmässä käyttäjien mukavuuden vuoksi ja tarjoaa pääsyn kolmannen osapuolen palveluihin.

+

5.2 Riippumatta siitä, ovatko kolmannen osapuolen palvelut esiasetettuina ohjelmistojärjestelmän palveluissa vai käyttäjien itsensä avaamia tai tilaamia, käyttäjät ymmärtävät ja suostuvat siihen, ettei Saitong anna mitään nimenomaista tai konkludenttista takuuta kolmannen osapuolen palveluntarjoajien tai käyttäjien laillisuudesta ja tehokkuudesta, eikä kolmannen osapuolen palveluiden laillisuudesta, tarkkuudesta, tehokkuudesta ja turvallisuudesta.

+

5.3 Yhtiö ei valvo, kontrolloi tai tarjoa minkäänlaista takuuta kolmannen osapuolen palveluille eikä ota mitään vastuuta niistä.

+

5.4 Kaikki käyttäjän ja kolmannen osapuolen palveluntarjoajan väliset erimielisyydet tai riidat ratkaisee Käyttäjä ja kolmas osapuoli kolmannen osapuolen palveluntarjoajan liiketoimintaprosessien ja -normien mukaisesti, eikä yhtiö ota mitään vastuuta.

+ +

6. Tietosuojakäytäntö ja henkilötietojen suoja

+

6.1 Saitong sitoutuu suojelemaan käyttäjien yksityisyyttä tietosuojakäytännön mukaisesti, katso: Voitrans-tietosuojakäytäntö.

+ +

7. Sopimusrikkomusvastuu

+

7.1 Saitongilla on oikeus arvioida, onko käyttäjän toiminta tämän Sopimuksen määräysten mukaista. Jos katsotaan, että Käyttäjä on rikkonut asiaankuuluvia lakeja ja asetuksia tai tämän Sopimuksen ja siihen liittyvien sääntöjen määräyksiä, Saitongilla on käyttäjän rikkomuksen vakavuudesta riippuen oikeus poistaa lainvastainen tieto, rajoittaa, keskeyttää tai lopettaa käyttäjän oikeus käyttää Ohjelmistopalvelua, vaatia käyttäjää oikeudelliseen vastuuseen ja ryhtyä muihin Saitongin asianmukaisiksi katsomiin toimenpiteisiin. Jos meille aiheutuu tappiota (mukaan lukien mutta ei rajoittuen kolmannen osapuolen vaatimuksiin tai viranomaissanktioihin), Käyttäjä on täysin vastuussa.

+ +

8. Palveluriskit ja vastuuvapauslausekkeet

+

8.1 Haluamme tarjota palvelutukea nykyisellä teknologialla. Saitong ei takaa, että Ohjelmistopalvelu toimii keskeytyksettä tai virheettömästi, että kaikki Ohjelmistopalvelun viat korjataan tai että Ohjelmistopalvelu täyttää kaikkien käyttäjien vaatimukset. Saitong ei ota vastuuta aiheutuvista seurauksista.

+

8.2 Kaikista käyttäjälle kolmansien osapuolten, kuten tietoliikennelinjavikojen, teknisten ongelmien, verkon, tietokonepäätelaitevikojen, järjestelmän epävakauden ja muiden ylivoimaisten esteiden aiheuttamista tappioista ei olla vastuussa.

+

8.3 Saitong ei takaa ohjelmiston kautta saadun tietosisällön (mukaan lukien mutta ei rajoittuen kolmannen osapuolen palvelusisältöön) laillisuutta, aitoutta, tarkkuutta ja tehokkuutta, eikä Saitong ota vastuuta käyttäjien kyselyyn ja katseluun perustuvien toimien tuloksista.

+

8.4 Ohjelmisto, kuten useimmat internet-ohjelmistot, on altis eroille tekijöissä, mukaan lukien mutta ei rajoittuen käyttäjäsyihin, verkkopalvelun laatuun, sosiaaliseen ympäristöön ja muihin tekijöihin, ja siihen voi kohdistua erilaisia turvallisuusongelmia, kuten muiden käyttäjätietojen käyttö, joka johtaa häirintään tosielämässä; käyttäjien lataamien ja asentamien ohjelmistojen tai käyttäjien vierailemien verkkosivustojen sisältämät virukset, kuten "troijalaiset", jotka uhkaavat käyttäjien päätelaitetietojen ja tietojen turvallisuutta ja vaikuttavat ohjelmiston normaaliin käyttöön. Käyttäjien tulisi vahvistaa tietoturvatietoisuutta ja käyttäjätietojen suojaa sekä kiinnittää huomiota salasanasuojauksen vahvistamiseen tappioiden ja häirinnän välttämiseksi.

+

8.5 Kun käyttäjät käyttävät Ohjelmistoa tai vaativat Saitongia tarjoamaan tiettyjä palveluita, Ohjelmisto voi kutsua kolmannen osapuolen järjestelmiä tai ohjelmistoja tukeakseen käyttäjien käyttöä tai pääsyä, ja käytön tai pääsyn tulokset tarjoaa kolmas osapuoli. Tämän Sopimuksen asiaankuuluvien sääntöjen noudattamisen lisäksi käyttäjien tulee myös noudattaa kolmannen osapuolen sopimuksia ja siihen liittyviä sääntöjä. Käyttäjien on ymmärrettävä ja suostuttava siihen, että kolmannet osapuolet voivat lukea käyttäjätietoja käytettäessä kolmannen osapuolen palveluita, eikä Saitong takaa kolmannen osapuolen järjestelmien tai ohjelmistotuen kautta saavutettujen tulosten turvallisuutta, tarkkuutta, tehokkuutta ja muita epävarmoja riskejä, käyttäjien tulee käyttää harkintaa, eikä Saitong ota vastuuta tästä aiheutuvista kiistoista ja vahingoista.

+

8.6 Varmistaakseen yhtiön liiketoiminnan kehittämisen ja mukauttamisen itsenäisyyden yhtiö voi muuttaa tai keskeyttää palvelun milloin tahansa ilmoitettuaan käyttäjälle kohtuullisella tavalla.

+

8.7 Ellei laissa ja asetuksissa nimenomaisesti toisin säädetä, Saitong pyrkii parhaansa mukaan varmistamaan, että ohjelmisto ja siihen liittyvä teknologia ja tiedot ovat turvallisia, tehokkaita, tarkkoja ja luotettavia, mutta olemassa olevan teknologian rajoituksista johtuen käyttäjä ymmärtää, ettei Saitong voi taata tätä.

+

8.8 Henkilövahingon korvaaminen tai satunnainen ja välillinen taloudellinen vahinko, joka aiheutuu seuraavista olosuhteista tai liittyy niihin, mukaan lukien mutta ei rajoittuen voittojen menetykseen, tietojen menetykseen, liiketoiminnan keskeytymisestä johtuviin vahinkoihin tai muihin liiketoimintavahinkoihin tai tappioihin, on Käyttäjän vastuulla:

+

1) Lisensoidun ohjelmiston käyttö tai käyttökyvyttömyys.

+

2) Kolmansien osapuolten luvaton ohjelmiston käyttö tai käyttäjätietojen muuttaminen.

+

3) Käyttäjän ohjelmistotoimista aiheutuneet kulut ja tappiot.

+

4) Käyttäjän väärinkäsitykset ohjelmistosta.

+

5) Kaikki muut ohjelmistoon liittyvät tappiot, jotka eivät johdu Saitongin syistä.

+

8.9 Käyttäjä suostuu siihen, että Yhtiöllä on oikeus keskeyttää, katkaista tai lopettaa koko palvelu tai osa palvelusta käyttäjälle oikeudellisten, sääntelyllisten ja valvontaviranomaisten vaatimusten tai omien liiketoimintasyiden perusteella. Saitong ei ota tästä vastuuta.

+

8.10 Käyttäjä ymmärtää ja suostuu siihen, että Yhtiö käyttää kaupallisesti kohtuullisia toimia varmistaakseen tietojen tallennuksen turvallisuuden Ohjelmistossa ja Palveluissa, mutta yhtiö ei voi tarjota täydellistä takuuta, ja Käyttäjä ymmärtää, ettei Yhtiö ole vastuussa Palvelun tietojen poistamisesta tai tallennuksen tai varmuuskopioinnin epäonnistumisesta.

+

8.11 Lain sallimissa rajoissa Kehittäjä tai Toimittaja ei ole vastuussa mistään suorista, epäsuorista, satunnaisista, erityisistä tai välillisistä vahingoista, jotka aiheutuvat Sovelluksen käytöstä. Jos käyttäjällä on lisätarpeita, hän voi hakeutua asianmukaiseen sairaalaan perusteelliseen tutkimukseen.

+ +

9. Immateriaalioikeuslausunto

+

9.1 Saitong on tämän ohjelmiston immateriaalioikeuksien haltija. Kaikki ohjelmiston tekijänoikeudet, tavaramerkit, patentit, liikesalaisuudet ja muut immateriaalioikeudet sekä kaikki ohjelmistoon liittyvä tietosisältö (mukaan lukien mutta ei rajoittuen tekstiin, kuviin, ääneen, videoon, grafiikkaan, käyttöliittymäsuunnitteluun, asettelukehyksiin, asiaankuuluviin tietoihin tai sähköisiin asiakirjoihin jne.) on suojattu paikallisilla laeilla ja asetuksilla sekä vastaavilla kansainvälisillä sopimuksilla.

+

9.2 Ilman Yhtiön kirjallista suostumusta Käyttäjä ei saa toteuttaa, hyödyntää tai siirtää edellä mainittuja immateriaalioikeuksia kaupallisiin tai ei-kaupallisiin tarkoituksiin tai sallia kolmannen osapuolen tehdä niin, ja Yhtiö pidättää oikeuden vaatia oikeudellista vastuuta edellä mainituista toimista.

+ +

10. Sopimuksen muutos

+

10.1 Saitongilla on oikeus muuttaa tämän Sopimuksen ehtoja tarvittaessa. Kun Sopimuksen ehtoja muutetaan, muutetut Sopimuksen ehdot julkaistaan asianmukaisella sivulla. Jos et hyväksy muutettua sisältöä, käyttäjän tulee oma-aloitteisesti peruuttaa tämä palvelu. Jos Käyttäjä jatkaa Palveluiden käyttöä, katsotaan hänen hyväksyneen Sopimuksen ehtojen muutokset.

+

10.2 Saitong pidättää oikeuden muuttaa tarjottavia maksullisia palveluita, veloitusstandardeja, veloitusmenetelmiä, palvelumaksuja ja palveluehtoja tarvittaessa. Palveluita tarjotessamme saatamme veloittaa tiettyjä maksuja joidenkin palveluiden käyttäjiltä nyt tai tulevaisuudessa. Jos käyttäjät kieltäytyvät maksamasta kyseisiä maksuja, he eivät voi jatkaa asiaankuuluvien palveluiden käyttöä maksujen alkamisen jälkeen.

+
+ + diff --git a/doc/fr/privacy_policy.html b/doc/fr/privacy_policy.html new file mode 100644 index 000000000..5d882e28d --- /dev/null +++ b/doc/fr/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Politique de confidentialite Voitrans + + + + +
+

Politique de confidentialite Voitrans

+

Derniere mise a jour : 27 mai 2025

+

Date d'entree en vigueur : 27 mai 2025

+ +

Bienvenue dans l'utilisation du logiciel et des services Voitrans

+

1. Voitrans est fourni par Saitong Industries Inc. (ci-apres denomme "la Societe"). Il peut aider les utilisateurs a gerer les appareils Bluetooth et autres produits. Nous comprenons l'importance des informations personnelles pour nos utilisateurs (ci-apres denommes "vous") et que la protection efficace de vos informations personnelles est la pierre angulaire du developpement sain et durable de notre activite. Merci pour votre utilisation et votre confiance dans les produits ou services Voitrans ! Nous sommes pleinement conscients que cette confiance ne s'obtient pas facilement, nous adherons au principe d'ouverture et de transparence, pour vous exprimer nos regles de traitement de vos informations personnelles. Nous utilisons des moyens legaux et legitimes et des objectifs clairs et raisonnables pour traiter vos informations personnelles. Note speciale : Veuillez vous assurer de lire et de comprendre attentivement cette Politique de confidentialite avant d'utiliser nos produits ou services afin de pouvoir faire des choix appropries.

+

2. Cette Politique de confidentialite vous explique comment nous collectons, utilisons, stockons et partageons vos informations personnelles lorsque vous utilisez Voitrans. Les informations personnelles font reference a tous les types d'informations enregistrees par des moyens electroniques ou autres qui peuvent identifier une personne physique specifique ou refleter les activites d'une personne physique specifique seules ou en combinaison avec d'autres informations. Voitrans respecte et protege la vie privee de tous les utilisateurs du service. Sauf disposition contraire de la presente Politique de confidentialite, Voitrans ne divulguera pas ces informations au public ni ne les fournira a des tiers sans votre autorisation prealable.

+

3. Lorsque vous utilisez le produit ou le service d'un tiers via un produit ou service de la place de marche d'applications, vos informations personnelles seront soumises a la politique de confidentialite du tiers.

+

4. Voitrans Cette Politique de confidentialite sera mise a jour de temps a autre. En acceptant l'Accord d'utilisation du service Voitrans et en commencant a utiliser Voitrans, vous etes repute avoir accepte la totalite de cette Politique de confidentialite. Si vous n'acceptez pas cette Politique de confidentialite, veuillez ne pas utiliser le logiciel et les services Voitrans.

+

5. Afin d'analyser et de mesurer l'efficacite des services concernes, nous utiliserons et divulguerons vos informations personnelles conformement aux dispositions de la presente Politique de confidentialite.

+ +

Cette Politique de confidentialite vous aidera a comprendre les elements suivants :

+
    +
  • 1 Les informations que nous collectons
  • +
  • 2 Stockage des informations
  • +
  • 3 Securite des informations
  • +
  • 4 Comment utilisons-nous les informations que nous collectons
  • +
  • 5 Partage des informations
  • +
  • 6 Comment gerez-vous vos informations personnelles
  • +
  • 7 Description des autorisations de l'application
  • +
  • 8 Acces aux SDK tiers
  • +
  • 9 Protection des mineurs
  • +
  • 10 Politique de confidentialite en vigueur et mise a jour
  • +
  • 11 Comment nous contacter
  • +
+ +

1. Les informations que nous collectons

+

1. Lorsque vous commencez a utiliser Voitrans, nous commencerons a collecter des donnees sur votre utilisation de l'application

+

2. Voitrans peut obtenir des informations personnelles vous concernant aupres de tiers ou de partenaires commerciaux par des moyens legaux

+

3. Afin de vous fournir de meilleurs produits et services, de vous assurer la securite du reseau pendant l'utilisation, de maintenir le fonctionnement normal des produits et d'optimiser et d'ameliorer, l'objectif de nos services d'information, apres que vous ayez activement clique pour accepter cette politique de confidentialite, en utilisant le service que nous fournissons. Pendant le service, en plus des informations personnelles necessaires pour assurer le fonctionnement normal des fonctions de base de l'App conformement aux lois et reglements nationaux, nous collecterons d'autres informations personnelles aupres de vous :

+

3.1 Afin d'identifier les utilisateurs a risque, de juger de l'authenticite des utilisateurs et de prevenir la fraude de maniere globale, nous lirons les informations de votre appareil chaque fois que vous ouvrez le logiciel, y compris : (Modele de l'appareil, adresse MAC de l'appareil, identifiant unique de l'appareil (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, numero de serie, SSID et BSSID du WIFI), lecture de l'adresse Bluetooth, version du systeme d'exploitation, nom du systeme d'exploitation, compte de connexion et mot de passe de l'utilisateur ;

+

3.2 Lorsque vous utilisez nos produits et services, nous pouvons collecter certaines informations via des informations de journal reseau ou certains programmes et logiciels, ces informations peuvent inclure : des details sur l'utilisation des produits et services, tels que l'heure d'ouverture de votre application, la duree d'utilisation et l'adresse de la page visitee ; des informations sur les evenements de l'appareil, tels que les plantages, l'activite du systeme, etc., pour optimiser votre appareil et ameliorer nos services ;

+

3.3 Pour identifier les applications ou l'equipement est a risque, fournir des services fonctionnels plus securises. Par consequent, nous devons obtenir votre liste d'applications/d'installation d'applications dans le processus pour assurer le fonctionnement normal du produit et proteger la securite de l'appareil.

+

3.4 Afin d'analyser l'utilisation des fonctions de l'application par les utilisateurs et de determiner l'authenticite des utilisateurs, nous devons effectuer des statistiques de donnees et collecter les informations de l'appareil mentionnees ci-dessus, y compris l'adresse MAC de l'appareil et l'identifiant unique de l'appareil, lorsque votre appareil est en cours d'utilisation.

+

3.5 Signal de l'appareil : l'etat du reseau de l'appareil que vous utilisez, les informations du point d'acces WIFI, etc.

+

3.6 Informations de localisation : Nous pouvons utiliser le GPS, le WiFi ou d'autres moyens techniques pour collecter et traiter des informations sur votre localisation pour la mise a jour des informations locales, la fourniture de services de contenu, etc.

+

Pour plus d'informations, veuillez cliquer sur "Liste de collecte des informations personnelles".

+ +

1. Pour les informations personnelles plus sensibles parmi les informations ci-dessus, telles que les informations de l'appareil de l'utilisateur (numero IMEI, etat de l'appel et numero d'identification), les informations de localisation GPS, les droits d'acces au contenu multimedia photo et aux fichiers, nous obtiendrons votre consentement avant la collecte. Pour certaines informations non sensibles, la collecte peut etre par defaut et automatique. Vous pouvez restreindre notre collecte d'informations pertinentes ou l'utilisation de certaines autorisations depuis votre appareil mobile en ajustant l'option Parametres de votre appareil mobile. Lorsque vous restreignez notre acces a une certaine autorisation, nous ne pourrons peut-etre pas continuer a vous fournir les services correspondants, et nous ne traiterons plus vos informations correspondantes.

+

2. Nous ne collecterons pas votre numero de carte d'identite, vos informations biometriques personnelles, votre numero de compte bancaire, vos informations patrimoniales, vos informations de credit, vos informations de sante et physiologiques et autres informations personnelles sensibles.

+

3. Concernant les autorisations sensibles : Afin d'utiliser correctement les fonctions de l'application, le produit doit obtenir les autorisations suivantes afin de fournir des services fonctionnels lies aux produits normaux.

+ +

1 Obtenir les autorisations de lecture et d'ecriture du stockage

+

1 Comment obtenir : invite contextuelle, lorsque l'autorisation est obtenue, l'utilisateur cliquera activement sur accepter pour que l'application utilise cette autorisation

+

2 Objectif et portee d'utilisation : Utilise pour scanner les fichiers de cache de ressources et les vignettes dans le systeme, charger les ressources musicales et les images de produits. Il est affiche sur l'interface de l'App pour faciliter la visualisation et l'operation par les utilisateurs

+ +

2 Obtenir l'autorisation de la liste d'installation des applications

+

1 Comment obtenir : invite contextuelle, lorsque l'autorisation est obtenue, l'utilisateur cliquera activement sur accepter pour que l'application utilise cette autorisation

+

2 Objectif et portee d'utilisation : Lorsque l'application doit utiliser des services de promotion publicitaire, la plateforme publicitaire tierce, Youmon +SDK, doit obtenir l'"autorisation de la liste d'installation des logiciels de l'application" de l'appareil pour empecher l'envoi a l'utilisateur d'une application qu'il possede deja et ameliorer l'experience utilisateur.

+ +

3 L'autorisation d'obtenir les informations sur l'etat de l'appareil

+

Comprend : (Modele de l'appareil, adresse MAC de l'appareil, identifiant unique de l'appareil (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, numero de serie, SSID et BSSID du WIFI, lecture de l'adresse Bluetooth), version du systeme d'exploitation, nom du systeme d'exploitation, etc. ;

+

1 Comment obtenir : invite contextuelle, lorsque l'autorisation est obtenue, l'utilisateur cliquera activement sur accepter pour que l'application utilise cette autorisation

+

2 Objectif et portee d'utilisation : Lorsque vous utilisez notre application, afin d'analyser l'utilisation des fonctions de l'application par l'utilisateur et de juger de l'authenticite de l'utilisateur, nous synchroniserons l'autorisation avec des SDK tiers, y compris Autonavi SDK, Youmon +SDK, etc.

+ +

4 Acces aux informations de localisation

+

1 Comment obtenir : invites contextuelles, lorsque l'autorisation est obtenue, l'utilisateur n'utilisera cette autorisation que lorsqu'il cliquera activement sur accepter avec l'application.

+

2 Objectif et portee d'utilisation : Lorsque l'application doit utiliser le GPS, le WiFi ou d'autres fonctions, le produit doit collecter votre localisation et vos informations pour rechercher des appareils Bluetooth dans les emplacements proches.

+

Remarque : Pour plus d'autorisations d'application, consultez le present document "Politique de confidentialite" Section 7 "Description des autorisations de l'application"

+ +

2. Stockage des informations

+

1. Ou les informations sont stockees

+

Les informations personnelles que nous collectons et generons en Republique populaire de Chine seront stockees sur nos serveurs et/ou ceux de nos filiales.

+

2. Stockage et traitement des informations

+

Nous ne stockons vos informations personnelles que pendant la periode necessaire a la realisation de l'objectif ou aussi longtemps que la loi et la reglementation l'exigent. Apres que vous avez cesse d'utiliser ce produit, nous cesserons immediatement de collecter et de traiter vos informations personnelles et les donnees de l'application. Lorsque la periode ci-dessus est depassee, nous supprimerons ou anonymiserons les informations personnelles que vous nous avez fournies.

+

En plus des fonctions necessaires, Voitrans doit demander les autorisations systeme correspondantes. Le cote serveur du cloud ne stocke pas les informations personnelles des utilisateurs, et le SDK tiers auquel on accede sera anonymise et desidentifie par le fournisseur de services (Amu Statistics SDK, Autonavi SDK), de sorte que les utilisateurs ne peuvent pas etre suivis. Les informations stockees sur le telephone de l'utilisateur seront automatiquement supprimees lorsque l'utilisateur desinstalle Voitrans ou vide le cache.

+ +

3. Securite des informations

+

1. Voitrans stocke et protege vos informations personnelles en utilisant des mesures et des technologies de securite conformes aux normes de l'industrie, telles que l'authentification, le chiffrement des donnees, l'acces restreint aux centres de donnees et d'autres mesures de securite pour s'assurer que vos informations sont protegees contre la divulgation, l'alteration et la destruction. Malgre les mesures de securite susmentionnees, veuillez noter qu'aucune mesure de securite ne peut etre securisee a 100%.

+

2. Lorsque vous utilisez les services fournis par Voitrans, veuillez proteger vos informations personnelles. Si vous constatez que vos informations personnelles ont ete compromises, veuillez nous contacter immediatement afin que nous puissions prendre les mesures appropriees.

+ +

4. Comment utilisons-nous les informations que nous collectons

+

1. Lors de la mise en oeuvre des fonctions commerciales de l'application, nous pouvons utiliser vos informations personnelles pour assurer l'integrite et la securite des produits et services que nous vous fournissons ;

+

2. Nous comprendrons vos habitudes d'utilisation grace aux informations collectees, et a l'aide de l'analyse des donnees, identifierons l'acceptabilite des services, vos habitudes d'utilisation, etc., afin de tester et de creer de nouveaux produits, fonctions et services, d'ameliorer le niveau de service, et de nous aider a ameliorer les services existants et a developper de nouveaux services ;

+

3. Nous pouvons utiliser vos informations personnelles pour des enquetes aupres des clients concernant les produits et services, pour l'envoi d'avis concernant les produits et services, et pour la promotion commerciale ;

+

4. Nous pouvons utiliser vos informations pour l'analyse interne et la recherche liees a l'application ;

+ +

5. Partage des informations

+

Actuellement, nous ne partagerons ni ne transfererons activement vos informations personnelles a des tiers en dehors de l'entreprise. S'il y a d'autres partages ou transferts de vos informations personnelles, nous confirmerons directement ou nous assurerons que le tiers a obtenu votre consentement explicite pour le comportement ci-dessus.

+

Nous ne divulguerons pas publiquement les informations personnelles que nous collectons. S'il est necessaire de les divulguer publiquement, nous vous informerons de l'objectif de la divulgation publique, du type d'informations divulguees et des informations sensibles qui pourraient etre impliquees, et obtiendrons votre consentement explicite.

+

Au fur et a mesure que notre activite continue de se developper, nous pouvons nous engager dans des fusions, des acquisitions, des transferts d'actifs et d'autres transactions, et nous vous informerons des circonstances pertinentes, conformement aux lois et reglements et pas moins que les normes requises par le present Guide pour continuer a proteger vos informations personnelles ou exiger qu'un nouveau responsable de traitement continue a proteger vos informations personnelles.

+

En outre, conformement aux lois, reglements et normes nationales pertinentes, nous pouvons partager, transferer et divulguer publiquement des informations personnelles sans l'autorisation et le consentement prealables du sujet des informations personnelles dans les circonstances suivantes :

+
    +
  • 1 Directement lies a la securite nationale et a la defense nationale ;
  • +
  • 2 Directement lies a la securite publique, a la sante publique ou aux interets publics majeurs ;
  • +
  • 3 Directement lies a l'enquete criminelle, aux poursuites, au jugement et a l'execution des jugements ;
  • +
  • 4 Afin de proteger la vie, la propriete et les autres droits et interets legitimes majeurs du sujet des donnees personnelles ou d'autres personnes, mais il est difficile d'obtenir le consentement de la personne ;
  • +
  • 5 Informations personnelles divulguees au public par le sujet des informations personnelles ;
  • +
  • 6 Collecte d'informations personnelles a partir d'informations divulguees legalement et publiquement, telles que des reportages mediatiques legitimes, la divulgation d'informations gouvernementales et d'autres canaux.
  • +
+ +

6. Comment gerez-vous vos informations personnelles

+

Conformement aux lois, reglements et normes pertinents de la Chine, ainsi qu'aux pratiques courantes d'autres pays et regions, nous vous garantissons l'exercice des droits suivants sur vos informations personnelles :

+ +

1. Corriger vos informations personnelles

+

Si vous constatez une erreur dans vos informations personnelles traitees par nous, vous avez le droit de corriger ou de mettre a jour les informations erronees ou incompletes. Si vous ne parvenez pas a operer de maniere independante dans le centre de compte, vous pouvez nous contacter par e-mail a saitong.voitrans@gmail.com

+ +

2. Supprimer vos informations personnelles

+

Dans les cas suivants, vous pouvez nous adresser une demande de suppression de vos informations personnelles :

+
    +
  • Si nous traitons des informations personnelles en violation des lois et reglements ;
  • +
  • Si nous collectons et utilisons vos informations personnelles sans votre consentement ;
  • +
  • Si notre traitement des informations personnelles viole notre accord avec vous ;
  • +
  • Si vous n'utilisez plus nos produits ou services ;
  • +
  • Si nous ne vous fournissons plus de produits ou de services.
  • +
+

Contactez-nous. Nous traiterons votre demande a saitong.voitrans@gmail.com Contactez-nous. Nous vous l'enverrons dans les 30 jours ouvrables suivant la reception

+ +

3. Modifier l'etendue de votre consentement

+

Vous pouvez nous contacter par e-mail a saitong.voitrans@gmail.com Contactez-nous. A votre demande, nous ne collecterons, n'utiliserons ni ne divulguerons plus vos informations personnelles. Veuillez noter que le retrait de votre consentement ou la suppression de vos informations personnelles peut affecter votre utilisation de certains de nos services.

+ +

4 Acceder et copier les informations personnelles

+

Vous pouvez, conformement aux dispositions des lois pertinentes, fournir votre imei (numero de serie du telephone) ou oaid ou Android ID apres les informations de compte et d'autres informations, vous pouvez nous demander l'acces et la copie de vos informations personnelles, vous pouvez nous contacter par e-mail a 3514406195@qq.com.

+ +

5. En reponse a votre demande ci-dessus

+

A des fins de securite, vous devrez peut-etre fournir une demande ecrite ou prouver votre identite d'une autre maniere. Nous pouvons vous demander de verifier votre identite avant de traiter votre demande. Pour votre demande raisonnable, nous y repondrons et la traiterons en temps opportun. Nous pouvons rejeter les demandes qui sont inutilement repetitives, qui necessitent trop de technologie (par exemple, le developpement de nouveaux systemes ou des changements fondamentaux dans les pratiques existantes), qui presentent un risque pour les interets legitimes d'autrui, ou qui sont hautement irrealisables.

+

Dans les circonstances suivantes, conformement aux exigences des lois et reglements, nous ne serons pas en mesure de repondre a votre demande :

+
    +
  • Liees a la securite nationale et a la defense nationale ;
  • +
  • En rapport avec l'enquete criminelle, les poursuites et le jugement ;
  • +
  • Il existe des preuves suffisantes que vous avez une malveillance subjective ou un abus de droits ;
  • +
  • Repondre a votre demande causerait un prejudice grave aux droits et interets legitimes de vous ou d'autres personnes et organisations.
  • +
+ +

6. Annulation de compte

+

L'utilisateur peut effectuer l'operation [annulation de compte] sur l'APP. Etapes de l'operation :

+
    +
  1. Aller a la page [Mon profil]
  2. +
  3. Cliquer sur le bouton [Parametres] en haut a droite
  4. +
  5. Cliquer sur [Annuler le compte] pour confirmer
  6. +
+

Apres votre deconnexion, les informations relatives au compte utilisateur sont effacees

+ +

7. Description des autorisations de l'application

+

Afin de fournir de meilleurs produits et services, lorsque vous utilisez le logiciel, nous demanderons les droits suivants. Lorsque vous entrez sur la page d'accueil ou utilisez la fonction, une autorisation sera demandee. Si vous refusez, certaines des fonctions correspondantes ne pourront pas etre utilisees normalement. Les objectifs specifiques et les rappels des autorisations sont decrits en detail comme suit :

+ +

1 Droits de localisation :

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Via WiFi ou station de base mobile pour obtenir les informations de latitude et longitude de l'utilisateur

+

Lorsque vous utilisez Voitrans, nous rechercherons votre appareil Bluetooth a proximite en fonction de votre emplacement geographique. En meme temps, afin de fournir des services plus stables, d'optimiser les produits et d'ameliorer l'experience, nous partagerons les informations ci-dessus avec trois SDK, tels que Youmon et Autonavi, pour obtenir les donnees d'exploitation de Voitrans et les services fonctionnels.

+

Mode de rappel : Un message indiquant l'autorisation de demarrer l'application pour la premiere fois est affiche, necessitant la confirmation d'acceptation par l'utilisateur. Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Cette autorisation est requise lorsque vous accedez a une application pour executer des fonctions de gestion d'applications.

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

3 Autorisations reseau :

+

android.permission.INTERNET

+

Ces autorisations sont requises pour les services d'information et les services de mise a jour de version de Voitrans, et afin d'ameliorer l'experience utilisateur et d'optimiser les capacites de service, des SDK tiers tels que Friends utiliseront egalement ces autorisations.

+

Mode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

4 Obtenir les autorisations d'etat du reseau :

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Il est utilise pour savoir si la connexion reseau actuelle est valide, determiner si l'environnement 4G actuel est actif, et s'il faut rappeler les changements d'environnement reseau, affectant ainsi le chargement du contenu des informations. Cette autorisation est demandee lorsque vous utilisez Voitrans.

+

Les changements d'etat du reseau affectent le telechargement et le chargement des donnees. Par consequent, l'autorisation d'acces a l'etat du reseau sera partagee avec friends + et d'autres plateformes.

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

5 Obtenir les autorisations de la liste des taches :

+

android.permission.GET_TASKS

+

Cette autorisation est utilisee pour obtenir la liste des applications pour la fonction de gestion du logiciel. Lorsque vous utilisez la fonction de gestion du logiciel, vous devez lire les applications installees sur le telephone mobile.

+

Mode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

6 Obtenir l'autorisation de l'adresse MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Lorsque vous utilisez Voitrans, l'application devra obtenir les autorisations de l'adresse MAC :

+

Lorsqu'une application doit rapporter des donnees de conversion cible, des plateformes tierces telles que Youmon +SDK doivent utiliser le MAC.

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

7 Obtenir l'autorisation d'enregistrement audio

+

android.permission.RECORD_AUDIO

+

Lorsque vous utilisez la fonction de saisie vocale de Voitrans, vous devez utiliser l'autorisation d'enregistrement audio, et utiliser principalement la saisie vocale pour la traduction et d'autres fonctions connexes.

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite, la boite contextuelle s'affiche dynamiquement pour l'utilisateur lorsque cela est necessaire.

+ +

8 Obtenir l'autorisation SSID du WIFI

+

Lorsque cette autorisation est utilisee, l'application lit l'autorisation SSID du WIFI :

+

Portee d'utilisation et objectif : Lorsque l'application doit utiliser des services d'analyse de donnees, des plateformes tierces telles que +SDK doivent lire l'"autorisation SSID du WIFI" de l'appareil pour fournir aux utilisateurs des services fonctionnels plus precis et efficaces.

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

9 Obtenir l'acces Bluetooth

+

Lorsque cette autorisation est utilisee, l'application lit l'autorisation Bluetooth :

+

Portee d'utilisation et objectif : Appareils Bluetooth pour rechercher et configurer des accessoires, tels que des casques Bluetooth, des montres Bluetooth, etc. Facile a gerer pour les utilisateurs

+

Mode de rappel : Un message indiquant l'autorisation de demarrer l'application pour la premiere fois est affiche, necessitant la confirmation d'acceptation par l'utilisateur. Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

10 Obtenir l'autorisation BSSID du WiFi

+

Lorsque l'application doit distinguer et identifier l'utilisateur pour fournir des services fonctionnels et des statistiques de donnees, elle lira l'autorisation "WiFi BSSID" de l'appareil pour :

+

Portee d'utilisation et objectif : 1 Plateformes tierces : telles que Youmeng SDK, Bugly SDK, Autonavi SDK

+

Methode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

11 Obtenir l'autorisation d'installation de l'application

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Le logiciel utilisera l'autorisation d'installation de l'application, qui est principalement utilisee pour permettre aux utilisateurs d'installer une nouvelle version et de decouvrir de nouvelles fonctionnalites lorsqu'une nouvelle version est disponible.

+

Mode de rappel : Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

12 Obtenir les autorisations de la camera

+

android.permission.CAMERA

+

Voitrans utilise les autorisations de la camera pour scanner les codes QR et associer des appareils Bluetooth tels que des casques Bluetooth et des montres.

+

Methode de rappel : Un message indiquant l'autorisation de demarrer l'application pour la premiere fois est affiche, necessitant la confirmation d'acceptation par l'utilisateur. Description de l'Accord utilisateur et de la Politique de confidentialite.

+ +

Note speciale :

+

1 L'application integre dans ses Allies SDK, Scott map SDK, apres que l'utilisateur accepte d'autoriser l'utilisation, l'application en arriere-plan/premier plan pour ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI et d'autres informations personnelles ;

+

Remarques : Pour plus de contenu et d'autorisations liees au SDK, veuillez consulter [VIII. Liste d'acces aux SDK tiers]

+ +

8. Acces aux SDK tiers

+

1 Afin d'assurer le fonctionnement stable et la realisation fonctionnelle de notre client, afin que vous puissiez utiliser et profiter de plus de services et de fonctions, notre application sera integree dans le kit de developpement d'outils logiciels (SDK) ou d'autres applications similaires de tiers. Ces tiers collecteront et traiteront les informations pertinentes conformement a leurs propres politiques de confidentialite, afin de fournir normalement des fonctions et des services publicitaires. Vous pouvez en apprendre davantage sur les regles de collecte et de traitement des informations du tiers dans la section suivante. Nous effectuerons des tests de securite stricts sur les kits de developpement (SDK) des partenaires pour obtenir des informations, afin de proteger l'utilisation raisonnable et la securite de vos informations personnelles. Veuillez noter que les SDK tiers peuvent modifier les types de traitement des donnees en raison de leurs mises a niveau de version. Veuillez vous referer aux politiques de confidentialite publiees par les SDK tiers. Voir les details ci-dessous ou cliquez pour voir la liste des SDK tiers.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Informations obtenues : Numero d'appareil, adresse IP, informations logicielles de l'appareil, code d'identification de l'appareil (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informations IMSI de la carte SIM, IP, adresse MAC), identifiant de l'appareil, region, informations d'application liees a l'appareil et autres informations de journal liees au service

+

Objectif d'utilisation : Connexion et partage WeChat

+

Developpeur : Shenzhen Tencent Computer Systems Company Limited

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Informations obtenues : Nom de l'application, numero de version de l'application, marque et modele de l'appareil, systeme d'exploitation, informations de l'operateur, resolution d'ecran, informations des capteurs (vecteur, acceleration, pression, direction, geomagnetique, gyroscope, temperature, capteur de lumiere, signal NMEA), informations sur la puissance du signal de l'appareil

+

Objectif d'utilisation : Navigation avec Amap

+

Developpeur : Beijing Gaode Tuqiang Technology Co., Ltd.

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Informations obtenues : Nom de l'application, version de l'application, marque et modele de l'appareil, systeme d'exploitation, informations reseau, puissance du signal de l'appareil, etc.

+

Objectif d'utilisation : Affichage et interaction cartographique

+

Developpeur : Beijing Gaode Tuqiang Technology Co., Ltd.

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Informations obtenues : Informations de localisation (GPS, Wi-Fi, station de base), informations de l'appareil, informations reseau, etc.

+

Objectif d'utilisation : Fournir des services de localisation

+

Developpeur : Beijing Gaode Tuqiang Technology Co., Ltd.

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Informations obtenues : Nom de l'application, version de l'application, informations de l'appareil, informations reseau, etc.

+

Objectif d'utilisation : Outils cartographiques et optimisation du rendu

+

Developpeur : Beijing Gaode Tuqiang Technology Co., Ltd.

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Informations obtenues : Identifiants d'appareil, informations de base sur l'appareil, liste des logiciels installes et informations reseau (voir la politique de confidentialite officielle pour plus de details)

+

Objectif d'utilisation : Connexion au compte Alipay et appel de paiement

+

Developpeur : Alipay (Hangzhou) Information Technology Co., Ltd.

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Informations obtenues : Version SDK/API, plateforme, horodatage, identifiant de l'application, version de l'application, fabricant de l'appareil, version du systeme d'exploitation, parametres regionaux, fuseau horaire, etat du reseau (Wi-Fi, etc.), journaux reseau, donnees de plantage et d'utilisation, adresse IP, etc. (voir la politique de confidentialite officielle pour plus de details)

+

Objectif d'utilisation : Service de surveillance de la qualite de l'application et de rapport de donnees

+

Developpeur : Shenzhen Tencent Computer Systems Company Limited

+

Methode de collecte : Auto-collecte du SDK

+

Lien vers la politique de confidentialite : https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Protection des mineurs

+

Les utilisateurs de nos produits et services peuvent inclure des mineurs de moins de 18 ans, les utilisateurs mineurs doivent demander l'avis de leurs parents ou tuteurs concernant cette Politique de confidentialite avant d'utiliser nos produits, et utiliser nos services ou nous fournir vos informations apres avoir obtenu le consentement et sous la direction de leurs parents ou tuteurs. Les tuteurs de mineurs qui ont des questions peuvent nous contacter via les coordonnees fournies dans cette Politique de confidentialite.

+

Si vous n'etes pas d'accord avec la collecte des informations susmentionnees par les fournisseurs de services tiers ci-dessus, veuillez cesser immediatement d'utiliser le Logiciel. Pendant votre utilisation du Logiciel, ces tiers collecteront et traiteront les informations pertinentes conformement a leurs propres politiques de confidentialite pour fournir certaines fonctions, publicites et autres services. Si les informations sont divulguees en raison de la collecte des informations susmentionnees par le fournisseur de services tiers concerne, le fournisseur de services tiers concerne assumera la responsabilite juridique correspondante.

+ +

10. Politique de confidentialite en vigueur et mise a jour

+

1. Cette Politique de confidentialite est en vigueur a compter de la date de publication.

+

2. Au fur et a mesure que notre activite evolue et change, notre Politique de confidentialite peut changer. Nous nous reservons le droit de modifier notre politique de confidentialite a tout moment, veuillez donc verifier souvent. Si nous apportons des modifications a notre Politique de confidentialite, nous publierons ces mises a jour sur notre site web, nos applications et partout ou nous le jugerons appropriate pour vous tenir informe. Si la politique de confidentialite est mise a jour, elle prendra effet a compter de la date de mise a jour. Votre utilisation continue de nos produits ou services signifie que vous acceptez notre Politique de confidentialite modifiee.

+ +

11. Comment nous contacter

+

Saitong Industries Inc cree le 22 novembre 2024, adresse enregistree : 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Si vous souhaitez en savoir plus sur notre entreprise et notre plateforme, vous pouvez nous contacter via les coordonnees fournies dans cette politique (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/fr/user_agreement.html b/doc/fr/user_agreement.html new file mode 100644 index 000000000..b26e6b79f --- /dev/null +++ b/doc/fr/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protocole utilisateur de l'application Voitrans + + + +
+
Français
+ +

Protocole utilisateur de l'application Voitrans

+ +

Les presentes Conditions Generales d'Utilisation vous indiquent comment acceder et utiliser l'application Voitrans et les services en ligne (les "Services"). Saitong Industries Inc. (ci-apres denomme "Saitong") rappelle par la presente aux utilisateurs de lire attentivement et de comprendre pleinement le present Accord d'Utilisation (ci-apres denomme "l'Accord"). Les utilisateurs doivent lire attentivement et comprendre pleinement les termes du present Accord. Veuillez lire attentivement et choisir d'accepter ou de ne pas accepter le present Accord. Votre utilisation de l'APP Voitrans (ci-apres denommee "l'APP" ou "le Logiciel") sera consideree comme une acceptation du present Accord et vous acceptez d'etre lie par les termes du present Accord. Si vous n'acceptez pas le present Accord, n'utilisez pas l'APP.

+

Saitong se reserve le droit de modifier le present Accord, et les termes mis a jour de l'Accord seront publies dans cette APP, prenant effet a compter de la date de publication.

+ +

1. Regles generales

+

1.1 Cette APP est le logiciel fourni par Saitong pour connecter les produits casques lances par Saitong et ses societes partenaires. La propriete et les droits d'exploitation du logiciel et des services associes appartiennent tous a Saitong.

+

1.2 Le present Accord est un accord entre vous (ci-apres denomme "l'Utilisateur") et la societe ainsi que ses partenaires et partenaires operationnels (ci-apres denommes les "Partenaires") concernant l'utilisation de l'APP et des services associes par l'utilisateur.

+

1.3 Le logiciel et les services comprennent :

+

1.3.1 Le logiciel fourni offre aux utilisateurs de Voitrans la connexion et l'appairage Voitrans, la gestion des parametres de fonctions et d'autres services logiciels, sous reserve des services logiciels reels fournis par l'APP.

+

1.3.2 Mises a jour, mises a niveau et autres services du logiciel.

+ +

2. Portee de la licence logicielle

+

2.1 Nous accordons a l'utilisateur une licence personnelle, non transferable, non sous-licenciable et non exclusive sur le Logiciel.

+

2.2 Les utilisateurs peuvent installer, utiliser, afficher et executer le logiciel sur un seul appareil terminal mobile a des fins non commerciales. Toutefois, l'utilisateur ne doit pas installer, utiliser ou executer le logiciel a des fins d'exploitation commerciale, copier, modifier, changer, connecter ou executer le logiciel ou les donnees stockees dans la memoire de tout appareil terminal pendant le fonctionnement du logiciel ou les donnees d'interaction entre le client et le serveur pendant le fonctionnement du logiciel, ni creer d'oeuvres derivees. Cela inclut, sans s'y limiter, l'utilisation de plugins, d'extensions ou d'outils/services tiers non autorises pour acceder au Logiciel et aux systemes associes. Pour la vente commerciale, la reproduction et la distribution, telles que la pre-installation et le regroupement de logiciels, une autorisation et une permission ecrites doivent etre obtenues.

+

2.3 L'Utilisateur ne doit pas installer le Logiciel sur d'autres appareils terminaux sans l'autorisation expresse du Createur, y compris, mais sans s'y limiter, les televiseurs, les decodeurs numeriques, les consoles de jeux et autres appareils.

+

2.4 Sauf autorisation expresse du present Accord, aucun autre droit n'est accorde a l'Utilisateur, et l'Utilisateur doit obtenir le consentement ecrit pour utiliser d'autres droits.

+ +

3. Mise a niveau du logiciel

+

3.1 L'utilisateur doit selectionner la version du logiciel adaptee a la configuration du terminal installe. Sinon, les problemes logiciels, les problemes de l'appareil ou les dommages causes par toute version du logiciel inadaptee au type d'appareil seront de la seule responsabilite de l'utilisateur.

+

3.2 Afin d'ameliorer l'experience utilisateur et d'ameliorer le contenu du service, Saitong a le droit de vous fournir de temps en temps des versions de remplacement, de modification et de mise a niveau du logiciel. La fonction "Invite de mise a niveau" est activee par defaut pour les utilisateurs. En fonction des differentes versions de logiciel utilisees par les utilisateurs, Saitong offre aux utilisateurs la possibilite d'activer cette fonction. Apres la sortie d'une nouvelle version du logiciel, Saitong ne garantit pas la disponibilite continue de l'ancienne version du logiciel.

+ +

4. Specifications d'utilisation

+

4.1 Les utilisateurs peuvent utiliser le Logiciel et les Services conformement au present Accord, dans le respect de la loi et du present Accord, et les utilisateurs ne doivent pas effectuer les actes suivants :

+

4.1.1 Supprimer toutes les informations de droits d'auteur sur le Logiciel et les autres copies, et modifier, supprimer ou contourner les mesures techniques mises en place par le Logiciel pour proteger les droits de propriete intellectuelle.

+

4.1.2 Effectuer de l'ingenierie inverse du Logiciel, telle que le desassemblage, la decompilation ou d'autres tentatives d'obtenir le code source du Logiciel.

+

4.1.3 En modifiant ou en falsifiant les instructions et les donnees dans le fonctionnement du logiciel, en ajoutant, supprimant ou modifiant la fonction ou l'effet de fonctionnement du logiciel, ou en exploitant ou diffusant au public des logiciels ou methodes destines aux fins susmentionnees, que ces actes soient a des fins commerciales ou non.

+

4.1.4 Utiliser le logiciel pour tout comportement mettant en danger la securite du reseau, y compris, mais sans s'y limiter : l'utilisation de donnees non autorisees ou l'acces a des serveurs/comptes non autorises ; l'acces sans permission a des reseaux publics ou a d'autres systemes d'exploitation et la suppression, la modification ou l'ajout d'informations stockees ; les tentatives non autorisees de sonder, scanner ou tester les faiblesses du systeme ou du reseau du logiciel ou d'autres actes portant atteinte a la securite du reseau ; les tentatives d'interferer avec ou de detruire le fonctionnement normal du systeme logiciel ou du site web, la diffusion intentionnelle de programmes malveillants ou de virus, et d'autres actes perturbant les services normaux d'information en reseau ; la falsification de noms ou de parties de noms de paquets TCP/IP.

+

4.1.6 Sans le consentement ecrit de la Societe, l'utilisateur effectue arbitrairement les actes suivants sur le logiciel et les informations qu'il contient, y compris, mais sans s'y limiter : l'utilisation, la location, le pret, la copie, la modification, la liaison, la reimpression, la compilation, la publication, la diffusion, la creation de sites miroirs, le developpement de produits derives, d'oeuvres, de services, de plugins, d'extensions, de compatibilite, d'interconnexion, etc., a l'aide du Logiciel.

+

4.1.7 Utiliser le Logiciel pour publier, transmettre, distribuer et stocker du contenu qui enfreint vos lois locales.

+

4.1.8 Utiliser le logiciel pour publier, transmettre, diffuser et stocker du contenu qui porte atteinte aux droits de propriete intellectuelle, aux secrets commerciaux et aux autres droits legitimes d'autrui.

+

4.1.9 Utiliser ce logiciel pour publier, transmettre et diffuser en masse des informations publicitaires et des informations indesirables.

+

4.1.10 Utiliser le Logiciel et les autres Services de maniere illegale, a des fins illegales ou de toute maniere incompatible avec l'utilisation autorisee du present Accord.

+

4.2 Specification de publication d'informations

+

4.2.1 Si vous utilisez le logiciel pour publier du contenu informatif (le cas echeant), vous devez garantir que vous detenez les droits de propriete intellectuelle du contenu informatif que vous telechargez ou que vous avez obtenu une autorisation legale, et qu'aucun de vos comportements d'utilisation du logiciel et des services ne porte atteinte aux droits et interets legitimes d'un tiers.

+

4.2.2 Lors de l'utilisation du Logiciel, l'utilisateur ne doit pas utiliser le Logiciel pour se livrer aux activites suivantes, y compris, mais sans s'y limiter :

+

4.2.2.1 Creer, copier, publier, diffuser et stocker du contenu qui enfreint les lois et reglements nationaux locaux.

+

4.2.2.2 Publier, transmettre, diffuser et stocker du contenu qui porte atteinte aux droits legaux d'autrui tels que la reputation, le portrait, la propriete intellectuelle et les secrets commerciaux.

+

4.2.2.3 Fabriquer des faits, dissimuler la verite afin d'induire en erreur ou de tromper autrui.

+

4.2.2.4 Publier, transmettre et diffuser des informations publicitaires et des informations indesirables.

+

4.2.2.5 Se livrer a d'autres actes en violation des lois et reglements locaux.

+

4.2.3 Vous ne pouvez pas mener d'activites commerciales telles que la publicite et la vente de marchandises dans le Logiciel sans l'autorisation de la Societe.

+

4.3 L'Utilisateur comprend et accepte que :

+

4.3.1 Saitong determinera si l'utilisateur est soupconnne de violer les specifications d'utilisation susmentionnees, et selon les resultats de la determination, suspendra ou mettra fin a votre licence d'utilisation ou prendra d'autres mesures restrictives pouvant etre prises conformement au present accord.

+

4.3.2 Pour les informations publiees par l'utilisateur a l'aide du logiciel sous licence suspectees d'etre illegales ou de porter atteinte aux droits legaux d'autrui ou de violer le present Accord, les informations seront directement supprimees.

+

4.3.3 Si la violation par l'utilisateur des regles d'utilisation susmentionnees cause des dommages a des tiers, vous devez assumer la responsabilite juridique de maniere independante en votre propre nom, et vous devez vous assurer que l'idee est exempte de pertes ou de couts supplementaires.

+

4.3.4 Si l'utilisateur enfreint les dispositions legales ou les accords pertinents, causant des pertes a Saitong, ou fait l'objet de reclamations de tiers, ou est sanctionne par l'autorite administrative, l'utilisateur doit indemniser les pertes et/ou les depenses causees a Saitong, y compris les frais d'avocat raisonnables, les frais d'enquete et de collecte de preuves.

+ +

5. Description des services tiers

+

5.1 L'utilisateur comprend et accepte que le systeme logiciel peut contenir des services fournis par des filiales de la Societe ou des tiers, et que la Societe ne fournit que des modules fonctionnels pertinents dans le systeme pour la commodite des utilisateurs et donne acces aux services tiers.

+

5.2 Que les services tiers soient preinstalles dans les services du systeme logiciel, ou ouverts ou commandes par les utilisateurs eux-memes, les utilisateurs comprennent et acceptent que Saitong ne fait aucune garantie ou assurance expresse ou implicite quant a la legalite et l'efficacite des fournisseurs de services tiers ou des utilisateurs, ainsi que la legalite, l'exactitude, l'efficacite et la securite des services tiers.

+

5.3 La societe ne supervise pas, ne controle pas et ne fournit aucune garantie ou assurance d'aucune sorte pour les services tiers, et n'assume aucune responsabilite.

+

5.4 Tout litige ou differend entre l'utilisateur et le fournisseur de services tiers doit etre resolu par l'Utilisateur et le tiers conformement au processus commercial et aux normes commerciales du fournisseur de services tiers, et la societe n'assume aucune responsabilite.

+ +

6. Politique de confidentialite et protection des informations personnelles

+

6.1 Saitong s'engage a proteger la vie privee des utilisateurs conformement a la politique de confidentialite, veuillez consulter : la Politique de confidentialite de l'application Voitrans.

+ +

7. Responsabilite en cas de violation

+

7.1 Saitong a le droit de juger si le comportement de l'utilisateur est conforme aux dispositions du present Accord. S'il est estime que l'Utilisateur a viole les lois et reglements pertinents ou les dispositions du present Accord et des regles associees, en fonction de la gravite de la violation de l'utilisateur, Saitong a le droit de supprimer les informations illegales, de restreindre, suspendre, mettre fin a l'utilisation du service Logiciel par l'utilisateur, de poursuivre la responsabilite juridique de l'utilisateur et de prendre d'autres mesures que Saitong juge appropriees. Si nous subissons une perte quelconque (y compris, mais sans s'y limiter, la reception de reclamations de tiers ou de sanctions de tout departement administratif), l'Utilisateur sera entierement responsable.

+ +

8. Risques lies au service et clauses de non-responsabilite

+

8.1 Nous souhaitons fournir un support de service avec la technologie actuelle. Saitong ne garantit pas que le Service Logiciel fonctionnera sans interruption ni erreur, que tous les defauts du Service Logiciel seront corriges, ni que le Service Logiciel repondra a toutes les exigences des utilisateurs. Pour les consequences qui en resultent, Saitong n'assume aucune responsabilite.

+

8.2 Toutes les pertes subies par l'utilisateur en raison de tiers tels que des pannes de lignes de communication, des problemes techniques, des pannes de reseau, d'equipement terminal informatique, l'instabilite du systeme et d'autres causes de force majeure ne seront pas tenues pour responsables.

+

8.3 Saitong ne garantit pas la legalite, l'authenticite, l'exactitude et l'efficacite du contenu des informations obtenues par le biais du logiciel (y compris, mais sans s'y limiter, le contenu des services tiers), et Saitong n'assume aucune responsabilite pour les resultats de tout comportement effectue par les utilisateurs sur la base de requetes et de consultations.

+

8.4 Le logiciel, comme la plupart des logiciels Internet, est affecte par des differences de facteurs comprenant, sans s'y limiter, les raisons de l'utilisateur, la qualite du service reseau, l'environnement social et d'autres facteurs, et peut etre soumis a divers problemes de securite, tels que l'utilisation par d'autres des informations de l'utilisateur, entrainent du harcelement dans la vie reelle ; d'autres logiciels telecharges et installes par les utilisateurs ou d'autres sites web visites par les utilisateurs contiennent des virus tels que des "chevaux de Troie", qui menacent la securite des informations et des donnees de l'equipement terminal des utilisateurs, puis affectent l'utilisation normale du logiciel. Les utilisateurs doivent renforcer la sensibilisation a la securite des informations et a la protection des donnees des utilisateurs, et veiller a renforcer la protection par mot de passe pour eviter les pertes et le harcelement.

+

8.5 Lorsque les utilisateurs utilisent le Logiciel ou demandent a Saitong de fournir des services specifiques, le Logiciel peut appeler des systemes tiers ou des logiciels tiers pour soutenir l'utilisation ou l'acces des utilisateurs, et les resultats de l'utilisation ou de l'acces sont fournis par le tiers. Outre le respect des regles pertinentes du present Accord, les utilisateurs doivent egalement respecter les accords et les regles pertinentes du tiers. Les utilisateurs doivent comprendre et accepter que, lors de l'utilisation de services tiers, les tiers peuvent lire les donnees des utilisateurs, et Saitong ne garantit pas la securite, l'exactitude, l'efficacite et les autres risques incertains des resultats obtenus grace au support de systemes tiers ou de logiciels tiers, les utilisateurs doivent exercer un jugement prudent, et Saitong n'assume aucune responsabilite pour tout litige et dommage cause par cela.

+

8.6 Afin de garantir l'autonomie du developpement et de l'ajustement commercial de la societe, la societe peut modifier ou interrompre le service a tout moment apres avoir pris un moyen raisonnable d'en informer l'utilisateur.

+

8.7 Sauf disposition expresse des lois et reglements, Saitong fera de son mieux pour s'assurer que le logiciel et la technologie et les informations impliquees sont surs, efficaces, precis et fiables, mais limites par la technologie existante, l'utilisateur comprend que Saitong ne peut pas le garantir.

+

8.8 L'indemnisation pour les dommages corporels ou les dommages economiques accessoires et indirects causes par ou en rapport avec l'une des circonstances suivantes, y compris, mais sans s'y limiter, la perte de profits, la perte de donnees, les dommages pour interruption d'activite ou d'autres dommages ou pertes commerciaux, sera a la charge de l'Utilisateur :

+

1) L'utilisation ou l'incapacite d'utiliser le logiciel sous licence.

+

2) L'utilisation non autorisee du logiciel ou la modification des donnees de l'utilisateur par des tiers.

+

3) Les depenses et pertes encourues par les actions de l'utilisateur avec le logiciel.

+

4) Les idees fausses de l'utilisateur sur le logiciel.

+

5) Toute autre perte liee au logiciel qui n'est pas attribuable a des causes de Saitong.

+

8.9 L'Utilisateur accepte que la Societe a le droit de suspendre, d'interrompre ou de mettre fin a tout ou partie du Service a l'utilisateur sur la base des exigences des autorites judiciaires, reglementaires et de surveillance ou pour ses propres raisons commerciales. Saitong n'accepte aucune responsabilite a cet egard.

+

8.10 L'Utilisateur comprend et accepte que la Societe utilisera ses efforts commercialement raisonnables pour assurer la securite du stockage des donnees dans le Logiciel et les Services, mais la societe ne peut pas fournir une garantie complete, et l'Utilisateur comprend que la Societe n'est pas responsable de la suppression ou de l'echec du stockage ou de la sauvegarde des donnees dans le Service.

+

8.11 Dans toute la mesure permise par la loi, le Developpeur ou le Fournisseur ne sera pas responsable des dommages directs, indirects, accessoires, speciaux ou consecutifs resultant de l'utilisation de l'Application. Si l'utilisateur a des besoins supplementaires, veuillez vous rendre dans un hopital regulier pour un examen approfondi.

+ +

9. Declaration de propriete intellectuelle

+

9.1 Saitong est le titulaire des droits de propriete intellectuelle de ce logiciel. Tous les droits d'auteur, marques, brevets, secrets commerciaux et autres droits de propriete intellectuelle du logiciel, ainsi que tout le contenu informatif lie au logiciel (y compris, mais sans s'y limiter, le texte, les images, l'audio, la video, les graphiques, la conception d'interface, le cadre de mise en page, les donnees pertinentes ou les documents electroniques, etc.) sont proteges par les lois et reglements locaux et les traites internationaux correspondants.

+

9.2 Sans le consentement ecrit de la Societe, l'Utilisateur ne doit pas mettre en oeuvre, utiliser ou transferer les droits de propriete intellectuelle susmentionnes a des fins commerciales ou non commerciales, ni autoriser un tiers a le faire, et la Societe se reserve le droit de poursuivre la responsabilite juridique pour les actes susmentionnes.

+ +

10. Modification du protocole

+

10.1 Saitong a le droit de modifier les termes du present Accord lorsque cela est necessaire. Une fois les termes de l'Accord modifies, les termes revises de l'Accord seront publies sur la page concernee. Si vous n'etes pas d'accord avec le contenu modifie, l'utilisateur doit prendre l'initiative d'annuler ce service. Si l'Utilisateur continue d'utiliser les Services, il est repute accepter les modifications des termes de l'Accord.

+

10.2 Saitong se reserve le droit de modifier ou de changer les services payants, les normes de facturation, les methodes de facturation, les frais de service et les conditions de service fournis selon les besoins. Lors de la fourniture de services, nous pouvons facturer certains frais aux utilisateurs de certains services maintenant ou a l'avenir. Si les utilisateurs refusent de payer ces frais, ils ne pourront pas continuer a utiliser les services pertinents apres le debut de la facturation.

+
+ + diff --git a/doc/hi/privacy_policy.html b/doc/hi/privacy_policy.html new file mode 100644 index 000000000..58fc95410 --- /dev/null +++ b/doc/hi/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans गोपनीयता नीति + + + + +
+

Voitrans गोपनीयता नीति

+

अंतिम अपडेट: 27 मई, 2025

+

प्रभावी तिथि: 27 मई, 2025

+ +

Voitrans सॉफ्टवेयर और सेवाओं का उपयोग करने में आपका स्वागत है

+

1. Voitrans Saitong Industries Inc. (इसके बाद "कंपनी" के रूप में संदर्भित) द्वारा प्रदान किया गया है। यह उपयोगकर्ताओं को ब्लूटूथ उपकरणों और अन्य उत्पादों के प्रबंधन में मदद कर सकता है। हम अपने उपयोगकर्ताओं (इसके बाद "आप" के रूप में संदर्भित) के लिए व्यक्तिगत जानकारी के महत्व को समझते हैं और यह कि आपकी व्यक्तिगत जानकारी की प्रभावी सुरक्षा हमारे व्यवसाय के स्वस्थ और टिकाऊ विकास की आधारशिला है। Voitrans उत्पादों या सेवाओं में आपके उपयोग और विश्वास के लिए धन्यवाद! हम पूरी तरह से जानते हैं कि यह विश्वास आसानी से नहीं मिलता, हम खुलेपन और पारदर्शिता के सिद्धांत का पालन करते हैं, आपकी व्यक्तिगत जानकारी को संसाधित करने के लिए हमारे नियमों को आपको व्यक्त करने के लिए, हम आपकी व्यक्तिगत जानकारी को संसाधित करने के लिए कानूनी और वैध तरीकों और स्पष्ट और उचित उद्देश्यों का उपयोग करते हैं। विशेष नोट: कृपया हमारे उत्पादों या सेवाओं का उपयोग करने से पहले इस गोपनीयता नीति को ध्यानपूर्वक पढ़ें और समझें ताकि आप उचित विकल्प चुन सकें।

+

2. यह गोपनीयता नीति आपको समझाती है कि जब आप Voitrans का उपयोग करते हैं तो हम आपकी व्यक्तिगत जानकारी कैसे एकत्र, उपयोग, संग्रहीत और साझा करते हैं। व्यक्तिगत जानकारी इलेक्ट्रॉनिक या अन्य माध्यमों से दर्ज सभी प्रकार की जानकारी को संदर्भित करती है जो किसी विशिष्ट प्राकृतिक व्यक्ति की पहचान कर सकती है या किसी विशिष्ट प्राकृतिक व्यक्ति की गतिविधियों को अकेले या अन्य जानकारी के संयोजन में प्रतिबिंबित कर सकती है। Voitrans सेवा के सभी उपयोगकर्ताओं की व्यक्तिगत गोपनीयता का सम्मान और संरक्षण करता है। इस गोपनीयता नीति में अन्यथा प्रदान किए गए को छोड़कर, Voitrans आपकी पूर्व अनुमति के बिना इस जानकारी को जनता के सामने प्रकट नहीं करेगा या तीसरे पक्ष को प्रदान नहीं करेगा।

+

3. जब आप App Marketplace उत्पाद या सेवा के माध्यम से किसी तीसरे पक्ष के उत्पाद या सेवा का उपयोग करते हैं, तो आपकी व्यक्तिगत जानकारी तीसरे पक्ष की गोपनीयता नीति के अधीन होगी।

+

4. Voitrans यह गोपनीयता नीति समय-समय पर अपडेट की जाएगी। Voitrans सेवा उपयोग समझौते से सहमत होकर और Voitrans का उपयोग शुरू करके, यह माना जाता है कि आपने इस गोपनीयता नीति से सहमति दे दी है। यदि आप इस गोपनीयता नीति से सहमत नहीं हैं, तो कृपया Voitrans सॉफ्टवेयर और सेवाओं का उपयोग न करें।

+

5. संबंधित सेवाओं की प्रभावशीलता का विश्लेषण और मापन करने के लिए, हम इस गोपनीयता नीति के प्रावधानों के अनुसार आपकी व्यक्तिगत जानकारी का उपयोग और प्रकटीकरण करेंगे।

+ +

यह गोपनीयता नीति आपको निम्नलिखित समझने में मदद करेगी:

+
    +
  • 1 हम जो जानकारी एकत्र करते हैं
  • +
  • 2 जानकारी का भंडारण
  • +
  • 3 जानकारी की सुरक्षा
  • +
  • 4 हम एकत्र की गई जानकारी का उपयोग कैसे करते हैं
  • +
  • 5 जानकारी साझा करना
  • +
  • 6 आप अपनी व्यक्तिगत जानकारी कैसे प्रबंधित करते हैं
  • +
  • 7 एप्लिकेशन अनुमति विवरण
  • +
  • 8 तृतीय-पक्ष SDK तक पहुंच
  • +
  • 9 नाबालिगों की सुरक्षा
  • +
  • 10 प्रभावी और अद्यतन गोपनीयता नीति
  • +
  • 11 हमसे कैसे संपर्क करें
  • +
+ +

1. हम जो जानकारी एकत्र करते हैं

+

1. Voitrans का उपयोग शुरू करते ही हम एप्लिकेशन के आपके उपयोग के बारे में डेटा एकत्र करना शुरू कर देंगे

+

2. Voitrans वैध माध्यमों से तीसरे पक्ष या व्यापार भागीदारों से आपके बारे में व्यक्तिगत जानकारी प्राप्त कर सकता है

+

3. आपको बेहतर उत्पाद और सेवाएं प्रदान करने, उपयोग के दौरान आपको नेटवर्क सुरक्षा प्रदान करने, उत्पादों के सामान्य संचालन को बनाए रखने और अनुकूलित और सुधार करने, हमारी सूचना सेवाओं के उद्देश्य से, आपके द्वारा सक्रिय रूप से इस गोपनीयता नीति से सहमत होने पर क्लिक करने के बाद, हमारे द्वारा प्रदान की गई जानकारी का उपयोग करें। सेवा के दौरान, राष्ट्रीय कानूनों और विनियमों के अनुसार ऐप के बुनियादी कार्यों के सामान्य संचालन को सुनिश्चित करने के लिए आवश्यक व्यक्तिगत जानकारी के अलावा, हम आपसे अन्य व्यक्तिगत जानकारी एकत्र करेंगे:

+

3.1 जोखिम उपयोगकर्ताओं की पहचान करने, उपयोगकर्ताओं की प्रामाणिकता का निर्णय करने और चारों ओर से धोखाधड़ी को रोकने के लिए, हम हर बार जब आप सॉफ्टवेयर खोलेंगे, आपके डिवाइस की जानकारी पढ़ेंगे, जिसमें शामिल है: (डिवाइस मॉडल, डिवाइस MAC पता, डिवाइस अद्वितीय पहचानकर्ता (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, आदि) MEID, सीरियल नंबर, WIFI का SSID और BSSID), ब्लूटूथ पता पढ़ना, ऑपरेटिंग सिस्टम संस्करण, ऑपरेटिंग सिस्टम नाम, उपयोगकर्ता लॉगिन खाता और पासवर्ड जानकारी;

+

3.2 जब आप हमारे उत्पादों और सेवाओं का उपयोग करते हैं, तो हम नेटवर्क लॉग जानकारी या कुछ कार्यक्रमों और सॉफ्टवेयर के माध्यम से कुछ जानकारी एकत्र कर सकते हैं, ऐसी जानकारी में शामिल हो सकती है: उत्पादों और सेवाओं के उपयोग का विवरण, जैसे आपके एप्लिकेशन का खुलने का समय, उपयोग की अवधि और विज़िट किए गए पृष्ठ का पता; डिवाइस ईवेंट जानकारी, जैसे क्रैश, सिस्टम गतिविधि, आदि, आपके डिवाइस को अनुकूलित करने और हमारी सेवाओं में सुधार करने के लिए;

+

3.3 उन अनुप्रयोगों की पहचान करने के लिए जहां उपकरण जोखिम में हैं, अधिक सुरक्षित कार्यात्मक सेवाएं प्रदान करना। इसलिए, उत्पाद के सामान्य संचालन को सुनिश्चित करने और डिवाइस की सुरक्षा की रक्षा करने के लिए हमें प्रक्रिया में आपकी एप्लिकेशन/एप्लिकेशन इंस्टॉलेशन सूची प्राप्त करने की आवश्यकता है।

+

3.4 उपयोगकर्ताओं द्वारा एप्लिकेशन कार्यों के उपयोग का विश्लेषण करने और उपयोगकर्ताओं की प्रामाणिकता निर्धारित करने के लिए, हमें डेटा आंकड़े करने और आपके डिवाइस के उपयोग में होने पर डिवाइस MAC पते और डिवाइस अद्वितीय पहचानकर्ता सहित उपरोक्त डिवाइस जानकारी एकत्र करने की आवश्यकता है।

+

3.5 डिवाइस सिग्नल: आपके द्वारा उपयोग किए जाने वाले डिवाइस की नेटवर्क स्थिति, WIFI एक्सेस प्वाइंट जानकारी, आदि।

+

3.6 स्थान जानकारी: हम स्थानीय जानकारी अपडेट करने, सामग्री सेवाएं प्रदान करने आदि के लिए आपके स्थान के बारे में जानकारी एकत्र और संसाधित करने के लिए GPS, WiFi या अन्य तकनीकी साधनों का उपयोग कर सकते हैं।

+

अधिक जानकारी के लिए, कृपया "व्यक्तिगत जानकारी संग्रह सूची" पर क्लिक करें।

+ +

1. उपरोक्त जानकारी में अधिक संवेदनशील व्यक्तिगत जानकारी के लिए, जैसे उपयोगकर्ता डिवाइस जानकारी (IMEI नंबर, कॉल स्थिति और पहचान संख्या), GPS स्थान जानकारी, फोटो मीडिया सामग्री और फ़ाइल एक्सेस अधिकार, हम संग्रह से पहले आपकी सहमति प्राप्त करेंगे। कुछ गैर-संवेदनशील जानकारी के लिए, संग्रह डिफ़ॉल्ट और स्वचालित हो सकता है। आप अपने मोबाइल डिवाइस के लिए सेटिंग्स विकल्प को समायोजित करके प्रासंगिक जानकारी के हमारे संग्रह या कुछ अनुमतियों के उपयोग को प्रतिबंधित कर सकते हैं। जब आप किसी निश्चित अनुमति तक हमारी पहुंच को प्रतिबंधित करते हैं, तो हम आपको संबंधित सेवाएं प्रदान करना जारी रखने में सक्षम नहीं हो सकते हैं, और अब आपकी संबंधित जानकारी को संसाधित नहीं करेंगे।

+

2. हम आपका पहचान पत्र नंबर, व्यक्तिगत बायोमेट्रिक जानकारी, बैंक खाता नंबर, संपत्ति की जानकारी, क्रेडिट जानकारी, स्वास्थ्य और शारीरिक जानकारी और अन्य व्यक्तिगत संवेदनशील जानकारी एकत्र नहीं करेंगे।

+

3. संवेदनशील अनुमतियों के बारे में: एप्लिकेशन कार्यों का ठीक से उपयोग करने के लिए, उत्पाद को सामान्य उत्पादों से संबंधित कार्यात्मक सेवाएं प्रदान करने के लिए निम्नलिखित अनुमतियां प्राप्त करने की आवश्यकता है।

+ +

1 स्टोरेज रीड और राइट अनुमतियां प्राप्त करें

+

1 कैसे प्राप्त करें: पॉप-अप प्रॉम्प्ट, जब अनुमति प्राप्त होती है, उपयोगकर्ता सक्रिय रूप से सहमत पर क्लिक करेगा और एप्लिकेशन इस अनुमति का उपयोग करेगा

+

2 उपयोग का उद्देश्य और दायरा: इसका उपयोग सिस्टम में संसाधन कैश फ़ाइलों और थंबनेल को स्कैन करने, संगीत संसाधनों और उत्पाद चित्रों को लोड करने के लिए किया जाता है। यह ऐप इंटरफ़ेस पर प्रदर्शित होता है ताकि उपयोगकर्ता देख और संचालित कर सकें

+ +

2 एप्लिकेशन इंस्टॉलेशन सूची की अनुमति प्राप्त करें

+

1 कैसे प्राप्त करें: पॉप-अप प्रॉम्प्ट, जब अनुमति प्राप्त होती है, उपयोगकर्ता सक्रिय रूप से सहमत पर क्लिक करेगा और एप्लिकेशन इस अनुमति का उपयोग करेगा

+

2 उपयोग का उद्देश्य और दायरा: जब एप्लिकेशन को विज्ञापन प्रचार सेवाओं का उपयोग करने की आवश्यकता होती है, तो तृतीय-पक्ष विज्ञापन प्लेटफॉर्म, Youmon +SDK, को उपयोगकर्ता के पास पहले से मौजूद एप्लिकेशन को पुश करने से रोकने और उपयोगकर्ता अनुभव में सुधार करने के लिए डिवाइस की "ऐप सॉफ़्टवेयर इंस्टॉलेशन सूची अनुमति" प्राप्त करने की आवश्यकता होती है।

+ +

3 डिवाइस स्थिति जानकारी प्राप्त करने की अनुमति

+

इसमें शामिल है: (डिवाइस मॉडल, डिवाइस MAC पता, डिवाइस अद्वितीय पहचानकर्ता (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, आदि) MEID, सीरियल नंबर, WIFI का SSID और BSSID, ब्लूटूथ पता पढ़ना), ऑपरेटिंग सिस्टम संस्करण, ऑपरेटिंग सिस्टम नाम, आदि;

+

1 कैसे प्राप्त करें: पॉप-अप प्रॉम्प्ट, जब अनुमति प्राप्त होती है, उपयोगकर्ता सक्रिय रूप से सहमत पर क्लिक करेगा और एप्लिकेशन इस अनुमति का उपयोग करेगा

+

2 उपयोग का उद्देश्य और दायरा: हमारे एप्लिकेशन का उपयोग करते समय, उपयोगकर्ता द्वारा एप्लिकेशन कार्यों के उपयोग का विश्लेषण करने और उपयोगकर्ता की प्रामाणिकता का निर्णय करने के लिए, हम अनुमति को तृतीय-पक्ष SDK के साथ सिंक्रनाइज़ करेंगे, जिसमें Autonavi SDK, Youmon +SDK आदि शामिल हैं।

+ +

4 स्थान जानकारी तक पहुंच

+

1 कैसे प्राप्त करें: पॉप-अप प्रॉम्प्ट, जब अनुमति प्राप्त होती है, उपयोगकर्ता केवल तभी इस अनुमति का उपयोग करेगा जब वह सक्रिय रूप से एप्लिकेशन से सहमत होने पर क्लिक करेगा।

+

2 उपयोग का उद्देश्य और दायरा: जब एप्लिकेशन को GPS, WiFi या अन्य कार्यों का उपयोग करने की आवश्यकता होती है, तो उत्पाद को आस-पास के स्थानों में ब्लूटूथ डिवाइस खोजने के लिए आपके स्थान और जानकारी एकत्र करने की आवश्यकता होती है।

+

नोट: अधिक एप्लिकेशन अनुमतियों के लिए, इस दस्तावेज़ "गोपनीयता नीति" की धारा 7 "एप्लिकेशन अनुमति विवरण" देखें

+ +

2. जानकारी का भंडारण

+

1. जानकारी कहाँ संग्रहीत है

+

हम जो व्यक्तिगत जानकारी चीन जनवादी गणराज्य में एकत्र और उत्पन्न करते हैं, उसे हमारे सर्वर और/या हमारी सहयोगी कंपनियों के सर्वर पर संग्रहीत किया जाएगा।

+

2. जानकारी भंडारण और प्रसंस्करण

+

हम आपकी व्यक्तिगत जानकारी केवल उद्देश्य प्राप्त करने के लिए आवश्यक अवधि के लिए या कानून और विनियमन द्वारा आवश्यक अवधि तक संग्रहीत करते हैं। इस उत्पाद का उपयोग बंद करने के बाद, हम आपकी व्यक्तिगत जानकारी और एप्लिकेशन डेटा को एकत्र और संसाधित करना तुरंत बंद कर देंगे। जब उपरोक्त अवधि पार हो जाती है, तो हम आपके द्वारा हमें प्रदान की गई व्यक्तिगत जानकारी को हटा देंगे या गुमनाम कर देंगे।

+

आवश्यक कार्यों के अलावा, Voitrans को संबंधित सिस्टम अनुमतियों के लिए आवेदन करना होगा। क्लाउड का सर्वर पक्ष उपयोगकर्ता व्यक्तिगत जानकारी संग्रहीत नहीं करता है, और एक्सेस किया गया तृतीय-पक्ष SDK सेवा प्रदाता (Amu Statistics SDK, Autonavi SDK) द्वारा गुमनाम और डी-आइडेंटिफाइड किया जाएगा, इसलिए उपयोगकर्ताओं को ट्रैक नहीं किया जा सकता। उपयोगकर्ता के फोन पर संग्रहीत जानकारी स्वचालित रूप से हटा दी जाएगी जब उपयोगकर्ता Voitrans को अनइंस्टॉल करता है या कैश साफ करता है।

+ +

3. जानकारी की सुरक्षा

+

1. Voitrans उद्योग-मानक सुरक्षा उपायों और प्रौद्योगिकियों का उपयोग करके आपकी व्यक्तिगत जानकारी को संग्रहीत और सुरक्षित करता है, जैसे प्रमाणीकरण, डेटा एन्क्रिप्शन, सीमित डेटा सेंटर एक्सेस और अन्य सुरक्षा उपाय यह सुनिश्चित करने के लिए कि आपकी जानकारी प्रकटीकरण, परिवर्तन और विनाश से सुरक्षित है। उपरोक्त सुरक्षा उपायों के बावजूद, कृपया ध्यान दें कि कोई भी सुरक्षा उपाय 100% सुरक्षित नहीं हो सकता।

+

2. जब आप Voitrans द्वारा प्रदान की गई सेवाओं का उपयोग करते हैं, तो कृपया अपनी व्यक्तिगत जानकारी की रक्षा करें। यदि आप पाते हैं कि आपकी व्यक्तिगत जानकारी से समझौता किया गया है, तो कृपया हमसे तुरंत संपर्क करें ताकि हम उचित उपाय कर सकें।

+ +

4. हम एकत्र की गई जानकारी का उपयोग कैसे करते हैं

+

1. एप्लिकेशन व्यवसाय कार्यों को लागू करते समय, हम आपको प्रदान किए जाने वाले उत्पादों और सेवाओं की अखंडता और सुरक्षा सुनिश्चित करने के लिए आपकी व्यक्तिगत जानकारी का उपयोग कर सकते हैं;

+

2. हम एकत्र की गई जानकारी के माध्यम से आपकी उपयोग आदतों को समझेंगे, और डेटा विश्लेषण की मदद से, सेवाओं की स्वीकार्यता, आपकी उपयोग आदतों आदि की पहचान करेंगे, नए उत्पादों, कार्यों और सेवाओं का परीक्षण और निर्माण करने, सेवा स्तर में सुधार करने और मौजूदा सेवाओं में सुधार करने और नई सेवाओं को विकसित करने में हमारी मदद करने के लिए;

+

3. हम उत्पादों और सेवाओं के बारे में ग्राहक सर्वेक्षणों, उत्पादों और सेवाओं के बारे में सूचनाएं भेजने और वाणिज्यिक प्रचार के लिए आपकी व्यक्तिगत जानकारी का उपयोग कर सकते हैं;

+

4. हम एप्लिकेशन से संबंधित आंतरिक विश्लेषण और अनुसंधान के लिए आपकी जानकारी का उपयोग कर सकते हैं;

+ +

5. जानकारी साझा करना

+

वर्तमान में, हम कंपनी के बाहर तीसरे पक्ष को आपकी व्यक्तिगत जानकारी सक्रिय रूप से साझा या हस्तांतरित नहीं करेंगे, यदि आपकी व्यक्तिगत जानकारी की अन्य साझाकरण या हस्तांतरण होता है, तो हम सीधे या पुष्टि करेंगे कि तीसरे पक्ष ने उपरोक्त व्यवहार के लिए आपकी स्पष्ट सहमति प्राप्त कर ली है।

+

हम एकत्र की गई व्यक्तिगत जानकारी को सार्वजनिक रूप से प्रकट नहीं करेंगे। यदि इसे सार्वजनिक रूप से प्रकट करना आवश्यक है, तो हम आपको सार्वजनिक प्रकटीकरण के उद्देश्य, प्रकट की गई जानकारी के प्रकार और इसमें शामिल संवेदनशील जानकारी के बारे में सूचित करेंगे, और आपकी स्पष्ट सहमति प्राप्त करेंगे।

+

जैसे-जैसे हमारा व्यवसाय विकसित होता रहता है, हम विलय, अधिग्रहण, संपत्ति हस्तांतरण और अन्य लेनदेन में संलग्न हो सकते हैं, और हम आपको संबंधित परिस्थितियों के बारे में सूचित करेंगे, कानूनों और विनियमों के अनुसार और इस गाइड द्वारा आवश्यक मानकों से कम नहीं, आपकी व्यक्तिगत जानकारी की सुरक्षा जारी रखने या एक नए नियंत्रक को आपकी व्यक्तिगत जानकारी की सुरक्षा जारी रखने की आवश्यकता करने के लिए।

+

इसके अलावा, संबंधित कानूनों और विनियमों और राष्ट्रीय मानकों के अनुसार, हम निम्नलिखित परिस्थितियों में व्यक्तिगत जानकारी विषय के पूर्व प्राधिकरण और सहमति के बिना व्यक्तिगत जानकारी साझा, हस्तांतरित और सार्वजनिक रूप से प्रकट कर सकते हैं:

+
    +
  • 1 सीधे राष्ट्रीय सुरक्षा और राष्ट्रीय रक्षा सुरक्षा से संबंधित;
  • +
  • 2 सीधे सार्वजनिक सुरक्षा, सार्वजनिक स्वास्थ्य या प्रमुख सार्वजनिक हितों से संबंधित;
  • +
  • 3 सीधे आपराधिक जांच, अभियोजन, सुनवाई और निर्णयों के निष्पादन से संबंधित;
  • +
  • 4 व्यक्तिगत डेटा विषय या अन्य व्यक्तियों के जीवन, संपत्ति और अन्य प्रमुख वैध अधिकारों और हितों की रक्षा के लिए, लेकिन व्यक्ति की सहमति प्राप्त करना कठिन है;
  • +
  • 5 व्यक्तिगत जानकारी विषय द्वारा जनता को प्रकट की गई व्यक्तिगत जानकारी;
  • +
  • 6 कानूनी रूप से सार्वजनिक रूप से प्रकट की गई जानकारी से व्यक्तिगत जानकारी एकत्र करना, जैसे वैध समाचार रिपोर्ट, सरकारी जानकारी प्रकटीकरण और अन्य चैनल।
  • +
+ +

6. आप अपनी व्यक्तिगत जानकारी कैसे प्रबंधित करते हैं

+

चीन के संबंधित कानूनों, विनियमों और मानकों के साथ-साथ अन्य देशों और क्षेत्रों की सामान्य प्रथाओं के अनुसार, हम गारंटी देते हैं कि आप अपनी व्यक्तिगत जानकारी पर निम्नलिखित अधिकारों का प्रयोग करें:

+ +

1. अपनी व्यक्तिगत जानकारी सही करें

+

यदि आप पाते हैं कि हमारे द्वारा संसाधित आपकी व्यक्तिगत जानकारी में कोई त्रुटि है, तो आपको गलत या अपूर्ण जानकारी को सही या अपडेट करने का अधिकार है। यदि आप खाता केंद्र में स्वतंत्र रूप से संचालन करने में असमर्थ हैं, तो आप saitong.voitrans@gmail.com पर ईमेल कर सकते हैं हमसे संपर्क करें

+ +

2. अपनी व्यक्तिगत जानकारी हटाएं

+

निम्नलिखित मामलों में, आप हमसे अपनी व्यक्तिगत जानकारी हटाने का अनुरोध कर सकते हैं:

+
    +
  • यदि हम कानूनों और विनियमों के उल्लंघन में व्यक्तिगत जानकारी संसाधित करते हैं;
  • +
  • यदि हम आपकी सहमति के बिना आपकी व्यक्तिगत जानकारी एकत्र और उपयोग करते हैं;
  • +
  • यदि व्यक्तिगत जानकारी का हमारा प्रसंस्करण आपके साथ हमारे समझौते का उल्लंघन करता है;
  • +
  • यदि आप अब हमारे उत्पादों या सेवाओं का उपयोग नहीं करते हैं;
  • +
  • यदि हम अब आपको उत्पाद या सेवाएं प्रदान नहीं करते हैं।
  • +
+

हमसे संपर्क करें। हम आपके अनुरोध को saitong.voitrans@gmail.com पर संसाधित करेंगे हमसे संपर्क करें। हम प्राप्ति के बाद आपको 30 कार्य दिवसों के भीतर भेजेंगे

+ +

3. अपनी सहमति का दायरा बदलें

+

आप हमसे ईमेल द्वारा संपर्क कर सकते हैं saitong.voitrans@gmail.com हमसे संपर्क करें। आपके अनुरोध पर, हम अब आपकी व्यक्तिगत जानकारी एकत्र, उपयोग या प्रकट नहीं करेंगे। कृपया ध्यान दें कि आपकी सहमति वापस लेने या आपकी व्यक्तिगत जानकारी को हटाने से हमारी कुछ सेवाओं का उपयोग प्रभावित हो सकता है।

+ +

4 व्यक्तिगत जानकारी तक पहुंच और कॉपी करें

+

आप, संबंधित कानूनों के प्रावधानों के अनुसार, अपना IMEI (फोन सीरियल नंबर) या OAID या Android ID खाता जानकारी और अन्य जानकारी के बाद प्रदान कर सकते हैं, आप हमसे अपनी व्यक्तिगत जानकारी तक पहुंच और कॉपी के लिए आवेदन कर सकते हैं, आप 3514406195@qq.com पर ईमेल कर सकते हैं हमसे संपर्क करें।

+ +

5. आपके उपरोक्त अनुरोध के जवाब में

+

सुरक्षा उद्देश्यों के लिए, आपको लिखित अनुरोध प्रदान करने या अन्यथा अपनी पहचान साबित करने की आवश्यकता हो सकती है। हम आपके अनुरोध को संसाधित करने से पहले आपकी पहचान सत्यापित करने के लिए कह सकते हैं। आपके उचित अनुरोध के लिए, हम समय पर प्रतिक्रिया देंगे और उसे संभालेंगे। हम उन अनुरोधों को अस्वीकार कर सकते हैं जो अनावश्यक रूप से दोहराए जाते हैं, बहुत अधिक तकनीक की आवश्यकता होती है (उदाहरण के लिए, नई प्रणालियों का विकास या मौजूदा प्रथाओं में मौलिक परिवर्तन), दूसरों के वैध हितों के लिए जोखिम पैदा करते हैं, या अत्यधिक अव्यावहारिक हैं।

+

निम्नलिखित परिस्थितियों में, कानूनों और विनियमों की आवश्यकताओं के अनुसार, हम आपके अनुरोध का जवाब देने में सक्षम नहीं होंगे:

+
    +
  • राष्ट्रीय सुरक्षा और राष्ट्रीय रक्षा सुरक्षा से संबंधित;
  • +
  • आपराधिक जांच, अभियोजन और सुनवाई के संबंध में;
  • +
  • पर्याप्त सबूत हैं कि आपकी व्यक्तिपरक दुर्भावना या अधिकारों का दुरुपयोग है;
  • +
  • आपके अनुरोध का जवाब देने से आपके या अन्य व्यक्तियों और संगठनों के वैध अधिकारों और हितों को गंभीर नुकसान होगा।
  • +
+ +

6. खाता रद्दीकरण

+

उपयोगकर्ता APP पर [खाता रद्दीकरण] ऑपरेशन कर सकते हैं। ऑपरेशन के चरण:

+
    +
  1. [मेरा] पृष्ठ पर जाएं
  2. +
  3. ऊपर दाईं ओर [सेटिंग्स] बटन पर क्लिक करें
  4. +
  5. पुष्टि करने के लिए [खाता रद्द करें] पर क्लिक करें
  6. +
+

लॉगआउट के बाद, उपयोगकर्ता खाते की जानकारी साफ कर दी जाती है

+ +

7. एप्लिकेशन अनुमति विवरण

+

बेहतर उत्पाद और सेवाएं प्रदान करने के लिए, जब आप सॉफ्टवेयर का उपयोग करते हैं, तो हम निम्नलिखित अधिकारों के लिए आवेदन करेंगे, जब आप होम पेज पर प्रवेश करेंगे या फंक्शन का उपयोग करेंगे तो प्राधिकरण का अनुरोध किया जाएगा, यदि आप मना करते हैं, तो कुछ संबंधित कार्य सामान्य रूप से उपयोग करने में सक्षम नहीं होंगे। अनुमतियों के विशिष्ट उद्देश्य और अनुस्मारक निम्नानुसार विस्तार से वर्णित हैं:

+ +

1 स्थान अधिकार:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFi या मोबाइल बेस स्टेशन के माध्यम से उपयोगकर्ता के अक्षांश और देशांतर स्थान की जानकारी प्राप्त करें

+

जब आप Voitrans का उपयोग करते हैं, तो हम आपके भौगोलिक स्थान के आधार पर आपके निकटवर्ती ब्लूटूथ डिवाइस की खोज करेंगे। साथ ही, अधिक स्थिर सेवाएं प्रदान करने, उत्पादों को अनुकूलित करने और अनुभव में सुधार करने के लिए, हम Voitrans ऑपरेटिंग डेटा और कार्यात्मक सेवाएं प्राप्त करने के लिए उपरोक्त जानकारी को तीन SDK, जैसे Youmon और Autonavi के साथ साझा करेंगे।

+

अनुस्मारक मोड: पहली बार एप्लिकेशन शुरू करने के लिए अनुमति दर्शाने वाला एक प्रॉम्प्ट प्रदर्शित होता है, जिसमें उपयोगकर्ता को स्वीकृति की पुष्टि करनी होती है। उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

एप्लिकेशन प्रबंधन कार्यों को करने के लिए एप्लिकेशन तक पहुंचने पर यह अनुमति आवश्यक है।

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

3 नेटवर्क अनुमतियां:

+

android.permission.INTERNET

+

जब आप Voitrans की सूचना सेवाओं और संस्करण अपग्रेड सेवाओं के लिए इन अनुमतियों का उपयोग करते हैं, और उपयोगकर्ता अनुभव में सुधार और सेवा क्षमताओं को अनुकूलित करने के लिए, Friends जैसे तृतीय-पक्ष SDK भी इन अनुमतियों का उपयोग करेंगे।

+

अनुस्मारक मोड: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

4 नेटवर्क स्थिति अनुमतियां प्राप्त करें:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

इसका उपयोग यह प्राप्त करने के लिए किया जाता है कि वर्तमान नेटवर्क कनेक्शन वैध है या नहीं, यह निर्धारित करने के लिए कि वर्तमान 4G वातावरण है या नहीं, और क्या नेटवर्क वातावरण परिवर्तनों की याद दिलानी है, इस प्रकार सूचना सामग्री के लोडिंग को प्रभावित करना। यह अनुमति तब लागू होती है जब आप Voitrans का उपयोग करते हैं।

+

नेटवर्क की स्थिति में परिवर्तन डेटा के अपलोडिंग और लोडिंग को प्रभावित करते हैं। इसलिए, नेटवर्क स्थिति अनुमति तक पहुंच Friends + और अन्य प्लेटफॉर्म के साथ साझा की जाएगी।

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

5 कार्य सूची अनुमतियां प्राप्त करें:

+

android.permission.GET_TASKS

+

इस अनुमति का उपयोग सॉफ्टवेयर प्रबंधन फंक्शन के लिए एप्लिकेशन सूची प्राप्त करने के लिए किया जाता है। जब आप सॉफ्टवेयर प्रबंधन फंक्शन का उपयोग करते हैं, तो मोबाइल फोन पर इंस्टॉल किए गए एप्लिकेशन पढ़ने की आवश्यकता होती है।

+

अनुस्मारक मोड: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

6 MAC पता अनुमति प्राप्त करें

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

जब आप Voitrans का उपयोग करते हैं, तो एप्लिकेशन को MAC पता अनुमतियां प्राप्त करने की आवश्यकता होगी:

+

जब किसी एप्लिकेशन को लक्ष्य रूपांतरण डेटा रिपोर्ट करने की आवश्यकता होती है, तो Youmon +SDK जैसे तृतीय-पक्ष प्लेटफ़ॉर्म को MAC का उपयोग करने की आवश्यकता होती है।

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

7 ऑडियो रिकॉर्ड करने की अनुमति प्राप्त करें

+

android.permission.RECORD_AUDIO

+

जब आप Voitrans के वॉइस इनपुट फंक्शन का उपयोग करते हैं, तो ऑडियो रिकॉर्ड करने की अनुमति का उपयोग करना आवश्यक है, और मुख्य रूप से अनुवाद और अन्य संबंधित कार्यों के लिए वॉइस इनपुट का उपयोग करता है।

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण, आवश्यकता होने पर उपयोगकर्ता को गतिशील रूप से बॉक्स पॉप अप होता है।

+ +

8 WIFI के लिए SSID अनुमति प्राप्त करें

+

जब यह अनुमति उपयोग की जाती है, तो ऐप WIFI के लिए SSID अनुमति पढ़ता है:

+

उपयोग का दायरा और उद्देश्य: जब एप्लिकेशन को डेटा विश्लेषण सेवाओं का उपयोग करने की आवश्यकता होती है, तो +SDK जैसे तृतीय-पक्ष प्लेटफ़ॉर्म को उपयोगकर्ताओं को अधिक सटीक और प्रभावी कार्यात्मक सेवाएं प्रदान करने के लिए डिवाइस की "WIFI SSID अनुमति" पढ़ने की आवश्यकता होती है।

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

9 ब्लूटूथ एक्सेस प्राप्त करें

+

जब यह अनुमति उपयोग की जाती है, तो ऐप ब्लूटूथ अनुमति पढ़ता है:

+

उपयोग का दायरा और उद्देश्य: एक्सेसरीज़ की खोज और कॉन्फ़िगर करने के लिए ब्लूटूथ उपकरण, जैसे ब्लूटूथ हेडसेट, ब्लूटूथ वॉच, आदि। उपयोगकर्ताओं के प्रबंधन के लिए आसान

+

अनुस्मारक विधि: पहली बार एप्लिकेशन शुरू करने के लिए अनुमति दर्शाने वाला एक प्रॉम्प्ट प्रदर्शित होता है, जिसमें उपयोगकर्ता को स्वीकृति की पुष्टि करनी होती है। उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

10 WiFi के लिए BSSID अनुमति प्राप्त करें

+

जब एप्लिकेशन को कार्यात्मक सेवाएं और डेटा आंकड़े प्रदान करने के लिए उपयोगकर्ता को अलग और पहचान करने की आवश्यकता होती है, तो यह इसके लिए डिवाइस की "WiFi BSSID" अनुमति पढ़ेगा:

+

उपयोग का दायरा और उद्देश्य: 1 तृतीय-पक्ष प्लेटफ़ॉर्म: जैसे Youmeng SDK, Bugly SDK, Autonavi SDK

+

अनुस्मारक विधि: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

11 एप्लिकेशन इंस्टॉलेशन अनुमति प्राप्त करें

+

android.permission.REQUEST_INSTALL_PACKAGES

+

सॉफ्टवेयर एप्लिकेशन इंस्टॉलेशन अनुमति का उपयोग करेगा, जिसका मुख्य रूप से उपयोग उपयोगकर्ताओं को नया संस्करण इंस्टॉल करने और नई सुविधाओं का अनुभव करने की अनुमति देने के लिए किया जाता है जब कोई नया संस्करण होता है।

+

अनुस्मारक मोड: उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

12 कैमरा के लिए अनुमतियां प्राप्त करें

+

android.permission.CAMERA

+

Voitrans QR कोड स्कैन करने और ब्लूटूथ हेडसेट और वॉच जैसे ब्लूटूथ उपकरणों को बांधने के लिए कैमरा अनुमतियों का उपयोग करता है।

+

अनुस्मारक विधि: पहली बार एप्लिकेशन शुरू करने के लिए अनुमति दर्शाने वाला एक प्रॉम्प्ट प्रदर्शित होता है, जिसमें उपयोगकर्ता को स्वीकृति की पुष्टि करनी होती है। उपयोगकर्ता समझौता और गोपनीयता नीति विवरण।

+ +

विशेष नोट:

+

1 उनके Allies SDK के भीतर एप्लिकेशन एकीकरण, Scott map SDK उपयोगकर्ता द्वारा उपयोग के बाद अनुमति देने पर सहमत होने पर, एप्लिकेशन बैकग्राउंड/फोरग्राउंड में ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI और अन्य व्यक्तिगत जानकारी के लिए;

+

टिप्पणी: अधिक जानकारी के लिए कृपया निम्नलिखित SDK-संबंधित सामग्री और अनुमतियां देखें [VIII. तृतीय-पक्ष SDK सूची तक पहुंच]

+ +

8. तृतीय-पक्ष SDK तक पहुंच

+

1 हमारे क्लाइंट के स्थिर संचालन और कार्यात्मक प्राप्ति को सुनिश्चित करने के लिए, ताकि आप अधिक सेवाओं और कार्यों का उपयोग और आनंद ले सकें, हमारा एप्लिकेशन तीसरे पक्ष के सॉफ्टवेयर टूल डेवलपमेंट किट (SDK) या अन्य समान अनुप्रयोगों को एम्बेड करेगा, ये तीसरे पक्ष कार्यों और विज्ञापन सेवाओं को सामान्य रूप से प्रदान करने के लिए अपनी गोपनीयता नीतियों के अनुसार प्रासंगिक जानकारी एकत्र और संसाधित करेंगे। आप निम्नलिखित अनुभाग में तीसरे पक्ष की जानकारी संग्रह और प्रसंस्करण नियमों के बारे में जान सकते हैं। हम आपकी व्यक्तिगत जानकारी के उचित उपयोग और सुरक्षा की रक्षा के लिए, जानकारी प्राप्त करने के लिए भागीदारों के लिए विकास किट (SDK) पर कड़े सुरक्षा परीक्षण करेंगे। कृपया ध्यान दें कि तीसरे पक्ष के SDK अपने संस्करण अपग्रेड के कारण डेटा प्रसंस्करण प्रकारों को बदल सकते हैं। कृपया तीसरे पक्ष के SDK द्वारा प्रकाशित गोपनीयता नीतियों का संदर्भ लें। नीचे विवरण देखें या तृतीय-पक्ष SDK सूची देखने के लिए क्लिक करें।

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

प्राप्त जानकारी: डिवाइस नंबर, IP पता, डिवाइस सॉफ्टवेयर जानकारी, डिवाइस पहचान कोड (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM कार्ड IMSI जानकारी, IP, MAC पता), डिवाइस पहचानकर्ता, क्षेत्र, डिवाइस से संबंधित एप्लिकेशन जानकारी, और अन्य सेवा-संबंधित लॉग जानकारी

+

उपयोग का उद्देश्य: WeChat लॉगिन और शेयरिंग

+

डेवलपर: Shenzhen Tencent Computer Systems Company Limited

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

प्राप्त जानकारी: एप्लिकेशन नाम, एप्लिकेशन संस्करण संख्या, डिवाइस ब्रांड और मॉडल, ऑपरेटिंग सिस्टम, कैरियर जानकारी, स्क्रीन रिज़ॉल्यूशन, सेंसर जानकारी (वेक्टर, त्वरण, दबाव, दिशा, भूचुंबकीय, जाइरोस्कोप, तापमान, प्रकाश सेंसर, NMEA सिग्नल), डिवाइस सिग्नल शक्ति जानकारी

+

उपयोग का उद्देश्य: Amap का उपयोग करके नेविगेशन

+

डेवलपर: Beijing Gaode Tuqiang Technology Co., Ltd.

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

प्राप्त जानकारी: एप्लिकेशन नाम, एप्लिकेशन संस्करण, डिवाइस ब्रांड और मॉडल, ऑपरेटिंग सिस्टम, नेटवर्क जानकारी, डिवाइस सिग्नल शक्ति, आदि।

+

उपयोग का उद्देश्य: मानचित्र प्रदर्शन और इंटरैक्शन

+

डेवलपर: Beijing Gaode Tuqiang Technology Co., Ltd.

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

प्राप्त जानकारी: स्थान जानकारी (GPS, Wi-Fi, बेस स्टेशन), डिवाइस जानकारी, नेटवर्क जानकारी, आदि।

+

उपयोग का उद्देश्य: स्थान सेवाएं प्रदान करना

+

डेवलपर: Beijing Gaode Tuqiang Technology Co., Ltd.

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

प्राप्त जानकारी: एप्लिकेशन नाम, एप्लिकेशन संस्करण, डिवाइस जानकारी, नेटवर्क जानकारी, आदि।

+

उपयोग का उद्देश्य: मानचित्र उपकरण और रेंडरिंग अनुकूलन

+

डेवलपर: Beijing Gaode Tuqiang Technology Co., Ltd.

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

प्राप्त जानकारी: डिवाइस पहचानकर्ता, बुनियादी डिवाइस जानकारी, इंस्टॉल किए गए सॉफ़्टवेयर सूची, और नेटवर्क जानकारी (विवरण के लिए आधिकारिक गोपनीयता नीति देखें)

+

उपयोग का उद्देश्य: Alipay खाता लॉगिन और भुगतान आह्वान

+

डेवलपर: Alipay (Hangzhou) Information Technology Co., Ltd.

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

प्राप्त जानकारी: SDK/API संस्करण, प्लेटफ़ॉर्म, टाइमस्टैम्प, ऐप पहचानकर्ता, ऐप संस्करण, डिवाइस निर्माता, OS संस्करण, लोकेल, टाइमज़ोन, नेटवर्क स्थिति (Wi-Fi, आदि), नेटवर्क लॉग, क्रैश और उपयोग डेटा, IP पता, आदि। (विवरण के लिए आधिकारिक गोपनीयता नीति देखें)

+

उपयोग का उद्देश्य: ऐप गुणवत्ता निगरानी और डेटा रिपोर्टिंग सेवा

+

डेवलपर: Shenzhen Tencent Computer Systems Company Limited

+

संग्रह विधि: SDK स्व-संग्रह

+

गोपनीयता नीति लिंक: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. नाबालिगों की सुरक्षा

+

हमारे उत्पादों और सेवाओं के उपयोगकर्ताओं में 18 वर्ष से कम आयु के नाबालिग शामिल हो सकते हैं, नाबालिग उपयोगकर्ताओं को हमारे उत्पादों का उपयोग करने से पहले इस गोपनीयता नीति के बारे में अपने माता-पिता या अभिभावकों की सलाह लेनी चाहिए, और अपने माता-पिता या अभिभावकों की सहमति प्राप्त करने के बाद और उनके मार्गदर्शन में हमारी सेवाओं का उपयोग करना चाहिए या हमें अपनी जानकारी प्रदान करनी चाहिए। नाबालिगों के अभिभावक जिनके प्रश्न हैं, वे इस गोपनीयता नीति में संपर्क विवरण के माध्यम से हमसे संपर्क कर सकते हैं।

+

यदि आप उपरोक्त तृतीय-पक्ष सेवा प्रदाताओं द्वारा उपरोक्त जानकारी के संग्रह से सहमत नहीं हैं, तो कृपया तुरंत सॉफ्टवेयर का उपयोग बंद करें। सॉफ्टवेयर के आपके उपयोग के दौरान, ये तीसरे पक्ष कुछ कार्यों, विज्ञापन और अन्य सेवाओं को प्रदान करने के लिए अपनी गोपनीयता नीतियों के अनुसार प्रासंगिक जानकारी एकत्र और संसाधित करेंगे। यदि संबंधित तृतीय-पक्ष सेवा प्रदाता द्वारा उपरोक्त जानकारी के संग्रह के कारण जानकारी लीक होती है, तो संबंधित तृतीय-पक्ष सेवा प्रदाता संबंधित कानूनी जिम्मेदारी वहन करेगा।

+ +

10. प्रभावी और अद्यतन गोपनीयता नीति

+

1. यह गोपनीयता नीति प्रकाशन की तारीख से प्रभावी है।

+

2. जैसे-जैसे हमारा व्यवसाय विकसित और बदलता है, हमारी गोपनीयता नीति बदल सकती है। हम किसी भी समय अपनी गोपनीयता नीति बदलने का अधिकार सुरक्षित रखते हैं, इसलिए कृपया बार-बार जांचें। यदि हम अपनी गोपनीयता नीति में परिवर्तन करते हैं, तो हम इन अपडेट को अपनी वेबसाइट, ऐप्स और जहां हम उचित समझते हैं वहां पोस्ट करेंगे ताकि आपको सूचित रखा जा सके। यदि गोपनीयता नीति अपडेट की जाती है, तो यह अपडेट की तारीख से प्रभावी होगी। हमारे उत्पादों या सेवाओं का आपका निरंतर उपयोग इसका अर्थ है कि आप हमारी बदली हुई गोपनीयता नीति से सहमत हैं।

+ +

11. हमसे कैसे संपर्क करें

+

Saitong Industries Inc 22 नवंबर, 2024 को स्थापित, पंजीकृत पता: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA। यदि आप हमारी कंपनी और प्लेटफॉर्म के बारे में अधिक जानना चाहते हैं, तो आप इस नीति में प्रदान की गई संपर्क जानकारी (saitong.voitrans@gmail.com) के माध्यम से हमसे संपर्क कर सकते हैं।

+
+ + + diff --git a/doc/hi/user_agreement.html b/doc/hi/user_agreement.html new file mode 100644 index 000000000..735b6d36b --- /dev/null +++ b/doc/hi/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans एप्लिकेशन उपयोगकर्ता प्रोटोकॉल + + + +
+
हिन्दी
+ +

Voitrans एप्लिकेशन उपयोगकर्ता प्रोटोकॉल

+ +

ये उपयोग के नियम और शर्तें आपको Voitrans एप्लिकेशन और ऑनलाइन सेवाओं ("सेवाएं") तक पहुंचने और उपयोग करने का तरीका बताती हैं। Saitong Industries Inc. (इसके बाद "Saitong" के रूप में संदर्भित) उपयोगकर्ताओं को इस उपयोगकर्ता समझौते (इसके बाद "समझौता" के रूप में संदर्भित) को ध्यानपूर्वक पढ़ने और पूरी तरह समझने की याद दिलाता है। उपयोगकर्ताओं को इस समझौते की शर्तों को ध्यानपूर्वक पढ़ना और पूरी तरह समझना चाहिए। कृपया ध्यानपूर्वक पढ़ें और इस समझौते को स्वीकार या अस्वीकार करने का चयन करें। Voitrans APP (इसके बाद "ऐप" या "सॉफ्टवेयर" के रूप में संदर्भित) का आपका उपयोग इस समझौते की स्वीकृति माना जाएगा और आप इस समझौते की शर्तों से बाध्य होने के लिए सहमत हैं। यदि आप इस समझौते से सहमत नहीं हैं, तो ऐप का उपयोग न करें।

+

Saitong इस समझौते को संशोधित करने का अधिकार सुरक्षित रखता है, और समझौते की अद्यतन शर्तें इस APP में प्रकाशित की जाएंगी, जो प्रकाशन की तिथि से प्रभावी होंगी।

+ +

1. सामान्य नियम

+

1.1 यह APP Saitong द्वारा Saitong और उसकी साझेदार कंपनियों द्वारा जारी हेडसेट उत्पादों को जोड़ने के लिए प्रदान किया गया सॉफ्टवेयर है। सॉफ्टवेयर और संबंधित सेवाओं के स्वामित्व और संचालन अधिकार सभी Saitong के स्वामित्व में हैं।

+

1.2 यह समझौता आपके (इसके बाद "उपयोगकर्ता" के रूप में संदर्भित) और कंपनी तथा इसके भागीदारों और संचालन भागीदारों (इसके बाद "भागीदार" के रूप में संदर्भित) के बीच उपयोगकर्ता द्वारा APP और संबंधित सेवाओं के उपयोग के संबंध में एक समझौता है।

+

1.3 सॉफ्टवेयर और सेवाओं में शामिल हैं:

+

1.3.1 प्रदान किया गया सॉफ्टवेयर Voitrans उपयोगकर्ताओं को Voitrans कनेक्शन और बाइंडिंग, फंक्शन सेटिंग प्रबंधन और अन्य सॉफ्टवेयर सेवाएं प्रदान करता है, जो APP द्वारा प्रदान की गई वास्तविक सॉफ्टवेयर सेवाओं के अधीन है।

+

1.3.2 सॉफ्टवेयर के अपडेट, अपग्रेड और अन्य सेवाएं।

+ +

2. सॉफ्टवेयर लाइसेंस का दायरा

+

2.1 हम उपयोगकर्ता को सॉफ्टवेयर के लिए एक व्यक्तिगत, गैर-हस्तांतरणीय, गैर-उप-लाइसेंस योग्य और गैर-अनन्य लाइसेंस प्रदान करते हैं।

+

2.2 उपयोगकर्ता गैर-व्यावसायिक उद्देश्यों के लिए एकल मोबाइल टर्मिनल डिवाइस पर सॉफ्टवेयर को इंस्टॉल, उपयोग, प्रदर्शित और चला सकते हैं। हालांकि, उपयोगकर्ता को व्यावसायिक संचालन उद्देश्यों के लिए सॉफ्टवेयर को इंस्टॉल, उपयोग या चलाना नहीं चाहिए, सॉफ्टवेयर या सॉफ्टवेयर के संचालन के दौरान किसी भी टर्मिनल डिवाइस की मेमोरी में जारी डेटा या सॉफ्टवेयर के संचालन के दौरान क्लाइंट और सर्वर के बीच इंटरैक्शन डेटा को कॉपी, बदलना, संशोधित, कनेक्ट या चलाना नहीं चाहिए, और न ही कोई व्युत्पन्न कार्य बनाना चाहिए। इसमें सॉफ्टवेयर और संबंधित सिस्टम तक पहुंचने के लिए प्लग-इन, ऐड-ऑन या अनधिकृत तृतीय-पक्ष उपकरणों/सेवाओं का उपयोग शामिल है, लेकिन इतक सीमित नहीं है। व्यावसायिक बिक्री, प्रजनन और वितरण के लिए, जैसे सॉफ्टवेयर प्री-इंस्टॉलेशन और बंडलिंग, लिखित प्राधिकरण और अनुमति प्राप्त करनी होगी।

+

2.3 उपयोगकर्ता को निर्माता की स्पष्ट अनुमति के बिना अन्य टर्मिनल उपकरणों पर सॉफ्टवेयर इंस्टॉल नहीं करना चाहिए, जिसमें टीवी, डिजिटल सेट-टॉप बॉक्स, गेम कंसोल और अन्य उपकरण शामिल हैं, लेकिन इतक सीमित नहीं है।

+

2.4 इस समझौते द्वारा स्पष्ट रूप से अधिकृत को छोड़कर, उपयोगकर्ता को कोई अन्य अधिकार प्रदान नहीं किए जाते हैं, और उपयोगकर्ता को अन्य अधिकारों का उपयोग करने के लिए लिखित सहमति प्राप्त करनी होगी।

+ +

3. सॉफ्टवेयर अपग्रेड

+

3.1 उपयोगकर्ता को इंस्टॉल किए गए टर्मिनल के सेटअप के लिए उपयुक्त सॉफ्टवेयर संस्करण का चयन करना होगा। अन्यथा, डिवाइस प्रकार के लिए उपयुक्त नहीं किसी भी सॉफ्टवेयर संस्करण के कारण होने वाली सॉफ्टवेयर समस्याएं, डिवाइस समस्याएं या क्षति पूरी तरह से उपयोगकर्ता की जिम्मेदारी होगी।

+

3.2 उपयोगकर्ता अनुभव में सुधार और सेवा सामग्री में सुधार के लिए, Saitong को समय-समय पर सॉफ्टवेयर के प्रतिस्थापन, संशोधन और अपग्रेड संस्करण प्रदान करने का अधिकार है। "अपग्रेड प्रॉम्प्ट" फंक्शन उपयोगकर्ताओं के लिए डिफ़ॉल्ट रूप से सक्षम है। उपयोगकर्ताओं द्वारा उपयोग किए जाने वाले विभिन्न सॉफ्टवेयर संस्करणों के आधार पर, Saitong उपयोगकर्ताओं को इस फंक्शन को सक्रिय करने का विकल्प प्रदान करता है। सॉफ्टवेयर के नए संस्करण के जारी होने के बाद, Saitong सॉफ्टवेयर के पुराने संस्करण की निरंतर उपलब्धता की गारंटी नहीं देता है।

+ +

4. उपयोग विनिर्देश

+

4.1 उपयोगकर्ता कानून और इस समझौते का पालन करने के आधार पर इस समझौते के अनुसार सॉफ्टवेयर और सेवाओं का उपयोग कर सकते हैं, और उपयोगकर्ताओं को निम्नलिखित कार्य नहीं करने चाहिए:

+

4.1.1 सॉफ्टवेयर और अन्य प्रतियों पर सभी कॉपीराइट जानकारी हटाना, और बौद्धिक संपदा अधिकारों की रक्षा के लिए सॉफ्टवेयर द्वारा स्थापित तकनीकी उपायों को संशोधित, हटाना या दरकिनार करना।

+

4.1.2 सॉफ्टवेयर की रिवर्स इंजीनियरिंग, जैसे डिसअसेम्बली, डीकंपिलेशन, या सॉफ्टवेयर का सोर्स कोड प्राप्त करने के अन्य प्रयास।

+

4.1.3 सॉफ्टवेयर के संचालन में निर्देशों और डेटा को संशोधित या मिथ्या बनाकर, सॉफ्टवेयर के कार्य या संचालन प्रभाव को जोड़ना, हटाना या बदलना, या उपरोक्त उद्देश्यों के लिए उपयोग किए जाने वाले सॉफ्टवेयर या विधियों को संचालित करना या जनता को प्रसारित करना, चाहे ये कार्य व्यावसायिक उद्देश्यों के लिए हों या नहीं।

+

4.1.4 नेटवर्क सुरक्षा को खतरे में डालने वाले किसी भी व्यवहार के लिए सॉफ्टवेयर का उपयोग करना, जिसमें शामिल है लेकिन सीमित नहीं है: अनधिकृत डेटा का उपयोग करना या अनधिकृत सर्वर/खातों तक पहुंचना; बिना अनुमति के सार्वजनिक नेटवर्क या अन्य ऑपरेटिंग सिस्टम तक पहुंचना और संग्रहीत जानकारी को हटाना, संशोधित करना या जोड़ना; सॉफ्टवेयर के सिस्टम या नेटवर्क की कमजोरियों की जांच, स्कैन या परीक्षण करने के अनधिकृत प्रयास या नेटवर्क सुरक्षा को कमजोर करने वाले अन्य कार्य; सॉफ्टवेयर सिस्टम या वेबसाइट के सामान्य संचालन में हस्तक्षेप या विनाश करने के प्रयास, जानबूझकर दुर्भावनापूर्ण प्रोग्राम या वायरस फैलाना, और सामान्य नेटवर्क सूचना सेवाओं को बाधित करने वाले अन्य कार्य; TCP/IP पैकेट नाम या आंशिक नाम जालसाजी करना।

+

4.1.6 कंपनी की लिखित सहमति के बिना, उपयोगकर्ता मनमाने ढंग से सॉफ्टवेयर और उसमें मौजूद जानकारी पर निम्नलिखित कार्य करता है, जिसमें शामिल है लेकिन सीमित नहीं है: सॉफ्टवेयर की सहायता से उपयोग, किराये पर देना, उधार देना, कॉपी करना, संशोधित करना, लिंक करना, पुनर्मुद्रण करना, संकलन करना, प्रकाशित करना, वितरित करना, मिरर साइट बनाना, व्युत्पन्न उत्पाद, कार्य, सेवाएं, प्लग-इन, ऐड-ऑन, संगतता, इंटरकनेक्शन आदि विकसित करना।

+

4.1.7 आपके स्थानीय कानूनों का उल्लंघन करने वाली सामग्री को प्रकाशित, प्रसारित, वितरित और संग्रहीत करने के लिए सॉफ्टवेयर का उपयोग करना।

+

4.1.8 दूसरों के बौद्धिक संपदा अधिकारों, व्यापार रहस्यों और अन्य वैध अधिकारों का उल्लंघन करने वाली सामग्री को प्रकाशित, प्रसारित, प्रसारित और संग्रहीत करने के लिए सॉफ्टवेयर का उपयोग करना।

+

4.1.9 बड़ी मात्रा में विज्ञापन जानकारी और जंक जानकारी प्रकाशित, प्रसारित और प्रसारित करने के लिए इस सॉफ्टवेयर का उपयोग करना।

+

4.1.10 किसी भी अवैध तरीके से, किसी भी अवैध उद्देश्य के लिए, या इस समझौते के लाइसेंस प्राप्त उपयोग के साथ असंगत किसी भी तरीके से सॉफ्टवेयर और अन्य सेवाओं का उपयोग करना।

+

4.2 सूचना प्रकाशन विनिर्देश

+

4.2.1 यदि आप सूचना सामग्री प्रकाशित करने के लिए सॉफ्टवेयर का उपयोग करते हैं (यदि कोई हो), तो आपको यह गारंटी देनी चाहिए कि आपके द्वारा अपलोड की गई सूचना सामग्री के बौद्धिक संपदा अधिकार आपके पास हैं या आपने कानूनी प्राधिकरण प्राप्त किया है, और सॉफ्टवेयर और सेवाओं का उपयोग करने का आपका कोई भी व्यवहार किसी तृतीय पक्ष के वैध अधिकारों और हितों का उल्लंघन नहीं करता है।

+

4.2.2 सॉफ्टवेयर का उपयोग करते समय, उपयोगकर्ता को निम्नलिखित गतिविधियों में संलग्न होने के लिए सॉफ्टवेयर का उपयोग नहीं करना चाहिए, जिसमें शामिल है लेकिन सीमित नहीं है:

+

4.2.2.1 स्थानीय राष्ट्रीय कानूनों और विनियमों का उल्लंघन करने वाली सामग्री बनाना, कॉपी करना, प्रकाशित करना, प्रसारित करना और संग्रहीत करना।

+

4.2.2.2 दूसरों के प्रतिष्ठा, चित्र, बौद्धिक संपदा और व्यापार रहस्य जैसे कानूनी अधिकारों का उल्लंघन करने वाली सामग्री प्रकाशित, प्रसारित, प्रसारित और संग्रहीत करना।

+

4.2.2.3 दूसरों को गुमराह करने या धोखा देने के लिए तथ्यों का मनगढ़ंत करना, सच्चाई छुपाना।

+

4.2.2.4 विज्ञापन जानकारी और जंक जानकारी प्रकाशित, प्रसारित और प्रसारित करना।

+

4.2.2.5 स्थानीय कानूनों और विनियमों के उल्लंघन में अन्य कार्य करना।

+

4.2.3 आप कंपनी की अनुमति के बिना सॉफ्टवेयर में विज्ञापन और माल की बिक्री जैसी कोई भी व्यावसायिक गतिविधि नहीं कर सकते।

+

4.3 उपयोगकर्ता समझता है और सहमत है कि:

+

4.3.1 Saitong यह निर्धारित करेगा कि उपयोगकर्ता पर उपरोक्त उपयोग विनिर्देशों का उल्लंघन करने का संदेह है या नहीं, और निर्धारण के परिणामों के अनुसार, आपके उपयोग के लाइसेंस को निलंबित या समाप्त करेगा या इस समझौते के अनुसार अन्य प्रतिबंधात्मक उपाय करेगा।

+

4.3.2 उपयोगकर्ता द्वारा लाइसेंस प्राप्त सॉफ्टवेयर के उपयोग से प्रकाशित सामग्री जो अवैध होने का संदेह है या दूसरों के कानूनी अधिकारों का उल्लंघन करने का संदेह है या इस समझौते का उल्लंघन करती है, उस जानकारी को सीधे हटा दिया जाएगा।

+

4.3.3 यदि उपरोक्त उपयोग नियमों का उपयोगकर्ता द्वारा उल्लंघन तृतीय पक्षों को नुकसान पहुंचाता है, तो आपको अपने नाम पर स्वतंत्र रूप से कानूनी जिम्मेदारी वहन करनी होगी, और आपको यह सुनिश्चित करना होगा कि कंपनी को नुकसान या बढ़ी हुई लागत से मुक्त रखा जाए।

+

4.3.4 यदि उपयोगकर्ता संबंधित कानूनी प्रावधानों या समझौतों का उल्लंघन करता है, जिससे Saitong को नुकसान होता है, या तृतीय-पक्ष दावों के अधीन होता है, या प्रशासनिक प्राधिकरण द्वारा दंडित किया जाता है, तो उपयोगकर्ता को Saitong को हुई हानि और/या खर्चों की भरपाई करनी होगी, जिसमें उचित वकील शुल्क, जांच और साक्ष्य संग्रह लागत शामिल है।

+ +

5. तृतीय-पक्ष सेवा विवरण

+

5.1 उपयोगकर्ता समझता है और सहमत है कि सॉफ्टवेयर सिस्टम में कंपनी के सहयोगियों या तृतीय पक्षों द्वारा प्रदान की गई सेवाएं शामिल हो सकती हैं, और कंपनी केवल उपयोगकर्ताओं की सुविधा के लिए सिस्टम में संबंधित कार्यात्मक मॉड्यूल प्रदान करती है और तृतीय-पक्ष सेवाओं तक पहुंच प्रदान करती है।

+

5.2 तृतीय-पक्ष सेवाएं सॉफ्टवेयर सिस्टम सेवाओं में पूर्व-निर्धारित हैं या उपयोगकर्ताओं द्वारा स्वयं खोली या ऑर्डर की गई हैं, उपयोगकर्ता समझते हैं और सहमत हैं कि Saitong तृतीय-पक्ष सेवा प्रदाताओं या उपयोगकर्ताओं की वैधता और प्रभावशीलता के साथ-साथ तृतीय-पक्ष सेवाओं की वैधता, सटीकता, प्रभावशीलता और सुरक्षा की कोई स्पष्ट या निहित गारंटी नहीं देता है।

+

5.3 कंपनी तृतीय-पक्ष सेवाओं की निगरानी, नियंत्रण नहीं करती है और न ही किसी प्रकार की वारंटी या गारंटी प्रदान करती है, और न ही कोई दायित्व वहन करती है।

+

5.4 उपयोगकर्ता और तृतीय-पक्ष सेवा प्रदाता के बीच कोई भी विवाद या विवाद उपयोगकर्ता और तृतीय पक्ष द्वारा तृतीय-पक्ष सेवा प्रदाता की व्यावसायिक प्रक्रिया और व्यावसायिक मानदंडों के अनुसार हल किया जाएगा, और कंपनी कोई जिम्मेदारी नहीं लेगी।

+ +

6. गोपनीयता नीति और व्यक्तिगत जानकारी की सुरक्षा

+

6.1 Saitong गोपनीयता नीति के अनुसार उपयोगकर्ताओं की गोपनीयता की रक्षा करने के लिए प्रतिबद्ध है, कृपया देखें: Voitrans गोपनीयता नीति।

+ +

7. उल्लंघन के लिए दायित्व

+

7.1 Saitong को यह निर्णय लेने का अधिकार है कि उपयोगकर्ता का व्यवहार इस समझौते के प्रावधानों का अनुपालन करता है या नहीं। यदि यह माना जाता है कि उपयोगकर्ता ने संबंधित कानूनों और विनियमों या इस समझौते के प्रावधानों और संबंधित नियमों का उल्लंघन किया है, उपयोगकर्ता के उल्लंघन की गंभीरता के अनुसार, Saitong को अवैध जानकारी हटाने, उपयोगकर्ता के सॉफ्टवेयर सेवा के उपयोग को प्रतिबंधित, निलंबित, समाप्त करने, उपयोगकर्ता की कानूनी जिम्मेदारी का पीछा करने और Saitong द्वारा उचित समझे जाने वाले अन्य उपाय करने का अधिकार है। यदि हमें कोई नुकसान होता है (जिसमें किसी तृतीय पक्ष के दावे प्राप्त करना या किसी प्रशासनिक विभाग से दंड शामिल है लेकिन सीमित नहीं है), तो उपयोगकर्ता पूरी तरह से उत्तरदायी होगा।

+ +

8. सेवा जोखिम और अस्वीकरण

+

8.1 हम वर्तमान प्रौद्योगिकी के साथ सेवा सहायता प्रदान करना चाहते हैं। Saitong इस बात की गारंटी नहीं देता कि सॉफ्टवेयर सेवा बिना किसी रुकावट या त्रुटि के संचालित होगी, कि सॉफ्टवेयर सेवा के सभी दोष ठीक किए जाएंगे, या कि सॉफ्टवेयर सेवा उपयोगकर्ताओं की सभी आवश्यकताओं को पूरा करेगी। परिणामी परिणामों के लिए, Saitong कोई जिम्मेदारी नहीं लेता।

+

8.2 संचार लाइन विफलता, तकनीकी समस्याओं, नेटवर्क, कंप्यूटर टर्मिनल उपकरण विफलता, सिस्टम अस्थिरता और अन्य अप्रत्याशित घटना कारणों जैसे तृतीय पक्षों के कारण उपयोगकर्ता द्वारा सहन किए गए सभी नुकसान के लिए उत्तरदायी नहीं ठहराया जाएगा।

+

8.3 Saitong सॉफ्टवेयर के माध्यम से प्राप्त सूचना सामग्री की वैधता, प्रामाणिकता, सटीकता और प्रभावशीलता की गारंटी नहीं देता (जिसमें तृतीय-पक्ष सेवा सामग्री शामिल है लेकिन सीमित नहीं है), और Saitong क्वेरी और देखने के आधार पर उपयोगकर्ताओं द्वारा किए गए किसी भी व्यवहार के परिणामों के लिए कोई जिम्मेदारी नहीं लेता।

+

8.4 सॉफ्टवेयर, अधिकांश इंटरनेट सॉफ्टवेयर की तरह, उपयोगकर्ता कारणों, नेटवर्क सेवा गुणवत्ता, सामाजिक वातावरण और अन्य कारकों सहित लेकिन सीमित नहीं कारकों में अंतर से प्रभावित होता है, और विभिन्न सुरक्षा समस्याओं के अधीन हो सकता है, जैसे दूसरों द्वारा उपयोगकर्ता की जानकारी का उपयोग, जिसके परिणामस्वरूप वास्तविक जीवन में उत्पीड़न होता है; उपयोगकर्ताओं द्वारा डाउनलोड और इंस्टॉल किए गए अन्य सॉफ्टवेयर या उपयोगकर्ताओं द्वारा देखी गई अन्य वेबसाइटों में "ट्रोजन हॉर्स" जैसे वायरस होते हैं, जो उपयोगकर्ताओं के टर्मिनल उपकरण सूचना और डेटा की सुरक्षा को खतरे में डालते हैं, और फिर सॉफ्टवेयर के सामान्य उपयोग को प्रभावित करते हैं। उपयोगकर्ताओं को सूचना सुरक्षा और उपयोगकर्ता डेटा सुरक्षा की जागरूकता मजबूत करनी चाहिए, और नुकसान और उत्पीड़न से बचने के लिए पासवर्ड सुरक्षा को मजबूत करने पर ध्यान देना चाहिए।

+

8.5 जब उपयोगकर्ता सॉफ्टवेयर का उपयोग करते हैं या Saitong से विशिष्ट सेवाएं प्रदान करने की आवश्यकता होती है, तो सॉफ्टवेयर उपयोगकर्ताओं के उपयोग या पहुंच का समर्थन करने के लिए तृतीय-पक्ष सिस्टम या तृतीय-पक्ष सॉफ्टवेयर को कॉल कर सकता है, और उपयोग या पहुंच के परिणाम तृतीय पक्ष द्वारा प्रदान किए जाते हैं। इस समझौते के संबंधित नियमों का पालन करने के अलावा, उपयोगकर्ताओं को तृतीय पक्ष के समझौतों और संबंधित नियमों का भी पालन करना होगा। उपयोगकर्ताओं को समझना और सहमत होना होगा कि, तृतीय-पक्ष सेवाओं का उपयोग करते समय, तृतीय पक्ष उपयोगकर्ता डेटा पढ़ सकते हैं, और Saitong तृतीय-पक्ष सिस्टम या तृतीय-पक्ष सॉफ्टवेयर समर्थन के माध्यम से प्राप्त परिणामों की सुरक्षा, सटीकता, प्रभावशीलता और अन्य अनिश्चित जोखिमों की गारंटी नहीं देता, उपयोगकर्ताओं को सावधानीपूर्वक निर्णय लेना चाहिए, और Saitong इससे उत्पन्न किसी भी विवाद और क्षति के लिए कोई जिम्मेदारी नहीं लेता।

+

8.6 कंपनी के व्यापार विकास और समायोजन की स्वायत्तता की गारंटी के लिए, कंपनी उपयोगकर्ता को सूचित करने का उचित तरीका अपनाने के बाद किसी भी समय सेवा को संशोधित या बाधित कर सकती है।

+

8.7 कानूनों और विनियमों द्वारा स्पष्ट रूप से प्रदान किए गए को छोड़कर, Saitong यह सुनिश्चित करने के लिए अपना सर्वश्रेष्ठ प्रयास करेगा कि सॉफ्टवेयर और इसमें शामिल प्रौद्योगिकी और जानकारी सुरक्षित, प्रभावी, सटीक और विश्वसनीय हो, लेकिन मौजूदा प्रौद्योगिकी की सीमाओं से, उपयोगकर्ता समझता है कि Saitong इसकी गारंटी नहीं दे सकता।

+

8.8 निम्नलिखित परिस्थितियों में से किसी के कारण या संबंध में व्यक्तिगत चोट या आकस्मिक और अप्रत्यक्ष आर्थिक क्षति के लिए मुआवजा, जिसमें लाभ की हानि, डेटा की हानि, व्यापार रुकावट के लिए क्षतिपूर्ति या अन्य व्यावसायिक क्षति या हानि शामिल है लेकिन सीमित नहीं है, उपयोगकर्ता द्वारा वहन किया जाएगा:

+

1) लाइसेंस प्राप्त सॉफ्टवेयर का उपयोग या उपयोग करने में विफलता।

+

2) तृतीय पक्षों द्वारा सॉफ्टवेयर का अनधिकृत उपयोग या उपयोगकर्ता डेटा में परिवर्तन।

+

3) सॉफ्टवेयर के साथ उपयोगकर्ता के कार्यों से होने वाले खर्च और नुकसान।

+

4) सॉफ्टवेयर के बारे में उपयोगकर्ता की गलत धारणाएं।

+

5) सॉफ्टवेयर से संबंधित कोई अन्य नुकसान जो Saitong कारणों से संबंधित नहीं है।

+

8.9 उपयोगकर्ता सहमत है कि कंपनी को न्यायिक, नियामक और पर्यवेक्षी प्राधिकरणों की आवश्यकताओं के आधार पर या अपने स्वयं के व्यावसायिक कारणों से उपयोगकर्ता को सभी या सेवा का हिस्सा निलंबित, बाधित या समाप्त करने का अधिकार है। Saitong इसके लिए कोई जिम्मेदारी स्वीकार नहीं करता।

+

8.10 उपयोगकर्ता समझता है और सहमत है कि कंपनी सॉफ्टवेयर और सेवाओं में डेटा भंडारण की सुरक्षा सुनिश्चित करने के लिए अपने व्यावसायिक रूप से उचित प्रयासों का उपयोग करेगी, लेकिन कंपनी पूर्ण गारंटी प्रदान नहीं कर सकती, और उपयोगकर्ता समझता है कि कंपनी सेवा में डेटा के विलोपन या भंडारण या बैकअप विफलता के लिए जिम्मेदार नहीं है।

+

8.11 कानून द्वारा अनुमत पूर्ण सीमा तक, डेवलपर या आपूर्तिकर्ता एप्लिकेशन के उपयोग से उत्पन्न किसी भी प्रत्यक्ष, अप्रत्यक्ष, आकस्मिक, विशेष या परिणामी क्षति के लिए उत्तरदायी नहीं होगा। यदि उपयोगकर्ता की और आवश्यकताएं हैं, तो कृपया गहन परीक्षण के लिए नियमित अस्पताल जाएं।

+ +

9. बौद्धिक संपदा घोषणा

+

9.1 Saitong इस सॉफ्टवेयर का बौद्धिक संपदा अधिकार धारक है। सॉफ्टवेयर के सभी कॉपीराइट, ट्रेडमार्क, पेटेंट, व्यापार रहस्य और अन्य बौद्धिक संपदा अधिकार, साथ ही सॉफ्टवेयर से संबंधित सभी सूचना सामग्री (जिसमें पाठ, चित्र, ऑडियो, वीडियो, ग्राफिक्स, इंटरफ़ेस डिज़ाइन, लेआउट फ्रेम, संबंधित डेटा या इलेक्ट्रॉनिक दस्तावेज़ आदि शामिल हैं लेकिन सीमित नहीं हैं) स्थानीय कानूनों और विनियमों और संबंधित अंतरराष्ट्रीय संधियों द्वारा संरक्षित हैं।

+

9.2 कंपनी की लिखित सहमति के बिना, उपयोगकर्ता को किसी भी व्यावसायिक या गैर-व्यावसायिक उद्देश्य के लिए उपरोक्त बौद्धिक संपदा अधिकारों को लागू, उपयोग या हस्तांतरित नहीं करना चाहिए, और न ही किसी तृतीय पक्ष को अनुमति देनी चाहिए, और कंपनी उपरोक्त कार्यों के लिए कानूनी जिम्मेदारी का पीछा करने का अधिकार सुरक्षित रखती है।

+ +

10. प्रोटोकॉल परिवर्तन

+

10.1 Saitong को आवश्यकता पड़ने पर इस समझौते की शर्तों को संशोधित करने का अधिकार है। एक बार समझौते की शर्तें बदल जाने पर, समझौते की संशोधित शर्तें संबंधित पृष्ठ पर प्रकाशित की जाएंगी। यदि आप परिवर्तित सामग्री से सहमत नहीं हैं, तो उपयोगकर्ता को इस सेवा को रद्द करने की पहल करनी चाहिए। यदि उपयोगकर्ता सेवाओं का उपयोग जारी रखता है, तो यह माना जाता है कि उसने समझौते की शर्तों में परिवर्तन स्वीकार कर लिया है।

+

10.2 Saitong आवश्यकता अनुसार प्रदान की गई सशुल्क सेवाओं, शुल्क मानकों, शुल्क विधियों, सेवा शुल्क और सेवा शर्तों को संशोधित या बदलने का अधिकार सुरक्षित रखता है। सेवाएं प्रदान करते समय, हम अब या भविष्य में कुछ सेवाओं के उपयोगकर्ताओं से कुछ शुल्क ले सकते हैं। यदि उपयोगकर्ता ऐसे शुल्क का भुगतान करने से इनकार करते हैं, तो वे शुल्क शुरू होने के बाद संबंधित सेवाओं का उपयोग जारी नहीं रख सकते।

+
+ + diff --git a/doc/hr/privacy_policy.html b/doc/hr/privacy_policy.html new file mode 100644 index 000000000..0e6eeac5b --- /dev/null +++ b/doc/hr/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Pravila privatnosti Voitrans + + + + +
+

Pravila privatnosti Voitrans

+

Zadnje ažuriranje: 27. svibnja 2025.

+

Datum stupanja na snagu: 27. svibnja 2025.

+ +

Dobrodošli u korištenje softvera i usluga Voitrans

+

1. Voitrans pruža Saitong Industries Inc. (u daljnjem tekstu „Tvrtka“). Voitrans može pomoći korisnicima u upravljanju Bluetooth uređajima i drugim proizvodima. Razumijemo važnost osobnih podataka za naše korisnike (u daljnjem tekstu „vi“) te da je učinkovita zaštita vaših osobnih podataka temelj zdravog i održivog razvoja našeg poslovanja. Hvala vam na korištenju i povjerenju u proizvode ili usluge Voitrans! Svjesni smo da se to povjerenje ne stječe lako te se držimo načela otvorenosti i transparentnosti kako bismo vam objasnili naša pravila obrade vaših osobnih podataka. Vaše osobne podatke obrađujemo zakonito i u legitimne svrhe koje su jasne i razumno određene. Posebna napomena: pažljivo pročitajte i razumite ova Pravila privatnosti prije korištenja naših proizvoda ili usluga kako biste mogli donijeti odgovarajuće odluke.

+

2. Ova Pravila privatnosti objašnjavaju kako prikupljamo, koristimo, pohranjujemo i dijelimo vaše osobne podatke kada koristite Voitrans. Osobni podaci odnose se na sve vrste informacija zabilježenih elektroničkim ili drugim sredstvima koje mogu identificirati određenu fizičku osobu ili odražavati aktivnosti određene fizičke osobe, bilo samostalno ili u kombinaciji s drugim informacijama. Voitrans poštuje i štiti privatnost svih korisnika usluge. Osim ako nije drukčije navedeno u ovim Pravilima privatnosti, Voitrans neće javno objaviti te podatke niti ih pružiti trećim stranama bez vaše prethodne dozvole.

+

3. Kada koristite proizvod ili uslugu treće strane putem proizvoda ili usluge na App Marketplaceu, vaši osobni podaci podliježu pravilima privatnosti te treće strane.

+

4. Ova Pravila privatnosti Voitrans mogu se povremeno ažurirati. Prihvaćanjem Ugovora o korištenju usluge Voitrans i početkom korištenja Voitransa smatra se da ste prihvatili cijela ova Pravila privatnosti. Ako se ne slažete s ovim Pravilima privatnosti, nemojte koristiti Voitrans softver i usluge.

+

5. Kako bismo analizirali i mjerili učinkovitost relevantnih usluga, koristit ćemo i otkrivati vaše osobne podatke u skladu s odredbama ovih Pravila privatnosti.

+ +

Ova Pravila privatnosti pomoći će vam razumjeti sljedeće:

+
    +
  • 1 Informacije koje prikupljamo
  • +
  • 2 Pohrana informacija
  • +
  • 3 Sigurnost informacija
  • +
  • 4 Kako koristimo prikupljene informacije
  • +
  • 5 Dijeljenje informacija
  • +
  • 6 Kako upravljate svojim osobnim podacima
  • +
  • 7 Opis dozvola aplikacije
  • +
  • 8 Korištenje SDK-ova trećih strana
  • +
  • 9 Zaštita maloljetnika
  • +
  • 10 Valjanost i ažuriranje Pravila privatnosti
  • +
  • 11 Kako nas kontaktirati
  • +
+ +

1. Informacije koje prikupljamo

+

1. Na početku korištenja Voitransa počet ćemo prikupljati podatke o vašem korištenju aplikacije.

+

2. Voitrans može zakonitim putem dobiti osobne podatke o vama od trećih strana ili poslovnih partnera.

+

3. Kako bismo vam pružili bolje proizvode i usluge, osigurali mrežnu sigurnost tijekom korištenja, održali normalan rad proizvoda te ih optimizirali i poboljšali, nakon što aktivno kliknete da se slažete s ovim Pravilima privatnosti, tijekom pružanja usluge, osim osobnih podataka nužnih za normalan rad osnovnih funkcija aplikacije u skladu s nacionalnim zakonima i propisima, prikupljat ćemo i druge osobne podatke od vas:

+

3.1 Radi prepoznavanja rizičnih korisnika, procjene autentičnosti korisnika i sprječavanja prijevara, svaki put kada otvorite aplikaciju očitat ćemo podatke o uređaju, uključujući: (model uređaja, MAC adresu uređaja, jedinstveni identifikator uređaja (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID itd.), MEID, serijski broj, Wi‑Fi SSID i BSSID), Bluetooth adresu, verziju operativnog sustava, naziv operativnog sustava, podatke o korisničkom računu i lozinci za prijavu;

+

3.2 Kada koristite naše proizvode i usluge, možemo prikupljati određene informacije putem mrežnih zapisa ili određenih programa i softvera, uključujući: detalje o korištenju proizvoda i usluga (npr. vrijeme otvaranja aplikacije, trajanje korištenja i adresu posjećene stranice); informacije o događajima uređaja, kao što su rušenja, aktivnost sustava itd., radi optimizacije vašeg uređaja i poboljšanja naših usluga;

+

3.3 Kako bismo identificirali aplikacije zbog kojih je uređaj u riziku i pružili sigurnije funkcionalne usluge, trebamo pribaviti vaš popis aplikacija/popisu instaliranih aplikacija kako bismo osigurali normalan rad proizvoda i zaštitili sigurnost uređaja.

+

3.4 Radi analize korištenja funkcija aplikacije i utvrđivanja autentičnosti korisnika, potrebno je provoditi statistiku podataka te prikupljati navedene podatke o uređaju, uključujući MAC adresu i jedinstveni identifikator uređaja, dok je vaš uređaj u uporabi.

+

3.5 Signal uređaja: mrežni status uređaja koji koristite, informacije o Wi‑Fi pristupnoj točki itd.

+

3.6 Informacije o lokaciji: možemo koristiti GPS, Wi‑Fi ili druga tehnička sredstva za prikupljanje i obradu informacija o vašoj lokaciji radi ažuriranja lokalnih informacija, pružanja sadržajnih usluga itd.

+

Za više informacija kliknite „Popis prikupljanja osobnih podataka“.

+ +

1. Za osjetljivije osobne podatke iz gore navedenog, kao što su podaci o uređaju korisnika (IMEI broj, status poziva i identifikacijski broj), GPS lokacija, sadržaj foto-medija i prava pristupa datotekama, prije prikupljanja zatražit ćemo vaš pristanak. Za neke neosjetljive informacije prikupljanje može biti zadano i automatsko. Možete ograničiti naše prikupljanje relevantnih informacija ili korištenje određenih dozvola na svom mobilnom uređaju podešavanjem postavki uređaja. Kada ograničite naš pristup određenoj dozvoli, možda nećemo moći nastaviti pružati odgovarajuće usluge te više nećemo obrađivati povezane informacije.

+

2. Nećemo prikupljati broj osobne iskaznice, biometrijske podatke, broj bankovnog računa, podatke o imovini, kreditne podatke, zdravstvene i fiziološke podatke niti druge osjetljive osobne podatke.

+

3. O osjetljivim dozvolama: kako biste pravilno koristili funkcije aplikacije, proizvod mora dobiti sljedeće dozvole radi pružanja funkcionalnih usluga povezanih s normalnim radom proizvoda.

+ +

1 Dozvola za čitanje i pisanje pohrane

+

1 Kako se dobiva: skočni prozor; kada se dozvola zatraži, korisnik će aktivno kliknuti „Slažem se“ i aplikacija će koristiti ovu dozvolu

+

2 Svrha i opseg: koristi se za skeniranje datoteka predmemorije i sličica u sustavu, učitavanje glazbenih resursa i slika proizvoda te prikaz u aplikaciji radi lakšeg pregleda i korištenja

+ +

2 Dozvola za popis instaliranih aplikacija

+

1 Kako se dobiva: skočni prozor; kada se dozvola zatraži, korisnik će aktivno kliknuti „Slažem se“ i aplikacija će koristiti ovu dozvolu

+

2 Svrha i opseg: kada aplikacija treba koristiti usluge oglašavanja i promocije, oglašivačka platforma treće strane (Youmon +SDK) treba dobiti dozvolu „popis instaliranih aplikacija“ kako bi se izbjeglo preporučivanje aplikacija koje korisnik već ima i poboljšalo korisničko iskustvo.

+ +

3 Dozvola za dobivanje podataka o statusu uređaja

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Kako se dobiva: skočni prozor; kada se dozvola zatraži, korisnik će aktivno kliknuti „Slažem se“ i aplikacija će koristiti ovu dozvolu

+

2 Svrha i opseg: tijekom korištenja naše aplikacije, radi analize korištenja funkcija i procjene autentičnosti korisnika, možemo sinkronizirati ovu dozvolu s SDK-ovima trećih strana, uključujući Autonavi SDK, Youmon +SDK itd.

+ +

4 Pristup informacijama o lokaciji

+

1 Kako se dobiva: skočni prozor; korisnik koristi ovu dozvolu samo kada aktivno klikne da se slaže s aplikacijom

+

2 Svrha i opseg: kada aplikacija treba koristiti GPS, Wi‑Fi ili druge funkcije, proizvod mora prikupiti vašu lokaciju i podatke kako bi pretražio Bluetooth uređaje u blizini.

+

Napomena: za više dozvola aplikacije pogledajte ovaj dokument „Pravila privatnosti“, odjeljak 7 „Opis dozvola aplikacije“.

+ +

2. Pohrana informacija

+

1. Gdje se informacije pohranjuju

+

Osobni podaci koje prikupljamo i generiramo u Narodnoj Republici Kini pohranit će se na našim poslužiteljima i/ili poslužiteljima naših povezanih društava.

+

2. Pohrana i obrada informacija

+

Vaše osobne podatke čuvamo samo onoliko dugo koliko je potrebno za ostvarenje svrhe ili koliko to zahtijevaju zakoni i propisi. Nakon što prestanete koristiti ovaj proizvod, odmah ćemo prestati prikupljati i obrađivati vaše osobne podatke i podatke aplikacije. Nakon isteka navedenog razdoblja, izbrisat ćemo ili anonimizirati osobne podatke koje ste nam pružili.

+

Osim nužnih funkcija, Voitrans mora zatražiti odgovarajuće sistemske dozvole. Poslužiteljska strana u oblaku ne pohranjuje osobne podatke korisnika, a SDK-ovi trećih strana kojima se pristupa bit će anonimizirani i deidentificirani od strane pružatelja usluge (Amu Statistics SDK, Autonavi SDK), tako da korisnike nije moguće pratiti. Podaci pohranjeni na telefonu korisnika automatski se brišu kada korisnik deinstalira Voitrans ili očisti predmemoriju.

+ +

3. Sigurnost informacija

+

1. Voitrans pohranjuje i štiti vaše osobne podatke koristeći sigurnosne mjere i tehnologije u skladu s industrijskim standardima, kao što su autentikacija, enkripcija podataka, ograničen pristup podatkovnom centru i druge sigurnosne mjere kako bi se osiguralo da su vaši podaci zaštićeni od otkrivanja, izmjene i uništenja. Unatoč navedenim mjerama, imajte na umu da nijedna sigurnosna mjera ne može biti 100% sigurna.

+

2. Kada koristite usluge koje pruža Voitrans, zaštitite svoje osobne podatke. Ako primijetite da su vaši osobni podaci ugroženi, odmah nas kontaktirajte kako bismo mogli poduzeti odgovarajuće mjere.

+ +

4. Kako koristimo prikupljene informacije

+

1. Tijekom provedbe poslovnih funkcija aplikacije možemo koristiti vaše osobne podatke kako bismo osigurali integritet i sigurnost proizvoda i usluga koje vam pružamo;

+

2. Na temelju prikupljenih informacija razumjet ćemo vaše navike korištenja te uz pomoć analize podataka procijeniti prihvatljivost usluga, vaše navike korištenja itd., kako bismo testirali i stvarali nove proizvode, funkcije i usluge, poboljšali razinu usluge te unaprijedili postojeće i razvili nove usluge;

+

3. Vaše osobne podatke možemo koristiti za ankete korisnika o proizvodima i uslugama, za slanje obavijesti o proizvodima i uslugama te za komercijalnu promociju;

+

4. Vaše informacije možemo koristiti za internu analizu i istraživanje povezano s aplikacijom;

+ +

5. Dijeljenje informacija

+

Trenutno nećemo aktivno dijeliti niti prenositi vaše osobne podatke trećim stranama izvan tvrtke. Ako dođe do dijeljenja ili prijenosa vaših osobnih podataka, zatražit ćemo vaš izričit pristanak ili potvrditi da je treća strana dobila vaš izričit pristanak za navedenu radnju.

+

Nećemo javno objaviti osobne podatke koje prikupljamo. Ako je potrebno javno objavljivanje, obavijestit ćemo vas o svrsi javnog objavljivanja, vrsti objavljenih informacija i mogućim osjetljivim informacijama te pribaviti vaš izričit pristanak.

+

S obzirom na razvoj našeg poslovanja, možemo sudjelovati u spajanjima, preuzimanjima, prijenosima imovine i drugim transakcijama. O relevantnim okolnostima obavijestit ćemo vas u skladu sa zakonima i propisima i ne manjim standardima od onih navedenih u ovom dokumentu, kako bismo nastavili štititi vaše osobne podatke ili zahtijevali od novog voditelja obrade da nastavi štititi vaše osobne podatke.

+

Osim toga, sukladno relevantnim zakonima, propisima i nacionalnim standardima, možemo dijeliti, prenositi ili javno objaviti osobne podatke bez prethodnog odobrenja i pristanka subjekta osobnih podataka u sljedećim okolnostima:

+
    +
  • 1 Izravno povezano s nacionalnom sigurnošću i sigurnošću obrane;
  • +
  • 2 Izravno povezano s javnom sigurnošću, javnim zdravljem ili značajnim javnim interesima;
  • +
  • 3 Izravno povezano s kaznenom istragom, kaznenim progonom, suđenjem i izvršenjem presuda;
  • +
  • 4 Radi zaštite života, imovine i drugih važnih zakonitih prava i interesa subjekta osobnih podataka ili drugih osoba, ali je teško pribaviti pristanak;
  • +
  • 5 Osobni podaci koje je subjekt osobnih podataka javno objavio;
  • +
  • 6 Prikupljanje osobnih podataka iz zakonito javno objavljenih informacija, poput zakonitih novinskih izvješća, objave državnih informacija i drugih kanala.
  • +
+ +

6. Kako upravljate svojim osobnim podacima

+

U skladu s relevantnim zakonima, propisima i standardima Kine, kao i uobičajenim praksama drugih zemalja i regija, jamčimo da možete ostvariti sljedeća prava u vezi s vašim osobnim podacima:

+ +

1. Ispravak osobnih podataka

+

Ako utvrdite da postoji pogreška u vašim osobnim podacima koje obrađujemo, imate pravo ispraviti ili ažurirati netočne ili nepotpune informacije. Ako ne možete samostalno izvršiti izmjene u centru računa, možete nas kontaktirati putem e‑pošte: saitong.voitrans@gmail.com

+ +

2. Brisanje osobnih podataka

+

U sljedećim slučajevima možete podnijeti zahtjev za brisanje vaših osobnih podataka:

+
    +
  • Ako obrađujemo osobne podatke protivno zakonima i propisima;
  • +
  • Ako prikupljamo i koristimo vaše osobne podatke bez vašeg pristanka;
  • +
  • Ako naša obrada osobnih podataka krši naš dogovor s vama;
  • +
  • Ako više ne koristite naše proizvode ili usluge;
  • +
  • Ako vam više ne pružamo proizvode ili usluge.
  • +
+

Kontaktirajte nas na saitong.voitrans@gmail.com. Obradit ćemo vaš zahtjev i poslati vam odgovor u roku od 30 radnih dana od zaprimanja.

+ +

3. Promjena opsega pristanka

+

Možete nas kontaktirati putem e‑pošte: saitong.voitrans@gmail.com. Na vaš zahtjev više nećemo prikupljati, koristiti niti otkrivati vaše osobne podatke. Imajte na umu da povlačenje pristanka ili brisanje osobnih podataka može utjecati na korištenje nekih naših usluga.

+ +

4 Pristup i kopiranje osobnih podataka

+

Sukladno relevantnim zakonima, možete dostaviti svoj imei (serijski broj telefona) ili oaid ili Android ID te podatke o računu i druge informacije, a zatim od nas zatražiti pristup i kopiju svojih osobnih podataka. Možete nas kontaktirati putem e‑pošte: 3514406195@qq.com

+ +

5. Odgovor na vaš zahtjev

+

Radi sigurnosti možda ćete morati dostaviti pisani zahtjev ili na drugi način dokazati svoj identitet. Prije obrade zahtjeva možemo zatražiti provjeru identiteta. Na razuman zahtjev odgovorit ćemo i obraditi ga pravodobno. Možemo odbiti zahtjeve koji su nepotrebno ponavljajući, zahtijevaju previše tehnologije (npr. razvoj novih sustava ili temeljne promjene postojećih praksi), predstavljaju rizik za zakonite interese drugih ili su izrazito nepraktični.

+

U sljedećim okolnostima, sukladno zakonima i propisima, možda nećemo moći odgovoriti na vaš zahtjev:

+
    +
  • Povezano s nacionalnom sigurnošću i sigurnošću obrane;
  • +
  • U vezi s kaznenom istragom, progonom i suđenjem;
  • +
  • Postoje dovoljni dokazi o namjernoj zlouporabi prava ili zlonamjernosti;
  • +
  • Odgovor na vaš zahtjev prouzročio bi ozbiljnu štetu zakonitim pravima i interesima vas ili drugih osoba/organizacija.
  • +
+ +

6. Brisanje računa

+

Korisnik može u aplikaciji izvršiti radnju [brisanje računa]. Koraci:

+
    +
  1. Idite na stranicu [My]
  2. +
  3. Kliknite gumb [Settings] u gornjem desnom kutu
  4. +
  5. Kliknite [Cancel account] za potvrdu
  6. +
+

Nakon brisanja računa, podaci o korisničkom računu se brišu

+ +

7. Opis dozvola aplikacije

+

Kako bismo pružili bolje proizvode i usluge, tijekom korištenja softvera zatražit ćemo sljedeće dozvole. Kada uđete na početnu stranicu ili koristite funkciju, zatražit će se autorizacija. Ako odbijete, neke funkcije možda neće raditi normalno. Specifične svrhe i obavijesti o dozvolama su sljedeće:

+ +

1 Dozvole lokacije:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

putem Wi‑Fi mreže ili mobilne bazne stanice dobiva se lokacija korisnika (geografska širina i dužina)

+

Kada koristite Voitrans, tražit ćemo povezani Bluetooth uređaj na temelju vaše geografske lokacije. Istovremeno, radi stabilnijih usluga, optimizacije proizvoda i poboljšanja iskustva, možemo dijeliti navedene informacije s SDK-ovima trećih strana (npr. Youmon i Autonavi) kako bismo dobili podatke o radu Voitransa i pružili funkcionalne usluge.

+

Način obavijesti: pri prvom pokretanju aplikacije prikazuje se skočni prozor za dozvolu i korisnik mora potvrditi prihvaćanje. Opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

2 Dozvole pohrane

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Ova dozvola je potrebna kada pristupate aplikaciji radi funkcija upravljanja aplikacijama.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

3 Mrežne dozvole:

+

android.permission.INTERNET

+

Ove dozvole su potrebne za Voitrans informacijske usluge i usluge nadogradnje verzije. Radi poboljšanja korisničkog iskustva i optimizacije mogućnosti usluge, ove dozvole mogu koristiti i SDK-ovi trećih strana.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

4 Dozvole statusa mreže:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Koristi se za utvrđivanje je li trenutna mrežna veza valjana, procjenu mrežnog okruženja (npr. 4G) te obavještavanje o promjenama mrežnog okruženja koje utječu na učitavanje sadržaja. Ova dozvola se traži kada koristite Voitrans.

+

Promjene statusa mreže utječu na prijenos i učitavanje podataka, stoga se pristup dozvoli statusa mreže može dijeliti i s platformama trećih strana.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

5 Dozvola popisa zadataka:

+

android.permission.GET_TASKS

+

Ova dozvola se koristi za dobivanje popisa aplikacija za funkciju upravljanja softverom. Kada koristite tu funkciju, potrebno je pročitati aplikacije instalirane na telefonu.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

6 Dozvola za MAC adresu

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Kada koristite Voitrans, aplikacija može trebati dozvolu za MAC adresu:

+

Kada aplikacija treba prijaviti podatke o ciljnoj konverziji, platforme trećih strana poput Youmon +SDK mogu koristiti MAC.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

7 Dozvola za snimanje zvuka

+

android.permission.RECORD_AUDIO

+

Kada koristite funkciju glasovnog unosa u Voitransu, potrebno je koristiti dozvolu za snimanje zvuka, prvenstveno za glasovni unos u svrhu prevođenja i drugih povezanih funkcija.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti; kada je potrebno, prikazuje se dinamički skočni prozor.

+ +

8 Dozvola za Wi‑Fi SSID

+

Kada se koristi ova dozvola, aplikacija čita Wi‑Fi SSID:

+

Opseg i svrha: kada aplikacija treba koristiti usluge analize podataka, platforme trećih strana mogu čitati „Wi‑Fi SSID“ uređaja radi pružanja preciznijih i učinkovitijih funkcionalnih usluga.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

9 Pristup Bluetoothu

+

Kada se koristi ova dozvola, aplikacija koristi Bluetooth dozvole:

+

Opseg i svrha: pretraživanje i konfiguracija Bluetooth dodataka (npr. Bluetooth slušalice, Bluetooth satovi itd.) radi lakšeg upravljanja

+

Način obavijesti: pri prvom pokretanju aplikacije prikazuje se skočni prozor za dozvolu i korisnik mora potvrditi prihvaćanje. Opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

10 Dozvola za Wi‑Fi BSSID

+

Kada aplikacija treba razlikovati i identificirati korisnika radi pružanja usluga i statistike podataka, čitat će „Wi‑Fi BSSID“ uređaja za:

+

Opseg i svrha: 1) platforme trećih strana, kao što su Youmeng SDK, Bugly SDK, Autonavi SDK

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

11 Dozvola za instalaciju aplikacija

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Softver koristi dozvolu za instalaciju aplikacija, prvenstveno kako bi korisnicima omogućio instalaciju nove verzije i korištenje novih funkcija kada je nova verzija dostupna.

+

Način obavijesti: opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

12 Dozvola za kameru

+

android.permission.CAMERA

+

Voitrans koristi dozvolu za kameru za skeniranje QR kodova i uparivanje Bluetooth uređaja poput Bluetooth slušalica i satova.

+

Način obavijesti: pri prvom pokretanju aplikacije prikazuje se skočni prozor za dozvolu i korisnik mora potvrditi prihvaćanje. Opis u Ugovoru o korištenju i Pravilima privatnosti.

+ +

Posebna napomena:

+

1 Aplikacija integrira SDK-ove trećih strana. Nakon što korisnik pristane, aplikacija može u pozadini/prednjem planu prikupljati ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI i druge osobne podatke;

+

Napomena: za više detalja pogledajte sadržaj i dozvole povezane sa SDK-ovima u nastavku [VIII. Popis SDK-ova trećih strana].

+ +

8. Korištenje SDK-ova trećih strana

+

1 Kako bismo osigurali stabilan rad i realizaciju funkcija našeg klijenta te kako biste mogli koristiti i uživati u više usluga i funkcija, naša aplikacija može ugraditi software development kit (SDK) ili druge slične komponente trećih strana. Te treće strane prikupljaju i obrađuju relevantne informacije u skladu sa svojim pravilima privatnosti kako bi normalno pružale funkcije i oglašivačke usluge. O pravilima prikupljanja i obrade informacija trećih strana možete saznati u sljedećem odjeljku. Provodimo stroga sigurnosna testiranja SDK-ova partnera kako bismo zaštitili razumno korištenje i sigurnost vaših osobnih podataka. Imajte na umu da SDK-ovi trećih strana mogu mijenjati vrste obrade podataka zbog nadogradnji verzija. Pogledajte pravila privatnosti koja objavljuju SDK-ovi trećih strana. Detalji su u nastavku ili kliknite za prikaz popisa SDK-ova trećih strana.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Dobivene informacije: broj uređaja, IP adresa, informacije o softveru uređaja, identifikacijski kod uređaja (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, IMSI podaci SIM kartice, IP, MAC adresa), identifikator uređaja, regija, informacije o aplikacijama povezanim s uređajem i druge informacije iz zapisnika povezane s uslugom

+

Svrha uporabe: prijava i dijeljenje putem WeChata

+

Razvijatelj: Shenzhen Tencent Computer Systems Company Limited

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Dobivene informacije: naziv aplikacije, verzija aplikacije, marka i model uređaja, operativni sustav, informacije o operatoru, rezolucija zaslona, informacije senzora (vektor, ubrzanje, tlak, smjer, geomagnetski, žiroskop, temperatura, senzor svjetla, NMEA signal), informacije o jačini signala uređaja

+

Svrha uporabe: navigacija putem Amapa

+

Razvijatelj: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Dobivene informacije: naziv aplikacije, verzija aplikacije, marka i model uređaja, operativni sustav, mrežne informacije, jačina signala uređaja itd.

+

Svrha uporabe: prikaz karte i interakcija

+

Razvijatelj: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Dobivene informacije: informacije o lokaciji (GPS, Wi‑Fi, bazna stanica), informacije o uređaju, mrežne informacije itd.

+

Svrha uporabe: pružanje lokacijskih usluga

+

Razvijatelj: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Dobivene informacije: naziv aplikacije, verzija aplikacije, informacije o uređaju, mrežne informacije itd.

+

Svrha uporabe: alati karte i optimizacija renderiranja

+

Razvijatelj: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Dobivene informacije: identifikatori uređaja, osnovne informacije o uređaju, popis instaliranog softvera i mrežne informacije (za detalje pogledajte službena Pravila privatnosti)

+

Svrha uporabe: prijava na Alipay račun i pokretanje plaćanja

+

Razvijatelj: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Dobivene informacije: verzija SDK/API, platforma, vremenska oznaka, identifikator aplikacije, verzija aplikacije, proizvođač uređaja, verzija OS-a, lokal, vremenska zona, status mreže (Wi‑Fi itd.), mrežni zapisi, podaci o rušenju i korištenju, IP adresa itd. (za detalje pogledajte službena Pravila privatnosti)

+

Svrha uporabe: nadzor kvalitete aplikacije i usluga izvještavanja podataka

+

Razvijatelj: Shenzhen Tencent Computer Systems Company Limited

+

Način prikupljanja: samostalno prikupljanje putem SDK-a

+

Poveznica na Pravila privatnosti: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Zaštita maloljetnika

+

Korisnici naših proizvoda i usluga mogu uključivati maloljetnike mlađe od 18 godina. Maloljetni korisnici trebaju prije korištenja naših proizvoda potražiti savjet svojih roditelja ili skrbnika u vezi s ovim Pravilima privatnosti te koristiti naše usluge ili nam pružiti informacije nakon dobivanja pristanka i pod vodstvom roditelja ili skrbnika. Skrbnici maloljetnika s pitanjima mogu nas kontaktirati putem kontaktnih podataka navedenih u ovim Pravilima privatnosti.

+

Ako se ne slažete s prikupljanjem gore navedenih informacija od strane navedenih pružatelja usluga trećih strana, odmah prestanite koristiti softver. Tijekom korištenja softvera, te će treće strane prikupljati i obrađivati relevantne informacije u skladu sa svojim pravilima privatnosti radi pružanja određenih funkcija, oglašavanja i drugih usluga. Ako dođe do curenja informacija zbog prikupljanja navedenih informacija od strane relevantnog pružatelja usluge treće strane, taj pružatelj snosi odgovarajuću pravnu odgovornost.

+ +

10. Valjanost i ažuriranje Pravila privatnosti

+

1. Ova Pravila privatnosti vrijede od datuma objave.

+

2. Kako se naše poslovanje razvija i mijenja, naša Pravila privatnosti mogu se mijenjati. Zadržavamo pravo izmjene Pravila privatnosti u bilo kojem trenutku, stoga ih povremeno provjerite. Ako napravimo izmjene, objavit ćemo ažuriranja na našoj web-stranici, u aplikacijama i gdje smatramo prikladnim kako bismo vas informirali. Ako se Pravila privatnosti ažuriraju, stupaju na snagu od datuma ažuriranja. Nastavak korištenja naših proizvoda ili usluga znači da se slažete s izmijenjenim Pravilima privatnosti.

+ +

11. Kako nas kontaktirati

+

Saitong Industries Inc osnovan je 22. studenog 2024., registrirana adresa: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ako želite saznati više o našoj tvrtki i platformi, možete nas kontaktirati putem kontaktnih podataka navedenih u ovim pravilima (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/hr/user_agreement.html b/doc/hr/user_agreement.html new file mode 100644 index 000000000..aed8d2b0e --- /dev/null +++ b/doc/hr/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Korisnički protokol aplikacije Voitrans + + + +
+
Hrvatski
+ +

Korisnički protokol aplikacije Voitrans

+ +

Ovi Uvjeti korištenja informiraju vas o načinu pristupa korištenju aplikacije Voitrans i mrežnih usluga („Usluge"). Saitong Industries Inc. (u daljnjem tekstu „Saitong") podsjeća korisnike da pažljivo pročitaju i u potpunosti razumiju ovaj Korisnički ugovor (u daljnjem tekstu „Ugovor"). Korisnici trebaju pažljivo pročitati i u potpunosti razumjeti odredbe ovog Ugovora. Molimo pažljivo pročitajte i odaberite prihvaćate li ili ne prihvaćate ovaj Ugovor. Vaše korištenje aplikacije Voitrans (u daljnjem tekstu „Aplikacija" ili „Softver") smatrat će se prihvaćanjem ovog Ugovora i pristajete na obvezivanje odredbama ovog Ugovora. Ako se ne slažete s ovim Ugovorom, nemojte koristiti Aplikaciju.

+

Saitong zadržava pravo izmjene ovog Ugovora, a ažurirani uvjeti Ugovora bit će objavljeni u ovoj Aplikaciji, s učinkom od datuma objave.

+ +

1. Opća pravila

+

1.1 Ova Aplikacija je softver koji pruža Saitong za povezivanje proizvoda slušalica koje izdaje Saitong i njegove partnerske tvrtke. Vlasništvo i operativna prava nad softverom i povezanim uslugama u potpunosti pripadaju tvrtki Saitong.

+

1.2 Ovaj Ugovor je ugovor između vas (u daljnjem tekstu „Korisnik") i tvrtke te njezinih partnera i operativnih partnera (u daljnjem tekstu „Partneri") u vezi s korištenjem Aplikacije i povezanih usluga od strane korisnika.

+

1.3 Softver i usluge uključuju:

+

1.3.1 Pruženi softver pruža korisnicima Voitrans povezivanje i uparivanje Voitrans, upravljanje postavkama funkcija i druge softverske usluge, u skladu sa stvarnim softverskim uslugama koje pruža Aplikacija.

+

1.3.2 Ažuriranja, nadogradnje i druge usluge softvera.

+ +

2. Opseg softverske licence

+

2.1 Korisniku dodjeljujemo osobnu, neprenosivu, nepodlicencijsku i neisključivu licencu za Softver.

+

2.2 Korisnici mogu instalirati, koristiti, prikazivati i pokretati softver na jednom mobilnom terminalnom uređaju u nekomercijalne svrhe. Međutim, korisnik ne smije instalirati, koristiti ili pokretati softver u komercijalne svrhe, kopirati, mijenjati, modificirati, povezivati ili pokretati softver ili podatke pohranjene u memoriji bilo kojeg terminalnog uređaja tijekom rada softvera ili podatke interakcije između klijenta i poslužitelja tijekom rada softvera, ili stvarati bilo kakva izvedena djela. To uključuje, ali nije ograničeno na, korištenje dodataka ili neovlaštenih alata/usluga trećih strana za pristup Softveru i povezanim sustavima. Za komercijalnu prodaju, reprodukciju i distribuciju, kao što su predinstalacija i pakiranje softvera, mora se dobiti pisano odobrenje.

+

2.3 Korisnik ne smije instalirati Softver na druge terminalne uređaje bez izričitog dopuštenja, uključujući, ali ne ograničavajući se na, televizore, digitalne prijemnike, igraće konzole i druge uređaje.

+

2.4 Osim izričito ovlaštenih ovim Ugovorom, Korisniku se ne dodjeljuju nikakva druga prava i Korisnik mora dobiti pisanu suglasnost za korištenje drugih prava.

+ +

3. Nadogradnja softvera

+

3.1 Korisnik mora odabrati verziju softvera prikladnu za konfiguraciju instaliranog terminala. U protivnom, problemi sa softverom, problemi s uređajem ili oštećenja uzrokovana bilo kojom verzijom softvera koja nije prikladna za vrstu uređaja bit će isključivo odgovornost korisnika.

+

3.2 Kako bi poboljšao korisničko iskustvo i unaprijedio sadržaj usluga, Saitong ima pravo povremeno vam pružiti verzije zamjene, izmjene i nadogradnje softvera. Funkcija „Obavijest o nadogradnji" omogućena je prema zadanim postavkama za korisnike. Ovisno o različitim verzijama softvera koje korisnici koriste, Saitong korisnicima pruža mogućnost aktiviranja ove funkcije. Nakon izdavanja nove verzije softvera, Saitong ne jamči kontinuiranu dostupnost stare verzije softvera.

+ +

4. Specifikacija korištenja

+

4.1 Korisnici mogu koristiti Softver i Usluge u skladu s ovim Ugovorom pod uvjetom poštivanja zakona i ovog Ugovora, a korisnici ne smiju obavljati sljedeće radnje:

+

4.1.1 Brisanje svih informacija o autorskim pravima na Softveru i drugim kopijama, te izmjena, brisanje ili zaobilaženje tehničkih mjera koje je Softver uspostavio za zaštitu prava intelektualnog vlasništva.

+

4.1.2 Obrnuti inženjering Softvera, kao što je rastavljanje, dekompilacija ili drugi pokušaji dobivanja izvornog koda Softvera.

+

4.1.3 Izmjenom ili krivotvorenjem uputa i podataka u radu softvera, dodavanjem, brisanjem ili promjenom funkcije ili učinka rada softvera, ili softvera i metoda koje se koriste u gore navedene svrhe za rad ili širenje javnosti, bez obzira na to jesu li te radnje u komercijalne svrhe.

+

4.1.4 Korištenje softvera za bilo kakvo ponašanje koje ugrožava mrežnu sigurnost, uključujući, ali ne ograničavajući se na: korištenje neovlaštenih podataka ili pristup neovlaštenim poslužiteljima/računima; Pristup javnim mrežama ili drugim operativnim sustavima bez dopuštenja te brisanje, izmjena ili dodavanje pohranjenih informacija; Neovlašteni pokušaji ispitivanja, skeniranja ili testiranja slabosti sustava ili mreže softvera ili druge radnje koje podrivaju mrežnu sigurnost; Pokušaji ometanja ili uništavanja normalnog rada softverskog sustava ili web stranice, namjerno širenje zlonamjernih programa ili virusa i druge radnje koje narušavaju normalne mrežne informacijske usluge; Krivotvorenje imena ili djelomičnih imena TCP/IP paketa.

+

4.1.6 Bez pisane suglasnosti Tvrtke, korisnik proizvoljno obavlja sljedeće radnje nad softverom i informacijama u njemu, uključujući, ali ne ograničavajući se na: korištenje, iznajmljivanje, posuđivanje, kopiranje, izmjenu, povezivanje, pretisak, kompiliranje, objavljivanje, stvaranje zrcalnih stranica, razvoj izvedenih proizvoda, djela, usluga, dodataka, kompatibilnost, međusobno povezivanje itd., uz pomoć Softvera.

+

4.1.7 Korištenje Softvera za objavljivanje, prijenos, distribuciju i pohranu sadržaja koji krši lokalne zakone.

+

4.1.8 Korištenje softvera za objavljivanje, prijenos, širenje i pohranu sadržaja koji krši prava intelektualnog vlasništva, poslovne tajne i druga zakonska prava drugih.

+

4.1.9 Korištenje ovog softvera za masovno objavljivanje, prijenos i širenje reklamnih informacija i neželjenih informacija.

+

4.1.10 Korištenje Softvera i drugih Usluga na bilo koji nezakonit način, u bilo koju nezakonitu svrhu ili na bilo koji način nesukladan licenciranom korištenju ovog Ugovora.

+

4.2 Specifikacija objavljivanja informacija

+

4.2.1 Ako koristite softver za objavljivanje informativnog sadržaja (ako postoji), trebate jamčiti da posjedujete prava intelektualnog vlasništva nad informativnim sadržajem koji ste prenijeli ili da ste dobili zakonsko ovlaštenje, te da nijedno vaše ponašanje pri korištenju softvera i usluga ne krši zakonska prava i interese bilo koje treće strane.

+

4.2.2 Pri korištenju Softvera, korisnik ne smije koristiti Softver za sljedeće aktivnosti, uključujući, ali ne ograničavajući se na:

+

4.2.2.1 Stvaranje, kopiranje, objavljivanje, širenje i pohranu sadržaja koji krši lokalne nacionalne zakone i propise.

+

4.2.2.2 Objavljivanje, prijenos, širenje i pohranu sadržaja koji krši zakonska prava drugih, kao što su ugled, portret, intelektualno vlasništvo i poslovne tajne.

+

4.2.2.3 Izmišljanje činjenica, skrivanje istine radi zavođenja ili prijevare drugih.

+

4.2.2.4 Objavljivanje, prijenos i širenje reklamnih informacija i neželjenih informacija.

+

4.2.2.5 Sudjelovanje u drugim radnjama koje krše lokalne zakone i propise.

+

4.2.3 Ne smijete obavljati nikakve komercijalne aktivnosti poput oglašavanja i prodaje robe u Softveru bez dopuštenja Tvrtke.

+

4.3 Korisnik razumije i slaže se da:

+

4.3.1 Saitong će utvrditi je li korisnik pod sumnjom za kršenje gore navedenih specifikacija korištenja i prema rezultatima utvrđivanja obustaviti ili ukinuti vašu licencu za korištenje ili poduzeti druge restriktivne mjere koje se mogu poduzeti u skladu s ovim Ugovorom.

+

4.3.2 Za informacije objavljene od strane korisnika korištenjem licenciranog softvera za koje se sumnja da su nezakonite ili da krše zakonska prava drugih ili krše ovaj Ugovor, informacije će biti izravno izbrisane.

+

4.3.3 Ako korisnikovo kršenje gore navedenih pravila korištenja uzrokuje štetu trećim stranama, morate sami snositi pravnu odgovornost u vlastito ime i morate osigurati da tvrtka ne trpi gubitke ili povećane troškove.

+

4.3.4 Ako korisnik prekrši relevantne zakonske odredbe ili ugovore, uzrokujući gubitke tvrtki Saitong ili podliježući potraživanjima trećih strana ili kazni od strane upravnog tijela, korisnik će nadoknaditi gubitke i/ili troškove nastale tvrtki Saitong, uključujući razumne odvjetničke naknade, troškove istrage i prikupljanja dokaza.

+ +

5. Opis usluga trećih strana

+

5.1 Korisnik razumije i slaže se da softverski sustav može sadržavati usluge koje pružaju podružnice Tvrtke ili treće strane i da Tvrtka samo pruža relevantne funkcionalne module u sustavu radi pogodnosti korisnika i pruža pristup uslugama trećih strana.

+

5.2 Bez obzira na to jesu li usluge trećih strana unaprijed postavljene u uslugama softverskog sustava ili su ih otvorili ili naručili sami korisnici, korisnici razumiju i slažu se da Saitong ne daje nikakvo izričito ili implicitno jamstvo za zakonitost i učinkovitost pružatelja usluga trećih strana ili korisnika, kao ni za zakonitost, točnost, učinkovitost i sigurnost usluga trećih strana.

+

5.3 Tvrtka ne nadzire, ne kontrolira i ne pruža nikakvo jamstvo ili garanciju bilo koje vrste za usluge trećih strana i ne preuzima nikakvu odgovornost.

+

5.4 Svaki spor ili neslaganje između korisnika i pružatelja usluga treće strane rješavat će Korisnik i treća strana u skladu s poslovnim procesom i poslovnim normama pružatelja usluga treće strane, a tvrtka neće preuzeti nikakvu odgovornost.

+ +

6. Pravila o privatnosti i zaštita osobnih podataka

+

6.1 Saitong se obvezuje na zaštitu privatnosti korisnika u skladu s pravilima o privatnosti, molimo pogledajte: Pravila o privatnosti Voitrans.

+ +

7. Odgovornost za kršenje ugovora

+

7.1 Saitong ima pravo prosuditi je li ponašanje korisnika u skladu s odredbama ovog Ugovora. Ako se smatra da je Korisnik prekršio relevantne zakone i propise ili odredbe ovog Ugovora i povezanih pravila, ovisno o težini korisnikova kršenja, Saitong ima pravo izbrisati nezakonite informacije, ograničiti, obustaviti, ukinuti korištenje usluge Softvera od strane korisnika, pravno goniti korisnika i poduzeti druge mjere koje Saitong smatra primjerenima. Ako pretrpimo bilo kakav gubitak (uključujući, ali ne ograničavajući se na zaprimanje bilo kakvih potraživanja trećih strana ili kazni od bilo kojeg upravnog tijela), Korisnik će biti u potpunosti odgovoran.

+ +

8. Rizici usluge i odricanje od odgovornosti

+

8.1 Želimo pružiti podršku uslugama s trenutnom tehnologijom. Saitong ne jamči da će usluga Softvera raditi bez prekida ili pogrešaka, da će svi nedostaci usluge Softvera biti ispravljeni ili da će usluga Softvera zadovoljiti sve zahtjeve korisnika. Za nastale posljedice Saitong ne preuzima nikakvu odgovornost.

+

8.2 Svi gubici koje korisnik pretrpi zbog trećih strana, kao što su kvar komunikacijske linije, tehnički problemi, mrežni problemi, kvar terminalnog računalnog opreme, nestabilnost sustava i drugi uzroci više sile, neće biti odgovornost tvrtke.

+

8.3 Saitong ne jamči za zakonitost, autentičnost, točnost i učinkovitost informativnog sadržaja dobivenog putem softvera (uključujući, ali ne ograničavajući se na sadržaj usluga trećih strana), a Saitong ne preuzima nikakvu odgovornost za rezultate bilo kakvog ponašanja korisnika na temelju upita i pregledavanja.

+

8.4 Softver, poput većine internetskog softvera, pod utjecajem je razlika u čimbenicima uključujući, ali ne ograničavajući se na, razloge korisnika, kvalitetu mrežne usluge, društveno okruženje i druge čimbenike, te može biti podložan raznim sigurnosnim problemima, kao što je korištenje korisničkih informacija od strane drugih, što rezultira uznemiravanjem u stvarnom životu; Drugi softver koji korisnici preuzimaju i instaliraju ili druge web stranice koje korisnici posjećuju sadrže viruse poput „trojanskih konja", koji ugrožavaju sigurnost informacija i podataka terminalnog opreme korisnika i potom utječu na normalno korištenje softvera. Korisnici trebaju pojačati svijest o informacijskoj sigurnosti i zaštiti korisničkih podataka te obratiti pozornost na jačanje zaštite lozinkom kako bi izbjegli gubitke i uznemiravanje.

+

8.5 Kada korisnici koriste Softver ili zahtijevaju od Saitonga pružanje specifičnih usluga, Softver može pozvati sustave trećih strana ili softver trećih strana za podršku korištenju ili pristupu korisnika, a rezultate korištenja ili pristupa pružaju treće strane. Osim pridržavanja relevantnih pravila ovog Ugovora, korisnici se također moraju pridržavati sporazuma i relevantnih pravila trećih strana. Korisnici moraju razumjeti i složiti se da, pri korištenju usluga trećih strana, treće strane mogu čitati korisničke podatke, te Saitong ne jamči za sigurnost, točnost, učinkovitost i druge neizvjesne rizike rezultata postignutih putem sustava trećih strana ili podrške softvera trećih strana, korisnici trebaju vršiti opreznu prosudbu, a Saitong ne preuzima nikakvu odgovornost za bilo kakve sporove i štete uzrokovane time.

+

8.6 Kako bi se zajamčila autonomija razvoja i prilagodbe poslovanja tvrtke, tvrtka može izmijeniti ili prekinuti uslugu u bilo kojem trenutku nakon obavještavanja korisnika na razuman način.

+

8.7 Osim ako je izričito propisano zakonima i propisima, Saitong će uložiti najveće napore kako bi osigurao da su softver te uključene tehnologije i informacije sigurni, učinkoviti, točni i pouzdani, ali ograničen postojećom tehnologijom, korisnik razumije da Saitong to ne može jamčiti.

+

8.8 Naknada za tjelesne ozljede ili slučajnu i neizravnu ekonomsku štetu uzrokovanu ili u vezi s bilo kojom od sljedećih okolnosti, uključujući, ali ne ograničavajući se na, gubitak dobiti, gubitak podataka, štete za prekid poslovanja ili druge poslovne štete ili gubitke, snosit će Korisnik:

+

1) Korištenje ili nemogućnost korištenja licenciranog softvera.

+

2) Neovlašteno korištenje softvera ili izmjena korisničkih podataka od strane trećih strana.

+

3) Troškovi i gubici nastali radnjama korisnika sa softverom.

+

4) Pogrešne predodžbe korisnika o softveru.

+

5) Svaki drugi gubitak povezan sa softverom koji se ne može pripisati uzrocima tvrtke Saitong.

+

8.9 Korisnik se slaže da Tvrtka ima pravo obustaviti, prekinuti ili ukinuti sve ili dio Usluge korisniku na temelju zahtjeva sudskih, regulatornih i nadzornih tijela ili vlastitih poslovnih razloga. Saitong ne preuzima nikakvu odgovornost za to.

+

8.10 Korisnik razumije i slaže se da će Tvrtka uložiti komercijalno razumne napore kako bi osigurala sigurnost pohrane podataka u Softveru i Uslugama, ali tvrtka ne može pružiti potpuno jamstvo, a Korisnik razumije da Tvrtka nije odgovorna za brisanje ili neuspjeh pohrane ili sigurnosnog kopiranja podataka u Usluzi.

+

8.11 U najvećoj mjeri dopuštenoj zakonom, Razvojni programer ili Dobavljač neće biti odgovoran za bilo kakvu izravnu, neizravnu, slučajnu, posebnu ili posljedičnu štetu koja proizlazi iz korištenja Aplikacije. Ako korisnik ima dodatne potrebe, molimo posjetite akreditiranu bolnicu za detaljno ispitivanje.

+ +

9. Izjava o intelektualnom vlasništvu

+

9.1 Saitong je nositelj prava intelektualnog vlasništva ovog softvera. Sva autorska prava, zaštitni znakovi, patenti, poslovne tajne i druga prava intelektualnog vlasništva softvera, kao i sav informativni sadržaj povezan sa softverom (uključujući, ali ne ograničavajući se na, tekst, slike, audio, video, grafiku, dizajn sučelja, okvir rasporeda, relevantne podatke ili elektroničke dokumente itd.) zaštićeni su lokalnim zakonima i propisima te odgovarajućim međunarodnim ugovorima.

+

9.2 Bez pisane suglasnosti Tvrtke, Korisnik ne smije provoditi, koristiti ili prenositi gore navedena prava intelektualnog vlasništva u bilo koju komercijalnu ili nekomercijalnu svrhu i ne smije to dopustiti bilo kojoj trećoj strani, a Tvrtka zadržava pravo pravnog gonjenja za gore navedene radnje.

+ +

10. Izmjena protokola

+

10.1 Saitong ima pravo izmijeniti odredbe ovog Ugovora kada je to potrebno. Nakon što se odredbe Ugovora promijene, revidirane odredbe Ugovora bit će objavljene na odgovarajućoj stranici. Ako se ne slažete s izmijenjenim sadržajem, korisnik bi trebao preuzeti inicijativu za otkazivanje ove usluge. Ako Korisnik nastavi koristiti Usluge, smatra se da prihvaća promjene u odredbama Ugovora.

+

10.2 Saitong zadržava pravo izmjene ili promjene plaćenih usluga, standarda naplate, metoda naplate, naknada za usluge i uvjeta usluge koji se pružaju prema potrebi. Pri pružanju usluga možemo naplaćivati određene naknade korisnicima nekih usluga sada ili u budućnosti. Ako korisnici odbiju platiti takve naknade, ne mogu nastaviti koristiti relevantne usluge nakon početka naplate.

+
+ + diff --git a/doc/hu/privacy_policy.html b/doc/hu/privacy_policy.html new file mode 100644 index 000000000..9c17a9fcd --- /dev/null +++ b/doc/hu/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Adatvédelmi irányelvek + + + + +
+

Voitrans Adatvédelmi irányelvek

+

Utolsó frissítés: 2025. május 27.

+

Hatálybalépés dátuma: 2025. május 27.

+ +

Üdvözöljük a Voitrans szoftver és szolgáltatások használatában

+

1. A Voitrans-t a Saitong Industries Inc. (a továbbiakban "a Társaság") biztosítja. Segíthet a felhasználóknak a Bluetooth-eszközök és egyéb termékek kezelésében. Megértjük a személyes adatok fontosságát felhasználóink (a továbbiakban "Ön") számára, és hogy személyes adatainak hatékony védelme vállalkozásunk egészséges és fenntartható fejlődésének alapja. Köszönjük a Voitrans termékek vagy szolgáltatások használatát és bizalmát! Teljes mértékben tisztában vagyunk azzal, hogy ez a bizalom nem jön könnyen, ragaszkodunk a nyitottság és átláthatóság elvéhez, hogy kifejezzük Önnek a személyes adatainak kezelésére vonatkozó szabályainkat, jogszerű és törvényes módokat és világos és ésszerű célokat alkalmazunk személyes adatainak kezeléséhez. Különleges figyelmeztetés: Kérjük, feltétlenül olvassa el és értse meg figyelmesen ezt az Adatvédelmi irányelvet termékeink vagy szolgáltatásaink használata előtt, hogy megfelelő döntéseket hozhasson.

+

2. Ez az Adatvédelmi irányelv elmagyarázza Önnek, hogyan gyűjtjük, használjuk, tároljuk és osztjuk meg személyes adatait, amikor a Voitrans-t használja. A személyes adatok minden olyan elektronikusan vagy más módon rögzített információt jelentenek, amely önmagában vagy más információkkal kombinálva azonosíthat egy adott természetes személyt, vagy tükrözheti egy adott természetes személy tevékenységeit. A Voitrans tiszteletben tartja és védi a szolgáltatás összes felhasználójának személyes magánéletét. Eltekintve a jelen Adatvédelmi irányelvben meghatározottaktól, a Voitrans nem hozza nyilvánosságra ezeket az információkat, és nem bocsátja harmadik felek rendelkezésére az Ön előzetes engedélye nélkül.

+

3. Amikor harmadik fél termékét vagy szolgáltatását használja egy App Marketplace terméken vagy szolgáltatáson keresztül, személyes adataira a harmadik fél adatvédelmi irányelvei vonatkoznak.

+

4. A Voitrans jelen Adatvédelmi irányelvei időről időre frissülnek. A Voitrans szolgáltatáshasználati megállapodás elfogadásával és a Voitrans használatának megkezdésével Ön elfogadottnak tekinti a jelen Adatvédelmi irányelv egészét. Ha nem ért egyet ezzel az Adatvédelmi irányelvvel, kérjük, ne használja a Voitrans szoftvert és szolgáltatásokat.

+

5. Az érintett szolgáltatások hatékonyságának elemzése és mérése érdekében a jelen Adatvédelmi irányelv rendelkezéseinek megfelelően fogjuk felhasználni és nyilvánosságra hozni az Ön személyes adatait.

+ +

Ez az Adatvédelmi irányelv segít megérteni a következőket:

+
    +
  • 1 Az általunk gyűjtött információk
  • +
  • 2 Információk tárolása
  • +
  • 3 Információbiztonság
  • +
  • 4 Hogyan használjuk a gyűjtött információkat
  • +
  • 5 Információmegosztás
  • +
  • 6 Hogyan kezeli személyes adatait
  • +
  • 7 Alkalmazásengedélyek leírása
  • +
  • 8 Harmadik féltől származó SDK-k hozzáférése
  • +
  • 9 Kiskorúak védelme
  • +
  • 10 Hatályos és frissített Adatvédelmi irányelv
  • +
  • 11 Hogyan léphet velünk kapcsolatba
  • +
+ +

1. Az általunk gyűjtött információk

+

1. A Voitrans használatának kezdetén elkezdjük gyűjteni az alkalmazás használatára vonatkozó adatokat

+

2. A Voitrans harmadik felektől vagy üzleti partnerektől jogszerű eszközökkel személyes adatokat szerezhet Önről

+

3. Annak érdekében, hogy jobb termékeket és szolgáltatásokat nyújtsunk Önnek, hálózati biztonságot biztosítsunk a használat során, fenntartsuk a termékek normális működését, valamint optimalizáljuk és javítsuk információs szolgáltatásaink célját, miután Ön aktívan rákattintott az adatvédelmi irányelv elfogadására, használja az általunk nyújtott információkat. A szolgáltatás során az alkalmazás alapvető funkcióinak normális működéséhez a nemzeti törvényeknek és rendeleteknek megfelelően szükséges személyes adatokon túl további személyes adatokat gyűjtünk Öntől:

+

3.1 A kockázatos felhasználók azonosítása, a felhasználók hitelességének megítélése és a csalás átfogó megelőzése érdekében minden alkalommal, amikor megnyitja a szoftvert, beolvassuk az eszközinformációit, beleértve: (Eszközmodell, eszköz MAC-címe, eszköz egyedi azonosítója (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, stb.) MEID, sorozatszám, WIFI SSID és BSSID), Bluetooth-cím olvasása, operációs rendszer verziója, operációs rendszer neve, felhasználói bejelentkezési fiók és jelszó információk;

+

3.2 Amikor termékeinket és szolgáltatásainkat használja, bizonyos információkat gyűjthetünk hálózati napló információkon vagy bizonyos programokon és szoftvereken keresztül, az ilyen információk magukban foglalhatják: a termékek és szolgáltatások használatának részleteit, például az alkalmazás megnyitási idejét, a használat időtartamát és a meglátogatott oldal címét; Eszközesemény-információk, például összeomlások, rendszertevékenység stb., az eszköz optimalizálása és szolgáltatásaink javítása érdekében;

+

3.3 Azon alkalmazások azonosításához, ahol a berendezés veszélyben van, biztonságosabb funkcionális szolgáltatások nyújtásához. Ezért a folyamat során meg kell szereznünk az alkalmazás-/alkalmazástelepítési listáját a termék normális működésének biztosítása és az eszköz biztonságának védelme érdekében.

+

3.4 A felhasználók alkalmazásfunkció-használatának elemzéséhez és a felhasználók hitelességének megállapításához adatstatisztikát kell végeznünk, és a fent említett eszközinformációkat, beleértve az eszköz MAC-címét és az eszköz egyedi azonosítóját, gyűjtenünk kell, amikor az eszközét használják.

+

3.5 Eszközjel: az Ön által használt eszköz hálózati állapota, WIFI hozzáférési pont információk stb.

+

3.6 Helyadatok: GPS-t, WiFi-t vagy más technikai eszközöket használhatunk az Ön tartózkodási helyére vonatkozó információk gyűjtésére és feldolgozására helyi információk frissítéséhez, tartalomszolgáltatásokhoz stb.

+

További információkért kattintson a "Személyes adatok gyűjtési listája" elemre.

+ +

1. A fenti információkban szereplő érzékenyebb személyes adatok esetében, mint például a felhasználó eszközinformációi (IMEI-szám, hívási állapot és azonosítószám), GPS-helyadatok, fotómédia tartalom és fájl-hozzáférési jogok, gyűjtés előtt beszerezzük az Ön hozzájárulását. Egyes nem érzékeny információk esetében a gyűjtés alapértelmezett és automatikus lehet. Korlátozhatja az általunk gyűjtött releváns információkat vagy bizonyos engedélyek használatát mobileszközéről a mobileszköz Beállítások opciójának módosításával. Ha korlátozza a hozzáférésünket egy bizonyos engedélyhez, előfordulhat, hogy nem tudjuk tovább nyújtani Önnek a megfelelő szolgáltatásokat, és többé nem dolgozzuk fel a megfelelő információit.

+

2. Nem gyűjtjük az Ön személyazonosító igazolvány számát, személyes biometrikus adatait, bankszámlaszámát, vagyoni adatait, hitelinformációit, egészségügyi és fiziológiai adatait és egyéb személyes érzékeny adatait.

+

3. Az érzékeny engedélyekről: Az alkalmazásfunkciók megfelelő használatához a terméknek a következő engedélyeket kell megszereznie a normál termékekhez kapcsolódó funkcionális szolgáltatások nyújtásához.

+ +

1 Tárolási olvasási és írási engedélyek beszerzése

+

1 Hogyan szerezhető be: felugró üzenet, amikor az engedélyt megkapja, a felhasználó aktívan rákattint az elfogadásra, és az alkalmazás használni fogja ezt az engedélyt

+

2 Felhasználási cél és hatókör: A rendszer erőforrás-gyorsítótár fájljainak és miniatűrjeinek szkenneléséhez, zenei erőforrások és termékképek betöltéséhez használják. Az alkalmazás felületén jelenik meg, hogy a felhasználók könnyen megtekinthessék és kezelhessék

+ +

2 Az alkalmazástelepítési lista engedélyének beszerzése

+

1 Hogyan szerezhető be: felugró üzenet, amikor az engedélyt megkapja, a felhasználó aktívan rákattint az elfogadásra, és az alkalmazás használni fogja ezt az engedélyt

+

2 Felhasználási cél és hatókör: Amikor az alkalmazásnak hirdetési promóciós szolgáltatásokat kell használnia, a harmadik féltől származó hirdetési platform, a Youmon +SDK, az eszköz "alkalmazásszoftver telepítési lista engedélyét" kell megszereznie, hogy megakadályozza a felhasználó által már birtokolt alkalmazások ajánlását, és javítsa a felhasználói élményt.

+ +

3 Az eszköz állapotinformációinak megszerzéséhez szükséges engedély

+

Tartalmazza: (Eszközmodell, eszköz MAC-címe, eszköz egyedi azonosítója (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, stb.) MEID, sorozatszám, WIFI SSID és BSSID, Bluetooth-cím olvasása), operációs rendszer verziója, operációs rendszer neve stb.;

+

1 Hogyan szerezhető be: felugró üzenet, amikor az engedélyt megkapja, a felhasználó aktívan rákattint az elfogadásra, és az alkalmazás használni fogja ezt az engedélyt

+

2 Felhasználási cél és hatókör: Alkalmazásunk használatakor, a felhasználó alkalmazásfunkció-használatának elemzése és a felhasználó hitelességének megítélése érdekében szinkronizáljuk az engedélyt harmadik féltől származó SDK-kkal, beleértve az Autonavi SDK-t, Youmon +SDK-t stb.

+ +

4 Hozzáférés a helyadatokhoz

+

1 Hogyan szerezhető be: felugró üzenetek, amikor az engedélyt megkapja, a felhasználó csak akkor használja ezt az engedélyt, amikor aktívan rákattint az alkalmazásban az elfogadásra.

+

2 Felhasználási cél és hatókör: Amikor az alkalmazásnak GPS-t, WiFi-t vagy más funkciókat kell használnia, a terméknek gyűjtenie kell az Ön helyzetét és információit a közeli helyszíneken található Bluetooth-eszközök kereséséhez.

+

Megjegyzés: További alkalmazásengedélyekért lásd ezt a dokumentumot "Adatvédelmi irányelv" 7. szakasz "Alkalmazásengedélyek leírása"

+ +

2. Információk tárolása

+

1. Hol tárolják az információkat

+

A Kínai Népköztársaságban gyűjtött és előállított személyes adatokat szervereinkön és/vagy leányvállalataink szerverein tároljuk.

+

2. Információtárolás és -feldolgozás

+

Személyes adatait csak a cél eléréséhez szükséges ideig vagy a törvény és rendelet által előírt ideig tároljuk. Miután Ön abbahagyja a termék használatát, azonnal abbahagyjuk személyes adatainak és alkalmazásadatainak gyűjtését és feldolgozását. A fenti időszak túllépése után töröljük vagy anonimizáljuk az Ön által számunkra megadott személyes adatokat.

+

A szükséges funkciókon túl a Voitrans-nak meg kell igényelnie a megfelelő rendszerengedélyeket. A felhő szerveroldala nem tárolja a felhasználók személyes adatait, és a hozzáfért harmadik féltől származó SDK-t a szolgáltató anonimizálja és azonosíthatatlanná teszi (Amu Statistics SDK, Autonavi SDK), így a felhasználókat nem lehet nyomon követni. A felhasználó telefonján tárolt információk automatikusan törlődnek, amikor a felhasználó eltávolítja a Voitrans-t vagy törli a gyorsítótárat.

+ +

3. Információbiztonság

+

1. A Voitrans iparági szabványos biztonsági intézkedésekkel és technológiákkal tárolja és védi személyes adatait, mint például hitelesítés, adattitkosítás, korlátozott adatközpont-hozzáférés és egyéb biztonsági intézkedések annak biztosítására, hogy adatai védve legyenek a nyilvánosságra hozatal, megváltoztatás és megsemmisítés ellen. A fent említett biztonsági intézkedések ellenére kérjük, vegye figyelembe, hogy egyetlen biztonsági intézkedés sem lehet 100%-ban biztonságos.

+

2. Amikor a Voitrans által nyújtott szolgáltatásokat használja, kérjük, védje személyes adatait. Ha úgy találja, hogy személyes adatai veszélybe kerültek, kérjük, azonnal lépjen kapcsolatba velünk, hogy megtehessük a megfelelő intézkedéseket.

+ +

4. Hogyan használjuk a gyűjtött információkat

+

1. Az alkalmazás üzleti funkcióinak megvalósításakor felhasználhatjuk személyes adatait az Önnek nyújtott termékek és szolgáltatások integritásának és biztonságának biztosítására;

+

2. A gyűjtött információkon keresztül megértjük használati szokásait, és az adatelemzés segítségével azonosítjuk a szolgáltatások elfogadhatóságát, használati szokásait stb., hogy teszteljük és létrehozzunk új termékeket, funkciókat és szolgáltatásokat, javítsuk a szolgáltatási szintet, és segítsünk a meglévő szolgáltatások javításában és új szolgáltatások fejlesztésében;

+

3. Felhasználhatjuk személyes adatait a termékekre és szolgáltatásokra vonatkozó ügyfél-felmérésekhez, a termékekre és szolgáltatásokra vonatkozó értesítések küldéséhez és kereskedelmi promócióhoz;

+

4. Felhasználhatjuk adatait az alkalmazással kapcsolatos belső elemzéshez és kutatáshoz;

+ +

5. Információmegosztás

+

Jelenleg nem fogjuk aktívan megosztani vagy átadni személyes adatait a vállalaton kívüli harmadik feleknek. Ha személyes adatainak egyéb megosztása vagy átadása történik, közvetlenül vagy megerősítjük, hogy a harmadik fél megszerezte az Ön kifejezett hozzájárulását a fenti magatartáshoz.

+

Nem fogjuk nyilvánosan közzétenni az általunk gyűjtött személyes adatokat. Ha szükséges nyilvánosan közzétenni azokat, tájékoztatjuk Önt a nyilvános közzététel céljáról, a közzétett információk típusáról és az érintett érzékeny információkról, és megszerezzük kifejezett hozzájárulását.

+

Ahogy üzleti tevékenységünk tovább fejlődik, részt vehetünk összeolvadásokban, felvásárlásokban, eszközátruházásokban és egyéb tranzakciókban, és tájékoztatjuk Önt a vonatkozó körülményekről, a törvényeknek és rendeleteknek megfelelően, és nem alacsonyabb szinten, mint amit ez az Útmutató megkövetel, tovább védjük személyes adatait, vagy megköveteljük, hogy az új adatkezelő továbbra is védje személyes adatait.

+

Ezenkívül a vonatkozó törvények, rendeletek és nemzeti szabványok szerint a következő körülmények között megoszthatjuk, átadhatjuk és nyilvánosan közzétehetjük a személyes adatokat az érintett előzetes felhatalmazása és hozzájárulása nélkül:

+
    +
  • 1 Közvetlenül a nemzetbiztonsággal és honvédelemmel kapcsolatos;
  • +
  • 2 Közvetlenül a közbiztonsághoz, közegészségügyhöz vagy jelentős közérdekhez kapcsolódó;
  • +
  • 3 Közvetlenül a bűnügyi nyomozáshoz, vádemeléshez, tárgyaláshoz és ítéletek végrehajtásához kapcsolódó;
  • +
  • 4 Az érintett vagy más személyek életének, vagyonának és egyéb jelentős jogos jogainak és érdekeinek védelme érdekében, de a személy hozzájárulásának megszerzése nehéz;
  • +
  • 5 Az érintett által nyilvánosságra hozott személyes adatok;
  • +
  • 6 Személyes adatok gyűjtése jogszerűen nyilvánosságra hozott információkból, például jogos híradásokból, kormányzati információk közzétételéből és egyéb csatornákból.
  • +
+ +

6. Hogyan kezeli személyes adatait

+

Kína vonatkozó törvényeinek, rendeleteinek és szabványainak, valamint más országok és régiók általános gyakorlatának megfelelően garantáljuk, hogy Ön gyakorolja a személyes adataival kapcsolatos alábbi jogokat:

+ +

1. Személyes adatainak javítása

+

Ha úgy találja, hogy az általunk feldolgozott személyes adataiban hiba van, jogában áll a hibás vagy hiányos információkat kijavítani vagy frissíteni. Ha nem tud önállóan működni a fiókközpontban, küldhet e-mailt a saitong.voitrans@gmail.com címre Lépjen kapcsolatba velünk

+ +

2. Személyes adatainak törlése

+

A következő esetekben kérheti tőlünk személyes adatainak törlését:

+
    +
  • Ha a törvényekkel és rendeletekkel ellentétesen dolgozzuk fel a személyes adatokat;
  • +
  • Ha az Ön hozzájárulása nélkül gyűjtjük és használjuk személyes adatait;
  • +
  • Ha személyes adatok feldolgozásunk sérti az Önnel kötött megállapodásunkat;
  • +
  • Ha már nem használja termékeinket vagy szolgáltatásainkat;
  • +
  • Ha már nem nyújtunk Önnek termékeket vagy szolgáltatásokat.
  • +
+

Lépjen kapcsolatba velünk. Kérelmét a saitong.voitrans@gmail.com címen feldolgozzuk. Lépjen kapcsolatba velünk. A kézhezvételt követő 30 munkanapon belül küldjük el Önnek

+ +

3. Hozzájárulása hatókörének módosítása

+

E-mailben léphet kapcsolatba velünk a saitong.voitrans@gmail.com címen Lépjen kapcsolatba velünk. Kérésére többé nem gyűjtjük, használjuk vagy tesszük közzé személyes adatait. Kérjük, vegye figyelembe, hogy hozzájárulásának visszavonása vagy személyes adatainak törlése hatással lehet egyes szolgáltatásaink használatára.

+ +

4 Személyes adatokhoz való hozzáférés és másolás

+

A vonatkozó törvények rendelkezéseinek megfelelően megadhatja imei-jét (telefon sorozatszámát) vagy oaid-ját Vagy Android ID-ját A fiókadatok és egyéb információk után igényelheti tőlünk a személyes adataihoz való hozzáférést és azok másolását, e-mailt küldhet a 3514406195@qq.com címre Lépjen kapcsolatba velünk.

+ +

5. A fenti kérésére válaszolva

+

Biztonsági okokból szükség lehet írásbeli kérelem benyújtására vagy személyazonosságának más módon történő igazolására. Kérhetjük személyazonosságának igazolását kérelmének feldolgozása előtt. Ésszerű kérelmére időben válaszolunk és kezeljük azt. Elutasíthatjuk azokat a kérelmeket, amelyek szükségtelenül ismétlődőek, túl sok technológiát igényelnek (például új rendszerek fejlesztését vagy a meglévő gyakorlatok alapvető módosítását), veszélyt jelentenek mások jogos érdekeire, vagy rendkívül nem praktikusak.

+

A következő körülmények között a törvények és rendeletek követelményei szerint nem tudunk válaszolni kérelmére:

+
    +
  • Nemzetbiztonsággal és honvédelemmel kapcsolatos;
  • +
  • Bűnügyi nyomozással, vádemeléseel és tárgyalással kapcsolatos;
  • +
  • Elegendő bizonyíték van arra, hogy Ön szubjektív rosszindulatot vagy jogokkal való visszaélést tanúsít;
  • +
  • Kérelmének teljesítése súlyos kárt okoz az Ön vagy más személyek és szervezetek jogos jogainak és érdekeinek.
  • +
+ +

6. Fiók törlése

+

A felhasználó végrehajthatja a [fiók törlése] műveletet az alkalmazásban. Műveleti lépések:

+
    +
  1. Lépjen a [Sajátom] oldalra
  2. +
  3. Kattintson a jobb felső sarokban lévő [Beállítások] gombra
  4. +
  5. Kattintson a [Fiók törlése] gombra a megerősítéshez
  6. +
+

Kijelentkezés után a felhasználói fiók adatai törlődnek

+ +

7. Alkalmazásengedélyek leírása

+

Jobb termékek és szolgáltatások biztosítása érdekében, a szoftver használatakor a következő engedélyeket fogjuk kérni. Amikor belép a kezdőlapra vagy használja a funkciót, engedélyezést kérünk. Ha megtagadja, egyes megfelelő funkciók nem lesznek normálisan használhatók. Az engedélyek konkrét céljai és emlékeztetői az alábbiakban részletesen szerepelnek:

+ +

1 Helymeghatározási engedélyek:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFi-n vagy mobil bázisállomáson keresztül a felhasználó szélességi és hosszúsági fokos helymeghatározó adatainak megszerzéséhez

+

Amikor Voitrans-t használ, a földrajzi helyzete alapján keresünk csatlakoztatott Bluetooth-eszközt. Ugyanakkor, stabilabb szolgáltatások biztosítása, a termékek optimalizálása és az élmény javítása érdekében a fenti információkat megosztjuk három SDK-val, mint például a Youmon és az Autonavi, a Voitrans működési adatainak és funkcionális szolgáltatásainak megszerzéséhez.

+

Emlékeztető mód: Az alkalmazás első indításakor megjelenik az engedélyt jelző üzenet, amely megköveteli a felhasználó megerősítő elfogadását. Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Ez az engedély szükséges, amikor hozzáfér egy alkalmazáshoz az alkalmazáskezelési funkciók végrehajtásához.

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

3 Hálózati engedélyek:

+

android.permission.INTERNET

+

A Voitrans információs szolgáltatásainak és verziófrissítési szolgáltatásainak használatakor ezek az engedélyek szükségesek, és a felhasználói élmény javítása és a szolgáltatási képességek optimalizálása érdekében harmadik féltől származó SDK-k, mint a Friends, szintén használni fogják ezeket az engedélyeket.

+

Emlékeztető mód: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

4 Hálózati állapot engedélyek megszerzése:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Annak megállapítására szolgál, hogy az aktuális hálózati kapcsolat érvényes-e, hogy az aktuális 4G-környezet aktív-e, és hogy emlékeztessen-e a hálózati környezet változásaira, ezáltal befolyásolva az információs tartalom betöltését. Ez az engedély a Voitrans használatakor kerül igénylésre.

+

A hálózati állapot változásai befolyásolják az adatok feltöltését és betöltését. Ezért a hálózati állapot engedélyéhez való hozzáférés megosztásra kerül a friends + és egyéb platformokkal.

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

5 Feladatlista engedélyek megszerzése:

+

android.permission.GET_TASKS

+

Ez az engedély az alkalmazáslista megszerzésére szolgál a szoftverkezelési funkcióhoz. A szoftverkezelési funkció használatakor szükséges a mobiltelefonra telepített alkalmazások olvasása.

+

Emlékeztető mód: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

6 MAC-cím engedély megszerzése

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

A Voitrans használatakor az alkalmazásnak MAC-cím engedélyeket kell szereznie:

+

Amikor egy alkalmazásnak célkonverziós adatokat kell jelentenie, harmadik féltől származó platformoknak, mint a Youmon +SDK, MAC-t kell használniuk.

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

7 Hangfelvételi engedély megszerzése

+

android.permission.RECORD_AUDIO

+

A Voitrans hangbeviteli funkciójának használatakor szükség van a hangfelvételi engedélyre, és főként a hangbevitelt használja fordításhoz és egyéb kapcsolódó funkciókhoz.

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása, a felhasználónak szükség esetén dinamikusan felugró ablak jelenik meg.

+ +

8 WIFI SSID-engedély megszerzése

+

Amikor ez az engedély használatban van, az alkalmazás olvassa a WIFI SSID-engedélyt:

+

Felhasználási hatókör és cél: Amikor az alkalmazásnak adatelemzési szolgáltatásokat kell használnia, harmadik féltől származó platformoknak, mint a +SDK, szükségük van az eszköz "WIFI SSID-engedélyének" olvasására, hogy pontosabb és hatékonyabb funkcionális szolgáltatásokat nyújtsanak a felhasználóknak.

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

9 Bluetooth-hozzáférés megszerzése

+

Amikor ez az engedély használatban van, az alkalmazás olvassa a Bluetooth-engedélyt:

+

Felhasználási hatókör és cél: Bluetooth-eszközök kiegészítők, mint Bluetooth-fejhallgatók, Bluetooth-órák stb. keresésére és konfigurálására. A felhasználók számára könnyű kezelés

+

Emlékeztető módszer: Az alkalmazás első indításakor megjelenik az engedélyt jelző üzenet, amely megköveteli a felhasználó megerősítő elfogadását. Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

10 WiFi BSSID-engedélyének megszerzése

+

Amikor az alkalmazásnak meg kell különböztetnie és azonosítania kell a felhasználót funkcionális szolgáltatások és adatstatisztikák nyújtásához, olvassa az eszköz "WiFi BSSID" engedélyét a következő célból:

+

Felhasználási hatókör és cél: 1 Harmadik féltől származó platformok: mint Youmeng SDK, Bugly SDK, Autonavi SDK

+

Emlékeztető módszer: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

11 Az alkalmazástelepítési engedély megszerzése

+

android.permission.REQUEST_INSTALL_PACKAGES

+

A szoftver az alkalmazástelepítési engedélyt fogja használni, amelyet főként arra használnak, hogy a felhasználók új verziót telepíthessenek és új funkciókat próbálhassanak ki, amikor új verzió érhető el.

+

Emlékeztető mód: Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

12 Kameraengedélyek megszerzése

+

android.permission.CAMERA

+

A Voitrans kameraengedélyeket használ QR-kódok szkenneléséhez és Bluetooth-eszközök, mint Bluetooth-fejhallgatók és -órák párosításához.

+

Emlékeztető módszer: Az alkalmazás első indításakor megjelenik az engedélyt jelző üzenet, amely megköveteli a felhasználó megerősítő elfogadását. Felhasználói megállapodás és Adatvédelmi irányelv leírása.

+ +

Különleges megjegyzés:

+

1 Alkalmazás-integráció az Allies SDK-jukon belül, Scott map SDK a felhasználó használat engedélyezésére vonatkozó beleegyezése után, alkalmazás a háttérben/előtérben ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI és egyéb személyes adatok tekintetében;

+

Megjegyzések: Továbbiak Lásd a következő SDK-val kapcsolatos tartalmat és engedélyeket [VIII. Harmadik féltől származó SDK-k listájához való hozzáférés]

+ +

8. Harmadik féltől származó SDK-k hozzáférése

+

1 Az ügyfélprogramunk stabil működésének és funkcióinak megvalósítása érdekében, hogy több szolgáltatást és funkciót használhasson és élvezhessen, alkalmazásunk harmadik felek szoftverfejlesztő készleteit (SDK) vagy más hasonló alkalmazásokat fog tartalmazni, ezek a harmadik felek saját adatvédelmi irányelveiknek megfelelően gyűjtik és dolgozzák fel a vonatkozó információkat, hogy normálisan biztosítsák a funkciókat és hirdetési szolgáltatásokat. A harmadik fél információgyűjtési és -feldolgozási szabályairól a következő részben tájékozódhat. Szigorú biztonsági teszteket végzünk a partnerek fejlesztőkészletein (SDK-k) az információk megszerzéséhez, hogy megvédjük személyes adatainak ésszerű felhasználását és biztonságát. Kérjük, vegye figyelembe, hogy harmadik féltől származó SDK-k a verziófrissítéseik miatt módosíthatják az adatfeldolgozási típusokat. Kérjük, olvassa el a harmadik féltől származó SDK-k által közzétett adatvédelmi irányelveket. A részleteket lásd alább, vagy kattintson a harmadik féltől származó SDK-lista megtekintéséhez.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Megszerzett információk: Eszközszám, IP-cím, eszköz szoftverinformációk, eszközazonosító kód (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kártya IMSI-információk, IP, MAC-cím), eszközazonosító, régió, eszközhöz kapcsolódó alkalmazásinformációk és egyéb szolgáltatással kapcsolatos naplóinformációk

+

Felhasználási cél: WeChat bejelentkezés és megosztás

+

Fejlesztő: Shenzhen Tencent Computer Systems Company Limited

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Megszerzett információk: Alkalmazás neve, alkalmazás verziója, eszköz márka és modell, operációs rendszer, szolgáltató információk, képernyőfelbontás, szenzor információk (vektor, gyorsulás, nyomás, irány, geomágneses, giroszkóp, hőmérséklet, fényérzékelő, NMEA-jel), eszközjel erősségére vonatkozó információk

+

Felhasználási cél: Navigáció az Amap segítségével

+

Fejlesztő: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Megszerzett információk: Alkalmazás neve, alkalmazás verziója, eszköz márka és modell, operációs rendszer, hálózati információk, eszközjel erőssége stb.

+

Felhasználási cél: Térképmegjelenítés és interakció

+

Fejlesztő: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Megszerzett információk: Helyadatok (GPS, Wi-Fi, bázisállomás), eszközinformációk, hálózati információk stb.

+

Felhasználási cél: Helymeghatározási szolgáltatások nyújtása

+

Fejlesztő: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Megszerzett információk: Alkalmazás neve, alkalmazás verziója, eszközinformációk, hálózati információk stb.

+

Felhasználási cél: Térképeszközök és renderelési optimalizálás

+

Fejlesztő: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Megszerzett információk: Eszközazonosítók, alapvető eszközinformációk, telepített szoftverek listája és hálózati információk (részletekért lásd a hivatalos adatvédelmi irányelvet)

+

Felhasználási cél: Alipay fiók bejelentkezés és fizetés indítása

+

Fejlesztő: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Megszerzett információk: SDK/API verzió, platform, időbélyeg, alkalmazásazonosító, alkalmazás verzió, eszközgyártó, OS verzió, területi beállítás, időzóna, hálózati állapot (Wi-Fi stb.), hálózati naplók, összeomlási és használati adatok, IP-cím stb. (részletekért lásd a hivatalos adatvédelmi irányelvet)

+

Felhasználási cél: Alkalmazásminőség-felügyelet és adatjelentési szolgáltatás

+

Fejlesztő: Shenzhen Tencent Computer Systems Company Limited

+

Gyűjtési módszer: SDK saját gyűjtése

+

Adatvédelmi irányelv linkje: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Kiskorúak védelme

+

Termékeink és szolgáltatásaink felhasználói közé tartozhatnak 18 éven aluli kiskorúak. A kiskorú felhasználóknak termékeink használata előtt ki kell kérniük szüleik vagy gondviselőik tanácsát ezzel az Adatvédelmi irányelvvel kapcsolatban, és szüleik vagy gondviselőik hozzájárulásának megszerzése után és iránymutatásuk mellett kell használniuk szolgáltatásainkat vagy megadniuk adataikat számunkra. A kiskorúak gondviselői, akiknek kérdéseik vannak, az Adatvédelmi irányelvben megadott elérhetőségeken léphetnek kapcsolatba velünk.

+

Ha nem ért egyet a fent említett információk fent említett harmadik féltől származó szolgáltatók általi gyűjtésével, kérjük, azonnal hagyja abba a Szoftver használatát. A Szoftver használata során ezek a harmadik felek saját adatvédelmi irányelveiknek megfelelően gyűjtik és dolgozzák fel a vonatkozó információkat egyes funkciók, hirdetések és egyéb szolgáltatások biztosítása érdekében. Ha az információk kiszivárognak az érintett harmadik féltől származó szolgáltató fent említett információgyűjtése miatt, az érintett harmadik féltől származó szolgáltató viseli a megfelelő jogi felelősséget.

+ +

10. Hatályos és frissített Adatvédelmi irányelv

+

1. Ez az Adatvédelmi irányelv a közzététel napjától hatályos.

+

2. Ahogy üzleti tevékenységünk fejlődik és változik, Adatvédelmi irányelvünk változhat. Fenntartjuk a jogot, hogy bármikor módosítsuk adatvédelmi irányelvünket, ezért kérjük, ellenőrizze gyakran. Ha módosítjuk Adatvédelmi irányelvünket, közzétesszük ezeket a frissítéseket weboldalunkon, alkalmazásainkban és ott, ahol megfelelőnek tartjuk, hogy tájékoztassuk Önt. Ha az adatvédelmi irányelv frissül, a frissítés napjától lép hatályba. Termékeink vagy szolgáltatásaink további használata azt jelenti, hogy Ön egyetért módosított Adatvédelmi irányelvünkkel.

+ +

11. Hogyan léphet velünk kapcsolatba

+

A Saitong Industries Inc 2024. november 22-én alakult, bejegyzett címe: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ha többet szeretne tudni vállalatunkról és platformunkról, az ebben az irányelvben megadott elérhetőségeken (saitong.voitrans@gmail.com) léphet kapcsolatba velünk.

+
+ + + diff --git a/doc/hu/user_agreement.html b/doc/hu/user_agreement.html new file mode 100644 index 000000000..906f299ef --- /dev/null +++ b/doc/hu/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans alkalmazás felhasználói megállapodás + + + +
+
Magyar
+ +

Voitrans alkalmazás felhasználói megállapodás

+ +

Jelen Felhasználási Feltételek leírják, hogyan férhet hozzá és használhatja a Voitrans alkalmazást és online szolgáltatásokat (a "Szolgáltatások"). A Saitong Industries Inc. (a továbbiakban "Saitong") ezúton emlékezteti a felhasználókat, hogy figyelmesen olvassák el és teljes mértékben értsék meg ezt a Felhasználói Megállapodást (a továbbiakban "Megállapodás"). A felhasználóknak figyelmesen el kell olvasniuk és teljes mértékben meg kell érteniük a jelen Megállapodás feltételeit. Kérjük, figyelmesen olvassa el, és válassza ki, hogy elfogadja-e vagy sem ezt a Megállapodást. A Voitrans APP (a továbbiakban az "Alkalmazás" vagy a "Szoftver") használata a jelen Megállapodás elfogadásának minősül, és Ön elfogadja, hogy a jelen Megállapodás feltételei kötelezőek rá nézve. Ha nem ért egyet ezzel a Megállapodással, ne használja az Alkalmazást.

+

A Saitong fenntartja a jogot a jelen Megállapodás módosítására, és a Megállapodás frissített feltételei ebben az alkalmazásban kerülnek közzétételre, a közzététel napjától hatályosan.

+ +

1. Általános szabályok

+

1.1 Ez az alkalmazás a Saitong által biztosított szoftver a Saitong és partnercégei által kiadott fejhallgató termékek csatlakoztatásához. A szoftver és a kapcsolódó szolgáltatások tulajdonjoga és működtetési jogai teljes mértékben a Saitong tulajdonát képezik.

+

1.2 Ez a Megállapodás az Ön (a továbbiakban "Felhasználó") és a vállalat, valamint partnerei és működési partnerei (a továbbiakban "Partnerek") közötti megállapodás a felhasználó Alkalmazás és kapcsolódó szolgáltatások használatával kapcsolatban.

+

1.3 A Szoftver és szolgáltatások magukban foglalják:

+

1.3.1 A biztosított szoftver a Voitrans felhasználók számára Voitrans csatlakoztatást és párosítást, funkcióbeállítás-kezelést és egyéb szoftverszolgáltatásokat nyújt az Alkalmazás által ténylegesen nyújtott szoftverszolgáltatásoknak megfelelően.

+

1.3.2 A szoftver frissítései, fejlesztései és egyéb szolgáltatásai.

+ +

2. Szoftverlicenc hatóköre

+

2.1 Személyes, nem átruházható, nem al-licencelhető és nem kizárólagos licencet biztosítunk a Felhasználónak a Szoftverhez.

+

2.2 A felhasználók egyetlen mobil végberendezésen telepíthetik, használhatják, megjeleníthetik és futtathatják a szoftvert nem kereskedelmi célokra. A felhasználó azonban nem telepítheti, használhatja vagy futtathatja a szoftvert kereskedelmi működési célokra, nem másolhatja, változtathatja, módosíthatja, csatlakoztathatja vagy futtathatja a szoftvert vagy a szoftver működése során bármely végberendezés memóriájába kiadott adatokat, vagy a kliens és a szerver közötti interakciós adatokat a szoftver működése során, és nem hozhat létre származékos műveket. Ez magában foglalja, de nem korlátozódik a beépülő modulok vagy jogosulatlan harmadik féltől származó eszközök/szolgáltatások használatára a Szoftver és kapcsolódó rendszerek eléréséhez. Kereskedelmi értékesítés, sokszorosítás és terjesztés esetén, mint például szoftver előtelepítés és csomagolás, írásbeli engedélyt kell beszerezni a Saitongtól.

+

2.3 A Felhasználó nem telepítheti a Szoftvert más végberendezésekre a Saitong kifejezett engedélye nélkül, beleértve, de nem kizárólagosan a televíziókat, digitális beltéri egységeket, játékkonzolokat és egyéb eszközöket.

+

2.4 A jelen Megállapodás által kifejezetten engedélyezetteken kívül a Felhasználónak nem biztosítanak más jogokat, és a Felhasználónak írásbeli hozzájárulást kell szereznie más jogok használatához.

+ +

3. Szoftverfrissítés

+

3.1 A felhasználónak a telepített végberendezés konfigurációjához megfelelő szoftververziót kell választania. Ellenkező esetben az eszköztípushoz nem megfelelő szoftververzió által okozott szoftverproblémák, eszközproblémák vagy károk kizárólag a felhasználó felelőssége.

+

3.2 A felhasználói élmény javítása és a szolgáltatási tartalom fejlesztése érdekében a Saitong jogosult időről időre a szoftver csere-, módosítás- és frissítésverzióit biztosítani. A "Frissítési emlékeztető" funkció alapértelmezés szerint engedélyezve van a felhasználók számára. A felhasználók által használt különböző szoftververzióktól függően a Saitong lehetőséget biztosít a felhasználóknak e funkció aktiválására. A szoftver új verziójának kiadása után a Saitong nem garantálja a régi szoftververzió további elérhetőségét.

+ +

4. Használati előírások

+

4.1 A Felhasználók a jelen Megállapodásnak megfelelően használhatják a Szoftvert és a Szolgáltatásokat a jogszabályok és a jelen Megállapodás betartásának előfeltétele mellett, és a felhasználók nem végezhetik a következő cselekményeket:

+

4.1.1 Törölni a Szoftver és egyéb másolatok összes szerzői jogi információját, és módosítani, törölni vagy megkerülni a Szoftver által a szellemi tulajdonjogok védelme érdekében beállított technikai intézkedéseket.

+

4.1.2 A Szoftver visszafejtése, például szétszerelés, dekompilálás vagy egyéb kísérletek a Szoftver forráskódjának megszerzésére.

+

4.1.3 A szoftver működésében lévő utasítások és adatok módosítása vagy hamisítása, a szoftver funkciójának vagy működési hatásának hozzáadása, törlése vagy megváltoztatása, vagy szoftver vagy módszerek felhasználása a fent említett célokra a nyilvánosság felé történő működtetés vagy terjesztés érdekében, függetlenül attól, hogy ezek a cselekmények kereskedelmi célokat szolgálnak-e.

+

4.1.4 A szoftver használata bármely hálózatbiztonságot veszélyeztető magatartásra, beleértve, de nem kizárólagosan: jogosulatlan adatok használata vagy jogosulatlan szerverekhez/fiókokhoz való hozzáférés; nyilvános hálózatokhoz vagy más operációs rendszerekhez való engedély nélküli hozzáférés és tárolt információk törlése, módosítása vagy hozzáadása; jogosulatlan kísérletek a szoftver rendszerének vagy hálózatának gyengeségeit vizsgálni, szkenneléni vagy tesztelni, vagy egyéb hálózati biztonságot aláásó cselekmények; a szoftverrendszer vagy a webhely normál működésének megzavarására vagy megsemmisítésére irányuló kísérletek, rosszindulatú programok vagy vírusok szándékos terjesztése és egyéb, a normál hálózati információs szolgáltatásokat megzavaró cselekmények; TCP/IP csomagnevek vagy részleges nevek hamisítása.

+

4.1.6 A Vállalat írásbeli hozzájárulása nélkül a felhasználó önkényesen végrehajtja a következő cselekményeket a szoftverrel és az abban lévő információkkal, beleértve, de nem kizárólagosan: használat, bérbeadás, kölcsönadás, másolás, módosítás, linkek létrehozása, utánnyomás, fordítás, közzététel, kiadás, tükörhelyek létrehozása, származékos termékek, művek, szolgáltatások, beépülő modulok, kompatibilitás, összekapcsolás stb. fejlesztése a Szoftver segítségével.

+

4.1.7 A Szoftver használata helyi jogszabályokat sértő tartalom közzétételére, továbbítására, terjesztésére és tárolására.

+

4.1.8 A szoftver használata mások szellemi tulajdonjogait, üzleti titkait és egyéb törvényes jogait sértő tartalom közzétételére, továbbítására, terjesztésére és tárolására.

+

4.1.9 E szoftver használata rekláminformációk és kéretlen információk tömeges közzétételére, továbbítására és terjesztésére.

+

4.1.10 A Szoftver és egyéb Szolgáltatások bármilyen jogellenes módon, bármilyen jogellenes célra vagy a jelen Megállapodás engedélyezett használatával összeegyeztethetetlen módon történő használata.

+

4.2 Információközlési előírások

+

4.2.1 Ha a szoftvert információs tartalom közzétételére használja (ha van ilyen), garantálnia kell, hogy Ön rendelkezik az Ön által feltöltött információs tartalom szellemi tulajdonjogaival, vagy jogszerű engedélyt szerzett, és a szoftver és szolgáltatások használata során tanúsított magatartása nem sérti harmadik felek törvényes jogait és érdekeit.

+

4.2.2 A Szoftver használata során a felhasználó nem használhatja a Szoftvert a következő tevékenységekre, beleértve, de nem kizárólagosan:

+

4.2.2.1 Helyi nemzeti törvényeket és rendeleteket sértő tartalom létrehozása, másolása, közzététele, terjesztése és tárolása.

+

4.2.2.2 Mások jogos jogait, mint például a jó hírnevet, a személyiségi képmást, a szellemi tulajdonjogokat és az üzleti titkokat sértő tartalom közzététele, továbbítása, terjesztése és tárolása.

+

4.2.2.3 Tények kitalálása, az igazság eltitkolása mások megtévesztése vagy becsapása céljából.

+

4.2.2.4 Rekláminformációk és kéretlen információk közzététele, továbbítása és terjesztése.

+

4.2.2.5 Helyi törvényeket és rendeleteket sértő egyéb cselekmények végrehajtása.

+

4.2.3 A Vállalat engedélye nélkül nem végezhet semmilyen kereskedelmi tevékenységet, például reklámozást és áruértékesítést a Szoftverben.

+

4.3 A Felhasználó megérti és elfogadja, hogy:

+

4.3.1 A Saitong megállapítja, hogy a felhasználó gyaníthatóan megsértette-e a fenti használati előírásokat, és az értékelés eredményei alapján felfüggeszti vagy megszünteti az Ön használati licencét, vagy más, a jelen megállapodás szerint megtehető korlátozó intézkedéseket alkalmaz.

+

4.3.2 A felhasználó által a licencelt szoftver használatával közzétett, jogellenesnek vagy mások törvényes jogainak megsértésével gyanúsított, vagy a jelen Megállapodást sértő információk közvetlenül törlésre kerülnek.

+

4.3.3 Ha a felhasználó fenti használati szabályok megsértése harmadik feleknek kárt okoz, Önnek önállóan, saját nevében kell viselnie a jogi felelősséget, és biztosítania kell, hogy a Saitong mentesüljön a veszteségektől vagy megnövekedett költségektől.

+

4.3.4 Ha a felhasználó megsérti a vonatkozó jogszabályi rendelkezéseket vagy megállapodásokat, ami a Saitong számára veszteséget okoz, vagy harmadik felek követeléseinek van kitéve, vagy közigazgatási hatóság szankcionálja, a felhasználó köteles megtéríteni a Saitong számára okozott veszteségeket és/vagy kiadásokat, beleértve az ésszerű ügyvédi díjakat, nyomozási és bizonyíték-gyűjtési költségeket.

+ +

5. Harmadik féltől származó szolgáltatások leírása

+

5.1 A Felhasználó megérti és elfogadja, hogy a szoftverrendszer tartalmazhat a Vállalat leányvállalatai vagy harmadik felek által nyújtott szolgáltatásokat, és hogy a Vállalat csak a releváns funkcionális modulokat biztosítja a rendszerben a felhasználók kényelme érdekében, és hozzáférést biztosít a harmadik féltől származó szolgáltatásokhoz.

+

5.2 Függetlenül attól, hogy a harmadik féltől származó szolgáltatások előre beállítottak-e a szoftverrendszer szolgáltatásaiban, vagy a felhasználók maguk nyitották meg vagy rendelték meg azokat, a felhasználók megértik és elfogadják, hogy a Saitong nem ad semmilyen kifejezett vagy hallgatólagos garanciát a harmadik féltől származó szolgáltatók vagy felhasználók jogszerűségére és hatékonyságára, valamint a harmadik féltől származó szolgáltatások jogszerűségére, pontosságára, hatékonyságára és biztonságára vonatkozóan.

+

5.3 A Vállalat nem felügyeli, nem ellenőrzi, és nem nyújt semmilyen garanciát a harmadik féltől származó szolgáltatásokra vonatkozóan, és nem vállal semmilyen felelősséget azokért.

+

5.4 A felhasználó és a harmadik féltől származó szolgáltató közötti bármely vitát vagy nézeteltérést a Felhasználó és a harmadik fél a harmadik féltől származó szolgáltató üzleti folyamatai és üzleti normái szerint rendezi, és a vállalat nem vállal semmilyen felelősséget.

+ +

6. Adatvédelmi irányelvek és személyes adatok védelme

+

6.1 A Saitong elkötelezett a felhasználók magánéletének védelme mellett az adatvédelmi irányelveknek megfelelően, kérjük, tekintse meg: Voitrans Adatvédelmi Irányelvek.

+ +

7. Szerződésszegési felelősség

+

7.1 A Saitong jogosult megítélni, hogy a felhasználó magatartása megfelel-e a jelen Megállapodás rendelkezéseinek. Ha úgy ítélik meg, hogy a Felhasználó megsértette a vonatkozó törvényeket és rendeleteket, vagy a jelen Megállapodás és a kapcsolódó szabályok rendelkezéseit, a felhasználó jogsértésének súlyosságától függően a Saitong jogosult törölni a jogellenes információkat, korlátozni, felfüggeszteni, megszüntetni a felhasználó Szoftverszolgáltatás használatát, jogi felelősségre vonni a felhasználót és más, a Saitong által megfelelőnek ítélt intézkedéseket tenni. Ha bármilyen veszteség ér minket (beleértve, de nem kizárólagosan, bármely harmadik fél követeléseit vagy bármely közigazgatási hatóság szankcióit), a Felhasználó teljes mértékben felelős.

+ +

8. Szolgáltatási kockázatok és felelősségkizárás

+

8.1 Jelenlegi technológiával kívánunk szolgáltatási támogatást nyújtani. A Saitong nem garantálja, hogy a Szoftverszolgáltatás megszakítás vagy hiba nélkül működik, hogy a Szoftverszolgáltatás minden hibája kijavításra kerül, vagy hogy a Szoftverszolgáltatás minden felhasználói igényt kielégít. Az ebből eredő következményekért a Saitong nem vállal felelősséget.

+

8.2 A felhasználónak harmadik felek, például kommunikációs vonalhibák, technikai problémák, hálózat, számítógépes végberendezés meghibásodása, rendszerinstabilitás és egyéb vis maior okok miatt elszenvedett veszteségeiért nem vállalható felelősség.

+

8.3 A Saitong nem garantálja a szoftveren keresztül szerzett információs tartalom (beleértve, de nem kizárólagosan a harmadik féltől származó szolgáltatási tartalmat) jogszerűségét, hitelességét, pontosságát és hatékonyságát, és a Saitong nem vállal felelősséget a felhasználók lekérdezésen és megtekintésen alapuló magatartásának eredményeiért.

+

8.4 A szoftvert, mint a legtöbb internetes szoftvert, befolyásolják a különbségek a tényezőkben, beleértve, de nem kizárólagosan, a felhasználói okokat, a hálózati szolgáltatás minőségét, a társadalmi környezetet és egyéb tényezőket, és különféle biztonsági problémáknak lehet kitéve, például mások felhasználói információk felhasználása, ami zaklatást eredményez a valós életben; a felhasználók által letöltött és telepített egyéb szoftverek vagy a felhasználók által meglátogatott egyéb webhelyek "trójai falóhoz" hasonló vírusokat tartalmaznak, amelyek veszélyeztetik a felhasználók végberendezés-információinak és adatainak biztonságát, majd befolyásolják a szoftver normál használatát. A felhasználóknak erősíteniük kell az információbiztonsági tudatosságot és a felhasználói adatok védelmét, és figyelniük kell a jelszóvédelem megerősítésére a veszteség és zaklatás elkerülése érdekében.

+

8.5 Amikor a felhasználók a Szoftvert használják vagy a Saitongtól specifikus szolgáltatásokat kérnek, a Szoftver meghívhat harmadik féltől származó rendszereket vagy szoftvereket a felhasználók használatának vagy hozzáférésének támogatására, és a használat vagy hozzáférés eredményeit a harmadik fél biztosítja. A jelen Megállapodás vonatkozó szabályainak betartása mellett a felhasználóknak be kell tartaniuk a harmadik fél megállapodásait és kapcsolódó szabályait is. A felhasználóknak meg kell érteniük és el kell fogadniuk, hogy harmadik féltől származó szolgáltatások használatakor a harmadik felek olvashatják a felhasználói adatokat, és a Saitong nem garantálja a harmadik féltől származó rendszerek vagy szoftvertámogatás révén elért eredmények biztonságát, pontosságát, hatékonyságát és egyéb bizonytalan kockázatait, a felhasználóknak körültekintő ítéletet kell alkalmazniuk, és a Saitong nem vállal felelősséget az ebből eredő vitákért és károkért.

+

8.6 A vállalat üzleti fejlesztésének és kiigazításának autonómiájának biztosítása érdekében a vállalat bármikor módosíthatja vagy megszakíthatja a szolgáltatást, miután ésszerű módon értesítette a felhasználót.

+

8.7 Hacsak a törvények és rendeletek kifejezetten másként nem rendelkeznek, a Saitong minden tőle telhetőt megtesz annak biztosítása érdekében, hogy a szoftver és az érintett technológia és információk biztonságosak, hatékonyak, pontosak és megbízhatóak legyenek, de a meglévő technológia korlátai miatt a felhasználó megérti, hogy a Saitong nem tudja ezt garantálni.

+

8.8 A személyi sérülés vagy bármely alábbi körülmény által okozott vagy azzal kapcsolatos eseti és közvetett gazdasági kár megtérítése, beleértve, de nem kizárólagosan az elmaradt hasznot, adatvesztést, üzleti megszakítás miatti kártérítést vagy egyéb üzleti károkat vagy veszteségeket, a Felhasználót terheli:

+

1) A licencelt szoftver használata vagy használatának képtelensége.

+

2) Harmadik felek által történő jogosulatlan szoftverhasználat vagy felhasználói adatok módosítása.

+

3) A felhasználó szoftverrel végzett tevékenységéből eredő kiadások és veszteségek.

+

4) A felhasználó téves elképzelései a szoftverről.

+

5) Bármely egyéb, a szoftverrel kapcsolatos veszteség, amely nem a Saitong okainak tulajdonítható.

+

8.9 A Felhasználó elfogadja, hogy a Vállalat jogosult a felhasználónak nyújtott Szolgáltatás egészét vagy egy részét felfüggeszteni, megszakítani vagy megszüntetni a bírósági, szabályozási és felügyeleti hatóságok követelményei alapján vagy saját üzleti okokból. A Saitong ezért nem vállal felelősséget.

+

8.10 A Felhasználó megérti és elfogadja, hogy a Vállalat kereskedelmileg ésszerű erőfeszítéseket tesz a Szoftverben és a Szolgáltatásokban történő adattárolás biztonságának biztosítása érdekében, de a vállalat nem tud teljes garanciát nyújtani, és a Felhasználó megérti, hogy a Vállalat nem felelős a Szolgáltatásban lévő adatok törléséért vagy a tárolás vagy biztonsági mentés sikertelenségéért.

+

8.11 A törvény által megengedett legteljesebb mértékben a Fejlesztő vagy a Szállító nem felelős az Alkalmazás használatából eredő közvetlen, közvetett, eseti, különleges vagy következményes károkért. Ha a felhasználónak további igényei vannak, kérjük, keresse fel a megfelelő kórházat alapos vizsgálat céljából.

+ +

9. Szellemi tulajdonjogi nyilatkozat

+

9.1 A Saitong e szoftver szellemi tulajdonjogának jogosultja. A szoftver összes szerzői joga, védjegye, szabadalma, üzleti titka és egyéb szellemi tulajdonjoga, valamint a szoftverrel kapcsolatos összes információs tartalom (beleértve, de nem kizárólagosan a szöveget, képeket, hangot, videót, grafikát, felületdesignt, elrendezési kereteket, vonatkozó adatokat vagy elektronikus dokumentumokat stb.) a helyi törvények és rendeletek, valamint a vonatkozó nemzetközi egyezmények védelmét élvezi.

+

9.2 A Vállalat írásbeli hozzájárulása nélkül a Felhasználó nem valósíthatja meg, nem használhatja ki és nem ruházhatja át a fenti szellemi tulajdonjogokat semmilyen kereskedelmi vagy nem kereskedelmi célra, és nem engedélyezheti harmadik fél számára, és a Vállalat fenntartja a jogot a fenti cselekmények jogi felelősségre vonására.

+ +

10. Megállapodás módosítása

+

10.1 A Saitong szükség esetén jogosult a jelen Megállapodás feltételeinek módosítására. A Megállapodás feltételeinek módosításakor a módosított Megállapodás feltételei a vonatkozó oldalon kerülnek közzétételre. Ha nem ért egyet a módosított tartalommal, a felhasználónak kezdeményeznie kell e szolgáltatás lemondását. Ha a Felhasználó továbbra is használja a Szolgáltatásokat, úgy tekintendő, hogy elfogadja a Megállapodás feltételeinek módosításait.

+

10.2 A Saitong fenntartja a jogot, hogy szükség szerint módosítsa a fizetős szolgáltatásokat, díjszabási normákat, számlázási módszereket, szolgáltatási díjakat és szolgáltatási feltételeket. Szolgáltatások nyújtása során most vagy a jövőben bizonyos díjakat számíthatunk fel egyes szolgáltatások felhasználóinak. Ha a felhasználók megtagadják az ilyen díjak megfizetését, a díjak bevezetése után nem használhatják tovább a vonatkozó szolgáltatásokat.

+
+ + diff --git a/doc/id/privacy_policy.html b/doc/id/privacy_policy.html new file mode 100644 index 000000000..3dc97c614 --- /dev/null +++ b/doc/id/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Kebijakan Privasi Voitrans + + + + +
+

Kebijakan Privasi Voitrans

+

Terakhir Diperbarui: 27 Mei 2025

+

Tanggal Berlaku: 27 Mei 2025

+ +

Selamat datang menggunakan Perangkat Lunak dan Layanan Voitrans

+

1. Voitrans disediakan oleh Saitong Industries Inc. (selanjutnya disebut “Perusahaan”). Aplikasi ini dapat membantu pengguna dalam pengelolaan perangkat Bluetooth dan produk lainnya. Kami memahami pentingnya informasi pribadi bagi pengguna kami (selanjutnya disebut “Anda”) dan bahwa perlindungan informasi pribadi Anda secara efektif adalah landasan bagi perkembangan bisnis kami yang sehat dan berkelanjutan. Terima kasih atas penggunaan dan kepercayaan Anda pada produk atau layanan Voitrans! Kami menyadari sepenuhnya bahwa kepercayaan ini tidak mudah diperoleh. Kami berpegang pada prinsip keterbukaan dan transparansi untuk menjelaskan aturan kami dalam memproses informasi pribadi Anda. Kami memproses informasi pribadi Anda dengan cara yang sah dan tujuan yang jelas serta wajar. Catatan khusus: Pastikan Anda membaca dan memahami Kebijakan Privasi ini dengan cermat sebelum menggunakan produk atau layanan kami agar Anda dapat membuat pilihan yang tepat.

+

2. Kebijakan Privasi ini menjelaskan bagaimana kami mengumpulkan, menggunakan, menyimpan, dan membagikan informasi pribadi Anda ketika Anda menggunakan Voitrans. Informasi pribadi adalah berbagai jenis informasi yang direkam secara elektronik atau dengan cara lain yang dapat mengidentifikasi orang perseorangan tertentu atau mencerminkan aktivitas orang perseorangan tertentu, baik secara sendiri maupun dikombinasikan dengan informasi lain. Voitrans menghormati dan melindungi privasi pribadi semua pengguna layanan. Kecuali ditentukan lain dalam Kebijakan Privasi ini, Voitrans tidak akan mengungkapkan informasi tersebut kepada publik atau memberikannya kepada pihak ketiga tanpa izin Anda sebelumnya.

+

3. Ketika Anda menggunakan produk atau layanan pihak ketiga melalui produk atau layanan App Marketplace, informasi pribadi Anda akan tunduk pada kebijakan privasi pihak ketiga tersebut.

+

4. Kebijakan Privasi Voitrans ini akan diperbarui dari waktu ke waktu. Dengan menyetujui Perjanjian Penggunaan Layanan Voitrans dan mulai menggunakan Voitrans, Anda dianggap telah menyetujui seluruh Kebijakan Privasi ini. Jika Anda tidak menyetujui Kebijakan Privasi ini, mohon jangan gunakan Perangkat Lunak dan Layanan Voitrans.

+

5. Untuk menganalisis dan mengukur efektivitas layanan terkait, kami akan menggunakan dan mengungkapkan informasi pribadi Anda sesuai dengan ketentuan dalam Kebijakan Privasi ini.

+ +

Kebijakan Privasi ini akan membantu Anda memahami hal-hal berikut:

+
    +
  • 1 Informasi yang kami kumpulkan
  • +
  • 2 Penyimpanan informasi
  • +
  • 3 Keamanan informasi
  • +
  • 4 Bagaimana kami menggunakan informasi yang kami kumpulkan
  • +
  • 5 Berbagi informasi
  • +
  • 6 Bagaimana Anda mengelola informasi pribadi Anda
  • +
  • 7 Penjelasan izin aplikasi
  • +
  • 8 Akses SDK pihak ketiga
  • +
  • 9 Perlindungan anak di bawah umur
  • +
  • 10 Keberlakuan dan pembaruan Kebijakan Privasi
  • +
  • 11 Cara menghubungi kami
  • +
+ +

1. Informasi yang kami kumpulkan

+

1. Saat Anda mulai menggunakan Voitrans, kami akan mulai mengumpulkan data tentang penggunaan Anda terhadap aplikasi

+

2. Voitrans dapat memperoleh informasi pribadi tentang Anda dari pihak ketiga atau mitra bisnis melalui cara yang sah

+

3. Untuk memberikan produk dan layanan yang lebih baik kepada Anda, memberikan keamanan jaringan selama penggunaan, menjaga operasi produk tetap normal serta melakukan optimasi dan peningkatan, setelah Anda secara aktif mengklik setuju pada kebijakan privasi ini, selama penyediaan layanan, selain informasi pribadi yang diperlukan untuk memastikan fungsi dasar Aplikasi berjalan normal sesuai hukum dan peraturan, kami juga akan mengumpulkan informasi pribadi lain dari Anda:

+

3.1 Untuk mengidentifikasi pengguna berisiko, menilai keaslian pengguna, dan mencegah kecurangan secara menyeluruh, kami akan membaca informasi perangkat Anda setiap kali Anda membuka aplikasi, termasuk: (model perangkat, alamat MAC perangkat, pengenal unik perangkat (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, dll.) MEID, nomor seri, SSID dan BSSID Wi‑Fi), membaca alamat Bluetooth, versi sistem operasi, nama sistem operasi, informasi akun login pengguna dan kata sandi;

+

3.2 Saat Anda menggunakan produk dan layanan kami, kami dapat mengumpulkan informasi tertentu melalui log jaringan atau program dan perangkat lunak tertentu, termasuk: detail penggunaan produk dan layanan, seperti waktu membuka aplikasi, lama penggunaan, dan alamat halaman yang dikunjungi; informasi peristiwa perangkat, seperti crash, aktivitas sistem, dll., untuk mengoptimalkan perangkat Anda dan meningkatkan layanan kami;

+

3.3 Untuk mengidentifikasi aplikasi yang membuat perangkat berada dalam risiko dan memberikan layanan fungsional yang lebih aman, kami perlu memperoleh daftar aplikasi/daftar aplikasi yang terpasang untuk memastikan operasi produk yang normal dan melindungi keamanan perangkat.

+

3.4 Untuk menganalisis penggunaan fungsi aplikasi oleh pengguna dan menentukan keaslian pengguna, kami perlu melakukan statistik data dan mengumpulkan informasi perangkat di atas, termasuk alamat MAC perangkat dan pengenal unik perangkat, saat perangkat Anda sedang digunakan.

+

3.5 Sinyal perangkat: status jaringan perangkat yang Anda gunakan, informasi titik akses Wi‑Fi, dll.

+

3.6 Informasi lokasi: kami dapat menggunakan GPS, Wi‑Fi, atau sarana teknis lainnya untuk mengumpulkan dan memproses informasi lokasi Anda untuk memperbarui informasi lokal, menyediakan layanan konten, dll.

+

Untuk informasi lebih lanjut, silakan klik “Daftar Pengumpulan Informasi Pribadi”.

+ +

1. Untuk informasi pribadi yang lebih sensitif pada daftar di atas, seperti informasi perangkat pengguna (nomor IMEI, status panggilan dan nomor identifikasi), informasi lokasi GPS, konten media foto, dan hak akses file, kami akan meminta persetujuan Anda sebelum pengumpulan. Untuk sebagian informasi yang tidak sensitif, pengumpulan dapat dilakukan secara default dan otomatis. Anda dapat membatasi pengumpulan informasi terkait atau penggunaan izin tertentu melalui pengaturan pada perangkat seluler Anda. Ketika Anda membatasi akses kami ke suatu izin, kami mungkin tidak dapat terus memberikan layanan yang sesuai dan tidak lagi memproses informasi terkait Anda.

+

2. Kami tidak akan mengumpulkan nomor kartu identitas, informasi biometrik pribadi, nomor rekening bank, informasi properti, informasi kredit, informasi kesehatan dan fisiologis, serta informasi pribadi sensitif lainnya.

+

3. Tentang izin sensitif: agar fungsi aplikasi dapat digunakan dengan benar, produk perlu memperoleh izin berikut untuk menyediakan layanan fungsional yang terkait dengan operasi normal produk.

+ +

1 Mendapatkan izin baca dan tulis penyimpanan

+

1 Cara memperoleh: notifikasi pop-up; saat izin diminta, pengguna akan secara aktif mengklik setuju dan aplikasi akan menggunakan izin ini

+

2 Tujuan dan ruang lingkup: digunakan untuk memindai file cache sumber daya dan thumbnail di sistem, memuat sumber daya musik dan gambar produk, serta menampilkannya pada antarmuka aplikasi agar pengguna mudah melihat dan mengoperasikan

+ +

2 Mendapatkan izin daftar aplikasi yang terpasang

+

1 Cara memperoleh: notifikasi pop-up; saat izin diminta, pengguna akan secara aktif mengklik setuju dan aplikasi akan menggunakan izin ini

+

2 Tujuan dan ruang lingkup: ketika aplikasi perlu menggunakan layanan promosi iklan, platform iklan pihak ketiga (Youmon +SDK) perlu memperoleh “izin daftar aplikasi yang terpasang” pada perangkat untuk mencegah mendorong aplikasi yang sudah dimiliki pengguna dan meningkatkan pengalaman pengguna.

+ +

3 Izin untuk memperoleh informasi status perangkat

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Cara memperoleh: notifikasi pop-up; saat izin diminta, pengguna akan secara aktif mengklik setuju dan aplikasi akan menggunakan izin ini

+

2 Tujuan dan ruang lingkup: ketika menggunakan aplikasi kami, untuk menganalisis penggunaan fungsi aplikasi oleh pengguna dan menilai keaslian pengguna, kami akan menyinkronkan izin tersebut ke SDK pihak ketiga, termasuk Autonavi SDK, Youmon +SDK, dll.

+ +

4 Akses ke informasi lokasi

+

1 Cara memperoleh: notifikasi pop-up; setelah izin diberikan, pengguna hanya menggunakan izin ini ketika secara aktif mengklik setuju pada aplikasi

+

2 Tujuan dan ruang lingkup: ketika aplikasi perlu menggunakan GPS, Wi‑Fi, atau fungsi lain, produk perlu mengumpulkan lokasi dan informasi Anda untuk mencari perangkat Bluetooth di lokasi sekitar.

+

Catatan: untuk izin aplikasi lainnya, lihat dokumen “Kebijakan Privasi” Bagian 7 “Penjelasan izin aplikasi”.

+ +

2. Penyimpanan informasi

+

1. Di mana informasi disimpan

+

Informasi pribadi yang kami kumpulkan dan hasilkan di Republik Rakyat Tiongkok akan disimpan di server kami dan/atau server afiliasi kami.

+

2. Penyimpanan dan pemrosesan informasi

+

Kami menyimpan informasi pribadi Anda hanya selama periode yang diperlukan untuk mencapai tujuan atau selama diwajibkan oleh hukum dan peraturan. Setelah Anda berhenti menggunakan produk ini, kami akan segera berhenti mengumpulkan dan memproses informasi pribadi Anda serta data aplikasi. Setelah melewati periode tersebut, kami akan menghapus atau menganonimkan informasi pribadi yang Anda berikan kepada kami.

+

Selain fungsi yang diperlukan, Voitrans perlu meminta izin sistem yang sesuai. Sisi server cloud tidak menyimpan informasi pribadi pengguna, dan SDK pihak ketiga yang diakses akan dianonimkan dan dihapus identitasnya oleh penyedia layanan (Amu Statistics SDK, Autonavi SDK), sehingga pengguna tidak dapat dilacak. Informasi yang tersimpan di ponsel pengguna akan dihapus secara otomatis ketika pengguna menghapus instalasi Voitrans atau membersihkan cache.

+ +

3. Keamanan informasi

+

1. Voitrans menyimpan dan melindungi informasi pribadi Anda menggunakan langkah dan teknologi keamanan standar industri, seperti autentikasi, enkripsi data, pembatasan akses pusat data, dan langkah keamanan lainnya untuk memastikan informasi Anda aman dari pengungkapan, perubahan, dan perusakan. Meskipun demikian, harap diperhatikan bahwa tidak ada langkah keamanan yang dapat 100% aman.

+

2. Saat Anda menggunakan layanan yang disediakan oleh Voitrans, harap lindungi informasi pribadi Anda. Jika Anda menemukan bahwa informasi pribadi Anda telah dikompromikan, segera hubungi kami agar kami dapat mengambil tindakan yang tepat.

+ +

4. Bagaimana kami menggunakan informasi yang kami kumpulkan

+

1. Ketika menjalankan fungsi bisnis aplikasi, kami dapat menggunakan informasi pribadi Anda untuk memastikan integritas dan keamanan produk serta layanan yang kami berikan kepada Anda;

+

2. Kami akan memahami kebiasaan penggunaan Anda melalui informasi yang dikumpulkan dan, dengan bantuan analisis data, menilai penerimaan layanan, kebiasaan penggunaan Anda, dll., untuk menguji dan membuat produk, fungsi, dan layanan baru, meningkatkan tingkat layanan, serta membantu kami meningkatkan layanan yang ada dan mengembangkan layanan baru;

+

3. Kami dapat menggunakan informasi pribadi Anda untuk survei pelanggan terkait produk dan layanan, untuk mengirim pemberitahuan tentang produk dan layanan, serta untuk promosi komersial;

+

4. Kami dapat menggunakan informasi Anda untuk analisis internal dan penelitian yang terkait dengan aplikasi;

+ +

5. Berbagi informasi

+

Saat ini, kami tidak akan secara aktif membagikan atau mentransfer informasi pribadi Anda kepada pihak ketiga di luar perusahaan. Jika terdapat pembagian atau transfer informasi pribadi Anda, kami akan meminta persetujuan tegas Anda atau memastikan pihak ketiga telah memperoleh persetujuan tegas Anda atas tindakan tersebut.

+

Kami tidak akan mengungkapkan informasi pribadi yang kami kumpulkan kepada publik. Jika perlu mengungkapkannya, kami akan memberi tahu Anda tujuan pengungkapan, jenis informasi yang diungkap, serta informasi sensitif yang mungkin terlibat, dan memperoleh persetujuan tegas Anda.

+

Seiring perkembangan bisnis kami, kami dapat melakukan merger, akuisisi, transfer aset, dan transaksi lainnya. Kami akan memberi tahu Anda keadaan terkait sesuai hukum dan peraturan serta tidak kurang dari standar yang ditetapkan dalam pedoman ini untuk terus melindungi informasi pribadi Anda atau meminta pengendali baru untuk terus melindungi informasi pribadi Anda.

+

Selain itu, sesuai hukum, peraturan, dan standar nasional yang relevan, kami dapat membagikan, mentransfer, dan mengungkapkan informasi pribadi tanpa otorisasi dan persetujuan sebelumnya dari subjek informasi pribadi dalam keadaan berikut:

+
    +
  • 1 Berhubungan langsung dengan keamanan nasional dan keamanan pertahanan negara;
  • +
  • 2 Berhubungan langsung dengan keselamatan publik, kesehatan masyarakat, atau kepentingan publik utama;
  • +
  • 3 Berhubungan langsung dengan penyelidikan pidana, penuntutan, persidangan, dan pelaksanaan putusan;
  • +
  • 4 Untuk melindungi kehidupan, harta benda, dan hak serta kepentingan sah utama subjek data pribadi atau individu lain, tetapi sulit memperoleh persetujuan;
  • +
  • 5 Informasi pribadi yang diungkapkan kepada publik oleh subjek informasi pribadi;
  • +
  • 6 Mengumpulkan informasi pribadi dari informasi yang diungkapkan kepada publik secara sah, seperti laporan berita yang sah, pengungkapan informasi pemerintah, dan saluran lainnya.
  • +
+ +

6. Bagaimana Anda mengelola informasi pribadi Anda

+

Sesuai hukum, peraturan, dan standar yang relevan di Tiongkok serta praktik umum negara dan wilayah lain, kami menjamin Anda dapat menggunakan hak-hak berikut atas informasi pribadi Anda:

+ +

1. Memperbaiki informasi pribadi Anda

+

Jika Anda menemukan kesalahan pada informasi pribadi yang kami proses, Anda berhak memperbaiki atau memperbarui informasi yang salah atau tidak lengkap. Jika Anda tidak dapat melakukannya secara mandiri di pusat akun, Anda dapat menghubungi kami melalui email saitong.voitrans@gmail.com

+ +

2. Menghapus informasi pribadi Anda

+

Dalam keadaan berikut, Anda dapat mengajukan permintaan kepada kami untuk menghapus informasi pribadi Anda:

+
    +
  • Jika kami memproses informasi pribadi yang melanggar hukum dan peraturan;
  • +
  • Jika kami mengumpulkan dan menggunakan informasi pribadi Anda tanpa persetujuan Anda;
  • +
  • Jika pemrosesan informasi pribadi kami melanggar perjanjian kami dengan Anda;
  • +
  • Jika Anda tidak lagi menggunakan produk atau layanan kami;
  • +
  • Jika kami tidak lagi menyediakan produk atau layanan kepada Anda.
  • +
+

Hubungi kami di saitong.voitrans@gmail.com. Kami akan memproses permintaan Anda dan mengirimkannya kepada Anda dalam 30 hari kerja setelah permintaan diterima.

+ +

3. Mengubah cakupan persetujuan Anda

+

Anda dapat menghubungi kami melalui email saitong.voitrans@gmail.com. Atas permintaan Anda, kami tidak akan lagi mengumpulkan, menggunakan, atau mengungkapkan informasi pribadi Anda. Harap dicatat bahwa penarikan persetujuan atau penghapusan informasi pribadi Anda dapat memengaruhi penggunaan sebagian layanan kami.

+ +

4 Mengakses dan menyalin informasi pribadi

+

Anda dapat, sesuai ketentuan hukum yang relevan, memberikan imei (nomor seri ponsel) atau oaid atau Android ID serta informasi akun dan informasi lainnya, lalu mengajukan permohonan kepada kami untuk mengakses dan menyalin informasi pribadi Anda. Anda dapat menghubungi kami melalui email 3514406195@qq.com

+ +

5. Menanggapi permintaan Anda di atas

+

Untuk tujuan keamanan, Anda mungkin perlu memberikan permintaan tertulis atau membuktikan identitas Anda dengan cara lain. Kami dapat meminta Anda memverifikasi identitas sebelum memproses permintaan. Untuk permintaan Anda yang wajar, kami akan merespons dan menanganinya tepat waktu. Kami dapat menolak permintaan yang berulang secara tidak perlu, membutuhkan terlalu banyak teknologi (misalnya pengembangan sistem baru atau perubahan mendasar pada praktik yang ada), menimbulkan risiko terhadap kepentingan sah orang lain, atau sangat tidak praktis.

+

Dalam keadaan berikut, sesuai ketentuan hukum dan peraturan, kami mungkin tidak dapat menanggapi permintaan Anda:

+
    +
  • Berkaitan dengan keamanan nasional dan keamanan pertahanan negara;
  • +
  • Berkaitan dengan penyelidikan pidana, penuntutan, dan persidangan;
  • +
  • Terdapat bukti yang cukup bahwa Anda memiliki itikad buruk atau menyalahgunakan hak;
  • +
  • Menanggapi permintaan Anda akan menyebabkan kerugian serius pada hak dan kepentingan sah Anda atau individu/organisasi lain.
  • +
+ +

6. Pembatalan akun

+

Pengguna dapat melakukan operasi [pembatalan akun] di aplikasi. Langkah-langkahnya:

+
    +
  1. Buka halaman [My]
  2. +
  3. Klik tombol [Settings] di kanan atas
  4. +
  5. Klik [Cancel account] untuk konfirmasi
  6. +
+

Setelah Anda membatalkan akun, informasi akun pengguna akan dihapus

+ +

7. Penjelasan izin aplikasi

+

Untuk memberikan produk dan layanan yang lebih baik, ketika Anda menggunakan perangkat lunak, kami akan meminta izin berikut. Saat Anda masuk ke halaman utama atau menggunakan fungsi, sistem akan meminta otorisasi. Jika Anda menolak, beberapa fungsi terkait mungkin tidak dapat digunakan secara normal. Tujuan dan pemberitahuan izin dijelaskan sebagai berikut:

+ +

1 Izin lokasi:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

melalui Wi‑Fi atau BTS seluler untuk memperoleh informasi lokasi lintang dan bujur pengguna

+

Saat Anda menggunakan Voitrans, kami akan mencari perangkat Bluetooth yang terhubung berdasarkan lokasi geografis Anda. Pada saat yang sama, untuk menyediakan layanan yang lebih stabil, mengoptimalkan produk dan meningkatkan pengalaman, kami dapat membagikan informasi di atas kepada SDK pihak ketiga seperti Youmon dan Autonavi untuk memperoleh data operasi Voitrans dan layanan fungsional.

+

Metode pengingat: prompt izin saat pertama kali membuka aplikasi, pengguna perlu mengonfirmasi persetujuan. Penjelasan terdapat di Perjanjian Pengguna dan Kebijakan Privasi.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Izin ini diperlukan ketika Anda mengakses aplikasi untuk melakukan fungsi pengelolaan aplikasi.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

3 Izin jaringan:

+

android.permission.INTERNET

+

Izin ini diperlukan untuk layanan informasi Voitrans dan layanan pembaruan versi. Untuk meningkatkan pengalaman pengguna dan mengoptimalkan kemampuan layanan, SDK pihak ketiga juga dapat menggunakan izin ini.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

4 Izin status jaringan:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Digunakan untuk mengetahui apakah koneksi jaringan saat ini valid, menilai lingkungan jaringan (misalnya 4G), dan apakah perlu mengingatkan perubahan lingkungan jaringan sehingga dapat memengaruhi pemuatan konten informasi. Izin ini diminta saat Anda menggunakan Voitrans.

+

Perubahan status jaringan memengaruhi unggah dan muat data. Oleh karena itu, akses ke izin status jaringan dapat digunakan bersama dengan platform pihak ketiga.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

5 Izin daftar tugas:

+

android.permission.GET_TASKS

+

Izin ini digunakan untuk memperoleh daftar aplikasi untuk fungsi pengelolaan perangkat lunak. Saat Anda menggunakan fungsi tersebut, perlu membaca aplikasi yang terpasang di ponsel.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

6 Izin alamat MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Saat Anda menggunakan Voitrans, aplikasi mungkin perlu memperoleh izin alamat MAC:

+

Ketika aplikasi perlu melaporkan data konversi target, platform pihak ketiga seperti Youmon +SDK dapat menggunakan MAC.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

7 Izin merekam audio

+

android.permission.RECORD_AUDIO

+

Saat Anda menggunakan fungsi input suara Voitrans, Anda perlu menggunakan izin merekam audio, terutama untuk input suara guna penerjemahan dan fungsi terkait lainnya.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi; kotak dialog akan muncul secara dinamis saat diperlukan.

+ +

8 Izin SSID Wi‑Fi

+

Ketika izin ini digunakan, aplikasi membaca SSID Wi‑Fi:

+

Ruang lingkup dan tujuan: ketika aplikasi perlu menggunakan layanan analisis data, platform pihak ketiga dapat membaca “SSID Wi‑Fi” perangkat untuk memberikan layanan fungsional yang lebih akurat dan efektif.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

9 Akses Bluetooth

+

Ketika izin ini digunakan, aplikasi menggunakan izin Bluetooth:

+

Ruang lingkup dan tujuan: digunakan untuk mencari dan mengonfigurasi aksesori Bluetooth, seperti headset Bluetooth, jam tangan Bluetooth, dll., agar mudah dikelola oleh pengguna

+

Metode pengingat: prompt izin saat pertama kali membuka aplikasi, pengguna perlu mengonfirmasi persetujuan. Penjelasan terdapat di Perjanjian Pengguna dan Kebijakan Privasi.

+ +

10 Izin BSSID Wi‑Fi

+

Ketika aplikasi perlu membedakan dan mengidentifikasi pengguna untuk memberikan layanan fungsional dan statistik data, aplikasi akan membaca “BSSID Wi‑Fi” perangkat untuk:

+

Ruang lingkup dan tujuan: 1) Platform pihak ketiga: seperti Youmeng SDK, Bugly SDK, Autonavi SDK

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

11 Izin pemasangan aplikasi

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Perangkat lunak akan menggunakan izin pemasangan aplikasi, terutama untuk memungkinkan pengguna memasang versi baru dan mencoba fungsi baru ketika tersedia versi terbaru.

+

Metode pengingat: Penjelasan Perjanjian Pengguna dan Kebijakan Privasi.

+ +

12 Izin kamera

+

android.permission.CAMERA

+

Voitrans menggunakan izin kamera untuk memindai kode QR dan mengikat perangkat Bluetooth seperti headset Bluetooth dan jam tangan.

+

Metode pengingat: prompt izin saat pertama kali membuka aplikasi, pengguna perlu mengonfirmasi persetujuan. Penjelasan terdapat di Perjanjian Pengguna dan Kebijakan Privasi.

+ +

Catatan khusus:

+

1 Aplikasi mengintegrasikan SDK pihak ketiga. Setelah pengguna menyetujui, aplikasi dapat mengumpulkan ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI dan informasi pribadi lainnya di latar belakang/latar depan;

+

Keterangan: untuk detail lebih lanjut, silakan lihat konten dan izin terkait SDK berikut [VIII. Daftar akses SDK pihak ketiga].

+ +

8. Akses SDK pihak ketiga

+

1 Untuk memastikan operasi yang stabil dan realisasi fungsi klien kami, sehingga Anda dapat menggunakan dan menikmati lebih banyak layanan dan fungsi, aplikasi kami dapat menanamkan software development kit (SDK) atau komponen serupa milik pihak ketiga. Pihak ketiga tersebut akan mengumpulkan dan memproses informasi terkait sesuai kebijakan privasi mereka untuk menyediakan fungsi dan layanan iklan secara normal. Anda dapat mempelajari aturan pengumpulan dan pemrosesan informasi pihak ketiga pada bagian berikut. Kami akan melakukan pengujian keamanan yang ketat terhadap SDK mitra untuk melindungi penggunaan yang wajar dan keamanan informasi pribadi Anda. Harap dicatat bahwa SDK pihak ketiga dapat mengubah jenis pemrosesan data karena peningkatan versi. Silakan merujuk pada kebijakan privasi yang dipublikasikan oleh SDK pihak ketiga. Lihat detail di bawah atau klik untuk melihat Daftar SDK Pihak Ketiga.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Informasi yang diperoleh: nomor perangkat, alamat IP, informasi perangkat lunak perangkat, kode identifikasi perangkat (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informasi IMSI kartu SIM, IP, alamat MAC), pengenal perangkat, wilayah, informasi aplikasi terkait perangkat, dan informasi log terkait layanan lainnya

+

Tujuan penggunaan: login dan berbagi WeChat

+

Pengembang: Shenzhen Tencent Computer Systems Company Limited

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Informasi yang diperoleh: nama aplikasi, versi aplikasi, merek dan model perangkat, sistem operasi, informasi operator, resolusi layar, informasi sensor (vektor, akselerasi, tekanan, arah, geomagnetik, giroskop, suhu, sensor cahaya, sinyal NMEA), informasi kekuatan sinyal perangkat

+

Tujuan penggunaan: navigasi menggunakan Amap

+

Pengembang: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Informasi yang diperoleh: nama aplikasi, versi aplikasi, merek dan model perangkat, sistem operasi, informasi jaringan, kekuatan sinyal perangkat, dll.

+

Tujuan penggunaan: tampilan peta dan interaksi

+

Pengembang: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Informasi yang diperoleh: informasi lokasi (GPS, Wi‑Fi, BTS), informasi perangkat, informasi jaringan, dll.

+

Tujuan penggunaan: menyediakan layanan lokasi

+

Pengembang: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Informasi yang diperoleh: nama aplikasi, versi aplikasi, informasi perangkat, informasi jaringan, dll.

+

Tujuan penggunaan: alat peta dan optimasi rendering

+

Pengembang: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Informasi yang diperoleh: pengenal perangkat, informasi perangkat dasar, daftar perangkat lunak terpasang, dan informasi jaringan (lihat kebijakan privasi resmi untuk detail)

+

Tujuan penggunaan: login akun Alipay dan pemanggilan pembayaran

+

Pengembang: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Informasi yang diperoleh: versi SDK/API, platform, timestamp, pengenal aplikasi, versi aplikasi, produsen perangkat, versi OS, lokal, zona waktu, status jaringan (Wi‑Fi, dll.), log jaringan, data crash dan penggunaan, alamat IP, dll. (lihat kebijakan privasi resmi untuk detail)

+

Tujuan penggunaan: pemantauan kualitas aplikasi dan layanan pelaporan data

+

Pengembang: Shenzhen Tencent Computer Systems Company Limited

+

Metode pengumpulan: pengumpulan mandiri oleh SDK

+

Tautan Kebijakan Privasi: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Perlindungan anak di bawah umur

+

Pengguna produk dan layanan kami dapat mencakup anak di bawah umur di bawah usia 18 tahun. Pengguna anak di bawah umur sebaiknya meminta saran orang tua atau wali mereka mengenai Kebijakan Privasi ini sebelum menggunakan produk kami, dan menggunakan layanan kami atau memberikan informasi kepada kami setelah memperoleh persetujuan dan di bawah bimbingan orang tua atau wali mereka. Wali dari anak di bawah umur yang memiliki pertanyaan dapat menghubungi kami melalui informasi kontak dalam Kebijakan Privasi ini.

+

Jika Anda tidak menyetujui pengumpulan informasi tersebut oleh penyedia layanan pihak ketiga di atas, harap segera berhenti menggunakan Perangkat Lunak. Selama Anda menggunakan Perangkat Lunak, pihak ketiga tersebut akan mengumpulkan dan memproses informasi terkait sesuai kebijakan privasi mereka untuk menyediakan fungsi tertentu, iklan, dan layanan lainnya. Jika informasi bocor karena pengumpulan informasi tersebut oleh penyedia layanan pihak ketiga terkait, penyedia layanan pihak ketiga tersebut akan menanggung tanggung jawab hukum yang sesuai.

+ +

10. Keberlakuan dan pembaruan Kebijakan Privasi

+

1. Kebijakan Privasi ini berlaku sejak tanggal publikasi.

+

2. Seiring perkembangan dan perubahan bisnis kami, Kebijakan Privasi kami dapat berubah. Kami berhak mengubah kebijakan privasi kami kapan saja, sehingga mohon periksa secara berkala. Jika kami melakukan perubahan, kami akan memposting pembaruan di situs web, aplikasi, dan tempat lain yang kami anggap tepat untuk memberi tahu Anda. Jika kebijakan privasi diperbarui, kebijakan tersebut akan berlaku sejak tanggal pembaruan. Jika Anda terus menggunakan produk atau layanan kami, berarti Anda menyetujui Kebijakan Privasi yang telah diubah.

+ +

11. Cara menghubungi kami

+

Saitong Industries Inc didirikan pada 22 November 2024, alamat terdaftar: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Jika Anda ingin mengetahui lebih lanjut tentang perusahaan dan platform kami, Anda dapat menghubungi kami melalui informasi kontak yang disediakan dalam kebijakan ini (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/id/user_agreement.html b/doc/id/user_agreement.html new file mode 100644 index 000000000..bbb6c0f66 --- /dev/null +++ b/doc/id/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protokol Pengguna Aplikasi Voitrans + + + +
+
Bahasa Indonesia
+ +

Protokol Pengguna Aplikasi Voitrans

+ +

Syarat dan Ketentuan Penggunaan ini menjelaskan cara Anda mengakses dan menggunakan Aplikasi Voitrans dan layanan online ("Layanan"). Saitong Industries Inc. (selanjutnya disebut "Saitong") mengingatkan pengguna untuk membaca dengan cermat dan memahami sepenuhnya Perjanjian Pengguna ini (selanjutnya disebut "Perjanjian"). Pengguna harus membaca dengan cermat dan memahami sepenuhnya ketentuan Perjanjian ini. Harap baca dengan cermat dan pilih untuk menerima atau tidak menerima Perjanjian ini. Penggunaan Anda atas APP Voitrans (selanjutnya disebut "APP" atau "Perangkat Lunak") akan dianggap sebagai penerimaan Perjanjian ini dan Anda setuju untuk terikat oleh ketentuan Perjanjian ini. Jika Anda tidak menyetujui Perjanjian ini, jangan gunakan APP.

+

Saitong berhak untuk mengubah Perjanjian ini, dan ketentuan Perjanjian yang diperbarui akan dipublikasikan di APP ini, berlaku efektif sejak tanggal publikasi.

+ +

1. Aturan umum

+

1.1 APP ini adalah perangkat lunak yang disediakan oleh Saitong untuk menghubungkan produk headset yang dirilis oleh Saitong dan perusahaan mitranya. Kepemilikan dan hak operasi perangkat lunak dan layanan terkait semuanya dimiliki oleh Saitong.

+

1.2 Perjanjian ini adalah perjanjian antara Anda (selanjutnya disebut "Pengguna") dan perusahaan serta mitra dan mitra operasinya (selanjutnya disebut "Mitra") mengenai penggunaan APP dan layanan terkait oleh pengguna.

+

1.3 Perangkat Lunak dan layanan meliputi:

+

1.3.1 Perangkat lunak yang disediakan memberikan pengguna Voitrans layanan perangkat lunak koneksi dan pengikatan Voitrans, manajemen pengaturan fungsi dan layanan perangkat lunak lainnya, tunduk pada layanan perangkat lunak aktual yang disediakan oleh APP.

+

1.3.2 Pembaruan, peningkatan dan layanan perangkat lunak lainnya.

+ +

2. Ruang lingkup lisensi perangkat lunak

+

2.1 Kami memberikan pengguna lisensi pribadi, tidak dapat dipindahtangankan, tidak dapat disublisensikan, dan non-eksklusif untuk Perangkat Lunak.

+

2.2 Pengguna dapat menginstal, menggunakan, menampilkan dan menjalankan perangkat lunak pada satu perangkat terminal seluler untuk tujuan non-komersial. Namun, pengguna tidak boleh menginstal, menggunakan atau menjalankan perangkat lunak untuk tujuan operasi komersial, menyalin, mengubah, memodifikasi, menghubungkan atau menjalankan perangkat lunak atau data yang dirilis ke memori perangkat terminal mana pun selama pengoperasian perangkat lunak atau data interaksi antara klien dan server selama pengoperasian perangkat lunak, atau membuat karya turunan apa pun. Ini termasuk, tetapi tidak terbatas pada, penggunaan plugin, add-on, atau alat/layanan pihak ketiga yang tidak sah untuk mengakses Perangkat Lunak dan sistem terkait. Untuk penjualan komersial, reproduksi dan distribusi, seperti pra-instalasi dan bundling perangkat lunak, otorisasi dan izin tertulis harus diperoleh.

+

2.3 Pengguna tidak boleh menginstal Perangkat Lunak pada perangkat terminal lain tanpa izin tegas dari Pembuat, termasuk tetapi tidak terbatas pada TV, set-top box digital, konsol game dan perangkat lainnya.

+

2.4 Kecuali sebagaimana secara tegas diizinkan oleh Perjanjian ini, tidak ada hak lain yang diberikan kepada Pengguna, dan Pengguna harus mendapatkan persetujuan tertulis untuk menggunakan hak lainnya.

+ +

3. Peningkatan perangkat lunak

+

3.1 Pengguna harus memilih versi perangkat lunak yang sesuai untuk pengaturan terminal yang diinstal. Jika tidak, masalah perangkat lunak, masalah perangkat atau kerusakan yang disebabkan oleh versi perangkat lunak yang tidak sesuai untuk jenis perangkat sepenuhnya menjadi tanggung jawab pengguna.

+

3.2 Untuk meningkatkan pengalaman pengguna dan meningkatkan konten layanan, Saitong berhak untuk menyediakan versi penggantian, modifikasi dan peningkatan perangkat lunak dari waktu ke waktu. Fungsi "Perintah Peningkatan" diaktifkan untuk pengguna secara default. Bergantung pada versi perangkat lunak yang berbeda yang digunakan oleh pengguna, Saitong menyediakan pengguna dengan opsi untuk mengaktifkan fungsi ini. Setelah rilis versi baru perangkat lunak, Saitong tidak menjamin ketersediaan berkelanjutan dari versi lama perangkat lunak.

+ +

4. Spesifikasi penggunaan

+

4.1 Pengguna dapat menggunakan Perangkat Lunak dan Layanan sesuai dengan Perjanjian ini dengan premis mematuhi hukum dan Perjanjian ini, dan pengguna tidak boleh melakukan tindakan berikut:

+

4.1.1 Menghapus semua informasi hak cipta pada Perangkat Lunak dan salinan lainnya, dan mengubah, menghapus atau mengelakkan langkah-langkah teknis yang ditetapkan oleh Perangkat Lunak untuk melindungi hak kekayaan intelektual.

+

4.1.2 Rekayasa balik Perangkat Lunak, seperti pembongkaran, dekompilasi, atau upaya lain untuk mendapatkan kode sumber Perangkat Lunak.

+

4.1.3 Dengan mengubah atau memalsukan instruksi dan data dalam pengoperasian perangkat lunak, menambah, menghapus atau mengubah fungsi atau efek operasi perangkat lunak, atau perangkat lunak atau metode yang akan digunakan untuk tujuan di atas untuk mengoperasikan atau menyebarkan ke publik, terlepas dari apakah tindakan ini untuk tujuan komersial.

+

4.1.4 Menggunakan perangkat lunak untuk perilaku apa pun yang membahayakan keamanan jaringan, termasuk tetapi tidak terbatas pada: menggunakan data yang tidak sah atau mengakses server/akun yang tidak sah; mengakses jaringan publik atau sistem operasi lain tanpa izin dan menghapus, mengubah atau menambahkan informasi yang disimpan; upaya tidak sah untuk menyelidiki, memindai, atau menguji kelemahan sistem atau jaringan perangkat lunak atau tindakan lain yang merusak keamanan jaringan; upaya untuk mengganggu atau menghancurkan operasi normal sistem perangkat lunak atau situs web, sengaja menyebarkan program berbahaya atau virus, dan tindakan lain yang mengganggu layanan informasi jaringan normal; memalsukan nama paket TCP/IP atau nama parsial.

+

4.1.6 Tanpa persetujuan tertulis dari Perusahaan, pengguna secara sewenang-wenang melakukan tindakan berikut terhadap perangkat lunak dan informasi di dalamnya, termasuk tetapi tidak terbatas pada: menggunakan, menyewakan, meminjamkan, menyalin, mengubah, menghubungkan, mencetak ulang, mengkompilasi, menerbitkan, mendistribusikan, membuat situs cermin, mengembangkan produk turunan, karya, layanan, plugin, add-on, kompatibilitas, interkoneksi, dll., dengan bantuan Perangkat Lunak.

+

4.1.7 Menggunakan Perangkat Lunak untuk menerbitkan, mengirimkan, mendistribusikan, dan menyimpan konten yang melanggar hukum setempat Anda.

+

4.1.8 Menggunakan perangkat lunak untuk menerbitkan, mengirimkan, menyebarkan, dan menyimpan konten yang melanggar hak kekayaan intelektual, rahasia dagang, dan hak sah lainnya milik pihak lain.

+

4.1.9 Menggunakan perangkat lunak ini untuk menerbitkan, mengirimkan dan menyebarkan informasi iklan dan informasi sampah secara massal.

+

4.1.10 Menggunakan Perangkat Lunak dan Layanan lainnya dengan cara apa pun yang melanggar hukum, untuk tujuan apa pun yang melanggar hukum, atau dengan cara apa pun yang tidak sesuai dengan penggunaan berlisensi dari Perjanjian ini.

+

4.2 Spesifikasi rilis informasi

+

4.2.1 Jika Anda menggunakan perangkat lunak untuk menerbitkan konten informasi (jika ada), Anda harus menjamin bahwa Anda memiliki hak kekayaan intelektual atas konten informasi yang Anda unggah atau telah memperoleh otorisasi hukum, dan setiap perilaku Anda dalam menggunakan perangkat lunak dan layanan tidak melanggar hak dan kepentingan sah pihak ketiga mana pun.

+

4.2.2 Saat menggunakan Perangkat Lunak, pengguna tidak boleh menggunakan Perangkat Lunak untuk terlibat dalam kegiatan berikut, termasuk tetapi tidak terbatas pada:

+

4.2.2.1 Membuat, menyalin, menerbitkan, menyebarkan, dan menyimpan konten yang melanggar hukum dan peraturan nasional setempat.

+

4.2.2.2 Menerbitkan, mengirimkan, menyebarkan, dan menyimpan konten yang melanggar hak hukum orang lain seperti reputasi, potret, kekayaan intelektual, dan rahasia dagang.

+

4.2.2.3 Memfabrikasi fakta, menyembunyikan kebenaran untuk menyesatkan atau menipu orang lain.

+

4.2.2.4 Menerbitkan, mengirimkan dan menyebarkan informasi iklan dan informasi sampah.

+

4.2.2.5 Terlibat dalam tindakan lain yang melanggar hukum dan peraturan setempat.

+

4.2.3 Anda tidak boleh melakukan kegiatan komersial apa pun seperti mengiklankan dan menjual barang di Perangkat Lunak tanpa izin Perusahaan.

+

4.3 Pengguna memahami dan menyetujui bahwa:

+

4.3.1 Saitong akan menentukan apakah pengguna dicurigai melanggar spesifikasi penggunaan di atas, dan sesuai dengan hasil penentuan, menangguhkan atau mengakhiri lisensi penggunaan Anda atau mengambil tindakan pembatasan lain yang dapat diambil sesuai dengan perjanjian ini.

+

4.3.2 Untuk penggunaan perangkat lunak berlisensi oleh pengguna yang diterbitkan dicurigai ilegal atau dicurigai melanggar hak hukum orang lain atau melanggar Perjanjian ini, informasi tersebut akan langsung dihapus.

+

4.3.3 Jika pelanggaran pengguna terhadap aturan penggunaan di atas menyebabkan kerusakan pada pihak ketiga, Anda perlu menanggung tanggung jawab hukum secara independen atas nama Anda sendiri, dan Anda harus memastikan bahwa perusahaan bebas dari kerugian atau peningkatan biaya.

+

4.3.4 Jika pengguna melanggar ketentuan hukum atau perjanjian yang relevan, menyebabkan Saitong mengalami kerugian, atau dikenai klaim pihak ketiga, atau dikenai sanksi oleh otoritas administratif, pengguna harus mengganti kerugian dan/atau biaya yang ditimbulkan oleh Saitong, termasuk biaya pengacara yang wajar, biaya investigasi dan pengumpulan bukti.

+ +

5. Deskripsi layanan pihak ketiga

+

5.1 Pengguna memahami dan menyetujui bahwa sistem perangkat lunak mungkin berisi layanan yang disediakan oleh afiliasi Perusahaan atau pihak ketiga, dan bahwa Perusahaan hanya menyediakan modul fungsional yang relevan dalam sistem untuk kenyamanan pengguna dan menyediakan akses ke layanan pihak ketiga.

+

5.2 Baik layanan pihak ketiga sudah diatur sebelumnya dalam layanan sistem perangkat lunak, atau dibuka atau dipesan oleh pengguna sendiri, pengguna memahami dan menyetujui bahwa Saitong tidak memberikan jaminan atau garansi tersurat maupun tersirat atas legalitas dan efektivitas penyedia layanan pihak ketiga atau pengguna, serta legalitas, akurasi, efektivitas dan keamanan layanan pihak ketiga.

+

5.3 Perusahaan tidak mengawasi, mengendalikan atau memberikan jaminan atau garansi dalam bentuk apa pun untuk, atau memikul tanggung jawab apa pun atas, layanan pihak ketiga.

+

5.4 Setiap perselisihan atau sengketa antara pengguna dan penyedia layanan pihak ketiga akan diselesaikan oleh Pengguna dan pihak ketiga sesuai dengan proses bisnis dan norma bisnis penyedia layanan pihak ketiga, dan perusahaan tidak akan memikul tanggung jawab apa pun.

+ +

6. Kebijakan Privasi dan Perlindungan Informasi Pribadi

+

6.1 Saitong berkomitmen untuk melindungi privasi pengguna sesuai dengan kebijakan privasi, silakan lihat: Kebijakan Privasi Aplikasi Voitrans.

+ +

7. Tanggung jawab atas pelanggaran

+

7.1 Saitong berhak untuk menilai apakah perilaku pengguna sesuai dengan ketentuan Perjanjian ini. Jika diyakini bahwa Pengguna telah melanggar hukum dan peraturan yang relevan atau ketentuan Perjanjian ini dan aturan terkait, sesuai dengan tingkat keparahan pelanggaran pengguna, Saitong berhak untuk menghapus informasi ilegal, membatasi, menangguhkan, mengakhiri penggunaan layanan Perangkat Lunak oleh pengguna, mengejar tanggung jawab hukum pengguna dan mengambil tindakan lain yang Saitong anggap tepat. Jika kami mengalami kerugian apa pun (termasuk tetapi tidak terbatas pada menerima klaim pihak ketiga atau sanksi dari departemen administratif mana pun), Pengguna akan bertanggung jawab penuh.

+ +

8. Risiko Layanan dan Penafian

+

8.1 Kami ingin memberikan dukungan layanan dengan teknologi saat ini. Saitong tidak menjamin bahwa Layanan Perangkat Lunak akan beroperasi tanpa gangguan atau kesalahan, bahwa semua cacat Layanan Perangkat Lunak akan diperbaiki, atau bahwa Layanan Perangkat Lunak akan memenuhi semua persyaratan pengguna. Konsekuensi yang dihasilkan, Saitong tidak menanggung tanggung jawab apa pun.

+

8.2 Semua kerugian yang diderita oleh pengguna karena pihak ketiga seperti kegagalan jalur komunikasi, masalah teknis, kegagalan jaringan, peralatan terminal komputer, ketidakstabilan sistem dan penyebab force majeure lainnya tidak akan dimintai pertanggungjawaban.

+

8.3 Saitong tidak menjamin legalitas, keaslian, akurasi dan efektivitas konten informasi yang diperoleh melalui perangkat lunak (termasuk tetapi tidak terbatas pada konten layanan pihak ketiga), dan Saitong tidak bertanggung jawab atas hasil perilaku apa pun yang dilakukan oleh pengguna berdasarkan pencarian dan tampilan.

+

8.4 Perangkat lunak, seperti kebanyakan perangkat lunak Internet, dipengaruhi oleh perbedaan faktor termasuk tetapi tidak terbatas pada alasan pengguna, kualitas layanan jaringan, lingkungan sosial dan faktor lainnya, dan mungkin mengalami berbagai masalah keamanan, seperti orang lain menggunakan informasi pengguna, mengakibatkan gangguan dalam kehidupan nyata; perangkat lunak lain yang diunduh dan diinstal oleh pengguna atau situs web lain yang dikunjungi oleh pengguna mengandung virus seperti "Trojan horse", yang mengancam keamanan informasi dan data peralatan terminal pengguna, dan kemudian mempengaruhi penggunaan normal perangkat lunak. Pengguna harus memperkuat kesadaran keamanan informasi dan perlindungan data pengguna, dan memperhatikan untuk memperkuat perlindungan kata sandi untuk menghindari kerugian dan gangguan.

+

8.5 Ketika pengguna menggunakan Perangkat Lunak atau memerlukan Saitong untuk menyediakan layanan tertentu, Perangkat Lunak dapat memanggil sistem pihak ketiga atau perangkat lunak pihak ketiga untuk mendukung penggunaan atau akses pengguna, dan hasil penggunaan atau akses disediakan oleh pihak ketiga. Selain mematuhi aturan yang relevan dari Perjanjian ini, pengguna juga harus mematuhi perjanjian dan aturan yang relevan dari pihak ketiga. Pengguna harus memahami dan menyetujui bahwa, ketika menggunakan layanan pihak ketiga, pihak ketiga dapat membaca data pengguna, dan Saitong tidak menjamin keamanan, akurasi, efektivitas dan risiko tidak pasti lainnya dari hasil yang dicapai melalui sistem pihak ketiga atau dukungan perangkat lunak pihak ketiga, pengguna harus melakukan penilaian yang hati-hati, dan Saitong tidak bertanggung jawab atas perselisihan dan kerusakan yang disebabkan oleh hal ini.

+

8.6 Untuk menjamin otonomi pengembangan dan penyesuaian bisnis perusahaan, perusahaan dapat mengubah atau menghentikan layanan kapan saja setelah mengambil cara yang wajar untuk memberitahu pengguna.

+

8.7 Kecuali sebagaimana secara tegas diatur oleh hukum dan peraturan, Saitong akan berusaha sebaik mungkin untuk memastikan bahwa perangkat lunak dan teknologi serta informasi yang terlibat aman, efektif, akurat dan andal, tetapi dibatasi oleh teknologi yang ada, pengguna memahami bahwa Saitong tidak dapat menjamin hal ini.

+

8.8 Kompensasi atas cedera pribadi atau kerusakan ekonomi insidental dan tidak langsung yang disebabkan oleh atau sehubungan dengan salah satu keadaan berikut, termasuk tetapi tidak terbatas pada kehilangan keuntungan, kehilangan data, ganti rugi untuk gangguan bisnis atau kerusakan atau kerugian bisnis lainnya, akan ditanggung oleh Pengguna:

+

1) Penggunaan atau kegagalan untuk menggunakan perangkat lunak berlisensi.

+

2) Penggunaan perangkat lunak yang tidak sah atau perubahan data pengguna oleh pihak ketiga.

+

3) Biaya dan kerugian yang timbul dari tindakan pengguna dengan perangkat lunak.

+

4) Kesalahpahaman pengguna tentang perangkat lunak.

+

5) Kerugian lain yang terkait dengan perangkat lunak yang tidak disebabkan oleh Saitong.

+

8.9 Pengguna setuju bahwa Perusahaan berhak untuk menangguhkan, menghentikan atau mengakhiri semua atau sebagian Layanan kepada pengguna berdasarkan persyaratan otoritas yudisial, regulasi dan pengawasan atau alasan bisnis sendiri. Saitong tidak bertanggung jawab atas hal ini.

+

8.10 Pengguna memahami dan menyetujui bahwa Perusahaan akan menggunakan upaya yang wajar secara komersial untuk memastikan keamanan penyimpanan data dalam Perangkat Lunak dan Layanan, tetapi perusahaan tidak dapat memberikan jaminan lengkap, dan Pengguna memahami bahwa Perusahaan tidak bertanggung jawab atas penghapusan atau penyimpanan atau kegagalan pencadangan data dalam Layanan.

+

8.11 Sejauh yang diizinkan oleh hukum, Pengembang atau Pemasok tidak bertanggung jawab atas kerusakan langsung, tidak langsung, insidental, khusus atau konsekuensial yang timbul dari penggunaan Aplikasi. Jika pengguna memiliki kebutuhan lebih lanjut, silakan pergi ke rumah sakit reguler untuk pengujian mendalam.

+ +

9. Pernyataan kekayaan intelektual

+

9.1 Saitong adalah pemegang hak kekayaan intelektual dari perangkat lunak ini. Semua hak cipta, merek dagang, paten, rahasia dagang dan hak kekayaan intelektual lainnya dari perangkat lunak, serta semua konten informasi yang terkait dengan perangkat lunak (termasuk tetapi tidak terbatas pada teks, gambar, audio, video, grafis, desain antarmuka, kerangka tata letak, data terkait atau dokumen elektronik, dll.) dilindungi oleh hukum dan peraturan setempat dan perjanjian internasional yang sesuai.

+

9.2 Tanpa persetujuan tertulis dari Perusahaan, Pengguna tidak boleh menerapkan, memanfaatkan atau mentransfer hak kekayaan intelektual di atas untuk tujuan komersial atau non-komersial apa pun, atau mengizinkan pihak ketiga mana pun, dan Perusahaan berhak untuk mengejar tanggung jawab hukum atas tindakan di atas.

+ +

10. Perubahan protokol

+

10.1 Saitong berhak untuk mengubah ketentuan Perjanjian ini bila diperlukan. Setelah ketentuan Perjanjian diubah, ketentuan Perjanjian yang direvisi akan dipublikasikan di halaman terkait. Jika Anda tidak setuju dengan konten yang diubah, pengguna harus mengambil inisiatif untuk membatalkan layanan ini. Jika Pengguna terus menggunakan Layanan, dianggap menerima perubahan dalam ketentuan Perjanjian.

+

10.2 Saitong berhak untuk mengubah atau mengganti layanan berbayar, standar penagihan, metode penagihan, biaya layanan dan ketentuan layanan yang disediakan sesuai kebutuhan. Saat menyediakan layanan, kami dapat mengenakan biaya tertentu kepada pengguna beberapa layanan sekarang atau di masa depan. Jika pengguna menolak untuk membayar biaya tersebut, mereka tidak dapat terus menggunakan layanan terkait setelah dimulainya biaya.

+
+ + diff --git a/doc/is/privacy_policy.html b/doc/is/privacy_policy.html new file mode 100644 index 000000000..7b62e1e77 --- /dev/null +++ b/doc/is/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans persónuverndarstefna + + + + +
+

Voitrans persónuverndarstefna

+

Síðast uppfært: 27. maí 2025

+

Gildisdagur: 27. maí 2025

+ +

Velkomin í notkun Voitrans hugbúnaðar og þjónustu

+

1. Voitrans er veitt af Saitong Industries Inc. (hér eftir nefnt „fyrirtækið"). Getur hjálpað notendum að ná Bluetooth tækjum og annarri vörustjórnun. Við skiljum mikilvægi persónuupplýsinga fyrir notendur okkar (hér eftir nefndir „þú") og að skilvirk vernd persónuupplýsinga þinna er hornsteinn heilbrigðrar og sjálfbærrar þróunar viðskipta okkar. Þakka þér fyrir notkun þína og traust á Voitrans vörum eða þjónustu! Við gerum okkur fulla grein fyrir því að þetta traust kemur ekki auðveldlega, við stöndum á meginreglunni um opinleika og gagnsæi, til að tjá þér reglur okkar um vinnslu persónuupplýsinga þinna, við notum löglegar og lögmætar aðferðir og skýra og sanngjarna tilgangi til að vinna persónuupplýsingar þínar. Sérstök athugasemd: Vinsamlegast vertu viss um að lesa og skilja þessa persónuverndarstefnu vandlega áður en þú notar vörur okkar eða þjónustu svo þú getir tekið viðeigandi ákvarðanir.

+

2. Þessi persónuverndarstefna útskýrir hvernig við söfnum, notum, geymum og deilum persónuupplýsingum þínum þegar þú notar Voitrans. Persónuupplýsingar vísa til alls konar upplýsinga sem skráðar eru með rafrænum eða öðrum hætti sem geta auðkennt tiltekinn einstakling eða endurspeglað athafnir tiltekins einstaklings einar og sér eða í samsetningu við aðrar upplýsingar. Voitrans virðir og verndar persónuleg friðhelgi allra notenda þjónustunnar. Nema annað sé tekið fram í þessari persónuverndarstefnu mun Voitrans ekki birta þessar upplýsingar opinberlega eða veita þriðju aðilum án fyrirframheimildar þinnar.

+

3. Þegar þú notar vöru eða þjónustu þriðja aðila í gegnum vöru eða þjónustu App Marketplace, lúta persónuupplýsingar þínar persónuverndarstefnu þriðja aðilans.

+

4. Voitrans persónuverndarstefna þessi verður uppfærð reglulega. Með því að samþykkja Voitrans þjónustunotkunarsamning og byrja að nota Voitrans, er litið svo á að þú hafir samþykkt alla þessa persónuverndarstefnu. Ef þú samþykkir ekki þessa persónuverndarstefnu, vinsamlegast notaðu ekki Voitrans hugbúnað og þjónustu.

+

5. Til þess að greina og mæla skilvirkni viðeigandi þjónustu munum við nota og birta persónuupplýsingar þínar í samræmi við ákvæði þessarar persónuverndarstefnu.

+ +

Þessi persónuverndarstefna mun hjálpa þér að skilja eftirfarandi:

+
    +
  • 1 Upplýsingarnar sem við söfnum
  • +
  • 2 Geymsla upplýsinga
  • +
  • 3 Upplýsingaöryggi
  • +
  • 4 Hvernig notum við upplýsingarnar sem við söfnum
  • +
  • 5 Deiling upplýsinga
  • +
  • 6 Hvernig stýrir þú persónuupplýsingum þínum
  • +
  • 7 Lýsing á heimildum forritsins
  • +
  • 8 Aðgangur að SDK þriðju aðila
  • +
  • 9 Vernd ólögráða
  • +
  • 10 Gildi og uppfærsla persónuverndarstefnu
  • +
  • 11 Hvernig á að hafa samband við okkur
  • +
+ +

1. Upplýsingarnar sem við söfnum

+

1. Notkun Voitrans í upphafi: við munum byrja að safna gögnum um notkun þína á forritinu

+

2. Voitrans getur fengið persónuupplýsingar um þig frá þriðju aðilum eða viðskiptafélögum með löglegum hætti

+

3. Til þess að veita þér betri vörur og þjónustu, veita þér netöryggi meðan á notkun stendur, viðhalda eðlilegum rekstri vara og hagræðingu og endurbótum, tilgangi upplýsingaþjónustu okkar, eftir að þú hefur smellt á til að samþykkja þessa persónuverndarstefnu, notum við upplýsingarnar sem við veitum. Meðan á þjónustunni stendur, auk persónuupplýsinga sem nauðsynlegar eru til að tryggja eðlilegan rekstur grunnvirkni forritsins í samræmi við landslög og reglugerðir, munum við safna öðrum persónuupplýsingum frá þér:

+

3.1 Til þess að bera kennsl á áhættunotendur, meta áreiðanleika notenda og koma í veg fyrir svindl á alhliða hátt, munum við lesa tækjaupplýsingar þínar í hvert skipti sem þú opnar hugbúnaðinn, þ.m.t.: (Gerð tækis, MAC-vistfang tækis, einkvæmt auðkenni tækis (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, o.fl.) MEID, raðnúmer, SSID og BSSID WIFI), lesa Bluetooth-vistfang, útgáfu stýrikerfis, heiti stýrikerfis, innskráningarreikningsupplýsingar og lykilorð notanda;

+

3.2 Þegar þú notar vörur okkar og þjónustu getum við safnað tilteknum upplýsingum gegnum netskrárupplýsingar eða tiltekin forrit og hugbúnað, slíkar upplýsingar geta verið: upplýsingar um notkun vara og þjónustu, eins og opnunartími forritsins þíns, lengd notkunar og vistfang heimsóttu síðunnar; Atburðarupplýsingar tækja, eins og hrun, kerfisvirknir o.fl., til að hagræða tæki þínu og bæta þjónustu okkar;

+

3.3 Til að bera kennsl á forrit þar sem búnaður er í hættu, veita öruggari virkniþjónustu. Þess vegna þurfum við að fá forrita-/forritauppsetningarlistann þinn í ferlinu til að tryggja eðlilegan rekstur vörunnar og vernda öryggi tækisins.

+

3.4 Til þess að greina notkun notenda á virkni forritsins og ákvarða áreiðanleika notenda, þurfum við að framkvæma tölfræðiúrvinnslu gagna og safna ofangreindum tækjaupplýsingum, þ.m.t. MAC-vistfangi tækis og einkvæmu auðkenni tækis, þegar tæki þitt er í notkun.

+

3.5 Merki tækis: netstöðu tækisins sem þú notar, upplýsingar um WIFI aðgangsstaði o.fl.

+

3.6 Staðsetningarupplýsingar: Við getum notað GPS, WiFi eða aðra tæknilega leið til að safna og vinna upplýsingar um staðsetningu þína til að uppfæra staðbundnar upplýsingar, veita efnisþjónustu o.fl.

+

Fyrir frekari upplýsingar, vinsamlegast smelltu á „Listi yfir söfnun persónuupplýsinga".

+ +

1. Fyrir viðkvæmari persónuupplýsingarnar í ofangreindum upplýsingum, eins og tækjaupplýsingar notenda (IMEI-númer, símtölustaða og auðkennisnúmer), GPS-staðsetningarupplýsingar, ljósmynda- og miðlunarefni og skráaaðgangsréttindi, munum við fá samþykki þitt áður en söfnun fer fram. Fyrir sumar óviðkvæmar upplýsingar getur söfnunin verið sjálfgefin og sjálfvirk. Þú getur takmarkað söfnun okkar á viðeigandi upplýsingum eða notkun tiltekinna heimilda frá farsímanum þínum með því að breyta stillingavalkostum farsímans þíns. Þegar þú takmarkar aðgang okkar að tiltekinni heimild, gætum við ekki getað haldið áfram að veita þér samsvarandi þjónustu og munum ekki lengur vinna samsvarandi upplýsingar þínar.

+

2. Við munum ekki safna kennitölu þinni, persónulegum líffræðilegum upplýsingum, bankareikningsnúmeri, eignaupplýsingum, lánaupplýsingum, heilsu- og lífeðlisfræðilegum upplýsingum og öðrum viðkvæmum persónuupplýsingum.

+

3. Um viðkvæmar heimildir: Til þess að nota virkni forritsins á réttan hátt þarf varan að fá eftirfarandi heimildir til að veita virknisþjónustu tengda eðlilegum vörum.

+ +

1 Fá les- og skrifheimildir geymslu

+

1 Hvernig á að fá: sprettigluggi, þegar heimildin er fengin, mun notandinn smella sjálfviljugur á samþykkja og forritið mun nota þessa heimild

+

2 Tilgangur og notkunarsvið: Notað til að skanna auðlindaskyndiminnisskrár og smámyndir í kerfinu, hlaða tónlistarefni og vörumyndir. Birt á forritsviðmótinu til að auðvelda notendum skoðun og aðgerðir

+ +

2 Fá heimild til forritauppsetningarlista

+

1 Hvernig á að fá: sprettigluggi, þegar heimildin er fengin, mun notandinn smella sjálfviljugur á samþykkja og forritið mun nota þessa heimild

+

2 Tilgangur og notkunarsvið: Þegar forritið þarf að nota auglýsingaþjónustu, þarf þriðji aðili auglýsingavettvangurinn, Youmon +SDK, að fá „heimildir fyrir uppsettan hugbúnaðarlista" tækisins til að koma í veg fyrir að notandanum sé ýtt á forrit sem notandinn á nú þegar og bæta notendaupplifunina.

+ +

3 Heimild til að fá stöðuupplýsingar tækis

+

Felur í sér: (Gerð tækis, MAC-vistfang tækis, einkvæmt auðkenni tækis (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, o.fl.) MEID, raðnúmer, SSID og BSSID WIFI, lesa Bluetooth-vistfang), útgáfu stýrikerfis, heiti stýrikerfis o.fl.;

+

1 Hvernig á að fá: sprettigluggi, þegar heimildin er fengin, mun notandinn smella sjálfviljugur á samþykkja og forritið mun nota þessa heimild

+

2 Tilgangur og notkunarsvið: Þegar forritið okkar er notað, til að greina notkun notenda á virkni forritsins og meta áreiðanleika notanda, munum við samstilla heimildina við SDK þriðju aðila, þ.m.t. Autonavi SDK, Youmon +SDK o.fl.

+ +

4 Aðgangur að staðsetningarupplýsingum

+

1 Hvernig á að fá: sprettigluggi, þegar heimildin er fengin, mun notandinn aðeins nota þessa heimild þegar hann smellir sjálfviljugur á samþykkja með forritinu.

+

2 Tilgangur og notkunarsvið: Þegar forritið þarf að nota GPS, WiFi eða aðra virkni, þarf varan að safna staðsetningu þinni og upplýsingum til að leita að Bluetooth tækjum á nálægum stöðum.

+

Athugasemd: Fyrir fleiri heimildir forritsins, sjá þetta skjal „Persónuverndarstefna" Kafli 7 „Lýsing á heimildum forritsins"

+ +

2. Geymsla upplýsinga

+

1. Hvar upplýsingarnar eru geymdar

+

Persónuupplýsingarnar sem við söfnum og búum til í Alþýðulýðveldinu Kína verða geymdar á þjónum okkar og/eða þjónum tengdra fyrirtækja okkar.

+

2. Geymsla og vinnsla upplýsinga

+

Við geymum persónuupplýsingar þínar eingöngu á meðan nauðsynlegt er til að ná tilgangi eða eins lengi og lög og reglugerðir krefjast. Eftir að þú hættir að nota þessa vöru munum við tafarlaust hætta að safna og vinna persónuupplýsingar þínar og forritsgögn. Þegar ofangreint tímabil er liðið munum við eyða eða gera ópersónugreinanlegar þær persónuupplýsingar sem þú hefur veitt okkur.

+

Auk nauðsynlegra virkni þarf Voitrans að sækja um samsvarandi kerfisheimildir. Þjónahlið skýsins geymir ekki persónuupplýsingar notenda og SDK þriðju aðila sem aðgangur er að verður nafnlaust og auðkennisgreint af þjónustuveitanda (Amu Statistics SDK, Autonavi SDK), þannig að ekki er hægt að rekja notendur. Upplýsingar sem geymdar eru í síma notandans verða sjálfkrafa eytt þegar notandinn fjarlægir Voitrans eða hreinsar skyndiminni.

+ +

3. Upplýsingaöryggi

+

1. Voitrans geymir og verndar persónuupplýsingar þínar með öryggisráðstöfunum og tækni á iðnaðarstaðli, eins og auðkenningu, dulkóðun gagna, takmörkuðum aðgangi að gagnaveri og öðrum öryggisráðstöfunum til að tryggja að upplýsingar þínar séu öruggar gegn birtingu, breytingu og eyðileggingu. Þrátt fyrir ofangreindar öryggisráðstafanir, vinsamlegast athugaðu að engin öryggisráðstöfun getur verið 100% örugg.

+

2. Þegar þú notar þjónustu sem Voitrans veitir, vinsamlegast verndaðu persónuupplýsingar þínar. Ef þú uppgötvar að persónuupplýsingum þínum hefur verið stefnt í hættu, vinsamlegast hafðu strax samband við okkur svo við getum gripið til viðeigandi ráðstafana.

+ +

4. Hvernig notum við upplýsingarnar sem við söfnum

+

1. Þegar viðskiptaaðgerðir forritsins eru framkvæmdar getum við notað persónuupplýsingar þínar til að tryggja heilleika og öryggi vara og þjónustu sem við veitum þér;

+

2. Við munum skilja notkunarvenjur þínar í gegnum safnaðar upplýsingar, og með hjálp gagnagreiningar, bera kennsl á samþykki þjónustu, notkunarvenjur þínar o.fl., til að prófa og búa til nýjar vörur, virkni og þjónustu, bæta þjónustustig og hjálpa okkur að bæta núverandi þjónustu og þróa nýja þjónustu;

+

3. Við getum notað persónuupplýsingar þínar fyrir viðskiptavinakannanir um vörur og þjónustu, til að senda tilkynningar um vörur og þjónustu, og til viðskiptakynninga;

+

4. Við getum notað upplýsingar þínar til innri greiningar og rannsókna tengdum forritinu;

+ +

5. Deiling upplýsinga

+

Eins og er munum við ekki deila eða flytja persónuupplýsingar þínar til þriðju aðila utan fyrirtækisins af okkar frumkvæði. Ef önnur deiling eða flutningur á persónuupplýsingum þínum á sér stað munum við staðfesta beint eða staðfesta að þriðji aðili hafi fengið skýlaust samþykki þitt fyrir ofangreindri hegðun.

+

Við munum ekki birta opinberlega persónuupplýsingarnar sem við söfnum. Ef nauðsynlegt er að birta þær opinberlega munum við upplýsa þig um tilgang opinberrar birtingar, tegund upplýsinga sem birtar eru og viðkvæmar upplýsingar sem gætu átt í hlut og fá skýlaust samþykki þitt.

+

Þar sem viðskipti okkar halda áfram að þróast getum við tekið þátt í samruna, yfirtökum, eignaflutningum og öðrum viðskiptum og munum upplýsa þig um viðeigandi aðstæður, í samræmi við lög og reglugerðir og ekki minna en staðlana sem krafist er í þessari leiðbeiningum til að halda áfram að vernda persónuupplýsingar þínar eða krefjast þess að nýr stjórnandi haldi áfram að vernda persónuupplýsingar þínar.

+

Að auki, samkvæmt viðeigandi lögum og reglugerðum og innlendum stöðlum, getum við deilt, flutt og birt opinberlega persónuupplýsingar án fyrirframheimildar og samþykkis persónuupplýsingaeigandans við eftirfarandi aðstæður:

+
    +
  • 1 Beint tengt þjóðaröryggi og varnarmálum;
  • +
  • 2 Beint tengt almannaöryggi, lýðheilsu eða mikilvægum almannahagsmunum;
  • +
  • 3 Beint tengt sakamálarannsókn, ákæru, dómi og fullnustu dóma;
  • +
  • 4 Til að vernda líf, eignir og aðra mikilvæga lögmæta hagsmuni persónuupplýsingaeigandans eða annarra einstaklinga, en erfitt er að fá samþykki viðkomandi;
  • +
  • 5 Persónuupplýsingar sem persónuupplýsingaeigandinn hefur birt opinberlega;
  • +
  • 6 Söfnun persónuupplýsinga úr löglega opinberum upplýsingum, eins og lögmætum fréttaskýrslum, opinberri birtingu upplýsinga ríkisins og öðrum rásum.
  • +
+ +

6. Hvernig stýrir þú persónuupplýsingum þínum

+

Í samræmi við viðeigandi lög, reglugerðir og staðla Kína, sem og algengar venjur annarra landa og svæða, tryggjum við að þú getur beitt eftirfarandi réttindum varðandi persónuupplýsingar þínar:

+ +

1. Leiðréttu persónuupplýsingar þínar

+

Ef þú uppgötvar villu í persónuupplýsingum þínum sem við vinnum, hefur þú rétt á að leiðrétta eða uppfæra rangar eða ófullkomnar upplýsingar. Ef þú getur ekki unnið sjálfstætt í reikningsmiðstöðinni, getur þú sent tölvupóst á saitong.voitrans@gmail.com til að hafa samband við okkur

+ +

2. Eyddu persónuupplýsingum þínum

+

Við eftirfarandi aðstæður getur þú sent okkur beiðni um að eyða persónuupplýsingum þínum:

+
    +
  • Ef við vinnum persónuupplýsingar í bága við lög og reglugerðir;
  • +
  • Ef við söfnum og notum persónuupplýsingar þínar án samþykkis þíns;
  • +
  • Ef vinnsla okkar á persónuupplýsingum brýtur gegn samningi okkar við þig;
  • +
  • Ef þú notar ekki lengur vörur okkar eða þjónustu;
  • +
  • Ef við veitum þér ekki lengur vörur eða þjónustu.
  • +
+

Hafðu samband við okkur. Við munum afgreiða beiðni þína á saitong.voitrans@gmail.com. Við munum senda þér svar innan 30 virkra daga frá móttöku

+ +

3. Breyttu umfangi samþykkis þíns

+

Þú getur haft samband við okkur með tölvupósti á saitong.voitrans@gmail.com. Samkvæmt beiðni þinni munum við ekki lengur safna, nota eða birta persónuupplýsingar þínar. Vinsamlegast athugaðu að afturköllun samþykkis þíns eða eyðing persónuupplýsinga þinna getur haft áhrif á notkun þína á einhverri þjónustu okkar.

+ +

4 Aðgangur og afrit persónuupplýsinga

+

Þú getur, í samræmi við ákvæði viðeigandi laga, veitt IMEI (raðnúmer síma) eða OAID eða Android ID eftir reikningsupplýsingar og aðrar upplýsingar, sótt um aðgang að og afrit af persónuupplýsingum þínum hjá okkur, þú getur sent tölvupóst á 3514406195@qq.com til að hafa samband við okkur.

+ +

5. Til að bregðast við ofangreindri beiðni þinni

+

Af öryggisástæðum gætir þú þurft að leggja fram skriflega beiðni eða á annan hátt sanna hver þú ert. Við gætum beðið þig um að staðfesta auðkenni þitt áður en beiðni þín er afgreidd. Við munum bregðast við og afgreiða sanngjarna beiðni þína tímanlega. Við gætum hafnað beiðnum sem eru óþarflega endurteknar, krefjast of mikillar tækni (til dæmis þróun nýrra kerfa eða grundvallarbreytinga á núverandi venjum), valda hættu á lögmætum hagsmunum annarra eða eru mjög óhagkvæmar.

+

Við eftirfarandi aðstæður, samkvæmt kröfum laga og reglugerða, munum við ekki geta brugðist við beiðni þinni:

+
    +
  • Tengt þjóðaröryggi og varnarmálum;
  • +
  • Í tengslum við sakamálarannsókn, ákæru og dóm;
  • +
  • Fullnægjandi vísbendingar eru um að þú hafir huglæga illgirni eða misnotkun réttinda;
  • +
  • Að bregðast við beiðni þinni mun valda alvarlegum skaða á lögmætum réttindum og hagsmunum þínum eða annarra einstaklinga og stofnana.
  • +
+ +

6. Afskráning reiknings

+

Notandi getur framkvæmt [afskráningu reiknings] í forritinu. Skref:

+
    +
  1. Farðu á síðuna [Mitt]
  2. +
  3. Smelltu á hnappinn [Stillingar] efst til hægri
  4. +
  5. Smelltu á [Hætta við reikning] til að staðfesta
  6. +
+

Eftir útskráningu eru upplýsingar um notandareikning hreinsaðar

+ +

7. Lýsing á heimildum forritsins

+

Til þess að veita betri vörur og þjónustu, þegar þú notar hugbúnaðinn, munum við sækja um eftirfarandi réttindi; þegar þú ferð á heimasíðuna eða notar virknina mun hún biðja um heimild. Ef þú hafnar munu sumar samsvarandi virkni ekki virka eðlilega. Sérstakir tilgangar og áminningar um heimildir eru lýstar í smáatriðum hér á eftir:

+ +

1 Staðsetningarheimildir:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

nota WiFi eða farsímagrunnstöðvar til að fá breiddar- og lengdarstaðsetningarupplýsingar notandans

+

Þegar þú notar Voitrans munum við leita að meðfylgjandi Bluetooth tæki þínu á grundvelli landfræðilegrar staðsetningar þinnar. Á sama tíma, til að veita stöðugri þjónustu, hagræða vörum og bæta upplifun, munum við deila ofangreindum upplýsingum með þremur SDK, eins og Youmon og Autonavi, til að fá rekstrargögn og virkniþjónustu Voitrans.

+

Áminningaraðferð: Kvaðning sem gefur til kynna heimild til að ræsa forritið í fyrsta skipti birtist, sem krefst staðfestingar notandans á samþykki. Notkunarsamningur og persónuverndarstefna.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Þessi heimild er nauðsynleg þegar þú opnar forrit til að framkvæma forritastjórnunarvirkni.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

3 Netheimildir:

+

android.permission.INTERNET

+

Þegar þú notar þessar heimildir þarf fyrir upplýsingaþjónustu og útgáfuuppfærsluþjónustu Voitrans, og til að bæta notendaupplifunina og hagræða þjónustugetu munu SDK þriðju aðila eins og Friends einnig nota þessar heimildir.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

4 Fá heimildir netstöðu:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Notað til að komast að því hvort núverandi nettenging er gild, ákvarða hvort núverandi 4G umhverfi er, og hvort minnta eigi á breytingar á netumhverfi, sem hefur þannig áhrif á hleðslu upplýsingaefnis. Þessi heimild er sótt um þegar þú notar Voitrans.

+

Breytingar á netstöðu hafa áhrif á upphleðslu og hleðslu gagna. Þess vegna verður aðgangsheimild netstöðu deilt með vinum + og öðrum vettvangi.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

5 Fá heimildir verkefnalista:

+

android.permission.GET_TASKS

+

Þessi heimild er notuð til að fá forritalista fyrir hugbúnaðarstjórnunarvirkni. Þegar þú notar hugbúnaðarstjórnunarvirkni þarftu að lesa forrit sem sett hafa verið upp á farsímanum.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

6 Fá MAC-vistfangsheimild

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Þegar þú notar Voitrans mun forritið þurfa að fá MAC-vistfangsheimildir:

+

Þegar forrit þarf að tilkynna markviðskiptagögn, þurfa þriðju aðila vettvangar eins og Youmon +SDK að nota MAC.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

7 Fá heimild til hljóðupptöku

+

android.permission.RECORD_AUDIO

+

Þegar þú notar raddinnsetningarvirkni Voitrans þarftu að nota heimild til hljóðupptöku og notar aðallega raddinnsetninguna fyrir þýðingar og aðrar tengdar virkni.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna, notandinn fær kraftmikið sprettiglugga þegar þess er krafist.

+ +

8 Fá SSID-heimild fyrir WIFI

+

Þegar þessi heimild er notuð les forritið SSID-heimild fyrir WIFI:

+

Notkunarsvið og tilgangur: Þegar forritið þarf að nota gagnagreiningarþjónustu, þurfa þriðju aðila vettvangar eins og +SDK að lesa „WIFI SSID-heimild" tækisins til að veita notendum nákvæmari og skilvirkari virkniþjónustu.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

9 Fá Bluetooth-aðgang

+

Þegar þessi heimild er notuð les forritið Bluetooth-heimildina:

+

Notkunarsvið og tilgangur: Bluetooth tæki til að leita og stilla aukabúnað, eins og Bluetooth heyrnartól, Bluetooth úr o.fl. Auðvelt fyrir notendur að stjórna

+

Áminningaraðferð: Kvaðning sem gefur til kynna heimild til að ræsa forritið í fyrsta skipti birtist, sem krefst staðfestingar notandans á samþykki. Notkunarsamningur og persónuverndarstefna.

+ +

10 Fá BSSID-heimild fyrir WiFi

+

Þegar forritið þarf að greina og bera kennsl á notandann til að veita virkniþjónustu og gagnatölfræði mun það lesa „WiFi BSSID"-heimild tækisins fyrir:

+

Notkunarsvið og tilgangur: 1 Vettvangar þriðju aðila: eins og Youmeng SDK, Bugly SDK, Autonavi SDK

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

11 Fá forritauppsetningarheimild

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Hugbúnaðurinn mun nota forritauppsetningarheimildina, sem er aðallega notuð til að leyfa notendum að setja upp nýja útgáfu og upplifa nýja virkni þegar ný útgáfa er til staðar.

+

Áminningaraðferð: Notkunarsamningur og persónuverndarstefna.

+ +

12 Fá heimildir myndavélar

+

android.permission.CAMERA

+

Voitrans notar myndavélarheimildir til að skanna QR-kóða og tengja Bluetooth tæki eins og Bluetooth heyrnartól og úr.

+

Áminningaraðferð: Kvaðning sem gefur til kynna heimild til að ræsa forritið í fyrsta skipti birtist, sem krefst staðfestingar notandans á samþykki. Notkunarsamningur og persónuverndarstefna.

+ +

Sérstök athugasemd:

+

1 Samþætting forritsins innan bandalagsaðila SDK, Scott kort SDK í samþykki notandans til að leyfa eftir notkun, forritið í bakgrunni/forgrunni fyrir ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI og aðrar persónuupplýsingar;

+

Athugasemdir: Meira vinsamlegast sjá eftirfarandi SDK-tengt efni og heimildir [VIII. Aðgangur að SDK-lista þriðju aðila]

+ +

8. Aðgangur að SDK þriðju aðila

+

1 Til þess að tryggja stöðugan rekstur og virkni biðlarans okkar, svo þú getir notað og notið fleiri þjónustu og virkni, mun forritið okkar fella inn hugbúnaðarþróunarpakka (SDK) eða önnur svipuð forrit frá þriðju aðilum, þessir þriðju aðilar munu safna og vinna viðeigandi upplýsingar í samræmi við eigin persónuverndarstefnu til að veita virkni og auglýsingaþjónustu á eðlilegan hátt. Þú getur kynnt þér reglur um söfnun og vinnslu upplýsinga þriðja aðila í eftirfarandi hluta. Við munum framkvæma strangar öryggisprófanir á þróunarpökkum (SDK) fyrir samstarfsaðila til að fá upplýsingar, til að vernda sanngjarna notkun og öryggi persónuupplýsinga þinna. Vinsamlegast athugaðu að SDK þriðju aðila kunna að breyta tegundum gagnavinnslu vegna útgáfuuppfærslna þeirra. Vinsamlegast vísa til persónuverndarstefna sem birtar eru af SDK þriðju aðila. Sjá upplýsingarnar hér að neðan eða smelltu til að skoða SDK-lista þriðju aðila.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Upplýsingar sem fengnar eru: Tækjanúmer, IP-vistfang, hugbúnaðarupplýsingar tækis, auðkenniskóði tækis (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kort IMSI-upplýsingar, IP, MAC-vistfang), auðkenni tækis, svæði, tengdar forritaupplýsingar tækis og aðrar tengdar skrárupplýsingar þjónustu

+

Tilgangur notkunar: WeChat innskráning og deiling

+

Þróunaraðili: Shenzhen Tencent Computer Systems Company Limited

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Upplýsingar sem fengnar eru: Heiti forrits, útgáfunúmer forrits, vörumerki og gerð tækis, stýrikerfi, upplýsingar um fjarskiptafyrirtæki, skjáupplausn, nemaupplýsingar (vigur, hröðun, þrýstingur, stefna, jarðsegull, gýróskóp, hiti, ljósnemi, NMEA-merki), upplýsingar um merkjastyrk tækis

+

Tilgangur notkunar: Leiðsögn með Amap

+

Þróunaraðili: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Upplýsingar sem fengnar eru: Heiti forrits, útgáfa forrits, vörumerki og gerð tækis, stýrikerfi, netupplýsingar, merkjastyrkur tækis o.fl.

+

Tilgangur notkunar: Kortabirting og samskipti

+

Þróunaraðili: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Upplýsingar sem fengnar eru: Staðsetningarupplýsingar (GPS, Wi-Fi, grunnstöðvar), tækjaupplýsingar, netupplýsingar o.fl.

+

Tilgangur notkunar: Veita staðsetningarþjónustu

+

Þróunaraðili: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Upplýsingar sem fengnar eru: Heiti forrits, útgáfa forrits, tækjaupplýsingar, netupplýsingar o.fl.

+

Tilgangur notkunar: Kortaverkfæri og endurgerðarhagræðing

+

Þróunaraðili: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Upplýsingar sem fengnar eru: Auðkenni tækja, grunnupplýsingar um tæki, listi yfir uppsettan hugbúnað og netupplýsingar (sjá opinbera persónuverndarstefnu fyrir nánari upplýsingar)

+

Tilgangur notkunar: Alipay reikningsinnskráning og greiðslukall

+

Þróunaraðili: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Upplýsingar sem fengnar eru: SDK/API útgáfa, vettvangur, tímastimpill, auðkenni forrits, útgáfa forrits, framleiðandi tækis, útgáfa stýrikerfis, svæðisstillingar, tímabelti, netstaða (Wi-Fi, o.fl.), netskráningar, hrun og notkunargögn, IP-vistfang o.fl. (sjá opinbera persónuverndarstefnu fyrir nánari upplýsingar)

+

Tilgangur notkunar: Gæðaeftirlit og gagnatilkynningarþjónusta forritsins

+

Þróunaraðili: Shenzhen Tencent Computer Systems Company Limited

+

Söfnunaraðferð: SDK sjálfsöfnun

+

Tengill á persónuverndarstefnu: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Vernd ólögráða

+

Meðal notenda vara okkar og þjónustu kunna að vera ólögráða einstaklingar undir 18 ára aldri. Ólögráða notendur ættu að leita ráðgjafar foreldra sinna eða forráðamanna varðandi þessa persónuverndarstefnu áður en þeir nota vörur okkar, og nota þjónustu okkar eða veita okkur upplýsingar sínar eftir að hafa fengið samþykki foreldra eða forráðamanna og undir leiðsögn þeirra. Forráðamenn ólögráða einstaklinga sem hafa spurningar geta haft samband við okkur í gegnum samskiptaupplýsingarnar í þessari persónuverndarstefnu.

+

Ef þú samþykkir ekki söfnun fyrrgreindra upplýsinga af hálfu ofangreindra þriðju aðila þjónustuveitenda, vinsamlegast hættu strax notkun hugbúnaðarins. Meðan á notkun þinni á hugbúnaðinum stendur munu þessir þriðju aðilar safna og vinna viðeigandi upplýsingar í samræmi við eigin persónuverndarstefnu til að veita tiltekna virkni, auglýsingar og aðra þjónustu. Ef upplýsingar leka vegna söfnunar fyrrgreindra upplýsinga af hálfu viðkomandi þriðja aðila þjónustuveitanda ber viðkomandi þriðji aðili þjónustuveitandi samsvarandi lagalega ábyrgð.

+ +

10. Gildi og uppfærsla persónuverndarstefnu

+

1. Þessi persónuverndarstefna gildir frá birtingardegi.

+

2. Eftir því sem viðskipti okkar þróast og breytast getur persónuverndarstefna okkar breyst. Við áskiljum okkur rétt til að breyta persónuverndarstefnu okkar hvenær sem er, svo vinsamlegast athugaðu reglulega. Ef við gerum breytingar á persónuverndarstefnu okkar munum við birta þessar uppfærslur á vefsíðu okkar, í forritum og þar sem við teljum viðeigandi til að halda þér upplýstum. Ef persónuverndarstefnan er uppfærð tekur hún gildi frá uppfærsludegi. Áframhaldandi notkun þín á vörum okkar eða þjónustu þýðir að þú samþykkir breytta persónuverndarstefnu okkar.

+ +

11. Hvernig á að hafa samband við okkur

+

Saitong Industries Inc stofnað þann 22. nóvember 2024, skráð heimilisfang: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ef þú vilt vita meira um fyrirtæki okkar og vettvang geturðu haft samband við okkur í gegnum samskiptaupplýsingarnar sem veittar eru í þessari stefnu (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/is/user_agreement.html b/doc/is/user_agreement.html new file mode 100644 index 000000000..c790f1134 --- /dev/null +++ b/doc/is/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans notkunarsamningur + + + +
+
Íslenska
+ +

Voitrans notkunarsamningur

+ +

Þessir notkunarskilmálar segja þér hvernig á að fá aðgang að og nota Voitrans forritið og netþjónustu („þjónustuna"). Saitong Industries Inc. (hér eftir nefnt „Saitong") minnir hér með notendur á að lesa vandlega og skilja til fulls þennan notkunarsamning (hér eftir nefndur „samningurinn"). Notendur ættu að lesa vandlega og skilja til fulls skilmála þessa samnings. Vinsamlegast lestu vandlega og veldu hvort þú samþykkir eða hafnar þessum samningi. Notkun þín á Voitrans APP (hér eftir nefnt „forritið" eða „hugbúnaðurinn") verður talin samþykki á þessum samningi og þú samþykkir að vera bundinn af skilmálum hans. Ef þú samþykkir ekki þennan samning skaltu ekki nota forritið.

+

Saitong áskilur sér rétt til að breyta þessum samningi og uppfærðir skilmálar samningsins verða birtir í þessu forriti, gildandi frá birtingardegi.

+ +

1. Almennar reglur

+

1.1 Þetta forrit er hugbúnaður sem Saitong veitir til tengingar við heyrnartólsvörur sem Saitong og samstarfsfyrirtæki þess gefa út. Eignaréttur og rekstrarréttindi hugbúnaðarins og tengdrar þjónustu eru alfarið í eigu Saitong.

+

1.2 Þessi samningur er samningur milli þín (hér eftir nefndur „notandinn") og fyrirtækisins og samstarfsaðila þess (hér eftir nefndir „samstarfsaðilar") varðandi notkun notandans á forritinu og tengdri þjónustu.

+

1.3 Hugbúnaðurinn og þjónustan fela í sér:

+

1.3.1 Hugbúnaðurinn veitir Voitrans notendum tengingu og tengingu við Voitrans, stillingarstjórnun og aðra hugbúnaðarþjónustu, háð raunverulegri hugbúnaðarþjónustu sem forritið veitir.

+

1.3.2 Uppfærslur, endurbætur og önnur þjónusta hugbúnaðarins.

+ +

2. Umfang hugbúnaðarleyfis

+

2.1 Við veitum notandanum persónulegt, óframseljanlegt, ekki undirleyfisveitanlegt og óeinkaleyfi á hugbúnaðinum.

+

2.2 Notendur geta sett upp, notað, birt og keyrt hugbúnaðinn á einu farsímatæki í óviðskiptalegum tilgangi. Hins vegar má notandinn ekki setja upp, nota eða keyra hugbúnaðinn í viðskiptalegum tilgangi, afrita, breyta, aðlaga, tengja eða keyra hugbúnaðinn eða gögn sem gefin eru út í minni hvaða útstöðvartækis sem er meðan á rekstri hugbúnaðarins stendur eða samskiptagögn milli biðlara og þjóns meðan á rekstri hugbúnaðarins stendur, né búa til neinar afleiddar vörur. Þetta felur í sér, en takmarkast ekki við, notkun viðbóta, viðbótarforrita eða óheimilaðra þriðju aðila verkfæra/þjónustu til að fá aðgang að hugbúnaðinum og tengdum kerfum. Fyrir viðskiptalega sölu, afritun og dreifingu, eins og foruppsetning hugbúnaðar og samsetningu, þarf að fá skriflegt leyfi og heimild.

+

2.3 Notandinn skal ekki setja hugbúnaðinn upp á öðrum útstöðvartækjum án skýlauss leyfis höfundarins, þ.m.t. en ekki takmarkað við sjónvörp, stafræna mótakara, leikjatölvur og önnur tæki.

+

2.4 Nema samkvæmt beinu leyfi þessa samnings eru engin önnur réttindi veitt notandanum og notandinn skal fá skriflegt samþykki til að nýta önnur réttindi.

+ +

3. Uppfærsla hugbúnaðar

+

3.1 Notandinn verður að velja hugbúnaðarútgáfu sem hentar uppsetningarútstöðinni. Annars ber notandinn einn ábyrgð á hugbúnaðarvandamálum, tækjavandamálum eða skemmdum af völdum hugbúnaðarútgáfu sem hentar ekki tækjagerðinni.

+

3.2 Til þess að bæta notendaupplifunina og þjónustuinnihaldið á Saitong rétt á að veita þér skiptiútgáfur, breytingar og uppfærslur á hugbúnaðinum öðru hvoru. Virkni „uppfærsluábendinga" er sjálfgefið virkjuð fyrir notendur. Eftir útgáfu nýrrar útgáfu hugbúnaðarins tryggir Saitong ekki áframhaldandi framboð á eldri útgáfu hugbúnaðarins.

+ +

4. Notkunarlýsing

+

4.1 Notendur mega nota hugbúnaðinn og þjónustuna í samræmi við þennan samning á grundvelli þess að farið sé að lögum og þessum samningi, og notendur skulu ekki framkvæma eftirfarandi aðgerðir:

+

4.1.1 Eyða öllum höfundarréttarupplýsingum á hugbúnaðinum og öðrum afritum, og breyta, eyða eða sniðganga tæknilegar ráðstafanir sem settar eru upp af hugbúnaðinum til að vernda hugverkaréttindi.

+

4.1.2 Öfugverkfræði hugbúnaðarins, svo sem sundurliðun, afkóðun, eða aðrar tilraunir til að fá frumkóða hugbúnaðarins.

+

4.1.3 Með því að breyta eða falsa leiðbeiningar og gögn í rekstri hugbúnaðarins, bæta við, eyða eða breyta virkni eða rekstraráhrifum hugbúnaðarins, eða hugbúnað eða aðferðir sem á að nota í ofangreindum tilgangi til að reka eða dreifa til almennings, óháð því hvort þessar aðgerðir eru í viðskiptalegum tilgangi.

+

4.1.4 Nota hugbúnaðinn fyrir hvers kyns hegðun sem stofnar netöryggi í hættu, þ.m.t. en ekki takmarkað við: nota óheimil gögn eða fá aðgang að óheimiluðum þjónum/reikningum; fá aðgang að opinberum netum eða öðrum stýrikerfum án leyfis og eyða, breyta eða bæta við vistuðum upplýsingum; óheimilaðar tilraunir til að kanna, skanna eða prófa veikleika kerfis eða nets hugbúnaðarins eða aðrar aðgerðir sem grafa undan netöryggi; tilraunir til að trufla eða eyðileggja eðlilega starfsemi hugbúnaðarkerfisins eða vefsíðunnar, dreifa illgjarn forritum eða vírusum viljandi, og aðrar aðgerðir sem trufla eðlilega netupplýsingaþjónustu; falsa TCP/IP pakkheiti eða hluta þeirra.

+

4.1.6 Án skriflegs samþykkis fyrirtækisins framkvæmir notandinn einhliða eftirfarandi aðgerðir á hugbúnaðinum og upplýsingum í honum, þ.m.t. en ekki takmarkað við: notkun, leigu, útlán, afritun, breytingu, tengingu, endurprentun, samantekt, útgáfu, birting, stofnun spegilsíðna, þróun afleiddra vara, verka, þjónustu, viðbóta, samhæfni, samtengingar o.fl., með aðstoð hugbúnaðarins.

+

4.1.7 Nota hugbúnaðinn til að birta, senda, dreifa og geyma efni sem brýtur í bága við staðbundin lög.

+

4.1.8 Nota hugbúnaðinn til að birta, senda, dreifa og geyma efni sem brýtur gegn hugverkaréttindum, viðskiptaleyndarmálum og öðrum lögmætum réttindum annarra.

+

4.1.9 Nota þennan hugbúnað til að birta, senda og dreifa auglýsingaupplýsingum og ruslpósti í miklu magni.

+

4.1.10 Nota hugbúnaðinn og aðra þjónustu á ólögmætan hátt, í ólögmætum tilgangi, eða á nokkurn hátt sem er ósamrýmanlegur leyfðri notkun þessa samnings.

+

4.2 Lýsing á upplýsingabirtingu

+

4.2.1 Ef þú notar hugbúnaðinn til að birta upplýsingaefni (ef einhvert er), ættir þú að tryggja að þú eigir hugverkaréttindi þess upplýsingaefnis sem þú hleður upp eða hafir fengið löglegt leyfi, og engin hegðun þín við notkun hugbúnaðarins og þjónustunnar brýtur gegn lögmætum réttindum og hagsmunum neins þriðja aðila.

+

4.2.2 Þegar hugbúnaðurinn er notaður skal notandinn ekki nota hugbúnaðinn til eftirfarandi athafna, þ.m.t. en ekki takmarkað við:

+

4.2.2.1 Búa til, afrita, birta, dreifa og geyma efni sem brýtur í bága við staðbundin lög og reglugerðir.

+

4.2.2.2 Birta, senda, dreifa og geyma efni sem brýtur gegn lögmætum réttindum annarra eins og mannorði, mynd, hugverkaréttindum og viðskiptaleyndarmálum.

+

4.2.2.3 Búa til staðreyndir, leyna sannleikanum til að villa um fyrir eða blekkja aðra.

+

4.2.2.4 Birta, senda og dreifa auglýsingaupplýsingum og ruslupplýsingum.

+

4.2.2.5 Taka þátt í öðrum athöfnum sem brjóta í bága við staðbundin lög og reglugerðir.

+

4.2.3 Þú mátt ekki stunda neina viðskiptastarfsemi eins og auglýsingar og vörusölu í hugbúnaðinum án leyfis fyrirtækisins.

+

4.3 Notandinn skilur og samþykkir að:

+

4.3.1 Saitong mun ákveða hvort notandinn sé grunaður um að brjóta ofangreindar notkunarlýsingar, og samkvæmt niðurstöðum ákvörðunarinnar fresta eða segja upp leyfi þínu til að nota eða grípa til annarra takmarkandi ráðstafana sem hægt er að grípa til í samræmi við þennan samning.

+

4.3.2 Upplýsingum sem notandinn birtir með leyfisskyldum hugbúnaði sem grunur leikur á að séu ólöglegar eða brjóti gegn lögmætum réttindum annarra eða brjóti í bága við þennan samning verður strax eytt.

+

4.3.3 Ef brot notandans á ofangreindum notkunarreglum veldur þriðju aðilum skaða þarft þú að bera lagalega ábyrgð sjálfstætt í þínu eigin nafni og tryggja að hugmyndin sé laus við tap eða aukinn kostnað.

+

4.3.4 Ef notandinn brýtur viðeigandi lagaákvæði eða samninga og veldur Saitong tapi, eða er háður kröfum þriðja aðila, eða verður fyrir refsingu stjórnvalds, skal notandinn bæta Saitong tapið og/eða kostnaðinn, þ.m.t. sanngjarnt lögmannsþóknun, rannsóknar- og sönnunarkostnað.

+ +

5. Lýsing á þjónustu þriðja aðila

+

5.1 Notandinn skilur og samþykkir að hugbúnaðarkerfið getur innihaldið þjónustu sem veitt er af tengdum fyrirtækjum eða þriðju aðilum, og að fyrirtækið veitir aðeins viðeigandi virkniblokkir í kerfinu til þæginda notenda og veitir aðgang að þjónustu þriðja aðila.

+

5.2 Hvort sem þjónusta þriðja aðila er forstillt í hugbúnaðarkerfisþjónustunni, eða er opnuð eða pöntuð af notendum sjálfum, skilur og samþykkir notandinn að Saitong gefur engar beinar eða óbeinar tryggingar eða ábyrgðir á lögmæti og virkni þjónustuveitenda þriðja aðila eða notenda, sem og lögmæti, nákvæmni, virkni og öryggi þjónustu þriðja aðila.

+

5.3 Fyrirtækið hefur ekki eftirlit með, stjórnar né veitir neina ábyrgð eða tryggingu af neinu tagi fyrir, né ber neina ábyrgð á, þjónustu þriðja aðila.

+

5.4 Hvers kyns ágreiningur eða deila milli notandans og þjónustuveitanda þriðja aðila skal leystur af notandanum og þriðja aðilanum í samræmi við viðskiptaferli og viðskiptareglur þjónustuveitanda þriðja aðila, og fyrirtækið ber enga ábyrgð.

+ +

6. Persónuverndarstefna og vernd persónuupplýsinga

+

6.1 Saitong skuldbindur sig til að vernda friðhelgi notenda í samræmi við persónuverndarstefnuna, vinsamlegast sjá: Voitrans persónuverndarstefna.

+ +

7. Ábyrgð vegna samningsbrots

+

7.1 Saitong hefur rétt til að meta hvort hegðun notandans sé í samræmi við ákvæði þessa samnings. Ef talið er að notandinn hafi brotið viðeigandi lög og reglugerðir eða ákvæði þessa samnings og tengdra reglna, hefur Saitong rétt til, í samræmi við alvarleika brotsins, að eyða ólöglegum upplýsingum, takmarka, fresta, segja upp notkun notandans á hugbúnaðarþjónustunni, krefja notandann um lagalega ábyrgð og grípa til annarra ráðstafana sem Saitong telur viðeigandi. Ef við verðum fyrir einhverju tapi (þ.m.t. en ekki takmarkað við kröfur frá þriðja aðila eða refsingar frá stjórnsýslustofnunum) ber notandinn fulla ábyrgð.

+ +

8. Þjónustuáhætta og fyrirvari

+

8.1 Við viljum veita þjónustustuðning með núverandi tækni. Saitong tryggir ekki að hugbúnaðarþjónustan starfi án truflana eða villna, að öllum göllum hugbúnaðarþjónustunnar verði leiðrétt, eða að hugbúnaðarþjónustan uppfylli allar kröfur notenda. Saitong ber enga ábyrgð á afleiðingunum.

+

8.2 Allt tap sem notandinn verður fyrir vegna þriðju aðila eins og truflunar á fjarskiptalínum, tæknilegra vandamála, net-, tölvu- og útstöðvartækjabilana, óstöðugleika kerfis og annarra yfirburðaaflsorsaka er ekki á ábyrgð okkar.

+

8.3 Saitong tryggir ekki lögmæti, áreiðanleika, nákvæmni og virkni upplýsingaefnis sem fengið er í gegnum hugbúnaðinn (þ.m.t. en ekki takmarkað við þjónustuefni þriðja aðila), og Saitong ber enga ábyrgð á niðurstöðum hvers kyns hegðunar sem notendur grípa til á grundvelli fyrirspurna og skoðunar.

+

8.4 Hugbúnaðurinn, eins og flest nethugbúnaður, er háður mismun á þáttum þ.m.t. en ekki takmarkað við ástæður notenda, gæði netþjónustu, félagslegt umhverfi og aðra þætti, og getur orðið fyrir ýmsum öryggisvandamálum, eins og að aðrir noti notandaupplýsingar sem leiðir til áreitis í raunveruleikanum; annar hugbúnaður sem notendur sækja og setja upp eða aðrar vefsíður sem notendur heimsækja innihalda vírusa eins og „trójuhesta" sem ógna öryggi upplýsinga og gagna í útstöðvartæki notandans og hafa þannig áhrif á eðlilega notkun hugbúnaðarins. Notendur ættu að styrkja meðvitund um upplýsingaöryggi og vernd notendagagna og gæta þess að styrkja lykilorðsvernd til að koma í veg fyrir tap og áreiti.

+

8.5 Þegar notendur nota hugbúnaðinn eða krefjast þess að Saitong veiti sérstaka þjónustu getur hugbúnaðurinn kallað á kerfi eða hugbúnað þriðja aðila til að styðja notkun eða aðgang notandans, og niðurstöður notkunar eða aðgangs eru veittar af þriðja aðila. Auk þess að fylgja viðeigandi reglum þessa samnings skulu notendur einnig fylgja samningum og viðeigandi reglum þriðja aðila. Notendur verða að skilja og samþykkja að þegar þjónusta þriðja aðila er notuð geta þriðju aðilar lesið notendagögn, og Saitong tryggir ekki öryggi, nákvæmni, virkni og aðra óvissa áhættu niðurstaðna sem náðst hafa með stuðningi kerfa eða hugbúnaðar þriðja aðila, notendur ættu að beita varkárni í mati sínu, og Saitong ber enga ábyrgð á neinum deilum og skaða sem af þessu hlýst.

+

8.6 Til að tryggja sjálfstæði fyrirtækisins í viðskiptaþróun og aðlögun getur fyrirtækið breytt eða truflað þjónustuna hvenær sem er eftir að hafa tilkynnt notandanum á sanngjarnan hátt.

+

8.7 Nema lög og reglugerðir kveði sérstaklega á um annað, mun Saitong leggja sig fram við að tryggja að hugbúnaðurinn og viðkomandi tækni og upplýsingar séu örugg, skilvirk, nákvæm og áreiðanleg, en vegna takmarkana núverandi tækni skilur notandinn að Saitong getur ekki tryggt þetta.

+

8.8 Bætur vegna líkamstjóns eða tilfallandi og óbeins efnahagslegs tjóns af völdum eða í tengslum við eftirfarandi aðstæður, þ.m.t. en ekki takmarkað við tap á hagnaði, tap á gögnum, skaðabætur vegna truflunar á viðskiptum eða annars viðskiptatjóns eða taps, skal notandinn bera:

+

1) Notkun eða vanhæfni til að nota leyfisskyldan hugbúnað.

+

2) Óheimil notkun á hugbúnaðinum eða breyting á notendagögnum af þriðju aðilum.

+

3) Kostnaður og tap sem hlýst af aðgerðum notandans með hugbúnaðinum.

+

4) Misskilningur notandans á hugbúnaðinum.

+

5) Hvers kyns annað tap sem tengist hugbúnaðinum sem ekki er rekjanlegt til Saitong.

+

8.9 Notandinn samþykkir að fyrirtækið hafi rétt til að fresta, trufla eða segja upp allri eða hluta þjónustunnar við notandann á grundvelli krafna dómsmála-, eftirlits- og eftirlitsyfirvalda eða eigin viðskiptaástæðna. Saitong ber enga ábyrgð á þessu.

+

8.10 Notandinn skilur og samþykkir að fyrirtækið muni nota viðskiptalega sanngjarna viðleitni til að tryggja öryggi gagnageymslu í hugbúnaðinum og þjónustunni, en fyrirtækið getur ekki veitt fullkomna tryggingu, og notandinn skilur að fyrirtækið ber ekki ábyrgð á eyðingu eða geymslu eða bilunar í öryggisafriti gagna í þjónustunni.

+

8.11 Að hámarki samkvæmt lögum skal þróunaraðili eða birgir ekki bera ábyrgð á neinu beinu, óbeinu, tilfallandi, sérstöku eða afleiddu tjóni sem hlýst af notkun forritsins. Ef notandinn hefur frekari þarfir, vinsamlegast farðu á viðurkennda heilbrigðisstofnun til ítarlegrar prófunar.

+ +

9. Yfirlýsing um hugverkaréttindi

+

9.1 Saitong er handhafi hugverkaréttinda þessa hugbúnaðar. Öll höfundarréttindi, vörumerki, einkaleyfi, viðskiptaleyndarmál og önnur hugverkaréttindi hugbúnaðarins, sem og allt upplýsingaefni sem tengist hugbúnaðinum (þ.m.t. en ekki takmarkað við texta, myndir, hljóð, myndband, grafík, viðmótshönnun, útlitsramma, viðeigandi gögn eða rafræn skjöl o.fl.) eru vernduð af staðbundnum lögum og reglugerðum og samsvarandi alþjóðlegum sáttmálum.

+

9.2 Án skriflegs samþykkis fyrirtækisins skal notandinn ekki innleiða, nýta eða framselja ofangreind hugverkaréttindi í neinum viðskiptalegum eða óviðskiptalegum tilgangi, né heimila þriðja aðila, og fyrirtækið áskilur sér rétt til að krefja lagalegrar ábyrgðar vegna ofangreindra athafna.

+ +

10. Breyting á samningi

+

10.1 Saitong hefur rétt til að breyta skilmálum þessa samnings þegar nauðsyn krefur. Þegar skilmálar samningsins breytast verða endurskoðaðir skilmálar samningsins birtir á viðkomandi síðu. Ef þú samþykkir ekki breytinguna ætti notandinn að segja upp þessari þjónustu að eigin frumkvæði. Ef notandinn heldur áfram að nota þjónustuna telst hann samþykkja breytingar á skilmálum samningsins.

+

10.2 Saitong áskilur sér rétt til að breyta eða breyta greiddum þjónustum, gjaldskrá, greiðslumáta, þjónustugjöldum og þjónustuskilmálum eins og nauðsyn krefur. Þegar þjónusta er veitt getum við innheimt tiltekin gjöld af notendum sumrar þjónustu nú eða í framtíðinni. Ef notendur neita að greiða slík gjöld geta þeir ekki haldið áfram að nota viðkomandi þjónustu eftir upphaf gjaldtöku.

+
+ + diff --git a/doc/it/privacy_policy.html b/doc/it/privacy_policy.html new file mode 100644 index 000000000..45f346cd8 --- /dev/null +++ b/doc/it/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Informativa sulla Privacy di Voitrans + + + + +
+

Informativa sulla Privacy di Voitrans

+

Ultimo aggiornamento: 27 maggio 2025

+

Data di entrata in vigore: 27 maggio 2025

+ +

Benvenuti nell'utilizzo del Software e dei Servizi Voitrans

+

1. Voitrans è fornito da Saitong Industries Inc. (di seguito denominata "la Società"). Può aiutare gli utenti a gestire dispositivi Bluetooth e altri prodotti. Comprendiamo l'importanza delle informazioni personali per i nostri utenti (di seguito denominati "voi") e che la protezione efficace delle vostre informazioni personali è la pietra angolare dello sviluppo sano e sostenibile della nostra attività. Grazie per l'utilizzo e la fiducia nei prodotti o servizi Voitrans! Siamo pienamente consapevoli che questa fiducia non viene facilmente, aderiamo al principio di apertura e trasparenza, per esprimervi le nostre regole per il trattamento delle vostre informazioni personali, utilizziamo modi legali e legittimi e scopi chiari e ragionevoli per trattare le vostre informazioni personali. Nota speciale: Assicuratevi di leggere e comprendere attentamente questa Informativa sulla Privacy prima di utilizzare i nostri prodotti o servizi in modo da poter fare scelte appropriate.

+

2. Questa Informativa sulla Privacy vi spiega come raccogliamo, utilizziamo, conserviamo e condividiamo le vostre informazioni personali quando utilizzate Voitrans. Le informazioni personali si riferiscono a tutti i tipi di informazioni registrate con mezzi elettronici o di altro tipo che possono identificare una specifica persona fisica o riflettere le attività di una specifica persona fisica da sole o in combinazione con altre informazioni. Voitrans rispetta e protegge la privacy personale di tutti gli utenti del servizio. Salvo quanto diversamente previsto nella presente Informativa sulla Privacy, Voitrans non divulgherà queste informazioni al pubblico né le fornirà a terzi senza la vostra previa autorizzazione.

+

3. Quando utilizzate il prodotto o il servizio di terzi attraverso un prodotto o servizio dell'App Marketplace, le vostre informazioni personali saranno soggette all'informativa sulla privacy del terzo.

+

4. Questa Informativa sulla Privacy di Voitrans verrà aggiornata di volta in volta. Accettando l'Accordo di utilizzo del Servizio Voitrans e iniziando a utilizzare Voitrans, si ritiene che abbiate accettato tutta questa Informativa sulla Privacy. Se non accettate questa Informativa sulla Privacy, vi preghiamo di non utilizzare il Software e i Servizi Voitrans.

+

5. Al fine di analizzare e misurare l'efficacia dei servizi pertinenti, utilizzeremo e divulgheremo le vostre informazioni personali in conformità con le disposizioni di questa Informativa sulla Privacy.

+ +

Questa Informativa sulla Privacy vi aiuterà a comprendere quanto segue:

+
    +
  • 1 Le informazioni che raccogliamo
  • +
  • 2 Conservazione delle informazioni
  • +
  • 3 Sicurezza delle informazioni
  • +
  • 4 Come utilizziamo le informazioni che raccogliamo
  • +
  • 5 Condivisione delle informazioni
  • +
  • 6 Come gestite le vostre informazioni personali
  • +
  • 7 Descrizione delle autorizzazioni dell'applicazione
  • +
  • 8 SDK di terze parti integrati
  • +
  • 9 Protezione dei minori
  • +
  • 10 Informativa sulla Privacy efficace e aggiornata
  • +
  • 11 Come contattarci
  • +
+ +

1. Le informazioni che raccogliamo

+

1. Utilizzando Voitrans inizieremo a raccogliere dati sul vostro utilizzo dell'applicazione

+

2. Voitrans può ottenere informazioni personali su di voi da terzi o partner commerciali attraverso mezzi leciti

+

3. Al fine di fornirvi prodotti e servizi migliori, garantirvi la sicurezza della rete durante l'utilizzo, mantenere il normale funzionamento dei prodotti e ottimizzare e migliorare i servizi informativi, dopo aver attivamente cliccato per accettare questa informativa sulla privacy, utilizziamo le informazioni che forniamo. Durante il servizio, oltre alle informazioni personali necessarie per garantire il normale funzionamento delle funzioni di base dell'App in conformità con le leggi e i regolamenti nazionali, raccoglieremo da voi altre informazioni personali:

+

3.1 Al fine di identificare gli utenti a rischio, giudicare l'autenticità degli utenti e prevenire le frodi in modo completo, leggeremo le informazioni del vostro dispositivo ogni volta che aprite il software, incluso: (Modello del dispositivo, indirizzo MAC del dispositivo, identificatore univoco del dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, ecc.) MEID, numero di serie, SSID e BSSID del WIFI), lettura dell'indirizzo Bluetooth, versione del sistema operativo, nome del sistema operativo, account di accesso utente e informazioni sulla password;

+

3.2 Quando utilizzate i nostri prodotti e servizi, potremmo raccogliere determinate informazioni attraverso le informazioni del registro di rete o determinati programmi e software, tali informazioni possono includere: dettagli sull'utilizzo di prodotti e servizi, come il tempo di apertura dell'applicazione, la durata dell'utilizzo e l'indirizzo della pagina visitata; informazioni sugli eventi del dispositivo, come arresti anomali, attività di sistema, ecc., per ottimizzare il vostro dispositivo e migliorare i nostri servizi;

+

3.3 Per identificare le applicazioni in cui l'attrezzatura è a rischio, fornire servizi funzionali più sicuri. Pertanto, dobbiamo ottenere la vostra lista di applicazioni/installazioni nel processo per garantire il normale funzionamento del prodotto e proteggere la sicurezza del dispositivo.

+

3.4 Al fine di analizzare l'utilizzo delle funzioni dell'applicazione da parte degli utenti e determinare l'autenticità degli utenti, dobbiamo condurre statistiche sui dati e raccogliere le suddette informazioni sul dispositivo, incluso l'indirizzo MAC del dispositivo e l'identificatore univoco del dispositivo, quando il vostro dispositivo è in uso.

+

3.5 Segnale del dispositivo: lo stato della rete del dispositivo che utilizzate, informazioni sul punto di accesso WIFI, ecc.

+

3.6 Informazioni sulla posizione: Potremmo utilizzare GPS, WiFi o altri mezzi tecnici per raccogliere e trattare informazioni sulla vostra posizione per l'aggiornamento delle informazioni locali, la fornitura di servizi di contenuto, ecc.

+

Per ulteriori informazioni, fare clic su "Elenco della raccolta di informazioni personali".

+ +

1. Per le informazioni personali più sensibili tra le informazioni sopra indicate, come le informazioni sul dispositivo dell'utente (numero IMEI, stato della chiamata e numero di identificazione), informazioni sulla posizione GPS, contenuti multimediali e diritti di accesso ai file, otterremo il vostro consenso prima della raccolta. Per alcune informazioni non sensibili, la raccolta può essere predefinita e automatica. Potete limitare la nostra raccolta di informazioni pertinenti o l'utilizzo di determinate autorizzazioni dal vostro dispositivo mobile regolando l'opzione Impostazioni del vostro dispositivo mobile. Quando limitate il nostro accesso a una determinata autorizzazione, potremmo non essere in grado di continuare a fornirvi i servizi corrispondenti e non tratteremo più le vostre informazioni corrispondenti.

+

2. Non raccoglieremo il vostro numero di carta d'identità, informazioni biometriche personali, numero di conto bancario, informazioni patrimoniali, informazioni sul credito, informazioni sulla salute e fisiologiche e altre informazioni personali sensibili.

+

3. Riguardo alle autorizzazioni sensibili: Per utilizzare correttamente le funzioni dell'applicazione, il prodotto deve ottenere le seguenti autorizzazioni per fornire servizi funzionali relativi ai prodotti normali.

+ +

1 Ottenere le autorizzazioni di lettura e scrittura dello storage

+

1 Come ottenere: avviso pop-up, quando l'autorizzazione viene ottenuta, l'utente farà clic attivamente su accetta e l'applicazione utilizzerà questa autorizzazione

+

2 Scopo e ambito di utilizzo: Viene utilizzato per scansionare i file cache delle risorse e le miniature nel sistema, caricare le risorse musicali e le immagini dei prodotti. Viene visualizzato sull'interfaccia dell'App per facilitare la visualizzazione e l'operazione da parte degli utenti

+ +

2 Ottenere l'autorizzazione alla lista delle applicazioni installate

+

1 Come ottenere: avviso pop-up, quando l'autorizzazione viene ottenuta, l'utente farà clic attivamente su accetta e l'applicazione utilizzerà questa autorizzazione

+

2 Scopo e ambito di utilizzo: Quando l'applicazione necessita di utilizzare servizi di promozione pubblicitaria, la piattaforma pubblicitaria di terze parti, Youmon +SDK, deve ottenere il "permesso della lista di installazione delle app" del dispositivo per evitare di proporre all'utente applicazioni già possedute e migliorare l'esperienza utente.

+ +

3 L'autorizzazione per ottenere le informazioni sullo stato del dispositivo

+

Include: (Modello del dispositivo, indirizzo MAC del dispositivo, identificatore univoco del dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, ecc.) MEID, numero di serie, SSID e BSSID del WIFI, lettura dell'indirizzo Bluetooth), versione del sistema operativo, nome del sistema operativo, ecc.;

+

1 Come ottenere: avviso pop-up, quando l'autorizzazione viene ottenuta, l'utente farà clic attivamente su accetta e l'applicazione utilizzerà questa autorizzazione

+

2 Scopo e ambito di utilizzo: Quando si utilizza la nostra applicazione, al fine di analizzare l'utilizzo delle funzioni dell'applicazione da parte dell'utente e giudicare l'autenticità dell'utente, sincronizzeremo l'autorizzazione con SDK di terze parti, inclusi Autonavi SDK, Youmon +SDK, ecc.

+ +

4 Accesso alle informazioni sulla posizione

+

1 Come ottenere: avvisi pop-up, quando l'autorizzazione viene ottenuta, l'utente utilizzerà questa autorizzazione solo quando fa clic attivamente su accetta con l'applicazione.

+

2 Scopo e ambito di utilizzo: Quando l'applicazione necessita di utilizzare GPS, WiFi o altre funzioni, il prodotto deve raccogliere la vostra posizione e le informazioni per cercare dispositivi Bluetooth nelle vicinanze.

+

Nota: Per ulteriori autorizzazioni dell'applicazione, consultare la Sezione 7 "Descrizione delle autorizzazioni dell'applicazione" del presente documento "Informativa sulla Privacy"

+ +

2. Conservazione delle informazioni

+

1. Dove vengono conservate le informazioni

+

Le informazioni personali che raccogliamo e generiamo nella Repubblica Popolare Cinese saranno conservate sui nostri server e/o su quelli delle nostre affiliate.

+

2. Conservazione e trattamento delle informazioni

+

Conserviamo le vostre informazioni personali solo per il periodo necessario a raggiungere lo scopo o per il tempo richiesto dalla legge e dai regolamenti. Dopo che smettete di utilizzare questo prodotto, smetteremo immediatamente di raccogliere e trattare le vostre informazioni personali e i dati dell'applicazione. Quando il periodo sopra indicato è superato, cancelleremo o anonimizzeremo le informazioni personali che ci avete fornito.

+

Oltre alle funzioni necessarie, Voitrans deve richiedere le autorizzazioni di sistema corrispondenti. Il lato server del cloud non conserva informazioni personali degli utenti, e l'SDK di terze parti integrato verrà anonimizzato e de-identificato dal fornitore del servizio (Amu Statistics SDK, Autonavi SDK), quindi gli utenti non possono essere tracciati. Le informazioni conservate sul telefono dell'utente verranno automaticamente eliminate quando l'utente disinstalla Voitrans o svuota la cache.

+ +

3. Sicurezza delle informazioni

+

1. Voitrans conserva e protegge le vostre informazioni personali utilizzando misure e tecnologie di sicurezza standard del settore, come l'autenticazione, la crittografia dei dati, l'accesso limitato al data center e altre misure di sicurezza per garantire che le vostre informazioni siano al sicuro dalla divulgazione, alterazione e distruzione. Nonostante le suddette misure di sicurezza, si prega di notare che nessuna misura di sicurezza può essere sicura al 100%.

+

2. Quando utilizzate i servizi forniti da Voitrans, proteggete le vostre informazioni personali. Se scoprite che le vostre informazioni personali sono state compromesse, contattateci immediatamente in modo che possiamo adottare le misure appropriate.

+ +

4. Come utilizziamo le informazioni che raccogliamo

+

1. Quando implementiamo le funzioni aziendali dell'applicazione, potremmo utilizzare le vostre informazioni personali per garantire l'integrità e la sicurezza dei prodotti e dei servizi che vi forniamo;

+

2. Comprenderemo le vostre abitudini di utilizzo attraverso le informazioni raccolte, e con l'aiuto dell'analisi dei dati, identificheremo l'accettabilità dei servizi, le vostre abitudini di utilizzo, ecc., al fine di testare e creare nuovi prodotti, funzioni e servizi, migliorare il livello di servizio e aiutarci a migliorare i servizi esistenti e sviluppare nuovi servizi;

+

3. Potremmo utilizzare le vostre informazioni personali per sondaggi sui clienti riguardanti i prodotti e i servizi, per l'invio di avvisi sui prodotti e i servizi e per la promozione commerciale;

+

4. Potremmo utilizzare le vostre informazioni per l'analisi interna e la ricerca relativa all'applicazione;

+ +

5. Condivisione delle informazioni

+

Al momento, non condivideremo o trasferiremo attivamente le vostre informazioni personali a terzi al di fuori della società, se ci fosse un'altra condivisione o trasferimento delle vostre informazioni personali, confermeremo direttamente o confermeremo che il terzo ha ottenuto il vostro consenso esplicito per il suddetto comportamento.

+

Non divulgheremo pubblicamente le informazioni personali che raccogliamo. Se è necessario divulgarle pubblicamente, vi informeremo dello scopo della divulgazione pubblica, del tipo di informazioni divulgate e delle informazioni sensibili che potrebbero essere coinvolte, e otterremo il vostro consenso esplicito.

+

Con lo sviluppo continuo della nostra attività, potremmo effettuare fusioni, acquisizioni, trasferimenti di attività e altre transazioni, e vi informeremo delle circostanze pertinenti, in conformità con le leggi e i regolamenti e non inferiori agli standard richiesti dalla presente Guida per continuare a proteggere le vostre informazioni personali o richiedere a un nuovo responsabile del trattamento di continuare a proteggere le vostre informazioni personali.

+

Inoltre, in conformità con le leggi e i regolamenti pertinenti e gli standard nazionali, potremmo condividere, trasferire e divulgare pubblicamente informazioni personali senza previa autorizzazione e consenso del soggetto delle informazioni personali nelle seguenti circostanze:

+
    +
  • 1 Direttamente correlato alla sicurezza nazionale e alla difesa nazionale;
  • +
  • 2 Direttamente correlato alla sicurezza pubblica, alla salute pubblica o a importanti interessi pubblici;
  • +
  • 3 Direttamente correlato a indagini penali, procedimenti giudiziari, processi ed esecuzione di sentenze;
  • +
  • 4 Al fine di proteggere la vita, la proprietà e altri importanti diritti e interessi legittimi del soggetto dei dati personali o di altri individui, ma è difficile ottenere il consenso della persona;
  • +
  • 5 Informazioni personali divulgate al pubblico dal soggetto delle informazioni personali;
  • +
  • 6 Raccolta di informazioni personali da informazioni pubblicamente divulgate legalmente, come reportage di notizie legittime, divulgazione di informazioni governative e altri canali.
  • +
+ +

6. Come gestite le vostre informazioni personali

+

In conformità con le leggi, i regolamenti e gli standard pertinenti della Cina, nonché le pratiche comuni di altri paesi e regioni, garantiamo che esercitiate i seguenti diritti sulle vostre informazioni personali:

+ +

1. Correggere le vostre informazioni personali

+

Se scoprite che c'è un errore nelle vostre informazioni personali da noi trattate, avete il diritto di correggere o aggiornare le informazioni errate o incomplete. Se non siete in grado di operare autonomamente nel centro account, potete inviarci un'email a saitong.voitrans@gmail.com per contattarci

+ +

2. Eliminare le vostre informazioni personali

+

Nei seguenti casi, potete presentarci una richiesta di cancellazione delle vostre informazioni personali:

+
    +
  • Se trattiamo informazioni personali in violazione di leggi e regolamenti;
  • +
  • Se raccogliamo e utilizziamo le vostre informazioni personali senza il vostro consenso;
  • +
  • Se il nostro trattamento delle informazioni personali viola il nostro accordo con voi;
  • +
  • Se non utilizzate più i nostri prodotti o servizi;
  • +
  • Se non vi forniamo più prodotti o servizi.
  • +
+

Contattateci. Elaboreremo la vostra richiesta presso saitong.voitrans@gmail.com Contattateci. Vi risponderemo dopo averla ricevuta entro 30 giorni lavorativi dalla ricezione

+ +

3. Modificare l'ambito del vostro consenso

+

Potete contattarci tramite email a saitong.voitrans@gmail.com Contattateci. Su vostra richiesta, non raccoglieremo, utilizzeremo o divulgheremo più le vostre informazioni personali. Si prega di notare che il ritiro del consenso o la cancellazione delle informazioni personali potrebbe influire sull'utilizzo di alcuni dei nostri servizi.

+ +

4 Accesso e copia delle informazioni personali

+

Potete, in conformità con le disposizioni delle leggi pertinenti, fornire il vostro IMEI (numero di serie del telefono) o OAID o Android ID Dopo le informazioni dell'account e altre informazioni, potete richiedere l'accesso e la copia delle vostre informazioni personali, potete inviare un'email a 3514406195@qq.com per mettervi in contatto con noi.

+ +

5. In risposta alla vostra richiesta sopra indicata

+

Per motivi di sicurezza, potrebbe essere necessario fornire una richiesta scritta o dimostrare in altro modo la vostra identità. Potremmo chiedervi di verificare la vostra identità prima di elaborare la vostra richiesta. Per le vostre richieste ragionevoli, risponderemo e ce ne occuperemo tempestivamente. Potremmo rifiutare richieste inutilmente ripetitive, che richiedono troppa tecnologia (ad esempio, lo sviluppo di nuovi sistemi o cambiamenti fondamentali alle pratiche esistenti), che rappresentano un rischio per gli interessi legittimi di altri o che sono altamente impraticabili.

+

Nelle seguenti circostanze, in conformità con i requisiti di leggi e regolamenti, non saremo in grado di rispondere alla vostra richiesta:

+
    +
  • Correlato alla sicurezza nazionale e alla difesa nazionale;
  • +
  • In relazione a indagini penali, procedimenti giudiziari e processi;
  • +
  • Vi sono prove sufficienti che avete malafede soggettiva o abuso di diritti;
  • +
  • Rispondere alla vostra richiesta causerà gravi danni ai diritti e agli interessi legittimi vostri o di altri individui e organizzazioni.
  • +
+ +

6. Cancellazione dell'account

+

L'utente può eseguire l'operazione di [cancellazione dell'account] nell'APP. Passaggi dell'operazione:

+
    +
  1. Andare alla pagina [Il mio]
  2. +
  3. Fare clic sul pulsante [Impostazioni] in alto a destra
  4. +
  5. Fare clic su [Cancella account] per confermare
  6. +
+

Dopo la disconnessione, le informazioni sull'account utente vengono cancellate

+ +

7. Descrizione delle autorizzazioni dell'applicazione

+

Al fine di fornire prodotti e servizi migliori, quando utilizzate il software, richiederemo le seguenti autorizzazioni, quando entrate nella pagina principale o utilizzate la funzione verrà richiesta l'autorizzazione, se rifiutate, alcune delle funzioni corrispondenti non potranno essere utilizzate normalmente. Gli scopi specifici e i promemoria delle autorizzazioni sono descritti in dettaglio come segue:

+ +

1 Autorizzazioni di localizzazione:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

tramite WiFi o stazione base mobile per ottenere le informazioni sulla posizione di latitudine e longitudine dell'utente

+

Quando utilizzate Voitrans, cercheremo il vostro dispositivo Bluetooth nelle vicinanze in base alla vostra posizione geografica. Allo stesso tempo, al fine di fornire servizi più stabili, ottimizzare i prodotti e migliorare l'esperienza, condivideremo le informazioni sopra indicate con tre SDK, come Youmon e Autonavi, per ottenere dati operativi e servizi funzionali di Voitrans.

+

Modalità di promemoria: Al primo avvio dell'applicazione viene visualizzato un avviso che indica l'autorizzazione, richiedendo all'utente di confermare l'accettazione. Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Questa autorizzazione è necessaria quando si accede a un'applicazione per eseguire le funzioni di gestione dell'applicazione.

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

3 Autorizzazioni di rete:

+

android.permission.INTERNET

+

Quando utilizzate queste autorizzazioni sono necessarie per i servizi informativi e i servizi di aggiornamento della versione di Voitrans, e al fine di migliorare l'esperienza utente e ottimizzare le capacità del servizio, anche SDK di terze parti come Friends utilizzeranno queste autorizzazioni.

+

Modalità di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

4 Ottenere le autorizzazioni dello stato della rete:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Viene utilizzato per determinare se la connessione di rete corrente è valida, determinare se l'ambiente 4G corrente è attivo e se ricordare i cambiamenti dell'ambiente di rete, influenzando così il caricamento del contenuto informativo. Questa autorizzazione viene richiesta quando utilizzate Voitrans.

+

I cambiamenti nello stato della rete influenzano il caricamento e l'invio dei dati. Pertanto, l'accesso all'autorizzazione dello stato della rete sarà condiviso con Friends + e altre piattaforme.

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

5 Ottenere le autorizzazioni della lista delle attività:

+

android.permission.GET_TASKS

+

Questa autorizzazione viene utilizzata per ottenere l'elenco delle applicazioni per la funzione di gestione del software. Quando utilizzate la funzione di gestione del software, è necessario leggere le applicazioni installate sul telefono cellulare.

+

Modalità di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

6 Ottenere l'autorizzazione dell'indirizzo MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Quando utilizzate Voitrans, l'applicazione avrà bisogno di ottenere le autorizzazioni dell'indirizzo MAC:

+

Quando un'applicazione deve segnalare dati di conversione target, piattaforme di terze parti come Youmon +SDK devono utilizzare il MAC.

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

7 Ottenere l'autorizzazione per la registrazione audio

+

android.permission.RECORD_AUDIO

+

Quando utilizzate la funzione di input vocale di Voitrans, è necessario utilizzare l'autorizzazione per la registrazione audio, e principalmente si utilizza l'input vocale per la traduzione e altre funzioni correlate.

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy, l'utente riceve dinamicamente una finestra quando richiesto.

+ +

8 Ottenere l'autorizzazione SSID per il WIFI

+

Quando questa autorizzazione viene utilizzata, l'app legge l'autorizzazione SSID per il WIFI:

+

Ambito di utilizzo e scopo: Quando l'applicazione deve utilizzare servizi di analisi dei dati, piattaforme di terze parti come +SDK devono leggere il "permesso SSID WIFI" del dispositivo per fornire agli utenti servizi funzionali più precisi e efficaci.

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

9 Ottenere l'accesso Bluetooth

+

Quando questa autorizzazione viene utilizzata, l'app legge l'autorizzazione Bluetooth:

+

Ambito di utilizzo e scopo: Dispositivi Bluetooth per la ricerca e la configurazione di accessori, come auricolari Bluetooth, orologi Bluetooth, ecc. Comodo per gli utenti da gestire

+

Metodo di promemoria: Al primo avvio dell'applicazione viene visualizzato un avviso che indica l'autorizzazione, richiedendo all'utente di confermare l'accettazione. Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

10 Ottenere l'autorizzazione BSSID per il WiFi

+

Quando l'applicazione deve distinguere e identificare l'utente per fornire servizi funzionali e statistiche sui dati, leggerà l'autorizzazione "WiFi BSSID" del dispositivo per:

+

Ambito di utilizzo e scopo: 1 Piattaforme di terze parti: come Youmeng SDK, Bugly SDK, Autonavi SDK

+

Metodo di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

11 Ottenere l'autorizzazione di installazione dell'applicazione

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Il software utilizzerà l'autorizzazione di installazione dell'applicazione, che viene principalmente utilizzata per consentire agli utenti di installare una nuova versione e sperimentare nuove funzioni quando è disponibile una nuova versione.

+

Modalità di promemoria: Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

12 Ottenere le autorizzazioni per la fotocamera

+

android.permission.CAMERA

+

Voitrans utilizza le autorizzazioni della fotocamera per scansionare codici QR e associare dispositivi Bluetooth come auricolari Bluetooth e orologi.

+

Metodo di promemoria: Al primo avvio dell'applicazione viene visualizzato un avviso che indica l'autorizzazione, richiedendo all'utente di confermare l'accettazione. Descrizione dell'Accordo Utente e dell'Informativa sulla Privacy.

+ +

Nota speciale:

+

1 Integrazione dell'applicazione all'interno del loro Allies SDK, Scott map SDK nell'utente accetta di consentire dopo l'uso, l'applicazione in background/primo piano per ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI e altre informazioni personali;

+

Note: Per ulteriori informazioni, consultare i contenuti e le autorizzazioni relativi all'SDK di seguito [VIII. Elenco degli SDK di terze parti integrati]

+ +

8. SDK di terze parti integrati

+

1 Al fine di garantire il funzionamento stabile e la realizzazione funzionale del nostro client, affinché possiate utilizzare e godere di più servizi e funzioni, la nostra applicazione incorporerà il kit di sviluppo degli strumenti software (SDK) o altre applicazioni simili di terze parti, queste terze parti raccoglieranno e tratteranno le informazioni pertinenti in conformità con le proprie informative sulla privacy, al fine di fornire normalmente funzioni e servizi pubblicitari. Potete conoscere le regole di raccolta e trattamento delle informazioni del terzo nella sezione seguente. Effettueremo rigorosi test di sicurezza sui kit di sviluppo (SDK) per i partner per ottenere informazioni, al fine di proteggere l'uso ragionevole e la sicurezza delle vostre informazioni personali. Si prega di notare che gli SDK di terze parti potrebbero modificare i tipi di trattamento dei dati a causa dei loro aggiornamenti di versione. Si prega di fare riferimento alle informative sulla privacy pubblicate dagli SDK di terze parti. Vedere i dettagli di seguito o fare clic per visualizzare l'Elenco degli SDK di terze parti.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Informazioni ottenute: Numero del dispositivo, indirizzo IP, informazioni software del dispositivo, codice di identificazione del dispositivo (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informazioni IMSI della SIM card, IP, indirizzo MAC), identificatore del dispositivo, regione, informazioni sulle applicazioni relative al dispositivo e altre informazioni di registro relative al servizio

+

Scopo di utilizzo: Accesso e condivisione WeChat

+

Sviluppatore: Shenzhen Tencent Computer Systems Company Limited

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Informazioni ottenute: Nome dell'applicazione, versione dell'applicazione, marca e modello del dispositivo, sistema operativo, informazioni sull'operatore, risoluzione dello schermo, informazioni sui sensori (vettore, accelerazione, pressione, direzione, geomagnetico, giroscopio, temperatura, sensore di luce, segnale NMEA), informazioni sulla potenza del segnale del dispositivo

+

Scopo di utilizzo: Navigazione tramite Amap

+

Sviluppatore: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Informazioni ottenute: Nome dell'applicazione, versione dell'applicazione, marca e modello del dispositivo, sistema operativo, informazioni di rete, potenza del segnale del dispositivo, ecc.

+

Scopo di utilizzo: Visualizzazione e interazione della mappa

+

Sviluppatore: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Informazioni ottenute: Informazioni sulla posizione (GPS, Wi-Fi, stazione base), informazioni sul dispositivo, informazioni di rete, ecc.

+

Scopo di utilizzo: Fornire servizi di localizzazione

+

Sviluppatore: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Informazioni ottenute: Nome dell'applicazione, versione dell'applicazione, informazioni sul dispositivo, informazioni di rete, ecc.

+

Scopo di utilizzo: Strumenti cartografici e ottimizzazione del rendering

+

Sviluppatore: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Informazioni ottenute: Identificatori del dispositivo, informazioni di base sul dispositivo, elenco dei software installati e informazioni di rete (vedere l'informativa sulla privacy ufficiale per i dettagli)

+

Scopo di utilizzo: Accesso all'account Alipay e invocazione del pagamento

+

Sviluppatore: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Informazioni ottenute: Versione SDK/API, piattaforma, timestamp, identificatore dell'app, versione dell'app, produttore del dispositivo, versione del sistema operativo, impostazioni locali, fuso orario, stato della rete (Wi-Fi, ecc.), registri di rete, dati di arresto anomalo e utilizzo, indirizzo IP, ecc. (vedere l'informativa sulla privacy ufficiale per i dettagli)

+

Scopo di utilizzo: Monitoraggio della qualità dell'app e servizio di segnalazione dei dati

+

Sviluppatore: Shenzhen Tencent Computer Systems Company Limited

+

Metodo di raccolta: Raccolta automatica dell'SDK

+

Link all'Informativa sulla Privacy: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Protezione dei minori

+

Gli utenti dei nostri prodotti e servizi possono includere minori di età inferiore ai 18 anni, gli utenti minori devono chiedere consiglio ai genitori o ai tutori riguardo a questa Informativa sulla Privacy prima di utilizzare i nostri prodotti, e utilizzare i nostri servizi o fornirci le vostre informazioni dopo aver ottenuto il consenso e sotto la guida dei genitori o dei tutori. I tutori dei minori che hanno domande possono contattarci tramite i dettagli di contatto in questa Informativa sulla Privacy.

+

Se non accettate la raccolta delle suddette informazioni da parte dei suddetti fornitori di servizi di terze parti, cessate immediatamente di utilizzare il Software. Durante l'utilizzo del Software, queste terze parti raccoglieranno e tratteranno le informazioni pertinenti in conformità con le proprie informative sulla privacy per fornire alcune funzioni, pubblicità e altri servizi. Se le informazioni vengono divulgate a causa della raccolta delle suddette informazioni da parte del relativo fornitore di servizi di terze parti, il relativo fornitore di servizi di terze parti dovrà assumersi la corrispondente responsabilità legale.

+ +

10. Informativa sulla Privacy efficace e aggiornata

+

1. Questa Informativa sulla Privacy è efficace dalla data di pubblicazione.

+

2. Con l'evoluzione e i cambiamenti della nostra attività, la nostra Informativa sulla Privacy potrebbe cambiare. Ci riserviamo il diritto di modificare la nostra informativa sulla privacy in qualsiasi momento, quindi vi preghiamo di controllarla spesso. Se apportiamo modifiche alla nostra Informativa sulla Privacy, pubblicheremo questi aggiornamenti sul nostro sito web, nelle app e dove riteniamo appropriato per tenervi informati. Se l'informativa sulla privacy viene aggiornata, avrà effetto dalla data dell'aggiornamento. L'uso continuato dei nostri prodotti o servizi significa che accettate la nostra Informativa sulla Privacy modificata.

+ +

11. Come contattarci

+

Saitong Industries Inc fondata il 22 novembre 2024, indirizzo registrato: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Se desiderate saperne di più sulla nostra azienda e piattaforma, potete contattarci tramite le informazioni di contatto fornite in questa politica (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/it/user_agreement.html b/doc/it/user_agreement.html new file mode 100644 index 000000000..fbea866cf --- /dev/null +++ b/doc/it/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protocollo utente dell'applicazione Voitrans + + + +
+
Italiano
+ +

Protocollo utente dell'applicazione Voitrans

+ +

I presenti Termini e Condizioni d'Uso descrivono le modalità di accesso e utilizzo dell'applicazione Voitrans e dei servizi online (i "Servizi"). Saitong Industries Inc. (di seguito denominata "Saitong") ricorda agli utenti di leggere attentamente e comprendere appieno il presente Accordo con l'Utente (di seguito denominato "Accordo"). Gli utenti devono leggere attentamente e comprendere appieno i termini del presente Accordo. Si prega di leggere con attenzione e scegliere se accettare o meno il presente Accordo. L'utilizzo dell'APP Voitrans (di seguito denominata "l'APP" o "il Software") sarà considerato come accettazione del presente Accordo e l'utente accetta di essere vincolato dai termini del presente Accordo. Se non si accetta il presente Accordo, non utilizzare l'APP.

+

Saitong si riserva il diritto di modificare il presente Accordo e i termini aggiornati dell'Accordo saranno pubblicati in questa APP, con effetto dalla data di pubblicazione.

+ +

1. Regole generali

+

1.1 Questa APP è il software fornito da Saitong per collegare i prodotti auricolari rilasciati da Saitong e dalle sue aziende partner. La proprietà e i diritti operativi del software e dei servizi correlati sono tutti di proprietà di Saitong.

+

1.2 Il presente Accordo è un accordo tra l'utente (di seguito denominato "Utente") e la società e i suoi partner e partner operativi (di seguito denominati "Partner") riguardo all'utilizzo dell'APP e dei servizi correlati da parte dell'utente.

+

1.3 Il Software e i servizi includono:

+

1.3.1 Il software fornito offre agli utenti Voitrans servizi software di connessione e associazione Voitrans, gestione delle impostazioni delle funzioni e altri servizi software, soggetti ai servizi software effettivi forniti dall'APP.

+

1.3.2 Aggiornamenti, upgrade e altri servizi del software.

+ +

2. Ambito della licenza software

+

2.1 Concediamo all'utente una licenza personale, non trasferibile, non sublicenziabile e non esclusiva per il Software.

+

2.2 Gli utenti possono installare, utilizzare, visualizzare ed eseguire il software su un singolo dispositivo terminale mobile per scopi non commerciali. Tuttavia, l'utente non deve installare, utilizzare o eseguire il software per scopi di operazioni commerciali, copiare, modificare, alterare, collegare o eseguire il software o i dati rilasciati nella memoria di qualsiasi dispositivo terminale durante il funzionamento del software o i dati di interazione tra il client e il server durante il funzionamento del software, né creare opere derivate. Ciò include, ma non si limita a, l'uso di plug-in, componenti aggiuntivi o strumenti/servizi di terze parti non autorizzati per accedere al Software e ai sistemi correlati. Per la vendita commerciale, la riproduzione e la distribuzione, come la preinstallazione e il bundling del software, è necessario ottenere l'autorizzazione e il permesso scritto.

+

2.3 L'Utente non deve installare il Software su altri dispositivi terminali senza l'espressa autorizzazione del Creatore, inclusi ma non limitati a TV, decoder digitali, console di gioco e altri dispositivi.

+

2.4 Ad eccezione di quanto espressamente autorizzato dal presente Accordo, nessun altro diritto viene concesso all'Utente, e l'Utente deve ottenere il consenso scritto per l'utilizzo di altri diritti.

+ +

3. Aggiornamento del software

+

3.1 L'utente deve selezionare la versione del software adatta alla configurazione del terminale installato. In caso contrario, i problemi del software, i problemi del dispositivo o i danni causati da qualsiasi versione del software non adatta al tipo di dispositivo saranno di esclusiva responsabilità dell'utente.

+

3.2 Al fine di migliorare l'esperienza utente e migliorare il contenuto del servizio, Saitong ha il diritto di fornire versioni sostitutive, modificate e aggiornate del software di volta in volta. La funzione "Richiesta di aggiornamento" è abilitata per gli utenti per impostazione predefinita. A seconda delle diverse versioni del software utilizzate dagli utenti, Saitong offre agli utenti l'opzione di attivare questa funzione. Dopo il rilascio di una nuova versione del software, Saitong non garantisce la disponibilità continua della vecchia versione del software.

+ +

4. Specifiche di utilizzo

+

4.1 Gli utenti possono utilizzare il Software e i Servizi in conformità con il presente Accordo, nel rispetto della legge e del presente Accordo, e gli utenti non devono compiere i seguenti atti:

+

4.1.1 Eliminare tutte le informazioni sul copyright dal Software e da altre copie, e modificare, eliminare o aggirare le misure tecniche predisposte dal Software per proteggere i diritti di proprietà intellettuale.

+

4.1.2 Ingegneria inversa del Software, come disassemblaggio, decompilazione o altri tentativi di ottenere il codice sorgente del Software.

+

4.1.3 Modificando o falsificando istruzioni e dati nel funzionamento del software, aggiungendo, eliminando o cambiando la funzione o l'effetto operativo del software, o software o metodi da utilizzare per gli scopi sopra indicati per operare o diffondere al pubblico, indipendentemente dal fatto che tali atti siano per scopi commerciali.

+

4.1.4 Utilizzare il software per qualsiasi comportamento che metta a repentaglio la sicurezza della rete, incluso ma non limitato a: utilizzare dati non autorizzati o accedere a server/account non autorizzati; accedere a reti pubbliche o altri sistemi operativi senza autorizzazione ed eliminare, modificare o aggiungere informazioni memorizzate; tentativi non autorizzati di sondare, scansionare o testare le debolezze del sistema o della rete del software o altri atti che minano la sicurezza della rete; tentativi di interferire con o distruggere il normale funzionamento del sistema software o del sito web, diffondere intenzionalmente programmi dannosi o virus, e altri atti che interrompono i normali servizi di informazione di rete; falsificare nomi di pacchetti TCP/IP o nomi parziali.

+

4.1.6 Senza il consenso scritto della Società, l'utente esegue arbitrariamente i seguenti atti sul software e sulle informazioni in esso contenute, incluso ma non limitato a: utilizzare, noleggiare, prestare, copiare, modificare, collegare, ristampare, compilare, pubblicare, diffondere, creare siti mirror, sviluppare prodotti derivati, opere, servizi, plug-in, componenti aggiuntivi, compatibilità, interconnessione, ecc., con l'aiuto del Software.

+

4.1.7 Utilizzare il Software per pubblicare, trasmettere, distribuire e memorizzare contenuti che violano le leggi locali.

+

4.1.8 Utilizzare il software per pubblicare, trasmettere, diffondere e memorizzare contenuti che violano i diritti di proprietà intellettuale, i segreti commerciali e altri diritti legittimi di terzi.

+

4.1.9 Utilizzare questo software per pubblicare, trasmettere e diffondere in massa informazioni pubblicitarie e informazioni indesiderate.

+

4.1.10 Utilizzare il Software e altri Servizi in qualsiasi modo illegale, per qualsiasi scopo illegale, o in qualsiasi modo incompatibile con l'uso autorizzato del presente Accordo.

+

4.2 Specifiche di pubblicazione delle informazioni

+

4.2.1 Se si utilizza il software per pubblicare contenuti informativi (se presenti), si deve garantire di possedere i diritti di proprietà intellettuale dei contenuti informativi caricati o di aver ottenuto un'autorizzazione legale, e qualsiasi comportamento di utilizzo del software e dei servizi non viola i diritti e gli interessi legittimi di terzi.

+

4.2.2 Quando si utilizza il Software, l'utente non deve utilizzare il Software per svolgere le seguenti attività, incluse ma non limitate a:

+

4.2.2.1 Creare, copiare, pubblicare, diffondere e memorizzare contenuti che violano le leggi e i regolamenti nazionali locali.

+

4.2.2.2 Pubblicare, trasmettere, diffondere e memorizzare contenuti che violano i diritti legali altrui come reputazione, immagine, proprietà intellettuale e segreti commerciali.

+

4.2.2.3 Fabbricare fatti, nascondere la verità al fine di fuorviare o ingannare altri.

+

4.2.2.4 Pubblicare, trasmettere e diffondere informazioni pubblicitarie e informazioni indesiderate.

+

4.2.2.5 Compiere altri atti in violazione delle leggi e dei regolamenti locali.

+

4.2.3 Non è possibile svolgere alcuna attività commerciale come pubblicità e vendita di merci nel Software senza il permesso della Società.

+

4.3 L'Utente comprende e accetta che:

+

4.3.1 Saitong determinerà se l'utente è sospettato di violare le sopracitate specifiche d'uso e, in base ai risultati della determinazione, sospenderà o interromperà la licenza d'uso dell'utente o adotterà altre misure restrittive che possono essere adottate in conformità con il presente accordo.

+

4.3.2 Per l'utilizzo da parte dell'utente del software con licenza pubblicato sospettato di essere illegale o sospettato di violare i diritti legali di terzi o in violazione del presente Accordo, le informazioni saranno direttamente eliminate.

+

4.3.3 Se la violazione da parte dell'utente delle suddette regole d'uso causa danni a terzi, l'utente deve assumersi la responsabilità legale in modo indipendente a proprio nome, e deve garantire che l'azienda sia esente da perdite o costi aggiuntivi.

+

4.3.4 Se l'utente viola le disposizioni legali pertinenti o gli accordi, causando perdite a Saitong, o è soggetto a reclami di terzi, o è sanzionato dall'autorità amministrativa, l'utente deve risarcire le perdite e/o le spese causate a Saitong, compresi ragionevoli onorari degli avvocati, costi di indagine e raccolta delle prove.

+ +

5. Descrizione dei servizi di terze parti

+

5.1 L'utente comprende e accetta che il sistema software può contenere servizi forniti da affiliate della Società o da terze parti, e che la Società fornisce solo moduli funzionali pertinenti nel sistema per la comodità degli utenti e fornisce l'accesso ai servizi di terze parti.

+

5.2 Indipendentemente dal fatto che i servizi di terze parti siano preimpostati nei servizi del sistema software, o siano aperti o ordinati dagli utenti stessi, gli utenti comprendono e accettano che Saitong non fornisce alcuna garanzia esplicita o implicita sulla legalità e l'efficacia dei fornitori di servizi di terze parti o degli utenti, nonché sulla legalità, accuratezza, efficacia e sicurezza dei servizi di terze parti.

+

5.3 La società non supervisiona, controlla né fornisce alcuna garanzia di alcun tipo per, né assume alcuna responsabilità per, i servizi di terze parti.

+

5.4 Qualsiasi controversia o disputa tra l'utente e il fornitore di servizi di terze parti sarà risolta dall'Utente e dalla terza parte in conformità con il processo aziendale e le norme commerciali del fornitore di servizi di terze parti, e la società non si assumerà alcuna responsabilità.

+ +

6. Informativa sulla privacy e protezione delle informazioni personali

+

6.1 Saitong si impegna a proteggere la privacy degli utenti in conformità con l'informativa sulla privacy, si prega di consultare: Informativa sulla Privacy dell'applicazione Voitrans.

+ +

7. Responsabilità per violazione

+

7.1 Saitong ha il diritto di giudicare se il comportamento dell'utente è conforme alle disposizioni del presente Accordo. Se si ritiene che l'Utente abbia violato le leggi e i regolamenti pertinenti o le disposizioni del presente Accordo e le regole correlate, in base alla gravità della violazione dell'utente, Saitong ha il diritto di eliminare le informazioni illegali, limitare, sospendere, interrompere l'utilizzo del servizio Software da parte dell'utente, perseguire la responsabilità legale dell'utente e adottare altre misure che Saitong ritenga appropriate. Se subiamo qualsiasi perdita (incluso ma non limitato a ricevere reclami di terzi o sanzioni da qualsiasi dipartimento amministrativo), l'Utente sarà pienamente responsabile.

+ +

8. Rischi del servizio e esclusione di responsabilità

+

8.1 Desideriamo fornire supporto al servizio con la tecnologia attuale. Saitong non garantisce che il Servizio Software funzionerà senza interruzioni o errori, che tutti i difetti del Servizio Software saranno corretti, o che il Servizio Software soddisferà tutti i requisiti degli utenti. Per le conseguenze risultanti, Saitong non assume alcuna responsabilità.

+

8.2 Tutte le perdite subite dall'utente a causa di terze parti come guasti alla linea di comunicazione, problemi tecnici, guasti alla rete, alle apparecchiature terminali del computer, instabilità del sistema e altre cause di forza maggiore non saranno ritenute responsabili.

+

8.3 Saitong non garantisce la legalità, l'autenticità, l'accuratezza e l'efficacia dei contenuti informativi ottenuti attraverso il software (incluso ma non limitato al contenuto dei servizi di terze parti), e Saitong non assume alcuna responsabilità per i risultati di qualsiasi comportamento degli utenti basato su query e visualizzazione.

+

8.4 Il software, come la maggior parte dei software Internet, è influenzato da differenze in fattori inclusi ma non limitati a motivi dell'utente, qualità del servizio di rete, ambiente sociale e altri fattori, e può essere soggetto a vari problemi di sicurezza, come l'uso di informazioni dell'utente da parte di altri, con conseguenti molestie nella vita reale; altri software scaricati e installati dagli utenti o altri siti web visitati dagli utenti contengono virus come "Trojan horse", che minacciano la sicurezza delle informazioni e dei dati delle apparecchiature terminali degli utenti, e quindi influenzano il normale utilizzo del software. Gli utenti devono rafforzare la consapevolezza della sicurezza delle informazioni e della protezione dei dati degli utenti, e prestare attenzione a rafforzare la protezione tramite password per evitare perdite e molestie.

+

8.5 Quando gli utenti utilizzano il Software o richiedono a Saitong di fornire servizi specifici, il Software può richiamare sistemi di terze parti o software di terze parti per supportare l'utilizzo o l'accesso degli utenti, e i risultati dell'utilizzo o dell'accesso sono forniti dalla terza parte. Oltre a conformarsi alle regole pertinenti del presente Accordo, gli utenti devono anche conformarsi agli accordi e alle regole pertinenti della terza parte. Gli utenti devono comprendere e accettare che, quando si utilizzano servizi di terze parti, le terze parti possono leggere i dati dell'utente, e Saitong non garantisce la sicurezza, l'accuratezza, l'efficacia e altri rischi incerti dei risultati ottenuti attraverso sistemi di terze parti o supporto software di terze parti, gli utenti devono esercitare un giudizio prudente, e Saitong non assume alcuna responsabilità per controversie e danni causati da ciò.

+

8.6 Al fine di garantire l'autonomia dello sviluppo e dell'adeguamento commerciale della società, la società può modificare o interrompere il servizio in qualsiasi momento dopo aver adottato un modo ragionevole per avvisare l'utente.

+

8.7 Salvo quanto espressamente previsto da leggi e regolamenti, Saitong farà del suo meglio per garantire che il software e la tecnologia e le informazioni coinvolte siano sicuri, efficaci, accurati e affidabili, ma limitato dalla tecnologia esistente, l'utente comprende che Saitong non può garantirlo.

+

8.8 Il risarcimento per lesioni personali o danni economici accidentali e indiretti causati da o in relazione a una qualsiasi delle seguenti circostanze, incluso ma non limitato a perdita di profitti, perdita di dati, danni per interruzione dell'attività o altri danni o perdite commerciali, sarà a carico dell'Utente:

+

1) Utilizzo o mancato utilizzo del software con licenza.

+

2) Utilizzo non autorizzato del software o alterazione dei dati dell'utente da parte di terzi.

+

3) Spese e perdite sostenute dalle azioni dell'utente con il software.

+

4) Concezioni errate dell'utente riguardo al software.

+

5) Qualsiasi altra perdita relativa al software che non sia attribuibile a cause di Saitong.

+

8.9 L'Utente accetta che la Società ha il diritto di sospendere, interrompere o terminare tutto o parte del Servizio all'utente in base ai requisiti delle autorità giudiziarie, normative e di vigilanza o per proprie ragioni commerciali. Saitong non accetta alcuna responsabilità per questo.

+

8.10 L'Utente comprende e accetta che la Società utilizzerà sforzi commercialmente ragionevoli per garantire la sicurezza dell'archiviazione dei dati nel Software e nei Servizi, ma la società non può fornire una garanzia completa, e l'Utente comprende che la Società non è responsabile per la cancellazione o l'archiviazione o il mancato backup dei dati nel Servizio.

+

8.11 Nella misura massima consentita dalla legge, lo Sviluppatore o il Fornitore non sarà responsabile per danni diretti, indiretti, accidentali, speciali o consequenziali derivanti dall'uso dell'Applicazione. Se l'utente ha ulteriori necessità, si prega di rivolgersi a un ospedale regolare per test approfonditi.

+ +

9. Dichiarazione sulla proprietà intellettuale

+

9.1 Saitong è il titolare dei diritti di proprietà intellettuale di questo software. Tutti i diritti d'autore, marchi, brevetti, segreti commerciali e altri diritti di proprietà intellettuale del software, nonché tutti i contenuti informativi relativi al software (inclusi ma non limitati a testo, immagini, audio, video, grafica, design dell'interfaccia, layout del frame, dati pertinenti o documenti elettronici, ecc.) sono protetti dalle leggi e dai regolamenti locali e dai corrispondenti trattati internazionali.

+

9.2 Senza il consenso scritto della Società, l'Utente non deve implementare, utilizzare o trasferire i suddetti diritti di proprietà intellettuale per qualsiasi scopo commerciale o non commerciale, né permettere a terzi di farlo, e la Società si riserva il diritto di perseguire la responsabilità legale per i suddetti atti.

+ +

10. Modifica del protocollo

+

10.1 Saitong ha il diritto di modificare i termini del presente Accordo quando necessario. Una volta modificati i termini dell'Accordo, i termini rivisti dell'Accordo saranno pubblicati nella pagina pertinente. Se non si è d'accordo con il contenuto modificato, l'utente dovrebbe prendere l'iniziativa di cancellare questo servizio. Se l'Utente continua a utilizzare i Servizi, si ritiene che accetti le modifiche ai termini dell'Accordo.

+

10.2 Saitong si riserva il diritto di modificare o cambiare i servizi a pagamento, gli standard di tariffazione, i metodi di tariffazione, le tariffe dei servizi e i termini di servizio forniti se necessario. Quando fornisce servizi, potremmo addebitare determinate tariffe agli utenti di alcuni servizi ora o in futuro. Se gli utenti rifiutano di pagare tali tariffe, non possono continuare a utilizzare i servizi pertinenti dopo l'inizio dell'addebito.

+
+ + diff --git a/doc/ja/privacy_policy.html b/doc/ja/privacy_policy.html new file mode 100644 index 000000000..4636a4e9b --- /dev/null +++ b/doc/ja/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans プライバシーポリシー + + + + +
+

Voitrans プライバシーポリシー

+

最終更新日:2025年5月27日

+

発効日:2025年5月27日

+ +

Voitrans ソフトウェアおよびサービスのご利用を歓迎します

+

1. Voitrans は Saitong Industries Inc.(以下「当社」)によって提供されています。ユーザーがBluetoothデバイスおよびその他の製品管理を実現するのを支援します。当社はユーザー(以下「お客様」)にとっての個人情報の重要性を理解しており、お客様の個人情報を効果的に保護することが当社の事業の健全かつ持続可能な発展の礎であると認識しています。Voitrans の製品またはサービスをご利用いただき、信頼を寄せていただきありがとうございます!当社はこの信頼が容易に得られるものではないことを十分に認識しており、公開性と透明性の原則に基づき、お客様の個人情報を処理するルールをお客様にお伝えし、合法かつ正当な方法で明確かつ合理的な目的をもってお客様の個人情報を処理いたします。特別なご注意:当社の製品またはサービスをご利用いただく前に、本プライバシーポリシーを注意深くお読みいただき、ご理解いただくことで、適切な選択ができるようにしてください。

+

2. 本プライバシーポリシーは、お客様がVoitransをご利用の際に、当社がお客様の個人情報をどのように収集、使用、保存、共有するかについて説明するものです。個人情報とは、電子的またはその他の手段で記録された、特定の自然人を単独でまたは他の情報と組み合わせて識別できる、または特定の自然人の活動を反映するあらゆる種類の情報を指します。Voitransはサービスのすべてのユーザーの個人的なプライバシーを尊重し保護します。本プライバシーポリシーに別段の定めがある場合を除き、Voitransはお客様の事前の許可なしにこの情報を公衆に開示したり、第三者に提供したりすることはありません。

+

3. アプリマーケットプレイスの製品またはサービスを通じて第三者の製品またはサービスをご利用になる場合、お客様の個人情報は当該第三者のプライバシーポリシーに従うものとします。

+

4. Voitrans の本プライバシーポリシーは随時更新されます。Voitrans サービス利用規約に同意し、Voitransのご利用を開始することにより、本プライバシーポリシーのすべてに同意したものとみなされます。本プライバシーポリシーに同意されない場合は、Voitrans ソフトウェアおよびサービスをご利用にならないでください。

+

5. 関連サービスの有効性を分析および測定するために、当社は本プライバシーポリシーの規定に従い、お客様の個人情報を使用および開示します。

+ +

本プライバシーポリシーは以下の内容の理解に役立ちます:

+
    +
  • 1 当社が収集する情報
  • +
  • 2 情報の保存
  • +
  • 3 情報セキュリティ
  • +
  • 4 収集した情報の使用方法
  • +
  • 5 情報の共有
  • +
  • 6 お客様の個人情報の管理方法
  • +
  • 7 アプリケーション権限の説明
  • +
  • 8 第三者SDKへのアクセス
  • +
  • 9 未成年者の保護
  • +
  • 10 プライバシーポリシーの発効および更新
  • +
  • 11 お問い合わせ方法
  • +
+ +

1. 当社が収集する情報

+

1. Voitransのご使用開始時、当社はお客様のアプリケーション使用に関するデータの収集を開始します

+

2. Voitransは合法的な手段を通じて第三者またはビジネスパートナーからお客様の個人情報を取得する場合があります

+

3. より良い製品およびサービスを提供するため、ご利用中のネットワークセキュリティの確保、製品の正常な動作の維持および最適化改善のため、当社の情報サービスの目的として、お客様が本プライバシーポリシーに積極的にクリックして同意した後、当社が提供する情報をご利用ください。サービス期間中、国の法律法規に従いアプリの基本機能の正常な動作を確保するために必要な個人情報に加え、以下のその他の個人情報を収集します:

+

3.1 リスクユーザーの識別、ユーザーの真正性の判断、および不正行為の包括的な防止のため、ソフトウェアを開くたびにお客様のデバイス情報を読み取ります。これには以下が含まれます:(デバイスモデル、デバイスMACアドレス、デバイス固有識別子(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、シリアル番号、WIFIのSSIDおよびBSSID)、Bluetoothアドレスの読み取り、オペレーティングシステムバージョン、オペレーティングシステム名、ユーザーログインアカウントおよびパスワード情報;

+

3.2 お客様が当社の製品およびサービスをご利用の際、ネットワークログ情報または特定のプログラムおよびソフトウェアを通じて特定の情報を収集する場合があります。このような情報には以下が含まれる場合があります:アプリケーションの起動時間、使用時間、訪問したページのアドレスなどの製品およびサービスの使用の詳細;デバイスの最適化およびサービスの改善のためのクラッシュ、システムアクティビティなどのデバイスイベント情報;

+

3.3 機器がリスクにさらされているアプリケーションを識別し、より安全な機能サービスを提供するため。そのため、製品の正常な動作を確保し、デバイスのセキュリティを保護するために、このプロセスでお客様のアプリケーション/アプリインストールリストを取得する必要があります。

+

3.4 ユーザーによるアプリケーション機能の使用状況を分析し、ユーザーの真正性を判断するために、データ統計を実施する必要があり、お客様のデバイスの使用中にデバイスMACアドレスおよびデバイス固有識別子を含む上記のデバイス情報を収集します。

+

3.5 デバイス信号:ご使用のデバイスのネットワーク状態、WIFIアクセスポイント情報等。

+

3.6 位置情報:ローカル情報の更新、コンテンツサービスの提供等のために、GPS、WiFiまたはその他の技術的手段を使用してお客様の位置に関する情報を収集および処理する場合があります。

+

詳細については「個人情報収集リスト」をクリックしてください。

+ +

1. 上記の情報の中でより機密性の高い個人情報、例えばユーザーデバイス情報(IMEI番号、通話状態および識別番号)、GPS位置情報、写真メディアコンテンツおよびファイルアクセス権限については、収集前にお客様の同意を取得します。一部の非機密情報については、収集がデフォルトかつ自動で行われる場合があります。お客様はモバイルデバイスの設定オプションを調整することにより、当社による関連情報の収集または特定の権限の使用を制限することができます。お客様が当社のある権限へのアクセスを制限した場合、当社は対応するサービスの提供を継続できなくなる場合があり、お客様の対応する情報の処理を行わなくなります。

+

2. 当社はお客様の身分証明書番号、個人の生体情報、銀行口座番号、財産情報、信用情報、健康および生理学的情報およびその他の個人機密情報を収集しません。

+

3. 機密権限について:アプリケーション機能を適切に使用するために、製品は通常の製品に関連する機能サービスを提供するために以下の権限を取得する必要があります。

+ +

1 ストレージ読み書き権限の取得

+

1 取得方法:ポップアッププロンプト、権限取得時にユーザーが積極的に同意をクリックするとアプリケーションがこの権限を使用します

+

2 使用目的および範囲:システム内のリソースキャッシュファイルおよびサムネイルのスキャン、音楽リソースおよび製品画像の読み込みに使用されます。ユーザーが閲覧および操作しやすいようにApp画面に表示されます

+ +

2 アプリケーションインストールリスト権限の取得

+

1 取得方法:ポップアッププロンプト、権限取得時にユーザーが積極的に同意をクリックするとアプリケーションがこの権限を使用します

+

2 使用目的および範囲:アプリケーションが広告プロモーションサービスを使用する必要がある場合、第三者広告プラットフォームのYoumon +SDKは、ユーザーが既に所有しているアプリケーションをプッシュすることを防ぎ、ユーザー体験を向上させるために、デバイスの「アプリソフトウェアインストールリスト権限」を取得する必要があります。

+ +

3 デバイス状態情報を取得する権限

+

含まれるもの:(デバイスモデル、デバイスMACアドレス、デバイス固有識別子(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、シリアル番号、WIFIのSSIDおよびBSSID、Bluetoothアドレスの読み取り)、オペレーティングシステムバージョン、オペレーティングシステム名等;

+

1 取得方法:ポップアッププロンプト、権限取得時にユーザーが積極的に同意をクリックするとアプリケーションがこの権限を使用します

+

2 使用目的および範囲:当社のアプリケーションのご使用時、ユーザーのアプリケーション機能の使用状況を分析し、ユーザーの真正性を判断するために、Autonavi SDK、Youmon +SDK等を含む第三者SDKに権限を同期します。

+ +

4 位置情報へのアクセス

+

1 取得方法:ポップアッププロンプト、権限取得時にユーザーがアプリケーションへの同意を積極的にクリックした場合にのみこの権限を使用します。

+

2 使用目的および範囲:アプリケーションがGPS、WiFiまたはその他の機能を使用する必要がある場合、製品は近くの場所にあるBluetoothデバイスを検索するためにお客様の位置および情報を収集する必要があります。

+

注意:その他のアプリケーション権限については、本文書「プライバシーポリシー」第7節「アプリケーション権限の説明」をご参照ください

+ +

2. 情報の保存

+

1. 情報の保存場所

+

当社が中華人民共和国で収集および生成した個人情報は、当社のサーバーおよび/または当社の関連会社のサーバーに保存されます。

+

2. 情報の保存および処理

+

当社はお客様の個人情報を目的の達成に必要な期間、または法令で要求される期間のみ保存します。本製品のご使用を停止した後、当社はお客様の個人情報およびアプリケーションデータの収集および処理を直ちに停止します。上記の期間を超過した場合、当社はお客様からご提供いただいた個人情報を削除または匿名化します。

+

必要な機能に加え、Voitransは対応するシステム権限を申請する必要があります。クラウドのサーバー側にはユーザーの個人情報は保存されず、アクセスする第三者SDKはサービスプロバイダー(友盟統計SDK、Autonavi SDK)によって匿名化および非識別化処理が行われるため、ユーザーを追跡することはできません。ユーザーのスマートフォンに保存された情報は、ユーザーがVoitransをアンインストールするかキャッシュをクリアした際に自動的に削除されます。

+ +

3. 情報セキュリティ

+

1. Voitransは、認証、データ暗号化、データセンターへのアクセス制限およびその他のセキュリティ対策など、業界標準のセキュリティ対策および技術を使用してお客様の個人情報を保存および保護し、お客様の情報が漏洩、改ざんおよび破壊から安全であることを保証します。上記のセキュリティ対策にもかかわらず、いかなるセキュリティ対策も100%安全ではないことにご注意ください。

+

2. Voitransが提供するサービスをご利用の際は、お客様の個人情報を保護してください。個人情報が侵害されたことを発見された場合は、適切な措置を講じることができるよう、直ちに当社にご連絡ください。

+ +

4. 収集した情報の使用方法

+

1. アプリケーションのビジネス機能を実装する際、当社はお客様に提供する製品およびサービスの完全性およびセキュリティを確保するために、お客様の個人情報を使用する場合があります;

+

2. 当社は収集した情報を通じてお客様の使用習慣を理解し、データ分析の助けを借りて、サービスの受容性、お客様の使用習慣等を特定し、新しい製品、機能およびサービスのテストおよび作成、サービスレベルの向上、および既存のサービスの改善と新しいサービスの開発に役立てます;

+

3. 当社は製品およびサービスに関する顧客調査、製品およびサービスに関する通知の送信、および商業的なプロモーションのためにお客様の個人情報を使用する場合があります;

+

4. 当社はアプリケーションに関連する内部分析および研究のためにお客様の情報を使用する場合があります;

+ +

5. 情報の共有

+

現在、当社はお客様の個人情報を積極的に社外の第三者と共有または移転することはありません。お客様の個人情報のその他の共有または移転がある場合、当社は直接的にまたは第三者が上記の行為についてお客様の明示的な同意を得たことを確認します。

+

当社は収集した個人情報を公開開示しません。公開開示が必要な場合、当社は公開開示の目的、開示される情報の種類および関与する可能性のある機密情報をお客様にお知らせし、お客様の明示的な同意を取得します。

+

当社の事業の継続的な発展に伴い、合併、買収、資産譲渡およびその他の取引を行う場合があり、法令に従い、本ガイドが要求する基準を下回らない水準でお客様の個人情報を引き続き保護するか、新しい管理者にお客様の個人情報を引き続き保護させることを要求し、関連する状況をお知らせします。

+

さらに、関連する法令および国家基準に従い、以下の状況において、個人情報の主体の事前の承認および同意なしに個人情報を共有、移転および公開開示する場合があります:

+
    +
  • 1 国家安全および国防安全に直接関連する場合;
  • +
  • 2 公共の安全、公衆衛生または重大な公共の利益に直接関連する場合;
  • +
  • 3 犯罪捜査、起訴、裁判および判決の執行に直接関連する場合;
  • +
  • 4 個人データの主体またはその他の個人の生命、財産およびその他の重大な正当な権利利益を保護するためであるが、本人の同意を得ることが困難な場合;
  • +
  • 5 個人情報の主体が自ら公衆に開示した個人情報;
  • +
  • 6 合法的に公開された情報から個人情報を収集する場合、例えば合法的なニュース報道、政府情報公開およびその他のチャネル。
  • +
+ +

6. お客様の個人情報の管理方法

+

中国の関連する法律、法規および基準、ならびに他の国および地域の一般的な慣行に従い、当社はお客様が個人情報について以下の権利を行使することを保証します:

+ +

1. 個人情報の訂正

+

当社が処理するお客様の個人情報に誤りがあることを発見された場合、お客様は誤った情報または不完全な情報を訂正または更新する権利を有します。アカウントセンターで独自に操作できない場合は、saitong.voitrans@gmail.com にメールでお問い合わせください

+ +

2. 個人情報の削除

+

以下の場合、当社に個人情報の削除を要求することができます:

+
    +
  • 当社が法令に違反して個人情報を処理した場合;
  • +
  • 当社がお客様の同意なしにお客様の個人情報を収集および使用した場合;
  • +
  • 当社の個人情報の処理がお客様との契約に違反した場合;
  • +
  • お客様が当社の製品またはサービスのご利用を停止された場合;
  • +
  • 当社がお客様に製品またはサービスの提供を停止した場合。
  • +
+

お問い合わせください。saitong.voitrans@gmail.com でお客様のご要望を処理いたします。受領後30営業日以内にご回答いたします

+ +

3. 同意の範囲の変更

+

saitong.voitrans@gmail.com にメールでお問い合わせいただけます。お客様のご要望に応じて、当社はお客様の個人情報の収集、使用または開示を停止します。お客様の同意の撤回または個人情報の削除は、当社の一部のサービスのご利用に影響を与える場合がありますのでご注意ください。

+ +

4 個人情報へのアクセスおよび複製

+

お客様は関連法令の規定に従い、IMEI(電話のシリアル番号)またはOAIDまたはAndroid IDおよびアカウント情報等の情報をご提供いただいた後、当社にお客様の個人情報へのアクセスおよび複製を申請することができます。3514406195@qq.com にメールでお問い合わせください。

+ +

5. 上記のご要望への対応

+

セキュリティ上の理由から、書面でのご要望のご提示またはその他の方法での本人確認が必要となる場合があります。ご要望の処理前に本人確認をお願いする場合があります。お客様の合理的なご要望に対し、当社は適時に対応および処理いたします。不必要に繰り返されるご要望、過度の技術を必要とするご要望(例えば、新しいシステムの開発または既存の慣行の根本的な変更)、他者の正当な利益にリスクを与えるご要望、または極めて非実用的なご要望については、お断りする場合があります。

+

以下の状況において、法令の要件に従い、お客様のご要望にお応えすることができません:

+
    +
  • 国家安全および国防安全に関連する場合;
  • +
  • 犯罪捜査、起訴および裁判に関連する場合;
  • +
  • お客様に主観的な悪意または権利の濫用があることを示す十分な証拠がある場合;
  • +
  • お客様のご要望にお応えすることが、お客様またはその他の個人および組織の正当な権利利益に重大な損害を与える場合。
  • +
+ +

6. アカウントの解約

+

ユーザーはAPPで【アカウント解約】操作を実行できます。操作手順:

+
    +
  1. 【マイページ】に移動します
  2. +
  3. 右上の【設定】ボタンをクリックします
  4. +
  5. 【アカウント解約】をクリックして確認します
  6. +
+

ログアウト後、ユーザーアカウントに関する情報はクリアされます

+ +

7. アプリケーション権限の説明

+

より良い製品およびサービスを提供するため、ソフトウェアのご使用時に以下の権限を申請します。ホームページへのアクセス時または機能の使用時に認可を求めます。拒否された場合、一部の対応する機能が正常に使用できなくなります。権限の具体的な目的および注意事項は以下に詳しく説明します:

+ +

1 位置情報の権限:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFiまたはモバイル基地局を通じてユーザーの緯度経度の位置情報を取得します

+

Voitransのご使用時、当社はお客様の地理的位置に基づいて近くのBluetoothデバイスを検索します。同時に、より安定したサービスの提供、製品の最適化および体験の向上のため、Voitransの運営データおよび機能サービスを取得するために、上記の情報を友盟、Autonavi等の第三者SDKと共有します。

+

通知方法:アプリケーションの初回起動時に権限を示すプロンプトが表示され、ユーザーの承認確認が求められます。利用規約およびプライバシーポリシーの説明。

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

アプリケーション管理機能を実行するためにアプリケーションにアクセスする際にこの権限が必要です。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

3 ネットワーク権限:

+

android.permission.INTERNET

+

Voitransの情報サービスおよびバージョンアップグレードサービスにご使用の際にこれらの権限が必要です。ユーザー体験の向上およびサービス機能の最適化のため、Friends等の第三者SDKもこれらの権限を使用します。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

4 ネットワーク状態権限の取得:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

現在のネットワーク接続が有効かどうかの確認、現在の4G環境であるかの判断、ネットワーク環境の変更を通知するかどうかに使用され、情報コンテンツの読み込みに影響します。この権限はVoitransのご使用時に申請されます。

+

ネットワーク状態の変化はデータのアップロードおよび読み込みに影響します。そのため、ネットワーク状態権限へのアクセスは友盟+およびその他のプラットフォームと共有されます。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

5 タスクリスト権限の取得:

+

android.permission.GET_TASKS

+

この権限はソフトウェア管理機能のアプリケーションリストを取得するために使用されます。ソフトウェア管理機能をご使用の際、スマートフォンにインストールされたアプリケーションを読み取る必要があります。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

6 MACアドレス権限の取得

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Voitransのご使用時、アプリケーションはMACアドレス権限を取得する必要があります:

+

アプリケーションがターゲットコンバージョンデータを報告する必要がある場合、友盟+SDK等の第三者プラットフォームがMACを使用する必要があります。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

7 音声録音権限の取得

+

android.permission.RECORD_AUDIO

+

Voitransの音声入力機能をご使用の際、音声録音の権限を使用する必要があり、主に翻訳およびその他の関連機能のための音声入力に使用されます。

+

通知方法:利用規約およびプライバシーポリシーの説明、ユーザーの要求に応じて動的にダイアログボックスが表示されます。

+ +

8 WIFIのSSID権限の取得

+

この権限が使用されると、アプリはWIFIのSSID権限を読み取ります:

+

使用範囲および目的:アプリケーションがデータ分析サービスを使用する必要がある場合、+SDK等の第三者プラットフォームがデバイスの「WIFI SSID権限」を読み取り、ユーザーにより正確かつ効果的な機能サービスを提供する必要があります。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

9 Bluetoothアクセスの取得

+

この権限が使用されると、アプリはBluetooth権限を読み取ります:

+

使用範囲および目的:Bluetoothイヤホン、Bluetoothウォッチ等のアクセサリーを検索および設定するためのBluetoothデバイス。ユーザーの管理を容易にします

+

通知方法:アプリケーションの初回起動時に権限を示すプロンプトが表示され、ユーザーの承認確認が求められます。利用規約およびプライバシーポリシーの説明。

+ +

10 WiFiのBSSID権限の取得

+

アプリケーションが機能サービスおよびデータ統計を提供するためにユーザーを区別および識別する必要がある場合、以下のためにデバイスの「WiFi BSSID」権限を読み取ります:

+

使用範囲および目的:1 第三者プラットフォーム:友盟SDK、Bugly SDK、Autonavi SDK等

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

11 アプリケーションインストール権限の取得

+

android.permission.REQUEST_INSTALL_PACKAGES

+

ソフトウェアはアプリケーションインストール権限を使用します。これは主に新しいバージョンがある場合にユーザーが新しいバージョンをインストールし、新機能を体験できるようにするために使用されます。

+

通知方法:利用規約およびプライバシーポリシーの説明。

+ +

12 カメラ権限の取得

+

android.permission.CAMERA

+

VoitransはQRコードのスキャンおよびBluetoothイヤホンやウォッチなどのBluetoothデバイスのバインドにカメラ権限を使用します。

+

通知方法:アプリケーションの初回起動時に権限を示すプロンプトが表示され、ユーザーの承認確認が求められます。利用規約およびプライバシーポリシーの説明。

+ +

特別なご注意:

+

1 アプリケーションのAllies SDK、Scott map SDK内での統合において、ユーザーの使用許可への同意後、アプリケーションはバックグラウンド/フォアグラウンドでICCID、IMSI、IMEI、SN、ANDROID、BSSID、ANDROID ID、SSID、IMSI等の個人情報を取得します;

+

備考:詳細については以下のSDK関連コンテンツおよび権限をご覧ください【VIII. 第三者SDKリストへのアクセス】

+ +

8. 第三者SDKへのアクセス

+

1 当社のクライアントの安定した動作および機能の実現を確保し、お客様がより多くのサービスおよび機能を使用および享受できるようにするため、当社のアプリケーションは第三者のソフトウェアツール開発キット(SDK)またはその他の類似のアプリケーションを組み込みます。これらの第三者は、機能および広告サービスを通常通り提供するために、自社のプライバシーポリシーに従って関連情報を収集および処理します。第三者の情報収集および処理ルールについては、以下のセクションでご確認いただけます。当社はパートナーが情報を取得するための開発キット(SDK)に対して厳格なセキュリティテストを実施し、お客様の個人情報の合理的な使用および安全を保護します。第三者SDKはバージョンアップグレードによりデータ処理の種類を変更する場合がありますのでご注意ください。第三者SDKが公開するプライバシーポリシーをご参照ください。詳細は以下をご覧いただくか、第三者SDKリストをクリックしてご覧ください。

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

取得される情報:デバイス番号、IPアドレス、デバイスソフトウェア情報、デバイス識別コード(IMEI、Android ID、IDFA、OAID、OPENUDID、GUID、ICCID、SIMカードIMSI情報、IP、MACアドレス)、デバイス識別子、地域、デバイス関連アプリケーション情報およびその他のサービス関連ログ情報

+

使用目的:WeChatのログインおよび共有

+

開発者:Shenzhen Tencent Computer Systems Company Limited

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

取得される情報:アプリケーション名、アプリケーションバージョン番号、デバイスブランドおよびモデル、オペレーティングシステム、キャリア情報、画面解像度、センサー情報(ベクトル、加速度、圧力、方向、地磁気、ジャイロスコープ、温度、光センサー、NMEA信号)、デバイス信号強度情報

+

使用目的:Amapを使用したナビゲーション

+

開発者:Beijing Gaode Tuqiang Technology Co., Ltd.

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

取得される情報:アプリケーション名、アプリケーションバージョン、デバイスブランドおよびモデル、オペレーティングシステム、ネットワーク情報、デバイス信号強度等

+

使用目的:地図の表示およびインタラクション

+

開発者:Beijing Gaode Tuqiang Technology Co., Ltd.

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

取得される情報:位置情報(GPS、Wi-Fi、基地局)、デバイス情報、ネットワーク情報等

+

使用目的:位置情報サービスの提供

+

開発者:Beijing Gaode Tuqiang Technology Co., Ltd.

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

取得される情報:アプリケーション名、アプリケーションバージョン、デバイス情報、ネットワーク情報等

+

使用目的:地図ツールおよびレンダリングの最適化

+

開発者:Beijing Gaode Tuqiang Technology Co., Ltd.

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

取得される情報:デバイス識別子、基本デバイス情報、インストール済みソフトウェアリスト、およびネットワーク情報(詳細は公式プライバシーポリシーをご参照ください)

+

使用目的:Alipayアカウントのログインおよび決済呼び出し

+

開発者:Alipay (Hangzhou) Information Technology Co., Ltd.

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

取得される情報:SDK/APIバージョン、プラットフォーム、タイムスタンプ、アプリ識別子、アプリバージョン、デバイスメーカー、OSバージョン、ロケール、タイムゾーン、ネットワーク状態(Wi-Fi等)、ネットワークログ、クラッシュおよび使用データ、IPアドレス等(詳細は公式プライバシーポリシーをご参照ください)

+

使用目的:アプリ品質モニタリングおよびデータレポートサービス

+

開発者:Shenzhen Tencent Computer Systems Company Limited

+

収集方法:SDK自己収集

+

プライバシーポリシーリンク:https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. 未成年者の保護

+

当社の製品およびサービスのユーザーには18歳未満の未成年者が含まれる場合があります。未成年のユーザーは当社の製品をご使用前に本プライバシーポリシーについて保護者の助言を求め、保護者の同意を得て指導の下で当社のサービスのご利用または情報のご提供を行ってください。ご質問のある未成年者の保護者は、本プライバシーポリシーの連絡先を通じて当社にお問い合わせいただけます。

+

上記の第三者サービスプロバイダーによる前述の情報の収集に同意されない場合は、直ちに本ソフトウェアのご使用を停止してください。本ソフトウェアのご使用中、これらの第三者は一部の機能、広告およびその他のサービスを提供するために、自社のプライバシーポリシーに従って関連情報を収集および処理します。関連する第三者サービスプロバイダーによる前述の情報の収集に起因して情報が漏洩した場合、関連する第三者サービスプロバイダーが対応する法的責任を負うものとします。

+ +

10. プライバシーポリシーの発効および更新

+

1. 本プライバシーポリシーは公開日から効力を生じます。

+

2. 当社の事業の発展および変化に伴い、当社のプライバシーポリシーは変更される場合があります。当社はいつでもプライバシーポリシーを変更する権利を留保しますので、頻繁にご確認ください。当社のプライバシーポリシーに変更を加えた場合、お客様にお知らせするため、当社のウェブサイト、アプリケーションおよび当社が適切と判断する場所にこれらの更新を掲載します。プライバシーポリシーが更新された場合、更新日から効力を生じます。当社の製品またはサービスのご利用を継続されることにより、変更されたプライバシーポリシーに同意したものとみなされます。

+ +

11. お問い合わせ方法

+

Saitong Industries Inc は2024年11月22日に設立され、登録住所:18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA。当社および当社のプラットフォームについて詳しくお知りになりたい場合は、本ポリシーに記載されている連絡先情報(saitong.voitrans@gmail.com)を通じてお問い合わせいただけます。

+
+ + + diff --git a/doc/ja/user_agreement.html b/doc/ja/user_agreement.html new file mode 100644 index 000000000..7c202e82e --- /dev/null +++ b/doc/ja/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans アプリケーション利用規約 + + + +
+
日本語
+ +

Voitrans アプリケーション利用規約

+ +

本利用規約は、Voitrans アプリケーションおよびオンラインサービス(以下「サービス」)へのアクセスおよび使用方法をお知らせするものです。Saitong Industries Inc.(以下「Saitong」)は、ユーザーに対し、本利用規約(以下「本規約」)を注意深くお読みいただき、十分にご理解いただくようお願いいたします。ユーザーは本規約の各条項を注意深くお読みいただき、十分にご理解ください。本規約を注意深くお読みいただき、承諾するか否かをお選びください。Voitrans APP(以下「本APP」または「本ソフトウェア」)のご利用は、本規約の承諾とみなされ、本規約の条項に拘束されることに同意したものとします。本規約に同意されない場合は、本APPをご利用にならないでください。

+

Saitong は本規約を修正する権利を留保し、更新された規約の条項は本APP内で公開され、公開日から効力を生じます。

+ +

1. 一般規則

+

1.1 本APPは、Saitong およびそのパートナー企業が発売するヘッドセット製品を接続するために Saitong が提供するソフトウェアです。本ソフトウェアおよび関連サービスの所有権および運営権はすべて Saitong に帰属します。

+

1.2 本規約は、お客様(以下「ユーザー」)と当社およびそのパートナーおよび運営パートナー(以下「パートナー」)との間における、ユーザーによる本APPおよび関連サービスの利用に関する規約です。

+

1.3 本ソフトウェアおよびサービスには以下が含まれます:

+

1.3.1 提供されるソフトウェアは、Voitrans ユーザーに対し、Voitrans の接続およびバインディング、機能設定管理およびその他のソフトウェアサービスを提供するものであり、本APPが実際に提供するソフトウェアサービスに準じます。

+

1.3.2 ソフトウェアのアップデート、アップグレードおよびその他のサービス。

+ +

2. ソフトウェアライセンスの範囲

+

2.1 当社はユーザーに対し、本ソフトウェアの個人的な、譲渡不可の、再許諾不可の、非独占的なライセンスを付与します。

+

2.2 ユーザーは、非商業目的で単一のモバイル端末デバイスにソフトウェアをインストール、使用、表示および実行することができます。ただし、ユーザーは商業運営目的でソフトウェアをインストール、使用または実行してはならず、ソフトウェアの動作中に任意の端末デバイスのメモリに放出されたデータ、またはソフトウェアの動作中のクライアントとサーバー間のインタラクションデータを複製、変更、修正、接続または実行してはならず、いかなる派生的著作物も作成してはなりません。これには、プラグイン、アドオン、または未承認の第三者ツール/サービスを使用して本ソフトウェアおよび関連システムにアクセスすることが含まれますが、これに限定されません。ソフトウェアのプレインストールおよびバンドルなどの商業販売、複製および配布には、書面による承認および許可を得る必要があります。

+

2.3 ユーザーは、作成者の明示的な許可なしに、テレビ、デジタルセットトップボックス、ゲーム機およびその他のデバイスを含むがこれに限定されない他の端末デバイスにソフトウェアをインストールしてはなりません。

+

2.4 本規約で明示的に承認されている場合を除き、ユーザーにその他の権利は付与されず、ユーザーはその他の権利を使用するために書面による同意を得る必要があります。

+ +

3. ソフトウェアのアップグレード

+

3.1 ユーザーは、インストールされた端末の設定に適したソフトウェアバージョンを選択する必要があります。デバイスタイプに適さないソフトウェアバージョンに起因するソフトウェアの問題、デバイスの問題または損傷については、ユーザーが単独で責任を負うものとします。

+

3.2 ユーザー体験を向上させ、サービス内容を改善するために、Saitong は随時ソフトウェアの交換版、修正版およびアップグレード版を提供する権利を有します。「アップグレード通知」機能はユーザーに対しデフォルトで有効になっています。ユーザーが使用するソフトウェアバージョンの違いに応じて、Saitong はユーザーにこの機能を有効化するオプションを提供します。ソフトウェアの新バージョンがリリースされた後、Saitong は旧バージョンのソフトウェアの継続的な利用可能性を保証しません。

+ +

4. 使用仕様

+

4.1 ユーザーは、法律および本規約を遵守することを前提として、本規約に従い本ソフトウェアおよびサービスを使用することができます。ユーザーは以下の行為を行ってはなりません:

+

4.1.1 本ソフトウェアおよびその他のコピーに記載されたすべての著作権情報を削除すること、および知的財産権を保護するために本ソフトウェアが設定した技術的措置を修正、削除または回避すること。

+

4.1.2 逆アセンブル、逆コンパイル、またはその他の本ソフトウェアのソースコードを取得しようとする試みなど、本ソフトウェアのリバースエンジニアリングを行うこと。

+

4.1.3 ソフトウェアの動作における命令およびデータの修正または偽造により、ソフトウェアの機能または動作効果を追加、削除または変更すること、または上記の目的に使用するソフトウェアまたは方法を操作または公衆に配布すること(これらの行為が商業目的であるか否かを問わない)。

+

4.1.4 ネットワークセキュリティを危険にさらす行為に本ソフトウェアを使用すること。これには以下が含まれますがこれに限定されません:未承認のデータの使用または未承認のサーバー/アカウントへのアクセス、許可なく公共ネットワークまたはその他のオペレーティングシステムにアクセスし、保存された情報を削除、修正または追加すること、ソフトウェアのシステムまたはネットワークの弱点を探査、スキャンまたはテストする未承認の試み、またはネットワークセキュリティを損なうその他の行為、ソフトウェアシステムまたはウェブサイトの正常な動作を妨害または破壊しようとする試み、悪意のあるプログラムまたはウイルスを意図的に拡散すること、および正常なネットワーク情報サービスを妨害するその他の行為、TCP/IPパケット名または部分名の偽造。

+

4.1.6 当社の書面による同意なしに、ユーザーが本ソフトウェアおよびその中の情報に対して以下の行為を任意に行うこと。これには以下が含まれますがこれに限定されません:本ソフトウェアを利用して使用、賃貸、貸出、複製、修正、リンク、転載、コンパイル、出版、公開、ミラーサイトの構築、派生製品、著作物、サービス、プラグイン、アドオン、互換性、相互接続等の開発を行うこと。

+

4.1.7 本ソフトウェアを使用して、お住まいの地域の法律に違反するコンテンツを公開、送信、配布および保存すること。

+

4.1.8 本ソフトウェアを使用して、他者の知的財産権、営業秘密およびその他の正当な権利を侵害するコンテンツを公開、送信、配布および保存すること。

+

4.1.9 本ソフトウェアを使用して、広告情報および迷惑情報を大量に公開、送信および配布すること。

+

4.1.10 本ソフトウェアおよびその他のサービスを、違法な方法で、違法な目的で、または本規約の許諾された使用と矛盾する方法で使用すること。

+

4.2 情報公開仕様

+

4.2.1 本ソフトウェアを使用して情報コンテンツを公開する場合(もしあれば)、お客様がアップロードする情報コンテンツの知的財産権を所有しているか、または法的な承認を得ていることを保証する必要があり、お客様が本ソフトウェアおよびサービスを使用するいかなる行為も第三者の正当な権利および利益を侵害しないものとします。

+

4.2.2 本ソフトウェアの使用時、ユーザーは本ソフトウェアを使用して以下の活動に従事してはなりません(これらに限定されません):

+

4.2.2.1 当該地域の国内法令に違反するコンテンツの作成、複製、公開、配布および保存。

+

4.2.2.2 名誉、肖像、知的財産権および営業秘密などの他者の法的権利を侵害するコンテンツの公開、送信、配布および保存。

+

4.2.2.3 他者を誤導または欺くために事実を捏造し、真実を隠蔽すること。

+

4.2.2.4 広告情報および迷惑情報の公開、送信および配布。

+

4.2.2.5 当該地域の法令に違反するその他の行為に従事すること。

+

4.2.3 当社の許可なしに、本ソフトウェア内で広告や商品の販売などの商業活動を行うことはできません。

+

4.3 ユーザーは以下を理解し同意するものとします:

+

4.3.1 Saitong は、ユーザーが上記の使用仕様に違反している疑いがあるかどうかを判断し、判断の結果に基づき、お客様の使用ライセンスを一時停止または終了し、または本規約に基づいて実施できるその他の制限措置を講じます。

+

4.3.2 ユーザーが許諾されたソフトウェアを使用して公開した、違法の疑いがある情報、または他者の法的権利を侵害する疑いがある情報、または本規約に違反する情報は、直接削除されます。

+

4.3.3 ユーザーが上記の使用規則に違反して第三者に損害を与えた場合、お客様は自らの名前において独立して法的責任を負う必要があり、当社に損失または追加費用が生じないようにする必要があります。

+

4.3.4 ユーザーが関連する法的規定または規約に違反し、Saitong に損失を与えた場合、または第三者から請求を受けた場合、または行政機関から処罰を受けた場合、ユーザーは合理的な弁護士費用、調査および証拠収集費用を含む、Saitong に生じた損失および/または費用を補償するものとします。

+ +

5. 第三者サービスの説明

+

5.1 ユーザーは、本ソフトウェアシステムに当社の関連会社または第三者が提供するサービスが含まれる場合があること、および当社がユーザーの便宜のためにシステム内に関連する機能モジュールを提供し、第三者サービスへのアクセスを提供するものであることを理解し同意するものとします。

+

5.2 第三者サービスがソフトウェアシステムサービスにプリセットされているか、ユーザー自身が開設または注文したものであるかを問わず、ユーザーは、Saitong が第三者サービスプロバイダーまたはユーザーの合法性および有効性、ならびに第三者サービスの合法性、正確性、有効性および安全性について、いかなる明示的または黙示的な保証も行わないことを理解し同意するものとします。

+

5.3 当社は、第三者サービスの監督、管理、またはいかなる種類の保証の提供も行わず、いかなる責任も負いません。

+

5.4 ユーザーと第三者サービスプロバイダーとの間のいかなる紛争も、ユーザーと第三者が第三者サービスプロバイダーの業務プロセスおよび業務規範に従って解決するものとし、当社はいかなる責任も負いません。

+ +

6. プライバシーポリシーおよび個人情報の保護

+

6.1 Saitong はプライバシーポリシーに従いユーザーのプライバシーを保護することに尽力しています。詳しくは Voitrans アプリケーションプライバシーポリシーをご覧ください。

+ +

7. 契約違反の責任

+

7.1 Saitong はユーザーの行為が本規約の規定に準拠しているかどうかを判断する権利を有します。ユーザーが関連する法令または本規約および関連規則の規定に違反したと認められる場合、ユーザーの違反の重大度に応じて、Saitong は違法情報の削除、ユーザーによる本ソフトウェアサービスの使用の制限、一時停止、終了、ユーザーの法的責任の追及、および Saitong が適切と判断するその他の措置を講じる権利を有します。当社がいかなる損失を被った場合(第三者からの請求または行政機関からの処罰を含むがこれに限定されない)、ユーザーは全面的な責任を負うものとします。

+ +

8. サービスリスクおよび免責事項

+

8.1 当社は現行の技術でサービスサポートを提供することを望んでいます。Saitong は、本ソフトウェアサービスが中断なくまたはエラーなく動作すること、本ソフトウェアサービスのすべての欠陥が修正されること、または本ソフトウェアサービスがユーザーのすべての要件を満たすことを保証しません。それにより生じる結果について、Saitong はいかなる責任も負いません。

+

8.2 通信回線の障害、技術的問題、ネットワーク、コンピュータ端末機器の障害、システムの不安定性およびその他の不可抗力の原因など、第三者に起因するユーザーの全損失については、当社は責任を負いません。

+

8.3 Saitong は、本ソフトウェアを通じて取得した情報コンテンツ(第三者サービスコンテンツを含むがこれに限定されない)の合法性、真実性、正確性および有効性を保証せず、Saitong はクエリおよび閲覧に基づいてユーザーが行ったいかなる行動の結果についても責任を負いません。

+

8.4 本ソフトウェアは、ほとんどのインターネットソフトウェアと同様に、ユーザーの理由、ネットワークサービスの品質、社会環境およびその他の要因の違いを含むがこれに限定されない要因の影響を受け、他者がユーザー情報を使用することによる実生活での嫌がらせなど、さまざまなセキュリティ問題を受ける可能性があります。ユーザーがダウンロードおよびインストールしたその他のソフトウェア、またはユーザーが閲覧したその他のウェブサイトに「トロイの木馬」などのウイルスが含まれ、ユーザーの端末機器の情報およびデータのセキュリティを脅かし、さらにソフトウェアの正常な使用に影響を与える可能性があります。ユーザーは情報セキュリティおよびユーザーデータ保護の意識を強化し、損失や嫌がらせを回避するためにパスワード保護の強化に注意を払う必要があります。

+

8.5 ユーザーが本ソフトウェアを使用する場合、または Saitong に特定のサービスの提供を要求する場合、本ソフトウェアはユーザーの使用またはアクセスをサポートするために第三者のシステムまたは第三者のソフトウェアを呼び出す場合があり、使用またはアクセスの結果は第三者によって提供されます。本規約の関連規則に準拠することに加え、ユーザーは第三者の契約および関連規則にも準拠する必要があります。ユーザーは、第三者サービスを利用する際に第三者がユーザーデータを読み取る場合があること、Saitong が第三者システムまたは第三者ソフトウェアサポートを通じて達成された結果の安全性、正確性、有効性およびその他の不確定なリスクを保証しないことを理解し同意する必要があり、ユーザーは慎重な判断を行う必要があり、Saitong はこれにより生じたいかなる紛争および損害についても責任を負いません。

+

8.6 当社の事業開発および調整の自主性を保証するため、当社は合理的な方法でユーザーに通知した後、いつでもサービスを修正または中断することができます。

+

8.7 法令で明示的に規定されている場合を除き、Saitong はソフトウェアおよび関連する技術と情報が安全、有効、正確かつ信頼性のあるものであるよう最善を尽くしますが、既存の技術の制限により、ユーザーは Saitong がこれを保証できないことを理解するものとします。

+

8.8 以下のいずれかの状況に起因するまたはこれに関連する人身傷害の賠償、または利益の喪失、データの喪失、業務中断に対する損害、またはその他の事業上の損害もしくは損失を含むがこれに限定されない付随的および間接的な経済的損害は、ユーザーが負担するものとします:

+

1) 許諾されたソフトウェアの使用または使用不能。

+

2) 第三者によるソフトウェアの不正使用またはユーザーデータの改ざん。

+

3) ユーザーがソフトウェアを使用した行為により発生した費用および損失。

+

4) ソフトウェアに対するユーザーの誤解。

+

5) Saitong に起因しないソフトウェアに関連するその他の損失。

+

8.9 ユーザーは、当社が司法、規制および監督当局の要件に基づき、またはその自らの事業上の理由により、ユーザーに対するサービスの全部または一部を一時停止、中断または終了する権利を有することに同意します。Saitong はこれについていかなる責任も負いません。

+

8.10 ユーザーは、当社が本ソフトウェアおよびサービスにおけるデータ保存のセキュリティを確保するために商業上合理的な努力を行うが、当社は完全な保証を提供できないこと、および当社がサービスにおけるデータの削除、保存の失敗またはバックアップの失敗について責任を負わないことを理解し同意するものとします。

+

8.11 法律で許される最大限の範囲において、開発者またはサプライヤーは、本アプリケーションの使用から生じるいかなる直接的、間接的、付随的、特別または結果的な損害についても責任を負いません。ユーザーにさらなるニーズがある場合は、専門の医療機関で精密検査を受けてください。

+ +

9. 知的財産権に関する声明

+

9.1 Saitong は本ソフトウェアの知的財産権の保有者です。本ソフトウェアのすべての著作権、商標、特許、営業秘密およびその他の知的財産権、ならびに本ソフトウェアに関連するすべての情報コンテンツ(テキスト、画像、音声、映像、グラフィックス、インターフェースデザイン、レイアウトフレーム、関連データまたは電子文書等を含むがこれに限定されない)は、現地の法令および対応する国際条約により保護されています。

+

9.2 当社の書面による同意なしに、ユーザーは上記の知的財産権を商業目的または非商業目的のいずれにおいても実施、利用または移転してはならず、いかなる第三者にもこれを許可してはなりません。当社は上記の行為に対する法的責任を追及する権利を留保します。

+ +

10. 規約の変更

+

10.1 Saitong は必要に応じて本規約の条項を修正する権利を有します。規約の条項が変更された場合、改訂された規約の条項は関連するページに公開されます。変更された内容に同意しない場合、ユーザーは主体的に本サービスを解約するものとします。ユーザーがサービスの利用を継続する場合、規約の条項の変更を承諾したものとみなされます。

+

10.2 Saitong は必要に応じて、提供する有料サービス、課金基準、課金方法、サービス料金およびサービス条件を修正または変更する権利を留保します。サービスの提供に際し、当社は現在または将来、一部のサービスのユーザーに対して一定の料金を請求する場合があります。ユーザーがそのような料金の支払いを拒否した場合、料金の課金開始後に関連するサービスを引き続き利用することはできません。

+
+ + diff --git a/doc/ko/privacy_policy.html b/doc/ko/privacy_policy.html new file mode 100644 index 000000000..9597096c6 --- /dev/null +++ b/doc/ko/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans 개인정보 보호정책 + + + + +
+

Voitrans 개인정보 보호정책

+

최종 업데이트: 2025년 5월 27일

+

발효일: 2025년 5월 27일

+ +

Voitrans 소프트웨어 및 서비스를 이용해 주셔서 감사합니다

+

1. Voitrans는 Saitong Industries Inc.(이하 "회사")가 제공합니다. 사용자가 블루투스 장치 및 기타 제품 관리를 실현할 수 있도록 도와줍니다. 당사는 사용자(이하 "귀하")에게 개인정보의 중요성을 이해하고 있으며, 개인정보의 효과적인 보호가 사업의 건전하고 지속 가능한 발전의 초석임을 인식하고 있습니다. Voitrans 제품 또는 서비스를 이용해 주시고 신뢰해 주셔서 감사합니다! 이 신뢰가 쉽게 얻어지지 않음을 충분히 인식하고 있으며, 공개와 투명성의 원칙을 준수하여 귀하의 개인정보 처리 규칙을 알려드립니다. 당사는 합법적이고 적법한 방법과 명확하고 합리적인 목적으로 귀하의 개인정보를 처리합니다. 특별 참고 사항: 당사의 제품이나 서비스를 사용하기 전에 본 개인정보 보호정책을 주의 깊게 읽고 완전히 이해하시어 적절한 선택을 하시기 바랍니다.

+

2. 본 개인정보 보호정책은 귀하가 Voitrans를 사용할 때 당사가 귀하의 개인정보를 수집, 사용, 저장 및 공유하는 방법을 설명합니다. 개인정보란 전자적 또는 기타 수단으로 기록된 모든 종류의 정보로서, 특정 자연인을 식별하거나 특정 자연인의 활동을 단독으로 또는 다른 정보와 결합하여 반영할 수 있는 정보를 말합니다. Voitrans는 서비스의 모든 사용자의 개인 프라이버시를 존중하고 보호합니다. 본 개인정보 보호정책에 달리 규정된 경우를 제외하고, Voitrans는 귀하의 사전 허가 없이 이 정보를 공중에 공개하거나 제3자에게 제공하지 않습니다.

+

3. 앱 마켓플레이스 제품 또는 서비스를 통해 제3자의 제품 또는 서비스를 이용하는 경우, 귀하의 개인정보는 해당 제3자의 개인정보 보호정책에 따릅니다.

+

4. Voitrans 본 개인정보 보호정책은 수시로 업데이트됩니다. Voitrans 서비스 이용 계약에 동의하고 Voitrans를 사용하기 시작하면, 본 개인정보 보호정책의 전체 내용에 동의한 것으로 간주됩니다. 본 개인정보 보호정책에 동의하지 않으시면, Voitrans 소프트웨어 및 서비스를 사용하지 마십시오.

+

5. 관련 서비스의 효과를 분석하고 측정하기 위해, 당사는 본 개인정보 보호정책의 조항에 따라 귀하의 개인정보를 사용하고 공개합니다.

+ +

본 개인정보 보호정책은 다음 사항을 이해하는 데 도움이 됩니다:

+
    +
  • 1 당사가 수집하는 정보
  • +
  • 2 정보의 저장
  • +
  • 3 정보 보안
  • +
  • 4 수집한 정보를 어떻게 사용하는가
  • +
  • 5 정보 공유
  • +
  • 6 개인정보를 어떻게 관리하는가
  • +
  • 7 애플리케이션 권한 설명
  • +
  • 8 제3자 SDK 접근
  • +
  • 9 미성년자 보호
  • +
  • 10 개인정보 보호정책의 발효 및 업데이트
  • +
  • 11 연락 방법
  • +
+ +

1. 당사가 수집하는 정보

+

1. Voitrans 사용 시작 시 당사는 애플리케이션 사용에 관한 데이터를 수집하기 시작합니다

+

2. Voitrans는 합법적인 수단을 통해 제3자 또는 비즈니스 파트너로부터 귀하에 관한 개인정보를 획득할 수 있습니다

+

3. 더 나은 제품과 서비스를 제공하고, 사용 중 네트워크 보안을 보장하며, 제품의 정상 운영을 유지하고 최적화 및 개선하기 위해, 당사의 정보 서비스 목적으로, 귀하가 본 개인정보 보호정책에 적극적으로 동의를 클릭한 후, 당사가 제공하는 서비스를 사용하는 동안, 국가 법률 및 규정에 따라 앱의 기본 기능의 정상 운영을 보장하는 데 필요한 개인정보 외에, 당사는 귀하로부터 다음과 같은 기타 개인정보를 수집합니다:

+

3.1 위험 사용자를 식별하고, 사용자의 진위를 판단하며, 부정행위를 전면적으로 방지하기 위해, 당사는 소프트웨어를 열 때마다 기기 정보를 읽습니다. 이에는 다음이 포함됩니다: (기기 모델, 기기 MAC 주소, 기기 고유 식별자 (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID 등) MEID, 시리얼 번호, WIFI의 SSID 및 BSSID), 블루투스 주소 읽기, 운영 체제 버전, 운영 체제 이름, 사용자 로그인 계정 및 비밀번호 정보;

+

3.2 당사의 제품 및 서비스를 사용할 때, 당사는 네트워크 로그 정보 또는 특정 프로그램 및 소프트웨어를 통해 특정 정보를 수집할 수 있습니다. 이러한 정보에는 다음이 포함될 수 있습니다: 애플리케이션의 열기 시간, 사용 시간, 방문 페이지의 주소 등 제품 및 서비스 사용 세부 사항; 충돌, 시스템 활동 등의 기기 이벤트 정보, 기기를 최적화하고 서비스를 개선하기 위해;

+

3.3 장비의 위험에 처한 애플리케이션을 식별하고, 더 안전한 기능 서비스를 제공하기 위해. 따라서 당사는 제품의 정상 운영을 보장하고 기기의 보안을 보호하기 위해 프로세스에서 귀하의 애플리케이션/애플리케이션 설치 목록을 획득해야 합니다.

+

3.4 애플리케이션 기능의 사용자 사용을 분석하고 사용자의 진위를 판단하기 위해, 당사는 데이터 통계를 수행해야 하며, 기기가 사용 중일 때 기기 MAC 주소 및 기기 고유 식별자를 포함한 상기 기기 정보를 수집합니다.

+

3.5 기기 신호: 사용하는 기기의 네트워크 상태, WIFI 접속 지점 정보 등.

+

3.6 위치 정보: 당사는 GPS, WiFi 또는 기타 기술적 수단을 사용하여 현지 정보 업데이트, 콘텐츠 서비스 제공 등을 위해 귀하의 위치에 관한 정보를 수집하고 처리할 수 있습니다.

+

자세한 정보는 "개인정보 수집 목록"을 클릭하십시오.

+ +

1. 위 정보 중 더 민감한 개인정보, 예를 들어 사용자 기기 정보(IMEI 번호, 통화 상태 및 식별 번호), GPS 위치 정보, 사진 미디어 콘텐츠 및 파일 접근 권한에 대해서는 수집 전에 귀하의 동의를 얻습니다. 일부 비민감 정보의 경우, 수집은 기본적으로 자동으로 이루어질 수 있습니다. 모바일 기기의 설정 옵션을 조정하여 당사의 관련 정보 수집이나 특정 권한 사용을 제한할 수 있습니다. 특정 권한에 대한 당사의 접근을 제한하면, 해당 서비스를 계속 제공하지 못할 수 있으며, 더 이상 해당 정보를 처리하지 않습니다.

+

2. 당사는 귀하의 신분증 번호, 개인 생체 정보, 은행 계좌 번호, 재산 정보, 신용 정보, 건강 및 생리 정보 및 기타 개인 민감 정보를 수집하지 않습니다.

+

3. 민감한 권한에 대하여: 애플리케이션 기능을 적절히 사용하기 위해, 제품은 정상 제품과 관련된 기능 서비스를 제공하기 위해 다음 권한을 획득해야 합니다.

+ +

1 저장소 읽기 및 쓰기 권한 획득

+

1 획득 방법: 팝업 프롬프트, 권한 획득 시 사용자가 적극적으로 동의를 클릭하면 애플리케이션이 이 권한을 사용합니다

+

2 사용 목적 및 범위: 시스템의 리소스 캐시 파일과 썸네일을 스캔하고, 음악 리소스와 제품 사진을 로드하는 데 사용됩니다. 사용자가 보고 조작할 수 있도록 앱 인터페이스에 표시됩니다

+ +

2 애플리케이션 설치 목록 권한 획득

+

1 획득 방법: 팝업 프롬프트, 권한 획득 시 사용자가 적극적으로 동의를 클릭하면 애플리케이션이 이 권한을 사용합니다

+

2 사용 목적 및 범위: 애플리케이션이 광고 프로모션 서비스를 사용해야 할 때, 제3자 광고 플랫폼인 Youmon +SDK는 사용자가 이미 보유한 애플리케이션을 푸시하지 않고 사용자 경험을 개선하기 위해 기기의 "앱 소프트웨어 설치 목록 권한"을 획득해야 합니다.

+ +

3 기기 상태 정보 획득 권한

+

포함 사항: (기기 모델, 기기 MAC 주소, 기기 고유 식별자 (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID 등) MEID, 시리얼 번호, WIFI의 SSID 및 BSSID, 블루투스 주소 읽기), 운영 체제 버전, 운영 체제 이름 등;

+

1 획득 방법: 팝업 프롬프트, 권한 획득 시 사용자가 적극적으로 동의를 클릭하면 애플리케이션이 이 권한을 사용합니다

+

2 사용 목적 및 범위: 당사의 애플리케이션을 사용할 때, 사용자의 애플리케이션 기능 사용을 분석하고 사용자의 진위를 판단하기 위해, 당사는 Autonavi SDK, Youmon +SDK 등을 포함한 제3자 SDK에 권한을 동기화합니다.

+ +

4 위치 정보 접근

+

1 획득 방법: 팝업 프롬프트, 권한 획득 시 사용자가 적극적으로 애플리케이션에 동의를 클릭할 때만 이 권한을 사용합니다.

+

2 사용 목적 및 범위: 애플리케이션이 GPS, WiFi 또는 기타 기능을 사용해야 할 때, 제품은 인근 위치에서 블루투스 기기를 검색하기 위해 귀하의 위치와 정보를 수집해야 합니다.

+

참고: 더 많은 애플리케이션 권한에 대해서는 본 문서 "개인정보 보호정책" 제7조 "애플리케이션 권한 설명"을 참조하십시오

+ +

2. 정보의 저장

+

1. 정보가 저장되는 위치

+

중화인민공화국에서 당사가 수집하고 생성하는 개인정보는 당사 및/또는 계열사의 서버에 저장됩니다.

+

2. 정보 저장 및 처리

+

당사는 목적 달성에 필요한 기간 동안 또는 법률 및 규정에서 요구하는 기간 동안만 귀하의 개인정보를 저장합니다. 본 제품 사용을 중단하면, 당사는 귀하의 개인정보 및 애플리케이션 데이터의 수집 및 처리를 즉시 중단합니다. 위의 기간이 경과하면, 당사는 귀하가 제공한 개인정보를 삭제하거나 익명화합니다.

+

필요한 기능 외에도, Voitrans는 해당 시스템 권한을 신청해야 합니다. 클라우드의 서버 측은 사용자 개인정보를 저장하지 않으며, 접근한 제3자 SDK는 서비스 제공자(Amu Statistics SDK, Autonavi SDK)에 의해 익명화 및 비식별화되어 사용자를 추적할 수 없습니다. 사용자 전화에 저장된 정보는 사용자가 Voitrans를 제거하거나 캐시를 지울 때 자동으로 삭제됩니다.

+ +

3. 정보 보안

+

1. Voitrans는 인증, 데이터 암호화, 제한된 데이터 센터 접근 및 기타 보안 조치와 같은 업계 표준 보안 조치 및 기술을 사용하여 귀하의 개인정보를 저장하고 보호하여 정보가 공개, 변경 및 파괴로부터 안전하게 보호됩니다. 앞서 언급한 보안 조치에도 불구하고, 어떤 보안 조치도 100% 안전할 수 없다는 점을 유의하시기 바랍니다.

+

2. Voitrans가 제공하는 서비스를 사용할 때, 귀하의 개인정보를 보호하십시오. 개인정보가 손상된 것을 발견한 경우, 당사가 적절한 조치를 취할 수 있도록 즉시 연락해 주십시오.

+ +

4. 수집한 정보를 어떻게 사용하는가

+

1. 애플리케이션 비즈니스 기능을 구현할 때, 당사가 귀하에게 제공하는 제품과 서비스의 무결성과 보안을 보장하기 위해 귀하의 개인정보를 사용할 수 있습니다;

+

2. 당사는 수집한 정보를 통해 귀하의 사용 습관을 이해하고, 데이터 분석의 도움으로 서비스의 수용 가능성, 사용 습관 등을 파악하여, 새로운 제품, 기능 및 서비스를 테스트하고 개발하며, 서비스 수준을 향상시키고, 기존 서비스를 개선하고 새로운 서비스를 개발하는 데 도움을 줍니다;

+

3. 당사는 제품 및 서비스에 대한 고객 설문조사, 제품 및 서비스에 대한 통지 전송, 상업적 프로모션을 위해 귀하의 개인정보를 사용할 수 있습니다;

+

4. 당사는 애플리케이션과 관련된 내부 분석 및 연구를 위해 귀하의 정보를 사용할 수 있습니다;

+ +

5. 정보 공유

+

현재 당사는 회사 외부의 제3자에게 귀하의 개인정보를 적극적으로 공유하거나 전달하지 않습니다. 귀하의 개인정보의 다른 공유 또는 전달이 있는 경우, 당사는 직접 또는 제3자가 상기 행위에 대한 귀하의 명시적 동의를 얻었음을 확인합니다.

+

당사는 수집한 개인정보를 공개적으로 공개하지 않습니다. 공개적으로 공개할 필요가 있는 경우, 공개의 목적, 공개되는 정보의 유형 및 관련될 수 있는 민감한 정보를 알려드리고 귀하의 명시적 동의를 얻습니다.

+

사업이 지속적으로 발전함에 따라, 당사는 합병, 인수, 자산 양도 및 기타 거래에 참여할 수 있으며, 관련 상황을 법률 및 규정에 따라 알려드리고, 본 지침에서 요구하는 기준 이상으로 귀하의 개인정보를 계속 보호하거나 새로운 관리자가 귀하의 개인정보를 계속 보호하도록 요구합니다.

+

또한, 관련 법률, 규정 및 국가 표준에 따라, 당사는 다음과 같은 상황에서 개인정보 주체의 사전 승인 및 동의 없이 개인정보를 공유, 전달 및 공개적으로 공개할 수 있습니다:

+
    +
  • 1 국가 안보 및 국방 안보와 직접적으로 관련된 경우;
  • +
  • 2 공공 안전, 공중 보건 또는 주요 공익과 직접적으로 관련된 경우;
  • +
  • 3 형사 수사, 기소, 재판 및 판결 집행과 직접적으로 관련된 경우;
  • +
  • 4 개인정보 주체 또는 기타 개인의 생명, 재산 및 기타 주요 합법적 권리와 이익을 보호하기 위해, 그러나 본인의 동의를 얻기 어려운 경우;
  • +
  • 5 개인정보 주체가 공개적으로 공개한 개인정보;
  • +
  • 6 합법적인 뉴스 보도, 정부 정보 공개 등 합법적으로 공개된 정보에서 개인정보를 수집하는 경우.
  • +
+ +

6. 개인정보를 어떻게 관리하는가

+

중국의 관련 법률, 규정 및 기준과 기타 국가 및 지역의 일반적인 관행에 따라, 당사는 귀하가 귀하의 개인정보에 대해 다음과 같은 권리를 행사할 수 있도록 보장합니다:

+ +

1. 개인정보 수정

+

당사가 처리한 귀하의 개인정보에 오류가 있는 것을 발견한 경우, 귀하는 잘못되었거나 불완전한 정보를 수정하거나 업데이트할 권리가 있습니다. 계정 센터에서 독립적으로 조작할 수 없는 경우, saitong.voitrans@gmail.com으로 이메일을 보내 연락할 수 있습니다

+ +

2. 개인정보 삭제

+

다음과 같은 경우, 당사에 개인정보 삭제를 요청할 수 있습니다:

+
    +
  • 당사가 법률 및 규정을 위반하여 개인정보를 처리하는 경우;
  • +
  • 당사가 귀하의 동의 없이 귀하의 개인정보를 수집하고 사용한 경우;
  • +
  • 당사의 개인정보 처리가 귀하와의 계약을 위반하는 경우;
  • +
  • 귀하가 더 이상 당사의 제품 또는 서비스를 사용하지 않는 경우;
  • +
  • 당사가 더 이상 귀하에게 제품 또는 서비스를 제공하지 않는 경우.
  • +
+

saitong.voitrans@gmail.com으로 연락하시면 귀하의 요청을 처리합니다. 수령 후 30 영업일 이내에 보내드립니다

+ +

3. 동의 범위 변경

+

saitong.voitrans@gmail.com으로 이메일을 보내 연락할 수 있습니다. 귀하의 요청에 따라, 당사는 더 이상 귀하의 개인정보를 수집, 사용 또는 공개하지 않습니다. 동의 철회 또는 개인정보 삭제가 당사 서비스의 일부 이용에 영향을 미칠 수 있음을 유의하시기 바랍니다.

+ +

4 개인정보 접근 및 복사

+

귀하는 관련 법률의 규정에 따라, 귀하의 imei (전화 시리얼 번호) 또는 oaid 또는 Android ID 계정 정보 및 기타 정보를 제공하신 후, 당사에 귀하의 개인정보에 대한 접근 및 복사를 신청할 수 있습니다. 3514406195@qq.com으로 이메일을 보내 연락할 수 있습니다.

+ +

5. 귀하의 상기 요청에 대한 응답

+

보안 목적으로, 서면 요청을 제공하거나 다른 방법으로 신원을 증명해야 할 수 있습니다. 요청을 처리하기 전에 신원을 확인하도록 요청할 수 있습니다. 합리적인 요청에 대해서는 적시에 응답하고 처리합니다. 불필요하게 반복적인 요청, 과도한 기술을 필요로 하는 요청(예: 새 시스템 개발 또는 기존 관행의 근본적인 변경), 타인의 합법적 이익에 위험을 초래하는 요청 또는 매우 비현실적인 요청은 거부할 수 있습니다.

+

다음과 같은 상황에서는 법률 및 규정의 요건에 따라 귀하의 요청에 응답할 수 없습니다:

+
    +
  • 국가 안보 및 국방 안보와 관련된 경우;
  • +
  • 형사 수사, 기소 및 재판과 관련된 경우;
  • +
  • 귀하가 주관적 악의 또는 권리 남용이 있다는 충분한 증거가 있는 경우;
  • +
  • 귀하의 요청에 응답하면 귀하 또는 다른 개인 및 조직의 합법적 권리와 이익에 심각한 손해를 초래하는 경우.
  • +
+ +

6. 계정 해지

+

사용자는 APP에서 [계정 해지] 작업을 수행할 수 있습니다. 작업 단계:

+
    +
  1. [마이] 페이지로 이동
  2. +
  3. 오른쪽 상단의 [설정] 버튼 클릭
  4. +
  5. [계정 해지]를 클릭하여 확인
  6. +
+

로그아웃 후, 사용자 계정에 대한 정보가 삭제됩니다

+ +

7. 애플리케이션 권한 설명

+

더 나은 제품과 서비스를 제공하기 위해, 소프트웨어 사용 시 당사는 다음 권한을 신청합니다. 홈 페이지에 진입하거나 기능을 사용할 때 권한 부여를 요청하며, 거부할 경우 해당 기능의 일부를 정상적으로 사용할 수 없습니다. 권한의 구체적인 목적과 알림은 다음과 같이 자세히 설명됩니다:

+ +

1 위치 권한:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFi 또는 모바일 기지국을 통해 사용자의 위도 및 경도 위치 정보를 획득합니다

+

Voitrans를 사용할 때, 당사는 귀하의 지리적 위치를 기반으로 부근의 블루투스 기기를 검색합니다. 동시에, 더 안정적인 서비스를 제공하고, 제품을 최적화하며 경험을 개선하기 위해, 당사는 Voitrans 운영 데이터 및 기능 서비스를 얻기 위해 Youmon 및 Autonavi 등의 3개 SDK와 위 정보를 공유합니다.

+

알림 모드: 처음 애플리케이션을 시작할 때 권한을 나타내는 프롬프트가 표시되며, 사용자가 수락을 확인해야 합니다. 사용자 계약 및 개인정보 보호정책 설명.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

애플리케이션에 접근하여 애플리케이션 관리 기능을 수행할 때 이 권한이 필요합니다.

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명.

+ +

3 네트워크 권한:

+

android.permission.INTERNET

+

Voitrans의 정보 서비스 및 버전 업그레이드 서비스에 이 권한이 필요하며, 사용자 경험을 개선하고 서비스 능력을 최적화하기 위해 Friends 등의 제3자 SDK도 이 권한을 사용합니다.

+

알림 모드: 사용자 계약 및 개인정보 보호정책 설명.

+ +

4 네트워크 상태 권한 획득:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

현재 네트워크 연결이 유효한지 확인하고, 현재 4G 환경인지 판단하며, 네트워크 환경 변경을 알려주어 정보 콘텐츠 로딩에 영향을 미칩니다. 이 권한은 Voitrans 사용 시 신청됩니다.

+

네트워크 상태의 변경은 데이터의 업로드 및 로딩에 영향을 미칩니다. 따라서 네트워크 상태 접근 권한은 friends + 등의 플랫폼과 공유됩니다.

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명.

+ +

5 작업 목록 권한 획득:

+

android.permission.GET_TASKS

+

이 권한은 소프트웨어 관리 기능을 위한 애플리케이션 목록을 획득하는 데 사용됩니다. 소프트웨어 관리 기능을 사용할 때, 모바일에 설치된 애플리케이션을 읽어야 합니다.

+

알림 모드: 사용자 계약 및 개인정보 보호정책 설명.

+ +

6 MAC 주소 권한 획득

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Voitrans를 사용할 때, 애플리케이션은 MAC 주소 권한을 획득해야 합니다:

+

애플리케이션이 목표 전환 데이터를 보고해야 할 때, Youmon +SDK 등의 제3자 플랫폼이 MAC을 사용해야 합니다.

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명.

+ +

7 오디오 녹음 권한 획득

+

android.permission.RECORD_AUDIO

+

Voitrans의 음성 입력 기능을 사용할 때, 오디오 녹음 권한이 필요하며, 주로 번역 및 기타 관련 기능에 음성 입력을 사용합니다.

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명, 필요 시 사용자에게 동적으로 팝업 박스가 표시됩니다.

+ +

8 WIFI의 SSID 권한 획득

+

이 권한을 사용할 때, 앱은 WIFI의 SSID 권한을 읽습니다:

+

사용 범위 및 목적: 애플리케이션이 데이터 분석 서비스를 사용해야 할 때, +SDK 등의 제3자 플랫폼이 사용자에게 더 정확하고 효과적인 기능 서비스를 제공하기 위해 기기의 "WIFI SSID 권한"을 읽어야 합니다.

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명.

+ +

9 블루투스 접근 권한 획득

+

이 권한을 사용할 때, 앱은 블루투스 권한을 읽습니다:

+

사용 범위 및 목적: 블루투스 헤드셋, 블루투스 시계 등과 같은 액세서리의 블루투스 기기를 검색하고 구성합니다. 사용자가 쉽게 관리할 수 있도록 합니다

+

알림 모드: 처음 애플리케이션을 시작할 때 권한을 나타내는 프롬프트가 표시되며, 사용자가 수락을 확인해야 합니다. 사용자 계약 및 개인정보 보호정책 설명.

+ +

10 WiFi BSSID 권한 획득

+

애플리케이션이 기능 서비스와 데이터 통계를 제공하기 위해 사용자를 구별하고 식별해야 할 때, 기기의 "WiFi BSSID" 권한을 읽습니다:

+

사용 범위 및 목적: 1 제3자 플랫폼: Youmeng SDK, Bugly SDK, Autonavi SDK 등

+

알림 방법: 사용자 계약 및 개인정보 보호정책 설명.

+ +

11 애플리케이션 설치 권한 획득

+

android.permission.REQUEST_INSTALL_PACKAGES

+

소프트웨어는 애플리케이션 설치 권한을 사용하며, 주로 새 버전이 있을 때 사용자가 새 버전을 설치하고 새로운 기능을 경험할 수 있도록 하는 데 사용됩니다.

+

알림 모드: 사용자 계약 및 개인정보 보호정책 설명.

+ +

12 카메라 권한 획득

+

android.permission.CAMERA

+

Voitrans는 QR 코드를 스캔하고 블루투스 헤드셋, 시계 등의 블루투스 기기를 바인딩하기 위해 카메라 권한을 사용합니다.

+

알림 방법: 처음 애플리케이션을 시작할 때 권한을 나타내는 프롬프트가 표시되며, 사용자가 수락을 확인해야 합니다. 사용자 계약 및 개인정보 보호정책 설명.

+ +

특별 참고 사항:

+

1 애플리케이션은 Allies SDK, Scott map SDK를 통합하고 있으며, 사용자가 허용에 동의한 후 애플리케이션은 백그라운드/포그라운드에서 ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI 및 기타 개인정보를 수집합니다;

+

비고: 더 많은 SDK 관련 내용 및 권한은 아래의 [VIII. 제3자 SDK 목록 접근]을 참조하십시오

+ +

8. 제3자 SDK 접근

+

1 당사 클라이언트의 안정적인 운영과 기능 실현을 보장하여, 귀하가 더 많은 서비스와 기능을 사용하고 즐길 수 있도록, 당사의 애플리케이션은 제3자의 소프트웨어 도구 개발 키트(SDK) 또는 기타 유사한 애플리케이션을 내장합니다. 이 제3자들은 기능 및 광고 서비스를 정상적으로 제공하기 위해 자체 개인정보 보호정책에 따라 관련 정보를 수집하고 처리합니다. 다음 섹션에서 제3자의 정보 수집 및 처리 규칙을 확인할 수 있습니다. 당사는 정보를 획득하는 파트너의 개발 키트(SDK)에 대해 엄격한 보안 테스트를 수행하여 귀하의 개인정보의 합리적인 사용과 보안을 보호합니다. 제3자 SDK는 버전 업그레이드로 인해 데이터 처리 유형을 변경할 수 있으니, 제3자 SDK가 게시한 개인정보 보호정책을 참조하시기 바랍니다. 자세한 내용은 아래를 참조하거나 제3자 SDK 목록을 클릭하여 확인하십시오.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

수집 정보: 기기 번호, IP 주소, 기기 소프트웨어 정보, 기기 식별 코드 (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM 카드 IMSI 정보, IP, MAC 주소), 기기 식별자, 지역, 기기 관련 애플리케이션 정보 및 기타 서비스 관련 로그 정보

+

사용 목적: WeChat 로그인 및 공유

+

개발자: Shenzhen Tencent Computer Systems Company Limited

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

수집 정보: 애플리케이션 이름, 애플리케이션 버전 번호, 기기 브랜드 및 모델, 운영 체제, 통신사 정보, 화면 해상도, 센서 정보(벡터, 가속도, 압력, 방향, 지자기, 자이로스코프, 온도, 광센서, NMEA 신호), 기기 신호 강도 정보

+

사용 목적: Amap을 이용한 내비게이션

+

개발자: Beijing Gaode Tuqiang Technology Co., Ltd.

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

수집 정보: 애플리케이션 이름, 애플리케이션 버전, 기기 브랜드 및 모델, 운영 체제, 네트워크 정보, 기기 신호 강도 등.

+

사용 목적: 지도 표시 및 상호작용

+

개발자: Beijing Gaode Tuqiang Technology Co., Ltd.

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

수집 정보: 위치 정보(GPS, Wi-Fi, 기지국), 기기 정보, 네트워크 정보 등.

+

사용 목적: 위치 서비스 제공

+

개발자: Beijing Gaode Tuqiang Technology Co., Ltd.

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

수집 정보: 애플리케이션 이름, 애플리케이션 버전, 기기 정보, 네트워크 정보 등.

+

사용 목적: 지도 도구 및 렌더링 최적화

+

개발자: Beijing Gaode Tuqiang Technology Co., Ltd.

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

수집 정보: 기기 식별자, 기본 기기 정보, 설치된 소프트웨어 목록 및 네트워크 정보(자세한 내용은 공식 개인정보 보호정책 참조)

+

사용 목적: Alipay 계정 로그인 및 결제 호출

+

개발자: Alipay (Hangzhou) Information Technology Co., Ltd.

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

수집 정보: SDK/API 버전, 플랫폼, 타임스탬프, 앱 식별자, 앱 버전, 기기 제조사, OS 버전, 로케일, 시간대, 네트워크 상태(Wi-Fi 등), 네트워크 로그, 충돌 및 사용 데이터, IP 주소 등(자세한 내용은 공식 개인정보 보호정책 참조)

+

사용 목적: 앱 품질 모니터링 및 데이터 보고 서비스

+

개발자: Shenzhen Tencent Computer Systems Company Limited

+

수집 방법: SDK 자체 수집

+

개인정보 보호정책 링크: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. 미성년자 보호

+

당사 제품 및 서비스의 사용자에는 만 18세 미만의 미성년자가 포함될 수 있으며, 미성년 사용자는 당사 제품을 사용하기 전에 본 개인정보 보호정책에 대해 부모 또는 보호자의 조언을 구해야 하며, 부모 또는 보호자의 동의를 얻고 지도 하에 당사의 서비스를 사용하거나 정보를 제공해야 합니다. 미성년자의 보호자가 질문이 있는 경우, 본 개인정보 보호정책의 연락처를 통해 당사에 연락할 수 있습니다.

+

위의 제3자 서비스 제공자가 수집하는 정보에 동의하지 않으시면, 즉시 소프트웨어 사용을 중단하십시오. 소프트웨어 사용 중, 이 제3자들은 일부 기능, 광고 및 기타 서비스를 제공하기 위해 자체 개인정보 보호정책에 따라 관련 정보를 수집하고 처리합니다. 관련 제3자 서비스 제공자의 정보 수집으로 인해 정보가 유출되는 경우, 관련 제3자 서비스 제공자가 해당 법적 책임을 집니다.

+ +

10. 개인정보 보호정책의 발효 및 업데이트

+

1. 본 개인정보 보호정책은 게시일부터 효력을 발생합니다.

+

2. 사업이 발전하고 변화함에 따라, 당사의 개인정보 보호정책은 변경될 수 있습니다. 당사는 언제든지 개인정보 보호정책을 변경할 권리를 보유하므로, 자주 확인하시기 바랍니다. 개인정보 보호정책을 변경하는 경우, 이러한 업데이트를 당사 웹사이트, 앱 및 적절하다고 판단되는 곳에 게시하여 알려드립니다. 개인정보 보호정책이 업데이트되면, 업데이트일부터 효력을 발생합니다. 당사의 제품 또는 서비스를 계속 사용하면, 변경된 개인정보 보호정책에 동의한 것으로 간주됩니다.

+ +

11. 연락 방법

+

Saitong Industries Inc는 2024년 11월 22일에 설립되었으며, 등록 주소: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. 당사 회사 및 플랫폼에 대해 더 알고 싶으시면, 본 정책에 제공된 연락처(saitong.voitrans@gmail.com)를 통해 당사에 연락할 수 있습니다.

+
+ + + diff --git a/doc/ko/user_agreement.html b/doc/ko/user_agreement.html new file mode 100644 index 000000000..edaf2a6ba --- /dev/null +++ b/doc/ko/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans 애플리케이션 사용자 프로토콜 + + + +
+
한국어
+ +

Voitrans 애플리케이션 사용자 프로토콜

+ +

본 이용약관은 Voitrans 애플리케이션 및 온라인 서비스("서비스")에 대한 접근 및 사용 방법을 안내합니다. Saitong Industries Inc.(이하 "Saitong")는 사용자에게 본 사용자 계약(이하 "본 계약")을 주의 깊게 읽고 완전히 이해할 것을 알려드립니다. 사용자는 본 계약의 조건을 주의 깊게 읽고 완전히 이해해야 합니다. 본 계약을 주의 깊게 읽고 수락 여부를 선택하십시오. Voitrans APP(이하 "본 앱" 또는 "본 소프트웨어")의 사용은 본 계약에 대한 수락으로 간주되며, 귀하는 본 계약의 조건에 구속되는 것에 동의합니다. 본 계약에 동의하지 않으시면, 본 앱을 사용하지 마십시오.

+

Saitong은 본 계약을 수정할 권리를 보유하며, 업데이트된 계약 조건은 본 앱에 게시되어 게시일부터 효력을 발생합니다.

+ +

1. 일반 규칙

+

1.1 본 앱은 Saitong이 Saitong 및 파트너 회사에서 출시한 헤드셋 제품을 연결하기 위해 제공하는 소프트웨어입니다. 소프트웨어 및 관련 서비스의 소유권과 운영 권한은 모두 Saitong이 소유합니다.

+

1.2 본 계약은 귀하(이하 "사용자")와 회사 및 그 파트너 및 운영 파트너(이하 "파트너")간에 사용자의 앱 사용 및 관련 서비스에 관하여 체결된 계약입니다.

+

1.3 소프트웨어 및 서비스에는 다음이 포함됩니다:

+

1.3.1 제공되는 소프트웨어는 Voitrans 사용자에게 Voitrans 연결 및 바인딩, 기능 설정 관리 및 기타 소프트웨어 서비스를 제공하며, 앱에서 제공하는 실제 소프트웨어 서비스에 따릅니다.

+

1.3.2 소프트웨어의 업데이트, 업그레이드 및 기타 서비스.

+ +

2. 소프트웨어 라이선스 범위

+

2.1 당사는 사용자에게 소프트웨어에 대한 개인적, 양도 불가능, 재라이선스 불가능 및 비독점적 라이선스를 부여합니다.

+

2.2 사용자는 비상업적 목적으로 단일 모바일 단말 장치에 소프트웨어를 설치, 사용, 표시 및 실행할 수 있습니다. 그러나 사용자는 상업적 운영 목적으로 소프트웨어를 설치, 사용 또는 실행해서는 안 되며, 소프트웨어 운영 중 단말 장치의 메모리에 저장된 데이터 또는 소프트웨어 운영 중 클라이언트와 서버 간의 상호작용 데이터를 복사, 변경, 수정, 연결 또는 실행하거나 파생 작품을 만들어서는 안 됩니다. 여기에는 플러그인, 확장 프로그램 또는 무단 제3자 도구/서비스를 사용하여 소프트웨어 및 관련 시스템에 접근하는 것이 포함되나 이에 한정되지 않습니다. 상업적 판매, 복제 및 배포, 소프트웨어 사전 설치 및 번들링의 경우, 서면 승인 및 허가를 받아야 합니다.

+

2.3 사용자는 제작자의 명시적 허가 없이 TV, 디지털 셋톱박스, 게임 콘솔 및 기타 장치를 포함하되 이에 한정되지 않는 다른 단말 장치에 소프트웨어를 설치해서는 안 됩니다.

+

2.4 본 계약에 의해 명시적으로 승인된 것을 제외하고, 사용자에게 다른 권리는 부여되지 않으며, 사용자는 다른 권리를 사용하기 위해 서면 동의를 얻어야 합니다.

+ +

3. 소프트웨어 업그레이드

+

3.1 사용자는 설치된 단말기 설정에 적합한 소프트웨어 버전을 선택해야 합니다. 그렇지 않으면 장치 유형에 적합하지 않은 소프트웨어 버전으로 인한 소프트웨어 문제, 장치 문제 또는 손상은 전적으로 사용자의 책임입니다.

+

3.2 사용자 경험을 개선하고 서비스 내용을 향상시키기 위해, Saitong은 수시로 소프트웨어의 교체, 수정 및 업그레이드 버전을 제공할 권리가 있습니다. "업그레이드 알림" 기능은 사용자에게 기본적으로 활성화되어 있습니다. 사용자가 사용하는 소프트웨어 버전에 따라, Saitong은 사용자에게 이 기능을 활성화할 수 있는 옵션을 제공합니다. 소프트웨어의 새 버전이 출시된 후, Saitong은 이전 버전의 소프트웨어의 지속적인 가용성을 보장하지 않습니다.

+ +

4. 사용 규정

+

4.1 사용자는 법률과 본 계약을 준수하는 전제 하에 본 계약에 따라 소프트웨어와 서비스를 사용할 수 있으며, 사용자는 다음 행위를 해서는 안 됩니다:

+

4.1.1 소프트웨어 및 기타 사본의 모든 저작권 정보를 삭제하고, 지적 재산권 보호를 위해 소프트웨어가 설정한 기술적 조치를 수정, 삭제 또는 우회하는 행위.

+

4.1.2 디스어셈블리, 디컴파일 또는 소프트웨어의 소스 코드를 획득하려는 기타 시도와 같은 소프트웨어의 리버스 엔지니어링.

+

4.1.3 소프트웨어 운영에서 명령어와 데이터를 수정 또는 위조하여 소프트웨어의 기능 또는 운영 효과를 추가, 삭제 또는 변경하거나, 상기 목적으로 사용될 소프트웨어 또는 방법을 운영하거나 공중에 배포하는 행위. 이러한 행위가 상업적 목적인지 여부에 관계없이 적용됩니다.

+

4.1.4 네트워크 보안을 위험에 빠뜨리는 행위에 소프트웨어를 사용하는 것. 여기에는 다음이 포함되나 이에 한정되지 않습니다: 무단 데이터 사용 또는 무단 서버/계정 접근; 허가 없이 공용 네트워크 또는 기타 운영 체제에 접근하여 저장된 정보를 삭제, 수정 또는 추가하는 행위; 소프트웨어의 시스템 또는 네트워크의 약점을 무단으로 탐색, 스캔 또는 테스트하는 시도 또는 네트워크 보안을 손상시키는 기타 행위; 소프트웨어 시스템 또는 웹사이트의 정상적인 운영을 방해하거나 파괴하려는 시도, 악성 프로그램 또는 바이러스를 의도적으로 유포하는 행위 및 정상적인 네트워크 정보 서비스를 방해하는 기타 행위; TCP/IP 패킷 이름 또는 일부 이름을 위조하는 행위.

+

4.1.6 회사의 서면 동의 없이 사용자가 소프트웨어 및 그 정보에 대해 임의로 다음 행위를 수행하는 것. 여기에는 다음이 포함되나 이에 한정되지 않습니다: 소프트웨어를 이용하여 사용, 임대, 대여, 복사, 수정, 연결, 전재, 편집, 출판, 게시, 미러 사이트 구축, 파생 제품, 저작물, 서비스, 플러그인, 확장 프로그램, 호환성, 상호연결 등을 개발하는 행위.

+

4.1.7 소프트웨어를 사용하여 현지 법률을 위반하는 콘텐츠를 게시, 전송, 배포 및 저장하는 행위.

+

4.1.8 소프트웨어를 사용하여 타인의 지적 재산권, 영업비밀 및 기타 합법적 권리를 침해하는 콘텐츠를 게시, 전송, 배포 및 저장하는 행위.

+

4.1.9 본 소프트웨어를 사용하여 광고 정보 및 스팸 정보를 대량으로 게시, 전송 및 배포하는 행위.

+

4.1.10 불법적인 방법, 불법적인 목적 또는 본 계약의 허가된 사용과 일치하지 않는 방식으로 소프트웨어 및 기타 서비스를 사용하는 행위.

+

4.2 정보 게시 규정

+

4.2.1 소프트웨어를 사용하여 정보 콘텐츠를 게시하는 경우(해당되는 경우), 귀하가 업로드한 정보 콘텐츠의 지적 재산권을 소유하거나 합법적인 승인을 받았음을 보증해야 하며, 소프트웨어와 서비스를 사용하는 귀하의 어떤 행위도 제3자의 합법적 권리와 이익을 침해하지 않아야 합니다.

+

4.2.2 소프트웨어 사용 시, 사용자는 다음 활동에 소프트웨어를 사용해서는 안 됩니다. 여기에는 다음이 포함되나 이에 한정되지 않습니다:

+

4.2.2.1 현지 국가 법률 및 규정을 위반하는 콘텐츠를 작성, 복사, 게시, 배포 및 저장하는 행위.

+

4.2.2.2 명예, 초상, 지적 재산권, 영업비밀 등 타인의 합법적 권리를 침해하는 콘텐츠를 게시, 전송, 배포 및 저장하는 행위.

+

4.2.2.3 타인을 오도하거나 기만하기 위해 사실을 날조하거나 진실을 은폐하는 행위.

+

4.2.2.4 광고 정보 및 스팸 정보를 게시, 전송 및 배포하는 행위.

+

4.2.2.5 현지 법률 및 규정을 위반하는 기타 행위에 가담하는 것.

+

4.2.3 회사의 허가 없이 소프트웨어에서 광고 및 상품 판매 등 상업적 활동을 수행해서는 안 됩니다.

+

4.3 사용자는 다음을 이해하고 동의합니다:

+

4.3.1 Saitong은 사용자가 상기 사용 규정을 위반했는지 여부를 판단하고, 판단 결과에 따라 사용 라이선스를 일시 중지 또는 종료하거나 본 계약에 따라 취할 수 있는 기타 제한 조치를 취할 수 있습니다.

+

4.3.2 허가된 소프트웨어를 사용하여 게시한 불법 혐의 또는 타인의 합법적 권리 침해 혐의 또는 본 계약 위반 정보는 직접 삭제됩니다.

+

4.3.3 사용자가 상기 사용 규칙을 위반하여 제3자에게 손해를 끼친 경우, 사용자는 자신의 이름으로 독립적으로 법적 책임을 져야 하며, Saitong이 손실이나 비용 증가로부터 면제되도록 해야 합니다.

+

4.3.4 사용자가 관련 법적 조항 또는 계약을 위반하여 Saitong에 손실을 끼치거나, 제3자로부터 청구를 받거나, 행정 당국으로부터 처벌을 받는 경우, 사용자는 합리적인 변호사 비용, 조사 및 증거 수집 비용을 포함하여 Saitong에 발생한 손실 및/또는 비용을 배상해야 합니다.

+ +

5. 제3자 서비스 설명

+

5.1 사용자는 소프트웨어 시스템에 회사의 계열사 또는 제3자가 제공하는 서비스가 포함될 수 있으며, 회사는 사용자의 편의를 위해 시스템 내에서 관련 기능 모듈을 제공하고 제3자 서비스에 대한 접근을 제공할 뿐임을 이해하고 동의합니다.

+

5.2 제3자 서비스가 소프트웨어 시스템 서비스에 사전 설치되어 있든, 사용자가 직접 개설하거나 주문했든, 사용자는 Saitong이 제3자 서비스 제공자 또는 사용자의 합법성과 유효성, 제3자 서비스의 합법성, 정확성, 유효성 및 보안에 대해 명시적이든 묵시적이든 어떠한 보증이나 보장도 하지 않음을 이해하고 동의합니다.

+

5.3 회사는 제3자 서비스를 감독, 통제하지 않으며 어떠한 종류의 보증이나 보장도 제공하지 않고, 어떠한 책임도 지지 않습니다.

+

5.4 사용자와 제3자 서비스 제공자 간의 모든 분쟁은 제3자 서비스 제공자의 비즈니스 프로세스와 비즈니스 규범에 따라 사용자와 제3자가 해결해야 하며, 회사는 어떠한 책임도 지지 않습니다.

+ +

6. 개인정보 보호정책 및 개인정보 보호

+

6.1 Saitong은 개인정보 보호정책에 따라 사용자의 프라이버시를 보호하기 위해 노력합니다. 자세한 내용은 Voitrans 개인정보 보호정책을 참조하십시오.

+ +

7. 계약 위반 책임

+

7.1 Saitong은 사용자의 행위가 본 계약의 규정에 부합하는지 판단할 권리가 있습니다. 사용자가 관련 법률 및 규정 또는 본 계약 및 관련 규칙의 규정을 위반한 것으로 판단되는 경우, 사용자의 위반 정도에 따라 Saitong은 불법 정보를 삭제하고, 사용자의 소프트웨어 서비스 사용을 제한, 일시 중지, 종료하고, 사용자의 법적 책임을 추궁하며 Saitong이 적절하다고 판단하는 기타 조치를 취할 권리가 있습니다. 당사가 손실(제3자 청구 또는 행정 부서의 처벌을 포함하나 이에 한정되지 않음)을 입은 경우, 사용자는 전적인 책임을 져야 합니다.

+ +

8. 서비스 위험 및 면책 조항

+

8.1 당사는 현재 기술로 서비스 지원을 제공하고자 합니다. Saitong은 소프트웨어 서비스가 중단이나 오류 없이 운영되거나, 소프트웨어 서비스의 모든 결함이 수정되거나, 소프트웨어 서비스가 사용자의 모든 요구를 충족한다는 것을 보증하지 않습니다. 이로 인한 결과에 대해 Saitong은 어떠한 책임도 지지 않습니다.

+

8.2 통신 회선 장애, 기술 문제, 네트워크, 컴퓨터 단말 장비 고장, 시스템 불안정 및 기타 불가항력 원인 등 제3자로 인해 사용자가 겪은 모든 손실에 대해 책임을 지지 않습니다.

+

8.3 Saitong은 소프트웨어를 통해 획득한 정보 콘텐츠(제3자 서비스 콘텐츠를 포함하나 이에 한정되지 않음)의 합법성, 진실성, 정확성 및 유효성을 보증하지 않으며, 사용자가 조회 및 열람에 기반하여 수행한 모든 행위의 결과에 대해 Saitong은 어떠한 책임도 지지 않습니다.

+

8.4 소프트웨어는 대부분의 인터넷 소프트웨어와 마찬가지로 사용자 원인, 네트워크 서비스 품질, 사회적 환경 및 기타 요인을 포함하나 이에 한정되지 않는 요인의 차이에 영향을 받으며, 다양한 보안 문제에 노출될 수 있습니다. 예를 들어, 타인이 사용자 정보를 사용하여 실생활에서 괴롭힘을 당할 수 있으며, 사용자가 다운로드하여 설치한 다른 소프트웨어 또는 방문한 다른 웹사이트에 "트로이 목마"와 같은 바이러스가 포함되어 사용자의 단말 장비 정보 및 데이터의 보안을 위협하고 소프트웨어의 정상적인 사용에 영향을 미칠 수 있습니다. 사용자는 정보 보안 및 사용자 데이터 보호에 대한 인식을 강화하고, 비밀번호 보호를 강화하여 손실과 괴롭힘을 방지해야 합니다.

+

8.5 사용자가 소프트웨어를 사용하거나 Saitong에 특정 서비스를 요구할 때, 소프트웨어는 사용자의 사용 또는 접근을 지원하기 위해 제3자 시스템 또는 제3자 소프트웨어를 호출할 수 있으며, 사용 또는 접근 결과는 제3자가 제공합니다. 사용자는 본 계약의 관련 규칙을 준수하는 것 외에도 제3자의 계약 및 관련 규칙도 준수해야 합니다. 사용자는 제3자 서비스를 사용할 때 제3자가 사용자 데이터를 읽을 수 있음을 이해하고 동의해야 하며, Saitong은 제3자 시스템 또는 제3자 소프트웨어 지원을 통해 달성된 결과의 안전성, 정확성, 유효성 및 기타 불확실한 위험을 보장하지 않으며, 사용자는 신중한 판단을 해야 하고, 이로 인해 발생하는 분쟁 및 손해에 대해 Saitong은 어떠한 책임도 지지 않습니다.

+

8.6 회사의 사업 발전 및 조정의 자율성을 보장하기 위해, 회사는 합리적인 방법으로 사용자에게 통지한 후 언제든지 서비스를 수정하거나 중단할 수 있습니다.

+

8.7 법률 및 규정에 명시적으로 규정된 경우를 제외하고, Saitong은 소프트웨어 및 관련 기술과 정보가 안전하고 효과적이며 정확하고 신뢰할 수 있도록 최선의 노력을 다할 것이나, 기존 기술의 한계로 인해 사용자는 Saitong이 이를 보장할 수 없음을 이해합니다.

+

8.8 다음 상황 중 어느 것과 관련되거나 그로 인해 발생한 신체적 부상 또는 부수적 및 간접적 경제적 손해에 대한 배상은 이익 손실, 데이터 손실, 사업 중단 또는 기타 사업 손해 또는 손실에 대한 손해를 포함하나 이에 한정되지 않으며, 사용자가 부담해야 합니다:

+

1) 허가된 소프트웨어의 사용 또는 사용 불능.

+

2) 제3자에 의한 소프트웨어의 무단 사용 또는 사용자 데이터의 변경.

+

3) 소프트웨어를 이용한 사용자의 행위로 인해 발생한 비용 및 손실.

+

4) 소프트웨어에 대한 사용자의 오해.

+

5) Saitong의 원인에 기인하지 않는 소프트웨어와 관련된 기타 손실.

+

8.9 사용자는 회사가 사법, 규제 및 감독 당국의 요구 또는 자체 사업상의 이유에 따라 사용자에 대한 서비스의 전부 또는 일부를 일시 중지, 중단 또는 종료할 권리가 있음에 동의합니다. Saitong은 이에 대해 어떠한 책임도 지지 않습니다.

+

8.10 사용자는 회사가 소프트웨어 및 서비스에서의 데이터 저장의 보안을 보장하기 위해 상업적으로 합리적인 노력을 기울일 것이나, 회사는 완전한 보장을 제공할 수 없으며, 사용자는 서비스에서 데이터의 삭제 또는 저장 또는 백업 실패에 대해 회사가 책임지지 않음을 이해하고 동의합니다.

+

8.11 법률이 허용하는 최대 범위 내에서, 개발자 또는 공급자는 애플리케이션 사용으로 인해 발생하는 직접적, 간접적, 부수적, 특수적 또는 결과적 손해에 대해 책임을 지지 않습니다. 사용자가 추가 필요가 있는 경우, 정규 병원에서 정밀 검사를 받으십시오.

+ +

9. 지적 재산권 성명

+

9.1 Saitong은 본 소프트웨어의 지적 재산권 소유자입니다. 소프트웨어의 모든 저작권, 상표, 특허, 영업비밀 및 기타 지적 재산권, 그리고 소프트웨어와 관련된 모든 정보 콘텐츠(텍스트, 사진, 오디오, 비디오, 그래픽, 인터페이스 디자인, 레이아웃 프레임, 관련 데이터 또는 전자 문서 등을 포함하나 이에 한정되지 않음)는 현지 법률 및 규정과 해당 국제 조약에 의해 보호됩니다.

+

9.2 회사의 서면 동의 없이, 사용자는 어떠한 상업적 또는 비상업적 목적으로도 상기 지적 재산권을 실행, 이용 또는 양도하거나 제3자에게 허가해서는 안 되며, 회사는 상기 행위에 대한 법적 책임을 추궁할 권리를 보유합니다.

+ +

10. 프로토콜 변경

+

10.1 Saitong은 필요한 경우 본 계약의 조건을 수정할 권리가 있습니다. 계약 조건이 변경되면 수정된 계약 조건이 관련 페이지에 게시됩니다. 변경된 내용에 동의하지 않는 경우, 사용자는 본 서비스를 주동적으로 취소해야 합니다. 사용자가 계속 서비스를 사용하는 경우, 계약 조건의 변경을 수락한 것으로 간주됩니다.

+

10.2 Saitong은 필요에 따라 유료 서비스, 과금 기준, 과금 방법, 서비스 요금 및 서비스 조건을 수정하거나 변경할 권리를 보유합니다. 서비스를 제공할 때, 당사는 현재 또는 향후 일부 서비스의 사용자에게 특정 요금을 부과할 수 있습니다. 사용자가 해당 요금의 지불을 거부하면, 요금 시작 후 관련 서비스를 계속 사용할 수 없습니다.

+
+ + diff --git a/doc/lt/privacy_policy.html b/doc/lt/privacy_policy.html new file mode 100644 index 000000000..e8b0d830a --- /dev/null +++ b/doc/lt/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Privatumo politika + + + + +
+

Voitrans Privatumo politika

+

Paskutinis atnaujinimas: 2025 m. gegužės 27 d.

+

Įsigaliojimo data: 2025 m. gegužės 27 d.

+ +

Sveiki atvykę naudotis Voitrans programine įranga ir paslaugomis

+

1. Voitrans teikia Saitong Industries Inc. (toliau – „Bendrovė"). Gali padėti naudotojams valdyti Bluetooth įrenginius ir kitus produktus. Suprantame asmeninės informacijos svarbą mūsų naudotojams (toliau – „jūs") ir efektyvi jūsų asmeninės informacijos apsauga yra sveiko ir tvaraus mūsų verslo vystymosi pagrindas. Dėkojame už jūsų naudojimąsi Voitrans produktais ar paslaugomis ir pasitikėjimą! Visiškai suprantame, kad šis pasitikėjimas neatsirado lengvai, laikomės atvirumo ir skaidrumo principo, norėdami jums išdėstyti mūsų jūsų asmeninės informacijos tvarkymo taisykles, naudojame teisėtus ir legitimius būdus bei aiškius ir pagrįstus tikslus jūsų asmeninei informacijai tvarkyti. Ypatinga pastaba: Prieš naudodamiesi mūsų produktais ar paslaugomis, būtinai atidžiai perskaitykite ir supraskite šią Privatumo politiką, kad galėtumėte priimti tinkamus sprendimus.

+

2. Ši Privatumo politika paaiškina, kaip renkame, naudojame, saugome ir dalijamės jūsų asmenine informacija, kai naudojatės Voitrans. Asmeninė informacija – tai visų rūšių informacija, užfiksuota elektroninėmis ar kitomis priemonėmis, kuri gali identifikuoti konkretų fizinį asmenį arba atspindėti konkretaus fizinio asmens veiklą atskirai arba kartu su kita informacija. Voitrans gerbia ir saugo visų paslaugos naudotojų asmeninį privatumą. Išskyrus atvejus, nurodytus šioje Privatumo politikoje, Voitrans be jūsų išankstinio leidimo neatskleis šios informacijos visuomenei ir nepateiks jos trečiosioms šalims.

+

3. Kai naudojate trečiosios šalies produktą ar paslaugą per App Marketplace produktą ar paslaugą, jūsų asmeninei informacijai taikoma trečiosios šalies privatumo politika.

+

4. Voitrans Ši Privatumo politika bus periodiškai atnaujinama. Sutikdami su Voitrans paslaugos naudojimo sutartimi ir pradėdami naudotis Voitrans, laikoma, kad sutikote su visais šios Privatumo politikos punktais. Jei nesutinkate su šia Privatumo politika, nenaudokite Voitrans programinės įrangos ir paslaugų.

+

5. Siekdami analizuoti ir vertinti atitinkamų paslaugų efektyvumą, naudosime ir atskleisime jūsų asmeninę informaciją pagal šios Privatumo politikos nuostatas.

+ +

Ši Privatumo politika padės jums suprasti:

+
    +
  • 1 Informacija, kurią renkame
  • +
  • 2 Informacijos saugojimas
  • +
  • 3 Informacijos saugumas
  • +
  • 4 Kaip naudojame surinktą informaciją
  • +
  • 5 Informacijos dalijimasis
  • +
  • 6 Kaip valdote savo asmeninę informaciją
  • +
  • 7 Programos leidimų aprašymas
  • +
  • 8 Prieiga prie trečiųjų šalių SDK
  • +
  • 9 Nepilnamečių apsauga
  • +
  • 10 Privatumo politikos galiojimas ir atnaujinimai
  • +
  • 11 Kaip su mumis susisiekti
  • +
+ +

1. Informacija, kurią renkame

+

1. Naudojant Voitrans Pradžioje mes pradėsime rinkti duomenis apie jūsų programos naudojimą

+

2. Voitrans gali gauti jūsų asmeninę informaciją iš trečiųjų šalių ar verslo partnerių teisėtais būdais

+

3. Siekdami jums teikti geresnius produktus ir paslaugas, užtikrinti jūsų tinklo saugumą naudojimo metu, palaikyti normalų produktų veikimą ir optimizuoti bei gerinti mūsų informacinių paslaugų tikslą, po to, kai aktyviai paspausite sutikimą su šia privatumo politika, naudosite mūsų teikiamą informaciją. Paslaugos metu, be asmeninės informacijos, būtinos normaliam Programos pagrindinių funkcijų veikimui pagal nacionalinius įstatymus ir teisės aktus, rinksime iš jūsų kitą asmeninę informaciją:

+

3.1 Siekdami identifikuoti rizikingus naudotojus, vertinti naudotojų autentiškumą ir visapusiškai užkirsti kelią sukčiavimui, kiekvieną kartą atidarius programinę įrangą skaitysime jūsų įrenginio informaciją, įskaitant: (Įrenginio modelis, įrenginio MAC adresas, unikalus įrenginio identifikatorius (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID ir kt.) MEID, serijos numeris, WIFI SSID ir BSSID), Bluetooth adreso, operacinės sistemos versiją, operacinės sistemos pavadinimą, naudotojo prisijungimo paskyrą ir slaptažodžio informaciją;

+

3.2 Kai naudojate mūsų produktus ir paslaugas, galime rinkti tam tikrą informaciją per tinklo žurnalo informaciją arba tam tikras programas ir programinę įrangą, tokia informacija gali apimti: produktų ir paslaugų naudojimo detales, tokias kaip jūsų programos atidarymo laikas, naudojimo trukmė ir aplankytų puslapių adresas; įrenginio įvykių informaciją, tokią kaip gedimai, sistemos veikla ir kt., siekiant optimizuoti jūsų įrenginį ir pagerinti mūsų paslaugas;

+

3.3 Siekdami identifikuoti programas, kuriose įranga yra pažeidžiama, ir teikti saugesnes funkcines paslaugas. Todėl proceso metu turime gauti jūsų programų/įdiegtų programų sąrašą, kad užtikrintume normalų produkto veikimą ir apsaugotume įrenginio saugumą.

+

3.4 Siekdami analizuoti naudotojų programos funkcijų naudojimą ir nustatyti naudotojų autentiškumą, turime vykdyti duomenų statistiką ir rinkti aukščiau nurodytą įrenginio informaciją, įskaitant įrenginio MAC adresą ir unikalų įrenginio identifikatorių, kai jūsų įrenginys naudojamas.

+

3.5 Įrenginio signalas: jūsų naudojamo įrenginio tinklo būsena, WIFI prieigos taško informacija ir kt.

+

3.6 Vietos informacija: Galime naudoti GPS, WiFi ar kitas technines priemones jūsų vietos informacijos rinkimui ir tvarkymui vietinės informacijos atnaujinimui, turinio paslaugų teikimui ir kt.

+

Daugiau informacijos rasite paspaudę „Asmeninės informacijos rinkimo sąrašas".

+ +

1. Jautresniems asmeniniams duomenims iš aukščiau nurodytos informacijos, tokiems kaip naudotojo įrenginio informacija (IMEI numeris, skambučio būsena ir identifikacijos numeris), GPS vietos informacija, nuotraukų medijos turinys ir failų prieigos teisės, gausime jūsų sutikimą prieš rinkimą. Kai kuriems nejautriems duomenims rinkimas gali būti numatytasis ir automatinis. Galite apriboti mūsų atitinkamų duomenų rinkimą arba tam tikrų leidimų naudojimą, koreguodami savo mobiliojo įrenginio Nustatymų parinktį. Kai apribosite mūsų prieigą prie tam tikro leidimo, gali būti, kad negalėsime toliau teikti jums atitinkamų paslaugų, ir nebevykdysime jūsų atitinkamų duomenų tvarkymo.

+

2. Nerinksime jūsų asmens tapatybės kortelės numerio, asmeninių biometrinių duomenų, banko sąskaitos numerio, turto informacijos, kreditinės informacijos, sveikatos ir fiziologinės informacijos bei kitos asmeninės jautrios informacijos.

+

3. Apie jautrius leidimus: Siekiant tinkamai naudoti programos funkcijas, produktas turi gauti šiuos leidimus, kad galėtų teikti su normaliais produktais susijusias funkcines paslaugas.

+ +

1 Saugyklos skaitymo ir rašymo leidimai

+

1 Kaip gauti: iššokantis pranešimas, kai leidimas gaunamas, naudotojas aktyviai paspaudžia sutikimą ir programa naudos šį leidimą

+

2 Naudojimo tikslas ir apimtis: Naudojamas sistemoje esančių išteklių talpyklos failų ir miniatiūrų nuskaitymui, muzikos išteklių ir produktų nuotraukų įkėlimui. Rodomas Programos sąsajoje naudotojų peržiūrai ir valdymui

+ +

2 Leidimas gauti įdiegtų programų sąrašą

+

1 Kaip gauti: iššokantis pranešimas, kai leidimas gaunamas, naudotojas aktyviai paspaudžia sutikimą ir programa naudos šį leidimą

+

2 Naudojimo tikslas ir apimtis: Kai programai reikia reklamos skatinimo paslaugų, trečiosios šalies reklamos platforma, Youmon +SDK, turi gauti įrenginio „įdiegtų programų sąrašo leidimą", kad naudotojui nebūtų siūlomos jau turimos programos ir būtų pagerintas naudotojo patirtis.

+ +

3 Leidimas gauti įrenginio būsenos informaciją

+

Apima: (Įrenginio modelis, įrenginio MAC adresas, unikalus įrenginio identifikatorius (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID ir kt.) MEID, serijos numeris, WIFI SSID ir BSSID, Bluetooth adreso skaitymas), operacinės sistemos versija, operacinės sistemos pavadinimas ir kt.;

+

1 Kaip gauti: iššokantis pranešimas, kai leidimas gaunamas, naudotojas aktyviai paspaudžia sutikimą ir programa naudos šį leidimą

+

2 Naudojimo tikslas ir apimtis: Naudojant mūsų programą, siekiant analizuoti naudotojo programos funkcijų naudojimą ir vertinti naudotojo autentiškumą, sinchronizuosime leidimą su trečiųjų šalių SDK, įskaitant Autonavi SDK, Youmon +SDK ir kt.

+ +

4 Prieiga prie vietos informacijos

+

1 Kaip gauti: iššokantys pranešimai, kai leidimas gaunamas, naudotojas šį leidimą naudos tik aktyviai paspaudęs sutikimą su programa.

+

2 Naudojimo tikslas ir apimtis: Kai programai reikia naudoti GPS, WiFi ar kitas funkcijas, produktas turi rinkti jūsų vietą ir informaciją, kad galėtų ieškoti Bluetooth įrenginių netoliese.

+

Pastaba: Daugiau programos leidimų rasite šiame dokumente „Privatumo politika" 7 skyriuje „Programos leidimų aprašymas"

+ +

2. Informacijos saugojimas

+

1. Kur informacija saugoma

+

Asmeninė informacija, kurią renkame ir generuojame Kinijos Liaudies Respublikoje, bus saugoma mūsų serveriuose ir/arba mūsų susijusių įmonių serveriuose.

+

2. Informacijos saugojimas ir tvarkymas

+

Jūsų asmeninę informaciją saugome tik tiek laiko, kiek būtina tikslui pasiekti arba kiek reikalauja įstatymai ir teisės aktai. Kai nustosite naudoti šį produktą, nedelsdami nustosime rinkti ir tvarkyti jūsų asmeninę informaciją ir programos duomenis. Pasibaigus aukščiau nurodytam laikotarpiui, ištrinsime arba anonimizuosime jūsų mums pateiktą asmeninę informaciją.

+

Be būtinų funkcijų, Voitrans turi prašyti atitinkamų sistemos leidimų. Debesies serverio pusė nesaugo naudotojų asmeninės informacijos, o prieigos prie trečiųjų šalių SDK bus paslaugų teikėjo anoniminami ir deidentifikuojami (Amu Statistics SDK, Autonavi SDK), todėl naudotojų negalima sekti. Naudotojo telefone saugoma informacija bus automatiškai ištrinta, kai naudotojas pašalins Voitrans arba išvalys talpyklą.

+ +

3. Informacijos saugumas

+

1. Voitrans saugo ir apsaugo jūsų asmeninę informaciją naudodamas pramonės standarto saugumo priemones ir technologijas, tokias kaip tapatybės tikrinimas, duomenų šifravimas, ribota prieiga prie duomenų centrų ir kitos saugumo priemonės, kad jūsų informacija būtų apsaugota nuo atskleidimo, pakeitimo ir sunaikinimo. Nepaisant minėtų saugumo priemonių, atkreipkite dėmesį, kad jokia saugumo priemonė negali būti 100% saugi.

+

2. Naudodamiesi Voitrans teikiamomis paslaugomis, saugokite savo asmeninę informaciją. Jei pastebėsite, kad jūsų asmeninė informacija buvo pažeista, nedelsdami susisiekite su mumis, kad galėtume imtis atitinkamų priemonių.

+ +

4. Kaip naudojame surinktą informaciją

+

1. Vykdydami programos verslo funkcijas, galime naudoti jūsų asmeninę informaciją siekdami užtikrinti jums teikiamų produktų ir paslaugų vientisumą ir saugumą;

+

2. Per surinktą informaciją suprasime jūsų naudojimo įpročius ir, pasitelkę duomenų analizę, identifikuosime paslaugų priimtinumą, jūsų naudojimo įpročius ir kt., siekdami testuoti ir kurti naujus produktus, funkcijas ir paslaugas, gerinti paslaugų lygį ir padėti mums tobulinti esamas paslaugas bei kurti naujas paslaugas;

+

3. Galime naudoti jūsų asmeninę informaciją klientų apklausoms apie produktus ir paslaugas, pranešimų apie produktus ir paslaugas siuntimui bei komercinei reklamai;

+

4. Galime naudoti jūsų informaciją vidinei analizei ir tyrimams, susijusiems su programa;

+ +

5. Informacijos dalijimasis

+

Šiuo metu aktyviai nesidalinsime ir neperduosime jūsų asmeninės informacijos trečiosioms šalims už bendrovės ribų, jei bus kitokio dalijimosi ar perdavimo jūsų asmenine informacija, tiesiogiai patvirtinsime arba patvirtinsime, kad trečioji šalis gavo jūsų aiškų sutikimą aukščiau nurodytam veiksmui.

+

Viešai neatskleisime surinktų asmeninių duomenų. Jei viešas atskleidimas būtinas, informuosime jus apie viešo atskleidimo tikslą, atskleistų duomenų tipą ir galimai susijusius jautrius duomenis bei gausime jūsų aiškų sutikimą.

+

Kadangi mūsų verslas nuolat vystosi, galime dalyvauti susijungimuose, įsigijimuose, turto perleidimo ir kitose operacijose, ir informuosime jus apie atitinkamas aplinkybes, pagal įstatymus ir teisės aktus ir ne žemesniais standartais nei numatyta šiame Vadove, kad tęstume jūsų asmeninės informacijos apsaugą arba reikalautume, kad naujas valdytojas tęstų jūsų asmeninės informacijos apsaugą.

+

Be to, pagal atitinkamus įstatymus ir teisės aktus bei nacionalinius standartus, galime dalintis, perduoti ir viešai atskleisti asmeninę informaciją be išankstinio asmens duomenų subjekto sutikimo šiomis aplinkybėmis:

+
    +
  • 1 Tiesiogiai susiję su nacionaliniu saugumu ir gynybos saugumu;
  • +
  • 2 Tiesiogiai susiję su visuomenės saugumu, visuomenės sveikata ar svarbiais viešaisiais interesais;
  • +
  • 3 Tiesiogiai susiję su baudžiamuoju tyrimu, persekiojimu, teismu ir nuosprendžių vykdymu;
  • +
  • 4 Siekiant apsaugoti asmens duomenų subjekto ar kitų asmenų gyvybę, turtą ir kitas svarbias teisėtas teises ir interesus, tačiau sunku gauti asmens sutikimą;
  • +
  • 5 Asmeninė informacija, kurią asmens duomenų subjektas atskleidė visuomenei;
  • +
  • 6 Asmeninės informacijos rinkimas iš teisėtai viešai atskleistos informacijos, tokios kaip teisėtos naujienų ataskaitos, vyriausybės informacijos atskleidimas ir kiti kanalai.
  • +
+ +

6. Kaip valdote savo asmeninę informaciją

+

Pagal atitinkamus Kinijos įstatymus, teisės aktus ir standartus, taip pat kitų šalių ir regionų įprastą praktiką, garantuojame, kad naudositės šiomis teisėmis dėl savo asmeninės informacijos:

+ +

1. Pataisyti savo asmeninę informaciją

+

Jei pastebėsite, kad mūsų tvarkomoje jūsų asmeninėje informacijoje yra klaida, turite teisę pataisyti ar atnaujinti neteisingą ar nepilną informaciją. Jei negalite savarankiškai veikti paskyros centre, galite susisiekti su mumis el. paštu saitong.voitrans@gmail.com

+ +

2. Ištrinti savo asmeninę informaciją

+

Šiais atvejais galite pateikti mums prašymą ištrinti jūsų asmeninę informaciją:

+
    +
  • Jei tvarkome asmeninę informaciją pažeisdami įstatymus ir teisės aktus;
  • +
  • Jei renkame ir naudojame jūsų asmeninę informaciją be jūsų sutikimo;
  • +
  • Jei mūsų asmeninės informacijos tvarkymas pažeidžia mūsų sutartį su jumis;
  • +
  • Jei nebenaudojate mūsų produktų ar paslaugų;
  • +
  • Jei nebeteikiame jums produktų ar paslaugų.
  • +
+

Susisiekite su mumis. Jūsų prašymą apdorosime adresu saitong.voitrans@gmail.com Susisiekite su mumis. Po gavimo atsakysime per 30 darbo dienų nuo gavimo

+ +

3. Pakeisti sutikimo apimtį

+

Su mumis galite susisiekti el. paštu saitong.voitrans@gmail.com Susisiekite su mumis. Jūsų prašymu neberinksime, nenaudosime ir neatskleisime jūsų asmeninės informacijos. Atkreipkite dėmesį, kad jūsų sutikimo atšaukimas ar asmeninės informacijos ištrynimas gali paveikti jūsų naudojimąsi kai kuriomis mūsų paslaugomis.

+ +

4 Prieiga prie asmeninės informacijos ir jos kopijavimas

+

Pagal atitinkamų įstatymų nuostatas, pateikę savo imei (telefono serijos numerį) arba oaid arba Android ID ir kitą paskyros informaciją, galite kreiptis dėl prieigos prie savo asmeninės informacijos ir jos kopijavimo, su mumis galite susisiekti el. paštu 3514406195@qq.com.

+ +

5. Atsakydami į jūsų aukščiau nurodytą prašymą

+

Saugumo sumetimais gali tekti pateikti rašytinį prašymą ar kitaip įrodyti savo tapatybę. Prieš tvarkydami jūsų prašymą, galime paprašyti patvirtinti savo tapatybę. Į jūsų pagrįstą prašymą atsakysime ir jį apdorosime laiku. Galime atmesti prašymus, kurie yra be reikalo pasikartojantys, reikalauja per daug technologijų (pavyzdžiui, naujų sistemų kūrimo ar esminių esamų praktikų pakeitimų), kelia riziką kitų teisėtiems interesams arba yra labai nepraktiški.

+

Šiomis aplinkybėmis, pagal įstatymų ir teisės aktų reikalavimus, negalėsime atsakyti į jūsų prašymą:

+
    +
  • Susiję su nacionaliniu saugumu ir gynybos saugumu;
  • +
  • Susiję su baudžiamuoju tyrimu, persekiojimu ir teismu;
  • +
  • Yra pakankamai įrodymų, kad turite subjektyvių piktų kėslų ar piktnaudžiaujate teisėmis;
  • +
  • Atsakymas į jūsų prašymą padarys rimtą žalą jūsų ar kitų asmenų ir organizacijų teisėtoms teisėms ir interesams.
  • +
+ +

6. Paskyros panaikinimas

+

Naudotojas gali atlikti [paskyros panaikinimą] Programoje. Operacijos žingsniai:

+
    +
  1. Eikite į puslapį [Mano]
  2. +
  3. Paspauskite mygtuką [Nustatymai] viršutiniame dešiniajame kampe
  4. +
  5. Paspauskite [Panaikinti paskyrą] patvirtinimui
  6. +
+

Po atsijungimo naudotojo paskyros informacija išvaloma

+ +

7. Programos leidimų aprašymas

+

Siekdami teikti geresnius produktus ir paslaugas, kai naudojate programinę įrangą, prašysime šių leidimų, kai įeisite į pagrindinį puslapį ar naudosite funkciją, bus prašoma autorizacijos, jei atsisakysite, kai kurios atitinkamos funkcijos neveiks normaliai. Konkretūs leidimų tikslai ir priminimai išsamiai aprašyti toliau:

+ +

1 Vietos leidimai:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

per WiFi arba mobiliosios bazinės stoties naudotojo platumos ir ilgumos vietos informacijai gauti

+

Kai naudojate Voitrans, pagal jūsų geografinę vietą ieškosime jūsų prijungtų Bluetooth įrenginių. Tuo pačiu, siekdami teikti stabilesnes paslaugas, optimizuoti produktus ir gerinti patirtį, dalinsimės aukščiau nurodyta informacija su trimis SDK, tokiais kaip Youmon ir Autonavi, kad gautume Voitrans veikimo duomenis ir funkcines paslaugas.

+

Priminimo būdas: Pirmą kartą paleidus programą rodomas leidimo pranešimas, reikalaujantis naudotojo patvirtinimo. Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Šis leidimas reikalingas prisijungiant prie programos, kad būtų galima atlikti programos valdymo funkcijas.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

3 Tinklo leidimai:

+

android.permission.INTERNET

+

Kai naudojate Šie leidimai reikalingi Voitrans informacinėms paslaugoms ir versijų atnaujinimo paslaugoms, o siekdami pagerinti naudotojo patirtį ir optimizuoti paslaugų galimybes, trečiųjų šalių SDK, tokie kaip Friends, taip pat naudos šiuos leidimus.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

4 Tinklo būsenos leidimų gavimas:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Naudojamas nustatyti, ar dabartinis tinklo ryšys galioja, nustatyti, ar dabartinė aplinka yra 4G, ir priminti apie tinklo aplinkos pokyčius, taip darant įtaką informacinio turinio įkėlimui. Šis leidimas prašomas naudojant Voitrans.

+

Tinklo būsenos pokyčiai turi įtakos duomenų įkėlimui ir pakrovimui. Todėl tinklo būsenos prieigos leidimas bus dalijamas su friends + ir kitomis platformomis.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

5 Užduočių sąrašo leidimų gavimas:

+

android.permission.GET_TASKS

+

Šis leidimas naudojamas programų sąrašui gauti programinės įrangos valdymo funkcijai. Kai naudojate programinės įrangos valdymo funkciją, reikia perskaityti mobiliajame telefone įdiegtas programas.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

6 MAC adreso gavimo leidimas

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Kai naudojate Voitrans, programai reikės MAC adreso gavimo leidimo:

+

Kai programa turi teikti tikslinės konversijos duomenis, trečiųjų šalių platformos, tokios kaip Youmon +SDK, turi naudoti MAC.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

7 Garso įrašymo leidimas

+

android.permission.RECORD_AUDIO

+

Kai naudojate Voitrans balso įvedimo funkciją, reikia garso įrašymo leidimo, o balso įvedimas daugiausia naudojamas vertimui ir kitoms susijusioms funkcijoms.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje, naudotojui dinamiškai rodomas dialogo langas, kai reikia.

+ +

8 WIFI SSID gavimo leidimas

+

Kai šis leidimas naudojamas, programa skaito WIFI SSID leidimą:

+

Naudojimo apimtis ir tikslas: Kai programai reikia duomenų analizės paslaugų, trečiųjų šalių platformos, tokios kaip +SDK, turi perskaityti įrenginio „WIFI SSID leidimą", kad naudotojams teiktų tikslesnes ir efektyvesnes funkcines paslaugas.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

9 Bluetooth prieigos leidimas

+

Kai šis leidimas naudojamas, programa skaito Bluetooth leidimą:

+

Naudojimo apimtis ir tikslas: Bluetooth įrenginiai priedų paieškai ir konfigūravimui, tokiems kaip Bluetooth ausinės, Bluetooth laikrodžiai ir kt. Patogiam naudotojų valdymui

+

Priminimo būdas: Pirmą kartą paleidus programą rodomas leidimo pranešimas, reikalaujantis naudotojo patvirtinimo. Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

10 WiFi BSSID gavimo leidimas

+

Kai programa turi atskirti ir identifikuoti naudotoją funkcinėms paslaugoms ir duomenų statistikai teikti, ji perskaitys įrenginio „WiFi BSSID" leidimą:

+

Naudojimo apimtis ir tikslas: 1 Trečiųjų šalių platformos: tokios kaip Youmeng SDK, Bugly SDK, Autonavi SDK

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

11 Programos diegimo leidimas

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Programinė įranga naudos programos diegimo leidimą, kuris daugiausia naudojamas leisti naudotojams įdiegti naują versiją ir patirti naujas funkcijas, kai yra nauja versija.

+

Priminimo būdas: Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

12 Kameros leidimas

+

android.permission.CAMERA

+

Voitrans naudoja kameros leidimus QR kodų nuskaitymui ir Bluetooth įrenginių, tokių kaip Bluetooth ausinės ir laikrodžiai, susiejimui.

+

Priminimo būdas: Pirmą kartą paleidus programą rodomas leidimo pranešimas, reikalaujantis naudotojo patvirtinimo. Aprašymas Naudotojo sutartyje ir Privatumo politikoje.

+ +

Ypatinga pastaba:

+

1 Programos integracija jų Allies SDK, Scott map SDK, naudotojui sutikus leisti, programa fone/priekiniame plane ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI ir kitai asmeninei informacijai;

+

Pastabos: Daugiau informacijos rasite toliau esančiame su SDK susijusiame turinyje ir leidimuose [VIII. Prieigos prie trečiųjų šalių SDK sąrašas]

+ +

8. Prieiga prie trečiųjų šalių SDK

+

1 Siekdami užtikrinti stabilų mūsų kliento veikimą ir funkcinį realizavimą, kad galėtumėte naudoti ir mėgautis daugiau paslaugų ir funkcijų, mūsų programa bus integruota su trečiųjų šalių programinės įrangos kūrimo įrankių rinkiniais (SDK) ar kitomis panašiomis programomis, šios trečiosios šalys rinks ir tvarkys atitinkamą informaciją pagal savo privatumo politikas, siekdamos normaliai teikti funkcijas ir reklamos paslaugas. Kitame skyriuje galite sužinoti apie trečiųjų šalių informacijos rinkimo ir tvarkymo taisykles. Vykdysime griežtus saugumo testus partnerių kūrimo rinkinių (SDK) informacijai gauti, siekdami apsaugoti pagrįstą jūsų asmeninės informacijos naudojimą ir saugumą. Atkreipkite dėmesį, kad trečiųjų šalių SDK gali pakeisti duomenų tvarkymo tipus dėl versijų naujinimų. Žiūrėkite trečiųjų šalių SDK skelbiamas privatumo politikas. Žiūrėkite toliau pateiktą informaciją arba paspauskite Trečiųjų šalių SDK sąrašą.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Gauta informacija: Įrenginio numeris, IP adresas, įrenginio programinės įrangos informacija, įrenginio identifikacijos kodas (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM kortelės IMSI informacija, IP, MAC adresas), įrenginio identifikatorius, regionas, su įrenginiu susijusios programos informacija ir kita su paslauga susijusi žurnalo informacija

+

Naudojimo tikslas: WeChat prisijungimas ir dalijimasis

+

Kūrėjas: Shenzhen Tencent Computer Systems Company Limited

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Gauta informacija: Programos pavadinimas, programos versija, įrenginio prekės ženklas ir modelis, operacinė sistema, operatoriaus informacija, ekrano raiška, jutiklių informacija (vektorius, pagreitis, slėgis, kryptis, geomagnetizmas, giroskopas, temperatūra, šviesos jutiklis, NMEA signalas), įrenginio signalo stiprumo informacija

+

Naudojimo tikslas: Navigacija naudojant Amap

+

Kūrėjas: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Gauta informacija: Programos pavadinimas, programos versija, įrenginio prekės ženklas ir modelis, operacinė sistema, tinklo informacija, įrenginio signalo stiprumas ir kt.

+

Naudojimo tikslas: Žemėlapio rodymas ir sąveika

+

Kūrėjas: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Gauta informacija: Vietos informacija (GPS, Wi-Fi, bazinė stotis), įrenginio informacija, tinklo informacija ir kt.

+

Naudojimo tikslas: Vietos paslaugų teikimas

+

Kūrėjas: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Gauta informacija: Programos pavadinimas, programos versija, įrenginio informacija, tinklo informacija ir kt.

+

Naudojimo tikslas: Žemėlapio įrankiai ir atvaizdavimo optimizacija

+

Kūrėjas: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Gauta informacija: Įrenginio identifikatoriai, pagrindinė įrenginio informacija, įdiegtų programų sąrašas ir tinklo informacija (išsamesnę informaciją žr. oficialioje privatumo politikoje)

+

Naudojimo tikslas: Alipay paskyros prisijungimas ir mokėjimo kvietimas

+

Kūrėjas: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Gauta informacija: SDK/API versija, platforma, laiko žyma, programos identifikatorius, programos versija, įrenginio gamintojas, OS versija, lokalizacija, laiko juosta, tinklo būsena (Wi-Fi ir kt.), tinklo žurnalai, gedimų ir naudojimo duomenys, IP adresas ir kt. (išsamesnę informaciją žr. oficialioje privatumo politikoje)

+

Naudojimo tikslas: Programos kokybės stebėjimas ir duomenų ataskaitų teikimo paslauga

+

Kūrėjas: Shenzhen Tencent Computer Systems Company Limited

+

Rinkimo būdas: Automatinis SDK rinkimas

+

Privatumo politikos nuoroda: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Nepilnamečių apsauga

+

Mūsų produktų ir paslaugų naudotojai gali apimti nepilnamečius iki 18 metų, nepilnamečiai naudotojai turėtų pasitarti su savo tėvais ar globėjais dėl šios Privatumo politikos prieš naudodamiesi mūsų produktais ir naudotis mūsų paslaugomis ar teikti mums savo informaciją gavę tėvų ar globėjų sutikimą ir jiems vadovaujant. Nepilnamečių globėjai, turintys klausimų, gali susisiekti su mumis naudodamiesi kontaktiniais duomenimis, pateiktais šioje Privatumo politikoje.

+

Jei nesutinkate su aukščiau nurodytų trečiųjų šalių paslaugų teikėjų aukščiau nurodytos informacijos rinkimu, nedelsdami nustokite naudoti Programinę įrangą. Jūsų Programinės įrangos naudojimo metu šios trečiosios šalys rinks ir tvarkys atitinkamą informaciją pagal savo privatumo politikas, siekdamos teikti kai kurias funkcijas, reklamą ir kitas paslaugas. Jei informacija nuteka dėl aukščiau nurodytos informacijos rinkimo atitinkamo trečiosios šalies paslaugų teikėjo, atitinkamas trečiosios šalies paslaugų teikėjas prisiima atitinkamą teisinę atsakomybę.

+ +

10. Privatumo politikos galiojimas ir atnaujinimai

+

1. Ši Privatumo politika galioja nuo paskelbimo datos.

+

2. Kadangi mūsų verslas vystosi ir keičiasi, mūsų Privatumo politika gali keistis. Pasiliekame teisę bet kuriuo metu keisti mūsų privatumo politiką, todėl tikrinkite dažnai. Jei pakeisime mūsų Privatumo politiką, paskelbsime šiuos atnaujinimus mūsų svetainėje, programose ir ten, kur manome esant tinkama, kad būtumėte informuoti. Jei privatumo politika atnaujinama, ji įsigalioja nuo atnaujinimo datos. Tolimesnis mūsų produktų ar paslaugų naudojimas reiškia, kad sutinkate su mūsų pakeista Privatumo politika.

+ +

11. Kaip su mumis susisiekti

+

Saitong Industries Inc įkurta 2024 m. lapkričio 22 d., registruotas adresas: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Jei norite sužinoti daugiau apie mūsų bendrovę ir platformą, su mumis galite susisiekti naudodami šioje politikoje pateiktą kontaktinę informaciją (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/lt/user_agreement.html b/doc/lt/user_agreement.html new file mode 100644 index 000000000..73676e0c9 --- /dev/null +++ b/doc/lt/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans programos naudotojo protokolas + + + +
+
Lietuvių
+ +

Voitrans programos naudotojo protokolas

+ +

Šios naudojimo sąlygos nurodo, kaip prisijungti prie Voitrans programos ir internetinių paslaugų (toliau – „Paslaugos") ir kaip jomis naudotis. Saitong Industries Inc. (toliau – „Saitong") primena naudotojams atidžiai perskaityti ir visiškai suprasti šią Naudotojo sutartį (toliau – „Sutartis"). Naudotojai turėtų atidžiai perskaityti ir visiškai suprasti šios Sutarties sąlygas. Atidžiai perskaitykite ir pasirinkite, ar priimate šią Sutartį, ar ne. Jūsų naudojimasis Voitrans programa (toliau – „Programa" arba „Programinė įranga") bus laikomas šios Sutarties priėmimu ir jūs sutinkate laikytis šios Sutarties sąlygų. Jei nesutinkate su šia Sutartimi, nenaudokite Programos.

+

Saitong pasilieka teisę keisti šią Sutartį, o atnaujintos Sutarties sąlygos bus paskelbtos šioje Programoje ir įsigalios nuo paskelbimo datos.

+ +

1. Bendrosios taisyklės

+

1.1 Ši Programa yra Saitong teikiama programinė įranga, skirta prijungti Saitong ir jos partnerinių įmonių išleistus ausinių produktus. Programinės įrangos ir susijusių paslaugų nuosavybės ir eksploatavimo teisės priklauso Saitong.

+

1.2 Ši Sutartis yra sutartis tarp jūsų (toliau – „Naudotojas") ir bendrovės bei jos partnerių ir veiklos partnerių (toliau – „Partneriai") dėl naudotojo naudojimosi Programa ir susijusiomis paslaugomis.

+

1.3 Programinė įranga ir paslaugos apima:

+

1.3.1 Teikiama programinė įranga siūlo Voitrans naudotojams Voitrans prijungimą ir susiejimą, funkcijų nustatymų valdymą ir kitas programines paslaugas, atsižvelgiant į faktines Programos teikiamas programines paslaugas.

+

1.3.2 Programinės įrangos atnaujinimai, naujinimai ir kitos paslaugos.

+ +

2. Programinės įrangos licencijos apimtis

+

2.1 Naudotojui suteikiame asmeninę, neperduodamą, nesublicencijuojamą ir neišskirtinę Programinės įrangos licenciją.

+

2.2 Naudotojai gali įdiegti, naudoti, rodyti ir paleisti programinę įrangą viename mobiliajame galiniame įrenginyje nekomerciniais tikslais. Tačiau naudotojas neturi teisės diegti, naudoti ar paleisti programinės įrangos komerciniais eksploatavimo tikslais, kopijuoti, keisti, modifikuoti, prijungti ar paleisti programinę įrangą arba duomenis, įkeltus į bet kurio galinio įrenginio atmintį programinės įrangos veikimo metu, arba sąveikos duomenis tarp kliento ir serverio programinės įrangos veikimo metu, nei kurti jokių išvestinių kūrinių. Tai apima, bet neapsiriboja, papildinių, priedų ar neautorizuotų trečiųjų šalių įrankių/paslaugų naudojimą prieigai prie Programinės įrangos ir susijusių sistemų. Komerciniam pardavimui, dauginimui ir platinimui, pavyzdžiui, programinės įrangos iš anksto įdiegimui ir paketavimui, būtina gauti rašytinį leidimą ir sutikimą.

+

2.3 Naudotojas negali diegti Programinės įrangos kituose galiniuose įrenginiuose be aiškaus kūrėjo leidimo, įskaitant, bet neapsiribojant, televizorius, skaitmenines priedėlius, žaidimų konsoles ir kitus įrenginius.

+

2.4 Išskyrus šioje Sutartyje aiškiai numatytas teises, Naudotojui nesuteikiama jokių kitų teisių, ir Naudotojas turi gauti rašytinį sutikimą kitų teisių naudojimui.

+ +

3. Programinės įrangos atnaujinimas

+

3.1 Naudotojas turi pasirinkti programinės įrangos versiją, tinkamą įdiegto galinio įrenginio konfigūracijai. Priešingu atveju už programinės įrangos problemas, įrenginio problemas ar žalą, atsiradusią dėl bet kurios programinės įrangos versijos, netinkamos įrenginio tipui, atsakomybę neša tik naudotojas.

+

3.2 Siekdama pagerinti naudotojo patirtį ir tobulinti paslaugų turinį, Saitong turi teisę retkarčiais teikti pakaitines, modifikuotas ir atnaujintas programinės įrangos versijas. Funkcija „Atnaujinimo raginimas" naudotojams yra įjungta pagal numatytuosius nustatymus. Priklausomai nuo skirtingų naudotojų naudojamų programinės įrangos versijų, Saitong suteikia naudotojams galimybę aktyvuoti šią funkciją. Išleidus naują programinės įrangos versiją, Saitong negarantuoja tolesnio senosios programinės įrangos versijos prieinamumo.

+ +

4. Naudojimo specifikacija

+

4.1 Naudotojai gali naudoti Programinę įrangą ir Paslaugas pagal šią Sutartį laikydamiesi įstatymų ir šios Sutarties ir neturi atlikti šių veiksmų:

+

4.1.1 Šalinti visą autorių teisių informaciją iš Programinės įrangos ir kitų kopijų bei keisti, šalinti ar apeiti Programinės įrangos nustatytas technines priemones intelektinės nuosavybės teisių apsaugai.

+

4.1.2 Atlikti Programinės įrangos atvirkštinę inžineriją, pavyzdžiui, išardymą, dekompiliavimą ar kitus bandymus gauti Programinės įrangos šaltinio kodą.

+

4.1.3 Keičiant ar klastojant instrukcijas ir duomenis programinės įrangos veikimo metu, pridėti, pašalinti ar pakeisti programinės įrangos funkciją ar veikimo efektą, arba programinę įrangą ar metodus, skirtus aukščiau nurodytiems tikslams, valdyti ar platinti visuomenei, nepriklausomai nuo to, ar šie veiksmai yra komerciniais tikslais.

+

4.1.4 Naudoti programinę įrangą bet kokiam elgesiui, keliančiam grėsmę tinklo saugumui, įskaitant, bet neapsiribojant: neleistinų duomenų naudojimą ar prieigą prie neautorizuotų serverių/paskyrų; prieigą prie viešųjų tinklų ar kitų operacinių sistemų be leidimo ir saugomų duomenų šalinimą, keitimą ar pridėjimą; neautorizuotus bandymus zonduoti, skenuoti ar tikrinti programinės įrangos sistemos ar tinklo silpnąsias vietas arba kitus veiksmus, kenkiančius tinklo saugumui; bandymus trukdyti ar sunaikinti normalų programinės įrangos sistemos ar svetainės veikimą, tyčinį kenkėjiškų programų ar virusų platinimą ir kitus veiksmus, trikdančius normalias tinklo informacines paslaugas; TCP/IP paketų pavadinimų ar dalinių pavadinimų klastojimą.

+

4.1.6 Be rašytinio Bendrovės sutikimo naudotojas savavališkai atlieka šiuos veiksmus su programine įranga ir joje esančia informacija, įskaitant, bet neapsiribojant: naudojimą, nuomą, skolinimą, kopijavimą, keitimą, susiejimą, perspausdinimą, kompiliavimą, skelbimą, leidybą, veidrodinių svetainių kūrimą, išvestinių produktų, kūrinių, paslaugų, papildinių, priedų, suderinamumo, tarpusavio sujungimo ir kt. kūrimą Programinės įrangos pagalba.

+

4.1.7 Naudoti Programinę įrangą turinio, pažeidžiančio jūsų vietos įstatymus, skelbimui, perdavimui, platinimui ir saugojimui.

+

4.1.8 Naudoti programinę įrangą turinio, pažeidžiančio kitų intelektinės nuosavybės teises, komercines paslaptis ir kitas teisėtas teises, skelbimui, perdavimui, platinimui ir saugojimui.

+

4.1.9 Naudoti šią programinę įrangą masiniui reklaminės informacijos ir nepageidaujamų pranešimų skelbimui, perdavimui ir platinimui.

+

4.1.10 Naudoti Programinę įrangą ir kitas Paslaugas bet kokiu neteisėtu būdu, bet kokiu neteisėtu tikslu ar bet kokiu būdu, nesuderinamu su licencijuotu šios Sutarties naudojimu.

+

4.2 Informacijos skelbimo specifikacija

+

4.2.1 Jei naudojate programinę įrangą informacinio turinio skelbimui (jei yra), turėtumėte garantuoti, kad turite intelektinės nuosavybės teises į jūsų įkeltą informacinį turinį arba esate gavę teisėtą leidimą, ir kad joks jūsų elgesys naudojant programinę įrangą ir paslaugas nepažeidžia jokios trečiosios šalies teisėtų teisių ir interesų.

+

4.2.2 Naudodamas Programinę įrangą, naudotojas neturi užsiimti šia veikla per Programinę įrangą, įskaitant, bet neapsiribojant:

+

4.2.2.1 Kurti, kopijuoti, skelbti, platinti ir saugoti turinį, pažeidžiantį vietos nacionalinius įstatymus ir teisės aktus.

+

4.2.2.2 Skelbti, perduoti, platinti ir saugoti turinį, pažeidžiantį kitų teisėtas teises, tokias kaip reputacija, atvaizdas, intelektinė nuosavybė ir komercinės paslaptys.

+

4.2.2.3 Fabrikuoti faktus, slėpti tiesą siekiant suklaidinti ar apgauti kitus.

+

4.2.2.4 Skelbti, perduoti ir platinti reklaminę informaciją ir nepageidaujamus pranešimus.

+

4.2.2.5 Užsiimti kitais veiksmais, pažeidžiančiais vietos įstatymus ir teisės aktus.

+

4.2.3 Be Bendrovės leidimo negalite vykdyti jokios komercinės veiklos, tokios kaip reklama ir prekių pardavimas, Programinėje įrangoje.

+

4.3 Naudotojas supranta ir sutinka, kad:

+

4.3.1 Saitong nuspręs, ar naudotojas yra įtariamas pažeidęs aukščiau nurodytas naudojimo specifikacijas, ir pagal sprendimo rezultatus sustabdys ar nutrauks jūsų naudojimo licenciją arba imsis kitų ribojamųjų priemonių, kurios gali būti taikomos pagal šią sutartį.

+

4.3.2 Naudotojo naudojantis licencijuota programine įranga paskelbtas turinys, įtariamas neteisėtumu ar kitų teisėtų teisių pažeidimu, ar šios Sutarties pažeidimu, bus tiesiogiai pašalintas.

+

4.3.3 Jei naudotojo aukščiau nurodytų naudojimo taisyklių pažeidimas padaro žalą trečiosioms šalims, turite savarankiškai prisiimti teisinę atsakomybę savo vardu ir užtikrinti, kad bendrovė nepatirtų nuostolių ar padidėjusių išlaidų.

+

4.3.4 Jei naudotojas pažeidžia atitinkamus teisės aktus ar sutartis, dėl ko Saitong patiria nuostolių, arba gauna trečiųjų šalių pretenzijas, arba yra baudžiamas administracinio organo, naudotojas atlygina Saitong patirtus nuostolius ir/ar išlaidas, įskaitant pagrįstus advokato mokesčius, tyrimo ir įrodymų rinkimo išlaidas.

+ +

5. Trečiųjų šalių paslaugų aprašymas

+

5.1 Naudotojas supranta ir sutinka, kad programinės įrangos sistema gali apimti Bendrovės susijusių įmonių ar trečiųjų šalių teikiamas paslaugas ir kad Bendrovė sistemoje pateikia tik atitinkamus funkcinius modulius naudotojų patogumui ir suteikia prieigą prie trečiųjų šalių paslaugų.

+

5.2 Nepriklausomai nuo to, ar trečiųjų šalių paslaugos yra iš anksto nustatytos programinės įrangos sistemos paslaugose, ar jas naudotojai patys atidarė ar užsakė, naudotojai supranta ir sutinka, kad Saitong neteikia jokios aiškios ar numanomos garantijos dėl trečiųjų šalių paslaugų teikėjų ar naudotojų teisėtumo ir veiksmingumo, taip pat dėl trečiųjų šalių paslaugų teisėtumo, tikslumo, veiksmingumo ir saugumo.

+

5.3 Bendrovė neprižiūri, nekontroliuoja ir neteikia jokios garantijos ar laidavimo už trečiųjų šalių paslaugas bei neprisiima jokios atsakomybės.

+

5.4 Bet koks ginčas ar nesutarimas tarp naudotojo ir trečiosios šalies paslaugų teikėjo sprendžiamas Naudotojo ir trečiosios šalies pagal trečiosios šalies paslaugų teikėjo verslo procesus ir verslo normas, ir Bendrovė neprisiima jokios atsakomybės.

+ +

6. Privatumo politika ir asmens duomenų apsauga

+

6.1 Saitong įsipareigoja saugoti naudotojų privatumą pagal privatumo politiką, žiūrėkite: Voitrans Privatumo politika.

+ +

7. Atsakomybė už pažeidimą

+

7.1 Saitong turi teisę spręsti, ar naudotojo elgesys atitinka šios Sutarties nuostatas. Jei manoma, kad Naudotojas pažeidė atitinkamus įstatymus ir teisės aktus arba šios Sutarties nuostatas ir susijusias taisykles, atsižvelgdama į naudotojo pažeidimo sunkumą, Saitong turi teisę pašalinti neteisėtą informaciją, apriboti, sustabdyti, nutraukti naudotojo naudojimąsi Programinės įrangos paslauga, reikalauti naudotojo teisinės atsakomybės ir imtis kitų priemonių, kurias Saitong laiko tinkamomis. Jei patiriame bet kokių nuostolių (įskaitant, bet neapsiribojant, bet kokių trečiųjų šalių pretenzijų ar bet kokio administracinio organo sankcijų gavimą), Naudotojas turi visišką atsakomybę.

+ +

8. Paslaugų rizikos ir atsakomybės atsisakymai

+

8.1 Norime teikti paslaugų palaikymą naudojant šiuolaikines technologijas. Saitong negarantuoja, kad Programinės įrangos paslauga veiks be pertrūkių ar klaidų, kad bus ištaisyti visi Programinės įrangos paslaugos defektai ar kad Programinės įrangos paslauga atitiks visus naudotojų reikalavimus. Dėl iš to kylančių pasekmių Saitong neprisiima jokios atsakomybės.

+

8.2 Už visus naudotojo patirtus nuostolius dėl trečiųjų šalių, tokių kaip ryšio linijos gedimas, techninės problemos, tinklas, kompiuterinio galinio įrenginio gedimas, sistemos nestabilumas ir kitos nenugalimos jėgos priežastys, atsakomybė neprisiimama.

+

8.3 Saitong negarantuoja per programinę įrangą gauto informacinio turinio (įskaitant, bet neapsiribojant, trečiųjų šalių paslaugų turiniu) teisėtumo, autentiškumo, tikslumo ir veiksmingumo, ir Saitong neprisiima jokios atsakomybės už bet kokio naudotojų elgesio, paremto paieška ir peržiūra, rezultatus.

+

8.4 Programinė įranga, kaip ir dauguma interneto programinės įrangos, paveikta skirtumų, apimančių, bet neapsiribojančių, naudotojo priežastimis, tinklo paslaugų kokybe, socialine aplinka ir kitais veiksniais, ir gali būti veikiama įvairių saugumo problemų, pavyzdžiui, kiti naudoja naudotojo informaciją, dėl ko kyla priekabiavimas realiame gyvenime; kita naudotojų atsisiųsta ir įdiegta programinė įranga ar kitos naudotojų lankomos svetainės turi virusų, tokių kaip „Trojos arkliai", keliančių grėsmę naudotojų galinio įrenginio informacijos ir duomenų saugumui, o tai daro įtaką normaliam programinės įrangos naudojimui. Naudotojai turėtų stiprinti informacijos saugumo ir naudotojų duomenų apsaugos sąmoningumą bei atkreipti dėmesį į slaptažodžio apsaugos stiprinimą, kad išvengtų nuostolių ir priekabiavimo.

+

8.5 Kai naudotojai naudoja Programinę įrangą arba reikalauja, kad Saitong teiktų konkrečias paslaugas, Programinė įranga gali kviesti trečiųjų šalių sistemas ar trečiųjų šalių programinę įrangą naudotojų naudojimui ar prieigai palaikyti, o naudojimo ar prieigos rezultatus teikia trečioji šalis. Be šios Sutarties atitinkamų taisyklių laikymosi, naudotojai taip pat turi laikytis trečiosios šalies sutarčių ir atitinkamų taisyklių. Naudotojai turi suprasti ir sutikti, kad naudojant trečiųjų šalių paslaugas, trečiosios šalys gali skaityti naudotojų duomenis, ir Saitong negarantuoja per trečiųjų šalių sistemas ar trečiųjų šalių programinės įrangos palaikymą pasiektų rezultatų saugumo, tikslumo, veiksmingumo ir kitų neaiškių rizikų; naudotojai turėtų apdairiai vertinti, ir Saitong neprisiima jokios atsakomybės už bet kokius dėl to kylančius ginčus ir žalą.

+

8.6 Siekiant užtikrinti bendrovės verslo plėtros ir koregavimo savarankiškumą, bendrovė gali bet kuriuo metu pakeisti ar nutraukti paslaugą, tinkamai įspėjusi naudotoją.

+

8.7 Išskyrus atvejus, kai aiškiai numatyta įstatymais ir teisės aktais, Saitong dės visas pastangas, kad programinė įranga ir susijusios technologijos bei informacija būtų saugios, veiksmingos, tikslios ir patikimos, tačiau, atsižvelgiant į esamas technologijas, naudotojas supranta, kad Saitong negali to garantuoti.

+

8.8 Kompensaciją už asmens sužalojimą ar atsitiktinę ir netiesioginę ekonominę žalą, atsiradusią dėl bet kurios iš šių aplinkybių ar su jomis susijusią, įskaitant, bet neapsiribojant, pelno praradimą, duomenų praradimą, žalos atlyginimą už verslo nutraukimą ar kitą komercinę žalą ar nuostolius, prisiima Naudotojas:

+

1) Licencijuotos programinės įrangos naudojimas ar negalėjimas naudoti.

+

2) Neleistinas programinės įrangos naudojimas ar naudotojo duomenų keitimas trečiųjų šalių.

+

3) Naudotojo veiksmų su programine įranga sukeltos išlaidos ir nuostoliai.

+

4) Naudotojo neteisingas programinės įrangos supratimas.

+

5) Bet koks kitas nuostolis, susijęs su programine įranga, nepriskirtinas Saitong priežastims.

+

8.9 Naudotojas sutinka, kad Bendrovė turi teisę sustabdyti, nutraukti ar pašalinti visą ar dalį Paslaugos naudotojui, remiantis teisminių, reguliavimo ir priežiūros institucijų reikalavimais arba savo verslo priežastimis. Saitong už tai neprisiima jokios atsakomybės.

+

8.10 Naudotojas supranta ir sutinka, kad Bendrovė dės komerciškai pagrįstas pastangas užtikrinti duomenų saugojimo Programinėje įrangoje ir Paslaugose saugumą, tačiau bendrovė negali suteikti visiškos garantijos, ir Naudotojas supranta, kad Bendrovė nėra atsakinga už duomenų pašalinimą ar saugojimo ar atsarginės kopijos nesėkmę Paslaugoje.

+

8.11 Maksimalia teisės aktuose leidžiama apimtimi kūrėjas ar tiekėjas neatsako už jokią tiesioginę, netiesioginę, atsitiktinę, specialią ar pasekminę žalą, kylančią dėl Programos naudojimo. Jei naudotojas turi papildomų poreikių, kreipkitės į atitinkamą ligoninę nuodugniam tyrimui.

+ +

9. Intelektinės nuosavybės pareiškimas

+

9.1 Saitong yra šios programinės įrangos intelektinės nuosavybės teisių turėtoja. Visos programinės įrangos autorių teisės, prekių ženklai, patentai, komercinės paslaptys ir kitos intelektinės nuosavybės teisės, taip pat visas su programine įranga susijęs informacinis turinys (įskaitant, bet neapsiribojant, tekstą, paveikslėlius, garsą, vaizdo įrašus, grafiką, sąsajos dizainą, maketo struktūrą, atitinkamus duomenis ar elektroninius dokumentus ir kt.) yra saugomi vietos įstatymais ir teisės aktais bei atitinkamomis tarptautinėmis sutartimis.

+

9.2 Be rašytinio Bendrovės sutikimo Naudotojas negali įgyvendinti, naudoti ar perduoti aukščiau nurodytų intelektinės nuosavybės teisių bet kokiu komerciniu ar nekomerciniu tikslu ar leisti bet kuriai trečiajai šaliai, ir Bendrovė pasilieka teisę reikalauti teisinės atsakomybės už aukščiau nurodytus veiksmus.

+ +

10. Protokolo pakeitimas

+

10.1 Saitong turi teisę prireikus pakeisti šios Sutarties sąlygas. Pakeitus Sutarties sąlygas, peržiūrėtos Sutarties sąlygos bus paskelbtos atitinkamame puslapyje. Jei nesutinkate su pakeistu turiniu, naudotojas turėtų savo iniciatyva atšaukti šią paslaugą. Jei Naudotojas toliau naudojasi Paslaugomis, laikoma, kad jis priima Sutarties sąlygų pakeitimus.

+

10.2 Saitong pasilieka teisę prireikus keisti ar koreguoti mokamas paslaugas, mokėjimo standartus, mokėjimo būdus, paslaugų mokesčius ir paslaugų sąlygas. Teikdami paslaugas, dabar ar ateityje galime taikyti tam tikrus mokesčius kai kurių paslaugų naudotojams. Jei naudotojai atsisako mokėti tokius mokesčius, jie negali toliau naudotis atitinkamomis paslaugomis po mokesčių pradžios.

+
+ + diff --git a/doc/lv/privacy_policy.html b/doc/lv/privacy_policy.html new file mode 100644 index 000000000..9366108b8 --- /dev/null +++ b/doc/lv/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans privātuma politika + + + + +
+

Voitrans privātuma politika

+

Pēdējoreiz atjaunināts: 2025. gada 27. maijs

+

Spēkā stāšanās datums: 2025. gada 27. maijs

+ +

Laipni lūdzam izmantot Voitrans programmatūru un pakalpojumus

+

1. Voitrans nodrošina Saitong Industries Inc. (turpmāk “Uzņēmums”). Voitrans var palīdzēt lietotājiem pārvaldīt Bluetooth ierīces un citus produktus. Mēs saprotam personas informācijas nozīmi mūsu lietotājiem (turpmāk “jūs”) un to, ka efektīva jūsu personas informācijas aizsardzība ir mūsu uzņēmējdarbības veselīgas un ilgtspējīgas attīstības pamats. Paldies, ka izmantojat un uzticaties Voitrans produktiem vai pakalpojumiem! Mēs apzināmies, ka šo uzticību nav viegli iegūt, tāpēc ievērojam atklātības un caurspīdīguma principu, lai jums izskaidrotu mūsu noteikumus par jūsu personas informācijas apstrādi. Mēs apstrādājam jūsu personas informāciju likumīgi, leģitīmos veidos un ar skaidriem un saprātīgiem mērķiem. Īpaša piezīme: pirms mūsu produktu vai pakalpojumu izmantošanas rūpīgi izlasiet un izprotiet šo Privātuma politiku, lai jūs varētu pieņemt atbilstošus lēmumus.

+

2. Šī Privātuma politika skaidro, kā mēs vācam, izmantojam, glabājam un kopīgojam jūsu personas informāciju, kad jūs izmantojat Voitrans. Personas informācija ir jebkura veida informācija, kas ir ierakstīta elektroniski vai citos veidos un kas var identificēt konkrētu fizisku personu vai atspoguļot konkrētas fiziskas personas darbības, atsevišķi vai kopā ar citu informāciju. Voitrans respektē un aizsargā visu pakalpojuma lietotāju privātumu. Izņemot gadījumus, kas noteikti šajā Privātuma politikā, Voitrans neatklās šo informāciju sabiedrībai un nesniegs to trešajām personām bez jūsu iepriekšējas atļaujas.

+

3. Ja jūs izmantojat trešās puses produktu vai pakalpojumu, izmantojot App Marketplace produktu vai pakalpojumu, uz jūsu personas informāciju attiecas attiecīgās trešās puses privātuma politika.

+

4. Voitrans Privātuma politika laiku pa laikam var tikt atjaunināta. Piekrītot Voitrans pakalpojumu lietošanas līgumam un uzsākot Voitrans lietošanu, tiek uzskatīts, ka jūs piekrītat visai šai Privātuma politikai. Ja jūs nepiekrītat šai Privātuma politikai, lūdzu, neizmantojiet Voitrans programmatūru un pakalpojumus.

+

5. Lai analizētu un novērtētu attiecīgo pakalpojumu efektivitāti, mēs izmantosim un atklāsim jūsu personas informāciju saskaņā ar šīs Privātuma politikas noteikumiem.

+ +

Šī Privātuma politika palīdzēs jums saprast sekojošo:

+
    +
  • 1 Informācija, ko mēs vācam
  • +
  • 2 Informācijas glabāšana
  • +
  • 3 Informācijas drošība
  • +
  • 4 Kā mēs izmantojam savākto informāciju
  • +
  • 5 Informācijas kopīgošana
  • +
  • 6 Kā jūs pārvaldāt savu personas informāciju
  • +
  • 7 Lietotnes atļauju apraksts
  • +
  • 8 Trešo pušu SDK izmantošana
  • +
  • 9 Nepilngadīgo aizsardzība
  • +
  • 10 Privātuma politikas spēkā esamība un atjaunināšana
  • +
  • 11 Kā sazināties ar mums
  • +
+ +

1. Informācija, ko mēs vācam

+

1. Uzsākot Voitrans lietošanu, mēs sākam vākt datus par to, kā jūs izmantojat lietotni.

+

2. Voitrans var iegūt personas informāciju par jums no trešajām personām vai biznesa partneriem likumīgā veidā.

+

3. Lai nodrošinātu jums labākus produktus un pakalpojumus, sniegtu tīkla drošību lietošanas laikā, uzturētu produktu normālu darbību un tos optimizētu un uzlabotu, pēc tam, kad jūs aktīvi noklikšķināt, ka piekrītat šai privātuma politikai, pakalpojuma sniegšanas laikā papildus personas informācijai, kas nepieciešama lietotnes pamatfunkciju normālai darbībai saskaņā ar valsts normatīvajiem aktiem, mēs vāksim arī citu personas informāciju:

+

3.1 Lai identificētu riska lietotājus, novērtētu lietotāju autentiskumu un visaptveroši novērstu krāpšanu, katru reizi, kad atverat programmu, mēs nolasīsim jūsu ierīces informāciju, tostarp: (ierīces modeli, ierīces MAC adresi, ierīces unikālo identifikatoru (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID u. c.), MEID, sērijas numuru, Wi‑Fi SSID un BSSID), Bluetooth adresi, operētājsistēmas versiju, operētājsistēmas nosaukumu, lietotāja pieteikšanās konta un paroles informāciju;

+

3.2 Kad jūs izmantojat mūsu produktus un pakalpojumus, mēs varam vākt noteiktu informāciju, izmantojot tīkla žurnālu informāciju vai noteiktas programmas un programmatūru, tostarp: informāciju par produktu un pakalpojumu izmantošanu (piemēram, lietotnes atvēršanas laiku, lietošanas ilgumu un apmeklētās lapas adresi); ierīces notikumu informāciju, piemēram, avārijas, sistēmas aktivitāti utt., lai optimizētu jūsu ierīci un uzlabotu mūsu pakalpojumus;

+

3.3 Lai identificētu lietotnes, kuru dēļ iekārta var būt apdraudēta, un nodrošinātu drošākus funkcionālos pakalpojumus, mums procesā ir jāiegūst jūsu lietotņu/instalēto lietotņu saraksts, lai nodrošinātu produkta normālu darbību un aizsargātu ierīces drošību.

+

3.4 Lai analizētu lietotnes funkciju izmantošanu un noteiktu lietotāju autentiskumu, mums ir jāveic datu statistika un jāapkopo iepriekš minētā ierīces informācija, tostarp ierīces MAC adrese un unikālais identifikators, kamēr ierīce tiek izmantota.

+

3.5 Ierīces signāls: jūsu izmantotās ierīces tīkla statuss, Wi‑Fi piekļuves punkta informācija utt.

+

3.6 Atrašanās vietas informācija: mēs varam izmantot GPS, Wi‑Fi vai citus tehniskos līdzekļus, lai vāktu un apstrādātu informāciju par jūsu atrašanās vietu, piemēram, vietējās informācijas atjaunināšanai un satura pakalpojumu nodrošināšanai.

+

Lai iegūtu vairāk informācijas, lūdzu, noklikšķiniet uz “Personas informācijas vākšanas saraksts”.

+ +

1. Attiecībā uz jutīgāku personas informāciju, piemēram, lietotāja ierīces informāciju (IMEI numurs, zvanu statuss un identifikācijas numurs), GPS atrašanās vietas informāciju, foto mediju saturu un failu piekļuves tiesībām, mēs pirms vākšanas saņemsim jūsu piekrišanu. Dažas nejutīgas informācijas vākšana var būt noklusējuma un automātiska. Jūs varat ierobežot mūsu attiecīgās informācijas vākšanu vai noteiktu atļauju izmantošanu, pielāgojot iestatījumus savā mobilajā ierīcē. Ja ierobežosiet mūsu piekļuvi noteiktai atļaujai, mēs varam vairs nespēt nodrošināt attiecīgos pakalpojumus un vairs neapstrādāsim attiecīgo informāciju.

+

2. Mēs nevācam jūsu personas apliecības numuru, biometrisko informāciju, bankas konta numuru, īpašuma informāciju, kredītinformāciju, veselības un fizioloģisko informāciju un citu sensitīvu personas informāciju.

+

3. Par sensitīvām atļaujām: lai pareizi izmantotu lietotnes funkcijas, produktam ir jāiegūst šādas atļaujas, lai nodrošinātu funkcionālus pakalpojumus, kas saistīti ar produkta normālu darbību.

+ +

1 Atļauja lasīt un rakstīt krātuvē

+

1 Kā iegūt: uznirstošs logs; atļaujas pieprasījuma brīdī lietotājs aktīvi noklikšķina “Piekrītu”, un lietotne izmantos šo atļauju

+

2 Mērķis un izmantošanas joma: izmanto sistēmas resursu kešatmiņas failu un sīktēlu skenēšanai, mūzikas resursu un produktu attēlu ielādei un attēlošanai lietotnes saskarnē, lai lietotāji varētu ērti skatīt un izmantot

+ +

2 Atļauja piekļūt instalēto lietotņu sarakstam

+

1 Kā iegūt: uznirstošs logs; atļaujas pieprasījuma brīdī lietotājs aktīvi noklikšķina “Piekrītu”, un lietotne izmantos šo atļauju

+

2 Mērķis un izmantošanas joma: ja lietotnei jāizmanto reklāmas un veicināšanas pakalpojumi, trešās puses reklāmas platformai (Youmon +SDK) ir nepieciešama ierīces “instalēto lietotņu saraksta” atļauja, lai nepieļautu lietotājam jau piederošu lietotņu piedāvāšanu un uzlabotu lietotāja pieredzi.

+ +

3 Atļauja iegūt ierīces statusa informāciju

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Kā iegūt: uznirstošs logs; atļaujas pieprasījuma brīdī lietotājs aktīvi noklikšķina “Piekrītu”, un lietotne izmantos šo atļauju

+

2 Mērķis un izmantošanas joma: izmantojot mūsu lietotni, lai analizētu funkciju izmantošanu un novērtētu lietotāja autentiskumu, mēs varam sinhronizēt atļauju ar trešo pušu SDK, tostarp Autonavi SDK, Youmon +SDK u. c.

+ +

4 Piekļuve atrašanās vietas informācijai

+

1 Kā iegūt: uznirstošs logs; lietotājs izmantos šo atļauju tikai tad, ja aktīvi noklikšķinās “Piekrītu”

+

2 Mērķis un izmantošanas joma: ja lietotnei jāizmanto GPS, Wi‑Fi vai citas funkcijas, produktam ir jāapkopo jūsu atrašanās vietas informācija, lai meklētu tuvumā esošas Bluetooth ierīces.

+

Piezīme: par citām lietotnes atļaujām skatiet šī dokumenta “Privātuma politika” 7. sadaļu “Lietotnes atļauju apraksts”.

+ +

2. Informācijas glabāšana

+

1. Kur informācija tiek glabāta

+

Personas informācija, ko mēs vācam un ģenerējam Ķīnas Tautas Republikā, tiks glabāta mūsu serveros un/vai mūsu saistīto uzņēmumu serveros.

+

2. Informācijas glabāšana un apstrāde

+

Mēs glabājam jūsu personas informāciju tikai tik ilgi, cik nepieciešams mērķa sasniegšanai vai cik ilgi to pieprasa normatīvie akti. Pēc tam, kad jūs pārtraucat izmantot šo produktu, mēs nekavējoties pārtrauksim vākt un apstrādāt jūsu personas informāciju un lietotnes datus. Pēc minētā termiņa beigām mēs izdzēsīsim vai anonimizēsim personas informāciju, ko esat mums sniedzis.

+

Papildus nepieciešamajām funkcijām Voitrans ir jāpieprasa atbilstošas sistēmas atļaujas. Mākoņa servera puse neglabā lietotāju personas informāciju, un trešo pušu SDK dati tiks anonimizēti un deidentificēti pakalpojumu sniedzēja (Amu Statistics SDK, Autonavi SDK) līmenī, tāpēc lietotājus nevar izsekot. Informācija, kas glabājas lietotāja tālrunī, tiks automātiski izdzēsta, kad lietotājs atinstalēs Voitrans vai iztīrīs kešatmiņu.

+ +

3. Informācijas drošība

+

1. Voitrans glabā un aizsargā jūsu personas informāciju, izmantojot nozares standartiem atbilstošus drošības pasākumus un tehnoloģijas, piemēram, autentifikāciju, datu šifrēšanu, ierobežotu piekļuvi datu centram un citus drošības pasākumus, lai nodrošinātu jūsu informācijas aizsardzību pret izpaušanu, izmaiņām un iznīcināšanu. Neskatoties uz minētajiem drošības pasākumiem, lūdzu, ņemiet vērā, ka neviena drošības metode nevar būt 100% droša.

+

2. Izmantojot Voitrans sniegtos pakalpojumus, lūdzu, aizsargājiet savu personas informāciju. Ja konstatējat, ka jūsu personas informācija varētu būt kompromitēta, nekavējoties sazinieties ar mums, lai mēs varētu veikt atbilstošus pasākumus.

+ +

4. Kā mēs izmantojam savākto informāciju

+

1. Īstenojot lietotnes biznesa funkcijas, mēs varam izmantot jūsu personas informāciju, lai nodrošinātu mūsu sniegto produktu un pakalpojumu integritāti un drošību;

+

2. Izmantojot savākto informāciju, mēs izpratīsim jūsu lietošanas paradumus un ar datu analīzes palīdzību novērtēsim pakalpojumu pieņemamību, jūsu lietošanas paradumus u. c., lai testētu un izveidotu jaunus produktus, funkcijas un pakalpojumus, uzlabotu pakalpojumu līmeni, kā arī uzlabotu esošos un attīstītu jaunus pakalpojumus;

+

3. Mēs varam izmantot jūsu personas informāciju klientu aptaujām par produktiem un pakalpojumiem, paziņojumu nosūtīšanai par produktiem un pakalpojumiem un komerciālai veicināšanai;

+

4. Mēs varam izmantot jūsu informāciju iekšējai analīzei un pētījumiem, kas saistīti ar lietotni;

+ +

5. Informācijas kopīgošana

+

Pašlaik mēs aktīvi nekopīgosim un nepārsūtīsim jūsu personas informāciju trešajām personām ārpus uzņēmuma. Ja tomēr notiks jūsu personas informācijas kopīgošana vai pārsūtīšana, mēs saņemsim jūsu nepārprotamu piekrišanu vai apstiprināsim, ka trešā persona ir saņēmusi jūsu nepārprotamu piekrišanu šādai darbībai.

+

Mēs publiski neatklāsim savākto personas informāciju. Ja publiska atklāšana ir nepieciešama, mēs jūs informēsim par atklāšanas mērķi, atklājamās informācijas veidu un iespējamo sensitīvo informāciju un saņemsim jūsu nepārprotamu piekrišanu.

+

Tā kā mūsu uzņēmējdarbība turpina attīstīties, mēs varam iesaistīties apvienošanās, iegādes, aktīvu pārsūtīšanas un citos darījumos. Mēs jūs informēsim par attiecīgajiem apstākļiem saskaņā ar normatīvajiem aktiem un ar aizsardzības līmeni, kas nav zemāks par šajā dokumentā noteikto, lai turpinātu aizsargāt jūsu personas informāciju vai prasītu jaunajam pārzinim turpināt aizsargāt jūsu personas informāciju.

+

Turklāt saskaņā ar attiecīgajiem normatīvajiem aktiem un valsts standartiem mēs varam kopīgot, pārsūtīt vai publiski atklāt personas informāciju bez iepriekšējas atļaujas un piekrišanas šādos gadījumos:

+
    +
  • 1 Tieši saistīts ar valsts drošību un valsts aizsardzības drošību;
  • +
  • 2 Tieši saistīts ar sabiedrisko drošību, sabiedrības veselību vai būtiskām sabiedrības interesēm;
  • +
  • 3 Tieši saistīts ar kriminālizmeklēšanu, kriminālvajāšanu, tiesvedību un spriedumu izpildi;
  • +
  • 4 Lai aizsargātu personas datu subjekta vai citu personu dzīvību, īpašumu un citas būtiskas likumīgās tiesības un intereses, bet ir grūti iegūt piekrišanu;
  • +
  • 5 Personas informācija, ko personas datu subjekts ir publiski atklājis;
  • +
  • 6 Personas informācijas vākšana no likumīgi publiski atklātas informācijas, piemēram, likumīgiem ziņu ziņojumiem, valdības informācijas atklāšanas un citiem kanāliem.
  • +
+ +

6. Kā jūs pārvaldāt savu personas informāciju

+

Saskaņā ar Ķīnas attiecīgajiem likumiem, noteikumiem un standartiem, kā arī citu valstu un reģionu izplatītajām praksēm, mēs garantējam, ka jūs varat īstenot šādas tiesības attiecībā uz savu personas informāciju:

+ +

1. Labot personas informāciju

+

Ja konstatējat kļūdu jūsu personas informācijā, ko apstrādājam, jums ir tiesības labot vai atjaunināt nepareizu vai nepilnīgu informāciju. Ja jūs nevarat to izdarīt patstāvīgi konta centrā, varat sazināties ar mums pa e‑pastu: saitong.voitrans@gmail.com

+ +

2. Dzēst personas informāciju

+

Šādos gadījumos jūs varat iesniegt mums pieprasījumu dzēst jūsu personas informāciju:

+
    +
  • Ja mēs apstrādājam personas informāciju, pārkāpjot likumus un noteikumus;
  • +
  • Ja mēs vācam un izmantojam jūsu personas informāciju bez jūsu piekrišanas;
  • +
  • Ja mūsu personas informācijas apstrāde pārkāpj mūsu vienošanos ar jums;
  • +
  • Ja jūs vairs neizmantojat mūsu produktus vai pakalpojumus;
  • +
  • Ja mēs vairs nesniedzam jums produktus vai pakalpojumus.
  • +
+

Sazinieties ar mums pa e‑pastu: saitong.voitrans@gmail.com. Mēs apstrādāsim jūsu pieprasījumu un nosūtīsim atbildi 30 darba dienu laikā pēc pieprasījuma saņemšanas.

+ +

3. Mainīt piekrišanas apjomu

+

Jūs varat sazināties ar mums pa e‑pastu: saitong.voitrans@gmail.com. Pēc jūsu pieprasījuma mēs vairs nevāksim, neizmantosim un neatklāsim jūsu personas informāciju. Lūdzu, ņemiet vērā, ka piekrišanas atsaukšana vai personas informācijas dzēšana var ietekmēt dažu mūsu pakalpojumu izmantošanu.

+ +

4 Piekļūt un kopēt personas informāciju

+

Saskaņā ar attiecīgo likumu noteikumiem jūs varat sniegt savu imei (tālruņa sērijas numuru) vai oaid vai Android ID, kā arī konta informāciju un citus datus, lai pieteiktu piekļuvi un kopiju savai personas informācijai. Jūs varat sazināties ar mums pa e‑pastu: 3514406195@qq.com

+ +

5. Atbilde uz jūsu pieprasījumu

+

Drošības nolūkos jums var būt nepieciešams iesniegt rakstisku pieprasījumu vai citādi pierādīt savu identitāti. Mēs varam lūgt jums verificēt identitāti pirms pieprasījuma apstrādes. Uz saprātīgiem pieprasījumiem mēs atbildēsim un tos izskatīsim savlaicīgi. Mēs varam noraidīt pieprasījumus, kas ir nepamatoti atkārtoti, prasa pārāk daudz tehnisko resursu (piemēram, jaunu sistēmu izstrādi vai būtiskas izmaiņas esošajās praksēs), rada risku citu personu likumīgajām interesēm vai ir praktiski neizpildāmi.

+

Šādos gadījumos, saskaņā ar likumu un noteikumu prasībām, mēs varam nespēt atbildēt uz jūsu pieprasījumu:

+
    +
  • Saistīts ar valsts drošību un valsts aizsardzības drošību;
  • +
  • Saistībā ar kriminālizmeklēšanu, kriminālvajāšanu un tiesvedību;
  • +
  • Ir pietiekami pierādījumi par ļaunprātību vai tiesību ļaunprātīgu izmantošanu;
  • +
  • Atbilde uz jūsu pieprasījumu radītu nopietnu kaitējumu jūsu vai citu personu/organizāciju likumīgajām tiesībām un interesēm.
  • +
+ +

6. Konta dzēšana

+

Lietotājs var lietotnē veikt darbību [konta dzēšana]. Darbības soļi:

+
    +
  1. Dodieties uz sadaļu [My]
  2. +
  3. Nospiediet [Settings] augšējā labajā stūrī
  4. +
  5. Apstiprināšanai nospiediet [Cancel account]
  6. +
+

Pēc konta dzēšanas informācija par lietotāja kontu tiek dzēsta

+ +

7. Lietotnes atļauju apraksts

+

Lai nodrošinātu labākus produktus un pakalpojumus, programmatūras izmantošanas laikā mēs pieprasīsim šādas atļaujas. Ieejot sākumlapā vai izmantojot funkciju, tiks pieprasīta autorizācija. Ja atteiksities, dažas funkcijas var nedarboties normāli. Atļauju konkrētie mērķi un paziņošanas veids ir šādi:

+ +

1 Atrašanās vietas atļaujas:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

izmantojot Wi‑Fi vai mobilo bāzes staciju tiek iegūta lietotāja atrašanās vietas informācija (platums un garums)

+

Izmantojot Voitrans, mēs meklēsim jūsu piesaistīto Bluetooth ierīci, pamatojoties uz jūsu ģeogrāfisko atrašanās vietu. Tajā pašā laikā, lai nodrošinātu stabilākus pakalpojumus, optimizētu produktus un uzlabotu pieredzi, mēs varam kopīgot iepriekš minēto informāciju ar trešo pušu SDK, piemēram, Youmon un Autonavi, lai iegūtu Voitrans darbības datus un nodrošinātu funkcionālos pakalpojumus.

+

Paziņošanas veids: pirmo reizi palaižot lietotni, tiek parādīts atļaujas paziņojums un lietotājam jāapstiprina piekrišana. Apraksts Lietotāja līgumā un Privātuma politikā.

+ +

2 Krātuves atļaujas

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Šī atļauja ir nepieciešama, lai piekļūtu lietotnei un veiktu lietotņu pārvaldības funkcijas.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

3 Tīkla atļaujas:

+

android.permission.INTERNET

+

Šīs atļaujas ir nepieciešamas Voitrans informācijas pakalpojumiem un versijas atjaunināšanas pakalpojumiem. Lai uzlabotu lietotāja pieredzi un optimizētu pakalpojumu iespējas, šīs atļaujas var izmantot arī trešo pušu SDK.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

4 Tīkla statusa atļaujas:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Izmanto, lai noteiktu, vai pašreizējais tīkla savienojums ir derīgs, novērtētu tīkla vidi (piemēram, 4G) un paziņotu par tīkla vides izmaiņām, kas ietekmē informācijas satura ielādi. Šī atļauja tiek pieprasīta, izmantojot Voitrans.

+

Tīkla statusa izmaiņas ietekmē datu augšupielādi un ielādi, tāpēc piekļuve tīkla statusa atļaujai var tikt izmantota kopā ar trešo pušu platformām.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

5 Uzdevumu saraksta atļauja:

+

android.permission.GET_TASKS

+

Šī atļauja tiek izmantota, lai iegūtu lietotņu sarakstu programmatūras pārvaldības funkcijai. Izmantojot šo funkciju, ir nepieciešams nolasīt mobilajā tālrunī instalētās lietotnes.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

6 MAC adreses atļauja

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Izmantojot Voitrans, lietotnei var būt nepieciešama MAC adreses atļauja:

+

Ja lietotnei ir jāziņo mērķa konversijas dati, trešo pušu platformas, piemēram, Youmon +SDK, var izmantot MAC.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

7 Audio ierakstīšanas atļauja

+

android.permission.RECORD_AUDIO

+

Izmantojot Voitrans balss ievades funkciju, ir nepieciešama audio ierakstīšanas atļauja, kas galvenokārt tiek izmantota balss ievadei tulkošanai un citām saistītām funkcijām.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā; nepieciešamības gadījumā tiek parādīts dinamisks uznirstošs logs.

+ +

8 Wi‑Fi SSID atļauja

+

Izmantojot šo atļauju, lietotne nolasa Wi‑Fi SSID:

+

Mērķis un izmantošanas joma: ja lietotnei ir jāizmanto datu analīzes pakalpojumi, trešo pušu platformas var nolasīt ierīces “Wi‑Fi SSID”, lai nodrošinātu lietotājiem precīzākus un efektīvākus funkcionālos pakalpojumus.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

9 Bluetooth piekļuve

+

Izmantojot šo atļauju, lietotne izmanto Bluetooth atļaujas:

+

Mērķis un izmantošanas joma: Bluetooth piederumu meklēšanai un konfigurēšanai (piemēram, Bluetooth austiņas, Bluetooth pulksteņi u. c.), lai lietotājam būtu viegli tos pārvaldīt

+

Paziņošanas veids: pirmo reizi palaižot lietotni, tiek parādīts atļaujas paziņojums un lietotājam jāapstiprina piekrišana. Apraksts Lietotāja līgumā un Privātuma politikā.

+ +

10 Wi‑Fi BSSID atļauja

+

Ja lietotnei nepieciešams atšķirt un identificēt lietotāju, lai sniegtu funkcionālos pakalpojumus un veiktu datu statistiku, tā nolasīs ierīces “Wi‑Fi BSSID”:

+

Mērķis un izmantošanas joma: 1) trešo pušu platformas, piemēram, Youmeng SDK, Bugly SDK, Autonavi SDK

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

11 Lietotņu instalēšanas atļauja

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Programmatūra izmantos lietotņu instalēšanas atļauju galvenokārt, lai lietotāji varētu instalēt jaunu versiju un izmēģināt jaunas funkcijas, kad ir pieejama jauna versija.

+

Paziņošanas veids: apraksts Lietotāja līgumā un Privātuma politikā.

+ +

12 Kameras atļauja

+

android.permission.CAMERA

+

Voitrans izmanto kameras atļauju QR kodu skenēšanai un Bluetooth ierīču, piemēram, Bluetooth austiņu un pulksteņu, sasaistīšanai.

+

Paziņošanas veids: pirmo reizi palaižot lietotni, tiek parādīts atļaujas paziņojums un lietotājam jāapstiprina piekrišana. Apraksts Lietotāja līgumā un Privātuma politikā.

+ +

Īpaša piezīme:

+

1 Lietotne integrē trešo pušu SDK. Pēc lietotāja piekrišanas lietotne fonā/priekšplānā var iegūt ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI un citu personas informāciju;

+

Piezīmes: vairāk skatiet zemāk SDK saistīto saturu un atļaujas [VIII. Trešo pušu SDK saraksts].

+ +

8. Trešo pušu SDK izmantošana

+

1 Lai nodrošinātu mūsu klienta stabilu darbību un funkciju realizāciju un lai jūs varētu izmantot vairāk pakalpojumu un funkciju, mūsu lietotnē var būt integrēti trešo pušu software development kit (SDK) vai līdzīgi komponenti. Šīs trešās puses vāks un apstrādās attiecīgo informāciju saskaņā ar savām privātuma politikām, lai normāli nodrošinātu funkcijas un reklāmas pakalpojumus. Par trešo pušu informācijas vākšanas un apstrādes noteikumiem varat uzzināt nākamajā sadaļā. Mēs veicam stingras drošības pārbaudes partneru SDK, lai aizsargātu jūsu personas informācijas saprātīgu izmantošanu un drošību. Lūdzu, ņemiet vērā, ka trešo pušu SDK var mainīt datu apstrādes veidus versiju atjauninājumu dēļ. Lūdzu, skatiet trešo pušu SDK publicētās privātuma politikas. Zemāk ir detalizēta informācija vai varat skatīt trešo pušu SDK sarakstu.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Iegūtā informācija: ierīces numurs, IP adrese, ierīces programmatūras informācija, ierīces identifikācijas kods (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM kartes IMSI informācija, IP, MAC adrese), ierīces identifikators, reģions, ar ierīci saistītās lietotnes informācija un cita ar pakalpojumu saistīta žurnālu informācija

+

Izmantošanas mērķis: WeChat pieteikšanās un kopīgošana

+

Izstrādātājs: Shenzhen Tencent Computer Systems Company Limited

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Iegūtā informācija: lietotnes nosaukums, lietotnes versija, ierīces zīmols un modelis, operētājsistēma, operatora informācija, ekrāna izšķirtspēja, sensoru informācija (vektors, paātrinājums, spiediens, virziens, ģeomagnētiskais, žiroskops, temperatūra, gaismas sensors, NMEA signāls), ierīces signāla stipruma informācija

+

Izmantošanas mērķis: navigācija, izmantojot Amap

+

Izstrādātājs: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Iegūtā informācija: lietotnes nosaukums, lietotnes versija, ierīces zīmols un modelis, operētājsistēma, tīkla informācija, ierīces signāla stiprums u. c.

+

Izmantošanas mērķis: kartes attēlošana un mijiedarbība

+

Izstrādātājs: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Iegūtā informācija: atrašanās vietas informācija (GPS, Wi‑Fi, bāzes stacija), ierīces informācija, tīkla informācija u. c.

+

Izmantošanas mērķis: atrašanās vietas pakalpojumu nodrošināšana

+

Izstrādātājs: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Iegūtā informācija: lietotnes nosaukums, lietotnes versija, ierīces informācija, tīkla informācija u. c.

+

Izmantošanas mērķis: kartes rīki un renderēšanas optimizācija

+

Izstrādātājs: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Iegūtā informācija: ierīces identifikatori, ierīces pamatinformācija, instalētās programmatūras saraksts un tīkla informācija (sīkāku informāciju skatiet oficiālajā privātuma politikā)

+

Izmantošanas mērķis: Alipay konta pieteikšanās un maksājuma izsaukšana

+

Izstrādātājs: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Iegūtā informācija: SDK/API versija, platforma, laika zīmogs, lietotnes identifikators, lietotnes versija, ierīces ražotājs, OS versija, lokāle, laika josla, tīkla statuss (Wi‑Fi u. c.), tīkla žurnāli, avāriju un lietošanas dati, IP adrese u. c. (sīkāku informāciju skatiet oficiālajā privātuma politikā)

+

Izmantošanas mērķis: lietotnes kvalitātes uzraudzība un datu ziņošanas pakalpojums

+

Izstrādātājs: Shenzhen Tencent Computer Systems Company Limited

+

Vākšanas metode: SDK pašvākšana

+

Privātuma politikas saite: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Nepilngadīgo aizsardzība

+

Mūsu produktu un pakalpojumu lietotāji var ietvert nepilngadīgos, kas jaunāki par 18 gadiem. Nepilngadīgajiem lietotājiem pirms mūsu produktu lietošanas jālūdz padoms vecākiem vai aizbildņiem par šo Privātuma politiku un jāizmanto mūsu pakalpojumi vai jāsniedz mums informācija tikai pēc vecāku vai aizbildņu piekrišanas un viņu vadībā. Nepilngadīgo aizbildņi ar jautājumiem var sazināties ar mums, izmantojot kontaktinformāciju šajā Privātuma politikā.

+

Ja jūs nepiekrītat iepriekš minētās informācijas vākšanai no augstāk minētajiem trešo pušu pakalpojumu sniedzējiem, lūdzu, nekavējoties pārtrauciet Programmatūras lietošanu. Programmatūras lietošanas laikā šīs trešās puses vāks un apstrādās attiecīgo informāciju saskaņā ar savām privātuma politikām, lai nodrošinātu noteiktas funkcijas, reklāmu un citus pakalpojumus. Ja informācija noplūst iepriekš minētās informācijas vākšanas dēļ no attiecīgā trešās puses pakalpojumu sniedzēja, attiecīgais pakalpojumu sniedzējs uzņemas atbilstošu juridisko atbildību.

+ +

10. Privātuma politikas spēkā esamība un atjaunināšana

+

1. Šī Privātuma politika ir spēkā no publicēšanas datuma.

+

2. Tā kā mūsu uzņēmējdarbība attīstās un mainās, mūsu Privātuma politika var mainīties. Mēs paturam tiesības mainīt privātuma politiku jebkurā laikā, tāpēc lūdzu, regulāri to pārskatiet. Ja veiksim izmaiņas, mēs publicēsim atjauninājumus mūsu tīmekļa vietnē, lietotnēs un citviet, kur uzskatīsim par nepieciešamu, lai jūs informētu. Ja privātuma politika tiek atjaunināta, tā stājas spēkā no atjaunināšanas datuma. Turpinot izmantot mūsu produktus vai pakalpojumus, jūs piekrītat atjauninātajai Privātuma politikai.

+ +

11. Kā sazināties ar mums

+

Saitong Industries Inc dibināts 2024. gada 22. novembrī, reģistrētā adrese: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ja vēlaties uzzināt vairāk par mūsu uzņēmumu un platformu, varat sazināties ar mums, izmantojot šajā politikā norādīto kontaktinformāciju (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/lv/user_agreement.html b/doc/lv/user_agreement.html new file mode 100644 index 000000000..adb0c9bd2 --- /dev/null +++ b/doc/lv/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans lietojumprogrammas lietotāja protokols + + + +
+
Latviešu
+ +

Voitrans lietojumprogrammas lietotāja protokols

+ +

Šie Lietošanas noteikumi un nosacījumi izskaidro, kā piekļūt Voitrans lietojumprogrammai un tiešsaistes pakalpojumiem (turpmāk – "Pakalpojumi") un kā tos izmantot. Saitong Industries Inc. (turpmāk – "Saitong") ar šo atgādina lietotājiem uzmanīgi izlasīt un pilnībā izprast šo Lietotāja līgumu (turpmāk – "Līgums"). Lietotājiem jāuzmanīgi izlasa un pilnībā jāizprot šī Līguma noteikumi. Lūdzu, uzmanīgi izlasiet un izvēlieties, vai pieņemt vai nepieņemt šo Līgumu. Jūsu Voitrans lietojumprogrammas (turpmāk – "Lietojumprogramma" vai "Programmatūra") izmantošana tiks uzskatīta par šī Līguma pieņemšanu, un jūs piekrītat būt saistīts ar šī Līguma noteikumiem. Ja nepiekrītat šim Līgumam, neizmantojiet Lietojumprogrammu.

+

Saitong patur tiesības grozīt šo Līgumu, un atjauninātie Līguma noteikumi tiks publicēti šajā Lietojumprogrammā, stājoties spēkā no publicēšanas datuma.

+ +

1. Vispārīgie noteikumi

+

1.1 Šī Lietojumprogramma ir Saitong nodrošināta programmatūra austiņu produktu, ko izlaidusi Saitong un tās partneruzņēmumi, savienošanai. Programmatūras un saistīto pakalpojumu īpašumtiesības un darbības tiesības pieder Saitong.

+

1.2 Šis Līgums ir līgums starp jums (turpmāk – "Lietotājs") un uzņēmumu un tā partneriem un darbības partneriem (turpmāk – "Partneri") par lietotāja Lietojumprogrammas un saistīto pakalpojumu izmantošanu.

+

1.3 Programmatūra un pakalpojumi ietver:

+

1.3.1 Nodrošinātā programmatūra piedāvā Voitrans lietotājiem Voitrans savienošanu un saistīšanu, funkciju iestatījumu pārvaldību un citus programmatūras pakalpojumus atbilstoši Lietojumprogrammas faktiski nodrošinātajiem programmatūras pakalpojumiem.

+

1.3.2 Programmatūras atjauninājumus, jauninājumus un citus pakalpojumus.

+ +

2. Programmatūras licences apjoms

+

2.1 Mēs piešķiram Lietotājam personisku, nenododamu, nesublicencējamu un neekskluzīvu Programmatūras licenci.

+

2.2 Lietotāji var instalēt, izmantot, attēlot un palaist programmatūru vienā mobilajā gala ierīcē nekomerciāliem mērķiem. Tomēr lietotājs nedrīkst instalēt, izmantot vai palaist programmatūru komerciāliem darbības mērķiem, kopēt, mainīt, modificēt, savienot vai palaist programmatūru vai datus, kas ievadīti jebkuras gala ierīces atmiņā programmatūras darbības laikā, vai mijiedarbības datus starp klientu un serveri programmatūras darbības laikā, kā arī veidot jebkādus atvasinātus darbus. Tas ietver, bet neaprobežojas ar, spraudņu, papildinājumu vai neautorizētu trešo pušu rīku/pakalpojumu izmantošanu piekļuvei Programmatūrai un saistītajām sistēmām. Komerciālai pārdošanai, pavairošanai un izplatīšanai, piemēram, programmatūras iepriekšējai instalēšanai un komplektēšanai, jāiegūst rakstiska atļauja un piekrišana.

+

2.3 Lietotājs nedrīkst instalēt Programmatūru citās gala ierīcēs bez veidotāja skaidras atļaujas, tostarp, bet ne tikai, televizoros, digitālajās televizijas pierīcēs, spēļu konsolēs un citās ierīcēs.

+

2.4 Izņemot šajā Līgumā skaidri atļautās tiesības, Lietotājam netiek piešķirtas citas tiesības, un Lietotājam jāiegūst rakstiska piekrišana citu tiesību izmantošanai.

+ +

3. Programmatūras jaunināšana

+

3.1 Lietotājam jāizvēlas programmatūras versija, kas piemērota instalētās gala ierīces konfigurācijai. Pretējā gadījumā par programmatūras problēmām, ierīces problēmām vai bojājumiem, ko izraisījusi jebkura ierīces tipam nepiemērota programmatūras versija, atbildīgs ir tikai lietotājs.

+

3.2 Lai uzlabotu lietotāja pieredzi un pilnveidotu pakalpojumu saturu, Saitong ir tiesības laiku pa laikam nodrošināt aizstājošas, modificētas un jauninātas programmatūras versijas. Funkcija "Jaunināšanas paziņojums" lietotājiem ir iespējota pēc noklusējuma. Atkarībā no dažādām lietotāju izmantotajām programmatūras versijām, Saitong nodrošina lietotājiem iespēju aktivizēt šo funkciju. Pēc jaunas programmatūras versijas izlaišanas Saitong negarantē vecās programmatūras versijas turpmāku pieejamību.

+ +

4. Lietošanas specifikācija

+

4.1 Lietotāji var izmantot Programmatūru un Pakalpojumus saskaņā ar šo Līgumu, ievērojot likumus un šo Līgumu, un nedrīkst veikt šādas darbības:

+

4.1.1 Dzēst visu autortiesību informāciju no Programmatūras un citām kopijām un mainīt, dzēst vai apiet Programmatūras iestatītos tehniskos pasākumus intelektuālā īpašuma tiesību aizsardzībai.

+

4.1.2 Veikt Programmatūras reverso inženieriju, piemēram, izjaukšanu, dekompilēšanu vai citus mēģinājumus iegūt Programmatūras pirmkodu.

+

4.1.3 Modificējot vai viltojot instrukcijas un datus programmatūras darbībā, pievienot, dzēst vai mainīt programmatūras funkciju vai darbības efektu, vai programmatūru vai metodes, kas paredzētas iepriekš minētajiem mērķiem, darbināt vai izplatīt sabiedrībai, neatkarīgi no tā, vai šīs darbības ir komerciālos nolūkos.

+

4.1.4 Izmantot programmatūru jebkādai rīcībai, kas apdraud tīkla drošību, tostarp, bet ne tikai: neautorizētu datu izmantošanai vai piekļuvei neautorizētiem serveriem/kontiem; piekļuvei publiskiem tīkliem vai citām operētājsistēmām bez atļaujas un glabātas informācijas dzēšanai, modificēšanai vai pievienošanai; neautorizētiem mēģinājumiem zondēt, skenēt vai pārbaudīt programmatūras sistēmas vai tīkla vājās vietas vai citām darbībām, kas apdraud tīkla drošību; mēģinājumiem traucēt vai iznīcināt programmatūras sistēmas vai vietnes normālu darbību, apzināti izplatīt ļaunprogrammatūru vai vīrusus un citas darbības, kas traucē normālus tīkla informācijas pakalpojumus; TCP/IP pakešu nosaukumu vai daļēju nosaukumu viltošanai.

+

4.1.6 Bez Uzņēmuma rakstiskas piekrišanas lietotājs patvaļīgi veic šādas darbības ar programmatūru un tajā esošo informāciju, tostarp, bet ne tikai: izmantošana, iznomāšana, aizdošana, kopēšana, modificēšana, saistīšana, pārdrukāšana, kompilēšana, publicēšana, izdošana, spoguļvietņu izveide, atvasinātu produktu, darbu, pakalpojumu, spraudņu, papildinājumu, savietojamības, savstarpējas savienošanas utt. izstrāde ar Programmatūras palīdzību.

+

4.1.7 Izmantot Programmatūru satura publicēšanai, pārsūtīšanai, izplatīšanai un glabāšanai, kas pārkāpj jūsu vietējos likumus.

+

4.1.8 Izmantot programmatūru satura publicēšanai, pārsūtīšanai, izplatīšanai un glabāšanai, kas pārkāpj citu intelektuālā īpašuma tiesības, komercnoslēpumus un citas likumīgās tiesības.

+

4.1.9 Izmantot šo programmatūru reklāmas informācijas un nevēlamu ziņojumu masveida publicēšanai, pārsūtīšanai un izplatīšanai.

+

4.1.10 Izmantot Programmatūru un citus Pakalpojumus jebkādā nelikumīgā veidā, jebkādam nelikumīgam mērķim vai jebkādā veidā, kas nav savietojams ar šī Līguma licencēto lietošanu.

+

4.2 Informācijas publicēšanas specifikācija

+

4.2.1 Ja izmantojat programmatūru informācijas satura publicēšanai (ja tāds ir), jums jāgarantē, ka jums pieder intelektuālā īpašuma tiesības uz jūsu augšupielādēto informācijas saturu vai esat ieguvuši likumīgu atļauju, un ka neviena jūsu rīcība, izmantojot programmatūru un pakalpojumus, nepārkāpj nevienas trešās puses likumīgās tiesības un intereses.

+

4.2.2 Izmantojot Programmatūru, lietotājs nedrīkst iesaistīties šādās darbībās, izmantojot Programmatūru, tostarp, bet ne tikai:

+

4.2.2.1 Veidot, kopēt, publicēt, izplatīt un glabāt saturu, kas pārkāpj vietējos nacionālos likumus un noteikumus.

+

4.2.2.2 Publicēt, pārsūtīt, izplatīt un glabāt saturu, kas pārkāpj citu likumīgās tiesības, piemēram, reputācijas, portreta, intelektuālā īpašuma un komercnoslēpumu tiesības.

+

4.2.2.3 Izdomāt faktus, slēpt patiesību, lai maldinātu vai apkrāptu citus.

+

4.2.2.4 Publicēt, pārsūtīt un izplatīt reklāmas informāciju un nevēlamus ziņojumus.

+

4.2.2.5 Iesaistīties citās darbībās, kas pārkāpj vietējos likumus un noteikumus.

+

4.2.3 Bez Uzņēmuma atļaujas jūs nedrīkstat veikt nekādas komerciālas darbības, piemēram, reklāmu un preču pārdošanu, Programmatūrā.

+

4.3 Lietotājs saprot un piekrīt, ka:

+

4.3.1 Saitong noteiks, vai lietotājs ir aizdomīgs par iepriekš minēto lietošanas specifikāciju pārkāpšanu, un atbilstoši noteikšanas rezultātiem apturēs vai izbeigs jūsu lietošanas licenci vai veiks citus ierobežojošus pasākumus, ko var veikt saskaņā ar šo līgumu.

+

4.3.2 Lietotāja, izmantojot licencēto programmatūru, publicētais saturs, kas ir aizdomīgs par nelikumību vai citu likumīgo tiesību pārkāpšanu, vai šī Līguma pārkāpšanu, tiks tieši dzēsts.

+

4.3.3 Ja lietotāja iepriekš minēto lietošanas noteikumu pārkāpums rada kaitējumu trešajām pusēm, jums pašam jāuzņemas juridiskā atbildība savā vārdā un jānodrošina, ka uzņēmums netiek pakļauts zaudējumiem vai palielinātām izmaksām.

+

4.3.4 Ja lietotājs pārkāpj attiecīgos tiesību aktus vai līgumus, izraisot Saitong zaudējumus vai pakļaujot to trešo pušu prasījumiem vai administratīvās iestādes sodiem, lietotājs atlīdzina Saitong radušos zaudējumus un/vai izdevumus, tostarp saprātīgas advokāta honorārus, izmeklēšanas un pierādījumu vākšanas izmaksas.

+ +

5. Trešo pušu pakalpojumu apraksts

+

5.1 Lietotājs saprot un piekrīt, ka programmatūras sistēma var ietvert Uzņēmuma saistīto uzņēmumu vai trešo pušu nodrošinātus pakalpojumus un ka Uzņēmums sistēmā nodrošina tikai attiecīgos funkcionālos moduļus lietotāju ērtībai un nodrošina piekļuvi trešo pušu pakalpojumiem.

+

5.2 Neatkarīgi no tā, vai trešo pušu pakalpojumi ir iepriekš iestatīti programmatūras sistēmas pakalpojumos vai tos lietotāji paši atvēruši vai pasūtījuši, lietotāji saprot un piekrīt, ka Saitong nesniedz nekādas tiešas vai netiešas garantijas par trešo pušu pakalpojumu sniedzēju vai lietotāju likumību un efektivitāti, kā arī par trešo pušu pakalpojumu likumību, precizitāti, efektivitāti un drošību.

+

5.3 Uzņēmums neuzrauga, nekontrolē un nesniedz nekādu garantiju vai galvojumu par trešo pušu pakalpojumiem un neuzņemas par tiem nekādu atbildību.

+

5.4 Jebkurš strīds vai domstarpība starp lietotāju un trešās puses pakalpojumu sniedzēju tiek risināta starp Lietotāju un trešo pusi saskaņā ar trešās puses pakalpojumu sniedzēja biznesa procesiem un biznesa normām, un Uzņēmums neuzņemas nekādu atbildību.

+ +

6. Privātuma politika un personas informācijas aizsardzība

+

6.1 Saitong apņemas aizsargāt lietotāju privātumu saskaņā ar privātuma politiku, lūdzu skatiet: Voitrans Privātuma politika.

+ +

7. Atbildība par pārkāpumu

+

7.1 Saitong ir tiesības noteikt, vai lietotāja rīcība atbilst šī Līguma noteikumiem. Ja tiek uzskatīts, ka Lietotājs ir pārkāpis attiecīgos likumus un noteikumus vai šī Līguma noteikumus un saistītos noteikumus, atkarībā no lietotāja pārkāpuma smaguma, Saitong ir tiesības dzēst nelikumīgo informāciju, ierobežot, apturēt, izbeigt lietotāja Programmatūras pakalpojuma izmantošanu, pieprasīt lietotāja juridisko atbildību un veikt citus pasākumus, ko Saitong uzskata par piemērotiem. Ja mums rodas jebkādi zaudējumi (tostarp, bet ne tikai, jebkādu trešo pušu prasījumu saņemšana vai jebkuras administratīvās iestādes sodi), Lietotājs nes pilnu atbildību.

+ +

8. Pakalpojumu riski un atbildības atruna

+

8.1 Mēs vēlamies nodrošināt pakalpojumu atbalstu ar pašreizējo tehnoloģiju. Saitong negarantē, ka Programmatūras pakalpojums darbosies bez pārtraukumiem vai kļūdām, ka tiks novērstas visas Programmatūras pakalpojuma kļūdas vai ka Programmatūras pakalpojums atbildīs visām lietotāju prasībām. Par no tā izrietošajām sekām Saitong neuzņemas nekādu atbildību.

+

8.2 Par visiem lietotāja ciestajiem zaudējumiem, ko izraisījušas trešās puses, piemēram, sakaru līnijas kļūme, tehniskas problēmas, tīkls, datora gala iekārtas kļūme, sistēmas nestabilitāte un citi nepārvaramas varas iemesli, atbildība netiek uzņemta.

+

8.3 Saitong negarantē caur programmatūru iegūtā informācijas satura (tostarp, bet ne tikai, trešo pušu pakalpojumu satura) likumību, autentiskumu, precizitāti un efektivitāti, un Saitong neuzņemas nekādu atbildību par jebkuras lietotāju rīcības, kas balstīta uz vaicājumiem un apskatīšanu, rezultātiem.

+

8.4 Programmatūra, tāpat kā lielākā daļa interneta programmatūras, ir pakļauta faktoriem, tostarp, bet ne tikai, lietotāja iemesliem, tīkla pakalpojumu kvalitātei, sociālajai videi un citiem faktoriem, un var tikt pakļauta dažādām drošības problēmām, piemēram, citi izmanto lietotāja informāciju, izraisot uzmākšanos reālajā dzīvē; cita lietotāju lejupielādēta un instalēta programmatūra vai citas lietotāju apmeklētās vietnes satur vīrusus, piemēram, "Trojas zirgus", kas apdraud lietotāju gala iekārtu informācijas un datu drošību un tādējādi ietekmē normālu programmatūras lietošanu. Lietotājiem jāstiprina informācijas drošības un lietotāju datu aizsardzības apziņa un jāpievērš uzmanība paroles aizsardzības stiprināšanai, lai izvairītos no zaudējumiem un uzmākšanās.

+

8.5 Kad lietotāji izmanto Programmatūru vai pieprasa, lai Saitong nodrošina konkrētus pakalpojumus, Programmatūra var izsaukt trešo pušu sistēmas vai trešo pušu programmatūru, lai atbalstītu lietotāju izmantošanu vai piekļuvi, un izmantošanas vai piekļuves rezultātus nodrošina trešā puse. Papildus šī Līguma attiecīgo noteikumu ievērošanai lietotājiem jāievēro arī trešās puses līgumi un attiecīgie noteikumi. Lietotājiem jāsaprot un jāpiekrīt, ka, izmantojot trešo pušu pakalpojumus, trešās puses var lasīt lietotāju datus, un Saitong negarantē caur trešo pušu sistēmām vai trešo pušu programmatūras atbalstu sasniegto rezultātu drošību, precizitāti, efektivitāti un citus nenoteiktus riskus; lietotājiem jāveic piesardzīgs novērtējums, un Saitong neuzņemas nekādu atbildību par jebkādiem strīdiem un kaitējumu, kas no tā izriet.

+

8.6 Lai garantētu uzņēmuma biznesa attīstības un pielāgošanas autonomiju, uzņēmums var jebkurā laikā modificēt vai pārtraukt pakalpojumu pēc lietotāja saprātīgas informēšanas.

+

8.7 Izņemot gadījumus, kad to skaidri paredz likumi un noteikumi, Saitong pieliks visas pūles, lai nodrošinātu, ka programmatūra un iesaistītā tehnoloģija un informācija ir droša, efektīva, precīza un uzticama, bet, ņemot vērā esošo tehnoloģiju, lietotājs saprot, ka Saitong to nevar garantēt.

+

8.8 Kompensāciju par miesas aizskārumu vai nejaušu un netiešu ekonomisko kaitējumu, kas radies saistībā ar jebkuru no šādiem apstākļiem, tostarp, bet ne tikai, peļņas zaudēšanu, datu zaudēšanu, atlīdzību par biznesa pārtraukumu vai citiem komerciāliem zaudējumiem, sedz Lietotājs:

+

1) Licencētās programmatūras izmantošana vai nespēja to izmantot.

+

2) Neautorizēta programmatūras izmantošana vai lietotāja datu izmainīšana no trešo pušu puses.

+

3) Izdevumi un zaudējumi, kas radušies no lietotāja darbībām ar programmatūru.

+

4) Lietotāja kļūdaina izpratne par programmatūru.

+

5) Jebkuri citi zaudējumi, kas saistīti ar programmatūru un nav attiecināmi uz Saitong iemesliem.

+

8.9 Lietotājs piekrīt, ka Uzņēmumam ir tiesības apturēt, pārtraukt vai izbeigt visu vai daļu no Pakalpojuma lietotājam, pamatojoties uz tiesu, regulatīvo un uzraudzības iestāžu prasībām vai saviem biznesa iemesliem. Saitong par to neuzņemas nekādu atbildību.

+

8.10 Lietotājs saprot un piekrīt, ka Uzņēmums pielietots komerciāli saprātīgus centienus, lai nodrošinātu datu glabāšanas drošību Programmatūrā un Pakalpojumos, bet uzņēmums nevar sniegt pilnīgu garantiju, un Lietotājs saprot, ka Uzņēmums nav atbildīgs par datu dzēšanu vai glabāšanas vai dublēšanas kļūmi Pakalpojumā.

+

8.11 Pilnā apmērā, ko pieļauj likums, izstrādātājs vai piegādātājs nav atbildīgs par jebkādiem tiešiem, netiešiem, nejaušiem, īpašiem vai izrietošiem zaudējumiem, kas radušies no Lietojumprogrammas izmantošanas. Ja lietotājam ir papildu vajadzības, lūdzu vērsieties atbilstošā slimnīcā padziļinātai pārbaudei.

+ +

9. Intelektuālā īpašuma paziņojums

+

9.1 Saitong ir šīs programmatūras intelektuālā īpašuma tiesību turētājs. Visas programmatūras autortiesības, preču zīmes, patenti, komercnoslēpumi un citas intelektuālā īpašuma tiesības, kā arī viss ar programmatūru saistītais informācijas saturs (tostarp, bet ne tikai, teksts, attēli, audio, video, grafika, saskarnes dizains, izkārtojuma ietvars, attiecīgie dati vai elektroniskie dokumenti utt.) ir aizsargāti ar vietējiem likumiem un noteikumiem un atbilstošiem starptautiskiem līgumiem.

+

9.2 Bez Uzņēmuma rakstiskas piekrišanas Lietotājs nedrīkst ieviest, izmantot vai nodot iepriekš minētās intelektuālā īpašuma tiesības jebkādam komerciālam vai nekomerciālam mērķim vai atļaut jebkurai trešajai pusei, un Uzņēmums patur tiesības pieprasīt juridisko atbildību par iepriekš minētajām darbībām.

+ +

10. Protokola izmaiņas

+

10.1 Saitong ir tiesības pēc nepieciešamības grozīt šī Līguma noteikumus. Kad Līguma noteikumi tiek mainīti, pārskatītie Līguma noteikumi tiks publicēti attiecīgajā lapā. Ja nepiekrītat izmainītajam saturam, lietotājam pašam jāatceļ šis pakalpojums. Ja Lietotājs turpina izmantot Pakalpojumus, tiek uzskatīts, ka viņš pieņem Līguma noteikumu izmaiņas.

+

10.2 Saitong patur tiesības pēc nepieciešamības mainīt vai grozīt maksas pakalpojumus, maksas standartus, maksāšanas veidus, pakalpojumu maksas un pakalpojumu noteikumus. Sniedzot pakalpojumus, mēs varam iekasēt noteiktas maksas no dažu pakalpojumu lietotājiem tagad vai nākotnē. Ja lietotāji atsakās maksāt šādas maksas, viņi nevar turpināt izmantot attiecīgos pakalpojumus pēc maksu sākuma.

+
+ + diff --git a/doc/ms/privacy_policy.html b/doc/ms/privacy_policy.html new file mode 100644 index 000000000..43f637186 --- /dev/null +++ b/doc/ms/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Dasar Privasi Voitrans + + + + +
+

Dasar Privasi Voitrans

+

Terakhir Dikemas Kini: 27 Mei 2025

+

Tarikh Berkuat Kuasa: 27 Mei 2025

+ +

Selamat datang menggunakan Perisian dan Perkhidmatan Voitrans

+

1. Voitrans disediakan oleh Saitong Industries Inc. (selepas ini dirujuk sebagai “Syarikat”). Aplikasi ini boleh membantu pengguna mengurus peranti Bluetooth dan produk lain. Kami memahami kepentingan maklumat peribadi kepada pengguna kami (selepas ini dirujuk sebagai “Anda”) dan bahawa perlindungan berkesan terhadap maklumat peribadi Anda adalah asas kepada pembangunan perniagaan kami yang sihat dan mampan. Terima kasih kerana menggunakan dan mempercayai produk atau perkhidmatan Voitrans! Kami sedar sepenuhnya bahawa kepercayaan ini bukan mudah diperoleh. Kami berpegang pada prinsip keterbukaan dan ketelusan untuk menerangkan peraturan kami dalam memproses maklumat peribadi Anda. Kami memproses maklumat peribadi Anda dengan cara yang sah dan tujuan yang jelas serta munasabah. Nota khas: Sila pastikan Anda membaca dan memahami Dasar Privasi ini dengan teliti sebelum menggunakan produk atau perkhidmatan kami supaya Anda boleh membuat pilihan yang sesuai.

+

2. Dasar Privasi ini menerangkan kepada Anda bagaimana kami mengumpul, menggunakan, menyimpan dan berkongsi maklumat peribadi Anda apabila Anda menggunakan Voitrans. Maklumat peribadi merujuk kepada semua jenis maklumat yang direkodkan melalui cara elektronik atau cara lain yang boleh mengenal pasti individu tertentu atau mencerminkan aktiviti individu tertentu sama ada secara bersendirian atau digabungkan dengan maklumat lain. Voitrans menghormati dan melindungi privasi peribadi semua pengguna perkhidmatan. Melainkan diperuntukkan sebaliknya dalam Dasar Privasi ini, Voitrans tidak akan mendedahkan maklumat ini kepada umum atau memberikannya kepada pihak ketiga tanpa kebenaran Anda terlebih dahulu.

+

3. Apabila Anda menggunakan produk atau perkhidmatan pihak ketiga melalui produk atau perkhidmatan App Marketplace, maklumat peribadi Anda tertakluk kepada dasar privasi pihak ketiga tersebut.

+

4. Dasar Privasi Voitrans ini akan dikemas kini dari semasa ke semasa. Dengan bersetuju kepada Perjanjian Penggunaan Perkhidmatan Voitrans dan mula menggunakan Voitrans, Anda dianggap telah bersetuju dengan keseluruhan Dasar Privasi ini. Jika Anda tidak bersetuju dengan Dasar Privasi ini, sila jangan gunakan Perisian dan Perkhidmatan Voitrans.

+

5. Untuk menganalisis dan mengukur keberkesanan perkhidmatan berkaitan, kami akan menggunakan dan mendedahkan maklumat peribadi Anda mengikut peruntukan Dasar Privasi ini.

+ +

Dasar Privasi ini akan membantu Anda memahami perkara berikut:

+
    +
  • 1 Maklumat yang kami kumpulkan
  • +
  • 2 Penyimpanan maklumat
  • +
  • 3 Keselamatan maklumat
  • +
  • 4 Bagaimana kami menggunakan maklumat yang dikumpulkan
  • +
  • 5 Perkongsian maklumat
  • +
  • 6 Bagaimana Anda mengurus maklumat peribadi Anda
  • +
  • 7 Penerangan kebenaran aplikasi
  • +
  • 8 Akses SDK pihak ketiga
  • +
  • 9 Perlindungan kanak-kanak bawah umur
  • +
  • 10 Keberkesanan dan kemas kini Dasar Privasi
  • +
  • 11 Cara menghubungi kami
  • +
+ +

1. Maklumat yang kami kumpulkan

+

1. Apabila Anda mula menggunakan Voitrans, kami akan mula mengumpul data tentang penggunaan Anda terhadap aplikasi

+

2. Voitrans boleh memperoleh maklumat peribadi tentang Anda daripada pihak ketiga atau rakan niaga melalui cara yang sah

+

3. Untuk memberikan produk dan perkhidmatan yang lebih baik kepada Anda, menyediakan keselamatan rangkaian semasa penggunaan, mengekalkan operasi produk yang normal serta melakukan pengoptimuman dan penambahbaikan, selepas Anda secara aktif mengklik bersetuju dengan dasar privasi ini, semasa penyediaan perkhidmatan, selain maklumat peribadi yang diperlukan untuk memastikan fungsi asas Aplikasi beroperasi dengan normal mengikut undang-undang dan peraturan, kami juga akan mengumpul maklumat peribadi lain daripada Anda:

+

3.1 Untuk mengenal pasti pengguna berisiko, menilai ketulenan pengguna dan mencegah penipuan secara menyeluruh, kami akan membaca maklumat peranti Anda setiap kali Anda membuka perisian, termasuk: (model peranti, alamat MAC peranti, pengecam unik peranti (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, dll.) MEID, nombor siri, SSID dan BSSID Wi‑Fi), alamat Bluetooth, versi sistem pengendalian, nama sistem pengendalian, maklumat akaun log masuk pengguna dan kata laluan;

+

3.2 Apabila Anda menggunakan produk dan perkhidmatan kami, kami mungkin mengumpul maklumat tertentu melalui log rangkaian atau program/perisian tertentu, termasuk: butiran penggunaan produk dan perkhidmatan seperti masa aplikasi dibuka, tempoh penggunaan, dan alamat halaman yang dilawati; maklumat peristiwa peranti seperti ranap, aktiviti sistem, dll. untuk mengoptimumkan peranti Anda dan menambah baik perkhidmatan kami;

+

3.3 Untuk mengenal pasti aplikasi yang menyebabkan peranti berada dalam risiko dan menyediakan perkhidmatan fungsi yang lebih selamat, kami perlu memperoleh senarai aplikasi/senarai aplikasi yang dipasang untuk memastikan operasi produk yang normal dan melindungi keselamatan peranti.

+

3.4 Untuk menganalisis penggunaan fungsi aplikasi oleh pengguna dan menentukan ketulenan pengguna, kami perlu menjalankan statistik data dan mengumpul maklumat peranti di atas, termasuk alamat MAC peranti dan pengecam unik peranti, apabila peranti Anda sedang digunakan.

+

3.5 Isyarat peranti: status rangkaian peranti yang Anda gunakan, maklumat titik akses Wi‑Fi, dan lain-lain.

+

3.6 Maklumat lokasi: kami boleh menggunakan GPS, Wi‑Fi atau kaedah teknikal lain untuk mengumpul dan memproses maklumat lokasi Anda bagi mengemas kini maklumat setempat, menyediakan perkhidmatan kandungan, dan lain-lain.

+

Untuk maklumat lanjut, sila klik “Senarai Pengumpulan Maklumat Peribadi”.

+ +

1. Bagi maklumat peribadi yang lebih sensitif dalam senarai di atas, seperti maklumat peranti pengguna (nombor IMEI, status panggilan dan nombor pengenalan), maklumat lokasi GPS, kandungan media foto dan hak akses fail, kami akan mendapatkan persetujuan Anda sebelum pengumpulan. Bagi sebahagian maklumat yang tidak sensitif, pengumpulan mungkin dilakukan secara lalai dan automatik. Anda boleh mengehadkan pengumpulan maklumat berkaitan atau penggunaan kebenaran tertentu melalui tetapan peranti mudah alih Anda. Apabila Anda mengehadkan akses kami kepada sesuatu kebenaran, kami mungkin tidak dapat meneruskan penyediaan perkhidmatan yang berkaitan dan tidak lagi memproses maklumat berkaitan Anda.

+

2. Kami tidak akan mengumpul nombor kad pengenalan, maklumat biometrik peribadi, nombor akaun bank, maklumat harta, maklumat kredit, maklumat kesihatan dan fisiologi serta maklumat peribadi sensitif lain.

+

3. Mengenai kebenaran sensitif: untuk menggunakan fungsi aplikasi dengan betul, produk perlu mendapatkan kebenaran berikut bagi menyediakan perkhidmatan fungsi yang berkaitan dengan operasi normal produk.

+ +

1 Mendapatkan kebenaran baca dan tulis storan

+

1 Cara mendapatkan: prompt pop-up; apabila kebenaran diminta, pengguna akan mengklik setuju dan aplikasi akan menggunakan kebenaran ini

+

2 Tujuan dan skop penggunaan: digunakan untuk mengimbas fail cache sumber dan imej kecil dalam sistem, memuatkan sumber muzik dan gambar produk, serta memaparkannya pada antara muka aplikasi untuk memudahkan pengguna melihat dan mengendalikan

+ +

2 Mendapatkan kebenaran senarai aplikasi yang dipasang

+

1 Cara mendapatkan: prompt pop-up; apabila kebenaran diminta, pengguna akan mengklik setuju dan aplikasi akan menggunakan kebenaran ini

+

2 Tujuan dan skop penggunaan: apabila aplikasi perlu menggunakan perkhidmatan promosi iklan, platform iklan pihak ketiga (Youmon +SDK) perlu mendapatkan “kebenaran senarai aplikasi yang dipasang” pada peranti untuk mengelakkan menolak aplikasi yang telah dimiliki pengguna dan meningkatkan pengalaman pengguna.

+ +

3 Kebenaran untuk mendapatkan maklumat status peranti

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Cara mendapatkan: prompt pop-up; apabila kebenaran diminta, pengguna akan mengklik setuju dan aplikasi akan menggunakan kebenaran ini

+

2 Tujuan dan skop penggunaan: apabila menggunakan aplikasi kami, untuk menganalisis penggunaan fungsi aplikasi oleh pengguna dan menilai ketulenan pengguna, kami akan menyegerakkan kebenaran ini kepada SDK pihak ketiga, termasuk Autonavi SDK, Youmon +SDK, dan lain-lain.

+ +

4 Akses kepada maklumat lokasi

+

1 Cara mendapatkan: prompt pop-up; selepas kebenaran diberikan, pengguna hanya menggunakan kebenaran ini apabila secara aktif mengklik setuju pada aplikasi

+

2 Tujuan dan skop penggunaan: apabila aplikasi perlu menggunakan GPS, Wi‑Fi atau fungsi lain, produk perlu mengumpul lokasi dan maklumat Anda untuk mencari peranti Bluetooth di lokasi berdekatan.

+

Nota: untuk kebenaran aplikasi lain, sila rujuk dokumen “Dasar Privasi” Bahagian 7 “Penerangan kebenaran aplikasi”.

+ +

2. Penyimpanan maklumat

+

1. Di mana maklumat disimpan

+

Maklumat peribadi yang kami kumpul dan hasilkan di Republik Rakyat China akan disimpan pada pelayan kami dan/atau pelayan syarikat berkaitan kami.

+

2. Penyimpanan dan pemprosesan maklumat

+

Kami menyimpan maklumat peribadi Anda hanya untuk tempoh yang diperlukan bagi mencapai tujuan atau selama yang dikehendaki oleh undang-undang dan peraturan. Selepas Anda berhenti menggunakan produk ini, kami akan segera menghentikan pengumpulan dan pemprosesan maklumat peribadi Anda serta data aplikasi. Apabila tempoh tersebut melebihi had, kami akan memadam atau menganonimkan maklumat peribadi yang Anda berikan kepada kami.

+

Selain fungsi yang diperlukan, Voitrans perlu memohon kebenaran sistem yang berkaitan. Bahagian pelayan awan tidak menyimpan maklumat peribadi pengguna, dan SDK pihak ketiga yang diakses akan dianonimkan dan dinyahpengenal oleh penyedia perkhidmatan (Amu Statistics SDK, Autonavi SDK), jadi pengguna tidak dapat dijejaki. Maklumat yang disimpan pada telefon pengguna akan dipadam secara automatik apabila pengguna menyahpasang Voitrans atau mengosongkan cache.

+ +

3. Keselamatan maklumat

+

1. Voitrans menyimpan dan melindungi maklumat peribadi Anda menggunakan langkah dan teknologi keselamatan standard industri, seperti pengesahan, penyulitan data, akses pusat data yang terhad dan langkah keselamatan lain untuk memastikan maklumat Anda selamat daripada pendedahan, perubahan dan pemusnahan. Walau bagaimanapun, sila ambil perhatian bahawa tiada langkah keselamatan yang boleh 100% selamat.

+

2. Apabila Anda menggunakan perkhidmatan yang disediakan oleh Voitrans, sila lindungi maklumat peribadi Anda. Jika Anda mendapati maklumat peribadi Anda telah terjejas, sila hubungi kami segera supaya kami boleh mengambil langkah yang sesuai.

+ +

4. Bagaimana kami menggunakan maklumat yang dikumpulkan

+

1. Apabila melaksanakan fungsi perniagaan aplikasi, kami mungkin menggunakan maklumat peribadi Anda untuk memastikan integriti dan keselamatan produk serta perkhidmatan yang kami berikan kepada Anda;

+

2. Kami akan memahami tabiat penggunaan Anda melalui maklumat yang dikumpulkan dan, dengan bantuan analisis data, menilai penerimaan perkhidmatan, tabiat penggunaan Anda, dan lain-lain, untuk menguji serta mencipta produk, fungsi dan perkhidmatan baharu, meningkatkan tahap perkhidmatan, serta membantu kami menambah baik perkhidmatan sedia ada dan membangunkan perkhidmatan baharu;

+

3. Kami mungkin menggunakan maklumat peribadi Anda untuk tinjauan pelanggan mengenai produk dan perkhidmatan, untuk menghantar notis mengenai produk dan perkhidmatan, dan untuk promosi komersial;

+

4. Kami mungkin menggunakan maklumat Anda untuk analisis dalaman dan penyelidikan berkaitan aplikasi;

+ +

5. Perkongsian maklumat

+

Pada masa ini, kami tidak akan secara aktif berkongsi atau memindahkan maklumat peribadi Anda kepada pihak ketiga di luar syarikat. Jika terdapat perkongsian atau pemindahan maklumat peribadi Anda, kami akan mendapatkan persetujuan jelas Anda atau memastikan pihak ketiga telah memperoleh persetujuan jelas Anda bagi tindakan tersebut.

+

Kami tidak akan mendedahkan maklumat peribadi yang kami kumpulkan kepada umum. Jika perlu didedahkan, kami akan memaklumkan Anda tentang tujuan pendedahan, jenis maklumat yang didedahkan serta maklumat sensitif yang mungkin terlibat, dan mendapatkan persetujuan jelas Anda.

+

Seiring perniagaan kami terus berkembang, kami mungkin terlibat dalam penggabungan, pengambilalihan, pemindahan aset dan transaksi lain. Kami akan memaklumkan Anda tentang keadaan berkaitan mengikut undang-undang dan peraturan serta tidak kurang daripada standard yang diperlukan oleh dokumen ini untuk terus melindungi maklumat peribadi Anda atau meminta pengawal baharu terus melindungi maklumat peribadi Anda.

+

Selain itu, mengikut undang-undang, peraturan dan standard kebangsaan yang berkaitan, kami boleh berkongsi, memindahkan dan mendedahkan maklumat peribadi tanpa kebenaran dan persetujuan terlebih dahulu daripada subjek maklumat peribadi dalam keadaan berikut:

+
    +
  • 1 Berkaitan secara langsung dengan keselamatan negara dan keselamatan pertahanan negara;
  • +
  • 2 Berkaitan secara langsung dengan keselamatan awam, kesihatan awam atau kepentingan awam utama;
  • +
  • 3 Berkaitan secara langsung dengan siasatan jenayah, pendakwaan, perbicaraan dan pelaksanaan penghakiman;
  • +
  • 4 Untuk melindungi nyawa, harta dan hak serta kepentingan sah utama subjek data peribadi atau individu lain, tetapi sukar untuk mendapatkan persetujuan;
  • +
  • 5 Maklumat peribadi yang didedahkan kepada umum oleh subjek maklumat peribadi;
  • +
  • 6 Mengumpul maklumat peribadi daripada maklumat yang didedahkan kepada umum secara sah, seperti laporan berita yang sah, pendedahan maklumat kerajaan dan saluran lain.
  • +
+ +

6. Bagaimana Anda mengurus maklumat peribadi Anda

+

Mengikut undang-undang, peraturan dan standard China yang berkaitan serta amalan biasa negara dan wilayah lain, kami menjamin Anda boleh melaksanakan hak berikut terhadap maklumat peribadi Anda:

+ +

1. Membetulkan maklumat peribadi Anda

+

Jika Anda mendapati terdapat kesilapan dalam maklumat peribadi Anda yang diproses oleh kami, Anda berhak membetulkan atau mengemas kini maklumat yang salah atau tidak lengkap. Jika Anda tidak dapat melakukannya sendiri di pusat akaun, Anda boleh menghubungi kami melalui e-mel saitong.voitrans@gmail.com

+ +

2. Memadam maklumat peribadi Anda

+

Dalam keadaan berikut, Anda boleh membuat permintaan kepada kami untuk memadam maklumat peribadi Anda:

+
    +
  • Jika kami memproses maklumat peribadi melanggar undang-undang dan peraturan;
  • +
  • Jika kami mengumpul dan menggunakan maklumat peribadi Anda tanpa persetujuan Anda;
  • +
  • Jika pemprosesan maklumat peribadi kami melanggar perjanjian kami dengan Anda;
  • +
  • Jika Anda tidak lagi menggunakan produk atau perkhidmatan kami;
  • +
  • Jika kami tidak lagi menyediakan produk atau perkhidmatan kepada Anda.
  • +
+

Hubungi kami di saitong.voitrans@gmail.com. Kami akan memproses permintaan Anda dan menghantar keputusan kepada Anda dalam 30 hari bekerja selepas permintaan diterima.

+ +

3. Mengubah skop persetujuan Anda

+

Anda boleh menghubungi kami melalui e-mel saitong.voitrans@gmail.com. Atas permintaan Anda, kami tidak akan lagi mengumpul, menggunakan atau mendedahkan maklumat peribadi Anda. Sila ambil perhatian bahawa penarikan persetujuan atau pemadaman maklumat peribadi Anda mungkin menjejaskan penggunaan sebahagian perkhidmatan kami.

+ +

4 Akses dan salin maklumat peribadi

+

Anda boleh, mengikut peruntukan undang-undang yang berkaitan, memberikan imei (nombor siri telefon) atau oaid atau Android ID serta maklumat akaun dan maklumat lain, kemudian memohon kepada kami untuk akses dan salinan maklumat peribadi Anda. Anda boleh menghubungi kami melalui e-mel 3514406195@qq.com

+ +

5. Menjawab permintaan Anda di atas

+

Untuk tujuan keselamatan, Anda mungkin perlu menyediakan permintaan bertulis atau membuktikan identiti Anda dengan cara lain. Kami mungkin meminta Anda mengesahkan identiti sebelum memproses permintaan Anda. Untuk permintaan yang munasabah, kami akan memberi respons dan menanganinya tepat pada masanya. Kami boleh menolak permintaan yang berulang tanpa perlu, memerlukan terlalu banyak teknologi (contohnya pembangunan sistem baharu atau perubahan asas kepada amalan sedia ada), menimbulkan risiko kepada kepentingan sah pihak lain, atau sangat tidak praktikal.

+

Dalam keadaan berikut, mengikut keperluan undang-undang dan peraturan, kami mungkin tidak dapat memberi respons kepada permintaan Anda:

+
    +
  • Berkaitan dengan keselamatan negara dan keselamatan pertahanan negara;
  • +
  • Berkaitan dengan siasatan jenayah, pendakwaan dan perbicaraan;
  • +
  • Terdapat bukti yang mencukupi bahawa Anda berniat jahat atau menyalahgunakan hak;
  • +
  • Memberi respons kepada permintaan Anda akan menyebabkan kerosakan serius kepada hak dan kepentingan sah Anda atau individu/organisasi lain.
  • +
+ +

6. Pembatalan akaun

+

Pengguna boleh melakukan operasi [pembatalan akaun] pada aplikasi. Langkah operasi:

+
    +
  1. Pergi ke halaman [My]
  2. +
  3. Klik butang [Settings] di bahagian kanan atas
  4. +
  5. Klik [Cancel account] untuk mengesahkan
  6. +
+

Selepas Anda membatalkan akaun, maklumat akaun pengguna akan dipadam

+ +

7. Penerangan kebenaran aplikasi

+

Untuk menyediakan produk dan perkhidmatan yang lebih baik, apabila Anda menggunakan perisian, kami akan memohon kebenaran berikut. Apabila Anda memasuki halaman utama atau menggunakan fungsi, sistem akan meminta kebenaran. Jika Anda menolak, beberapa fungsi berkaitan mungkin tidak dapat digunakan dengan normal. Tujuan khusus dan peringatan kebenaran adalah seperti berikut:

+ +

1 Kebenaran lokasi:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

melalui Wi‑Fi atau stesen pangkalan mudah alih untuk memperoleh maklumat lokasi latitud dan longitud pengguna

+

Apabila Anda menggunakan Voitrans, kami akan mencari peranti Bluetooth yang dipautkan berdasarkan lokasi geografi Anda. Pada masa yang sama, untuk menyediakan perkhidmatan yang lebih stabil, mengoptimumkan produk dan meningkatkan pengalaman, kami mungkin berkongsi maklumat di atas dengan SDK pihak ketiga seperti Youmon dan Autonavi untuk memperoleh data operasi Voitrans dan perkhidmatan fungsi.

+

Kaedah peringatan: prompt kebenaran semasa mula membuka aplikasi kali pertama, pengguna perlu mengesahkan penerimaan. Penerangan terdapat dalam Perjanjian Pengguna dan Dasar Privasi.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Kebenaran ini diperlukan apabila Anda mengakses aplikasi untuk melaksanakan fungsi pengurusan aplikasi.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

3 Kebenaran rangkaian:

+

android.permission.INTERNET

+

Kebenaran ini diperlukan untuk perkhidmatan maklumat dan perkhidmatan naik taraf versi Voitrans. Untuk meningkatkan pengalaman pengguna dan mengoptimumkan keupayaan perkhidmatan, SDK pihak ketiga juga mungkin menggunakan kebenaran ini.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

4 Kebenaran status rangkaian:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Digunakan untuk mengetahui sama ada sambungan rangkaian semasa adalah sah, menilai persekitaran rangkaian (contohnya 4G), dan sama ada perlu mengingatkan perubahan persekitaran rangkaian yang mempengaruhi pemuatan kandungan maklumat. Kebenaran ini dipohon apabila Anda menggunakan Voitrans.

+

Perubahan status rangkaian mempengaruhi muat naik dan muat turun data. Oleh itu, akses kepada kebenaran status rangkaian mungkin digunakan bersama oleh platform pihak ketiga.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

5 Kebenaran senarai tugas:

+

android.permission.GET_TASKS

+

Kebenaran ini digunakan untuk mendapatkan senarai aplikasi bagi fungsi pengurusan perisian. Apabila Anda menggunakan fungsi tersebut, aplikasi yang dipasang pada telefon perlu dibaca.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

6 Kebenaran alamat MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Apabila Anda menggunakan Voitrans, aplikasi mungkin perlu mendapatkan kebenaran alamat MAC:

+

Apabila aplikasi perlu melaporkan data penukaran sasaran, platform pihak ketiga seperti Youmon +SDK mungkin menggunakan MAC.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

7 Kebenaran rakam audio

+

android.permission.RECORD_AUDIO

+

Apabila Anda menggunakan fungsi input suara Voitrans, Anda perlu menggunakan kebenaran rakaman audio, terutamanya untuk input suara bagi terjemahan dan fungsi berkaitan lain.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi; kotak dialog akan muncul secara dinamik apabila diperlukan.

+ +

8 Kebenaran SSID Wi‑Fi

+

Apabila kebenaran ini digunakan, aplikasi membaca SSID Wi‑Fi:

+

Skop dan tujuan: apabila aplikasi perlu menggunakan perkhidmatan analisis data, platform pihak ketiga boleh membaca “SSID Wi‑Fi” peranti untuk menyediakan perkhidmatan fungsi yang lebih tepat dan berkesan.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

9 Akses Bluetooth

+

Apabila kebenaran ini digunakan, aplikasi menggunakan kebenaran Bluetooth:

+

Skop dan tujuan: digunakan untuk mencari dan mengkonfigurasi aksesori Bluetooth seperti set kepala Bluetooth, jam tangan Bluetooth dan lain-lain supaya pengguna mudah mengurus

+

Kaedah peringatan: prompt kebenaran semasa mula membuka aplikasi kali pertama, pengguna perlu mengesahkan penerimaan. Penerangan terdapat dalam Perjanjian Pengguna dan Dasar Privasi.

+ +

10 Kebenaran BSSID Wi‑Fi

+

Apabila aplikasi perlu membezakan dan mengenal pasti pengguna untuk menyediakan perkhidmatan fungsi dan statistik data, aplikasi akan membaca “BSSID Wi‑Fi” peranti untuk:

+

Skop dan tujuan: 1) Platform pihak ketiga seperti Youmeng SDK, Bugly SDK, Autonavi SDK

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

11 Kebenaran pemasangan aplikasi

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Perisian akan menggunakan kebenaran pemasangan aplikasi, terutamanya untuk membolehkan pengguna memasang versi baharu dan mencuba fungsi baharu apabila versi baharu tersedia.

+

Kaedah peringatan: Penerangan Perjanjian Pengguna dan Dasar Privasi.

+ +

12 Kebenaran kamera

+

android.permission.CAMERA

+

Voitrans menggunakan kebenaran kamera untuk mengimbas kod QR dan mengikat peranti Bluetooth seperti set kepala Bluetooth dan jam tangan.

+

Kaedah peringatan: prompt kebenaran semasa mula membuka aplikasi kali pertama, pengguna perlu mengesahkan penerimaan. Penerangan terdapat dalam Perjanjian Pengguna dan Dasar Privasi.

+ +

Nota khas:

+

1 Aplikasi mengintegrasikan SDK pihak ketiga. Selepas pengguna bersetuju, aplikasi boleh mengumpul ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI dan maklumat peribadi lain di latar belakang/latar hadapan;

+

Catatan: Untuk maklumat lanjut, sila lihat kandungan dan kebenaran berkaitan SDK berikut [VIII. Senarai akses SDK pihak ketiga].

+ +

8. Akses SDK pihak ketiga

+

1 Untuk memastikan operasi yang stabil dan realisasi fungsi klien kami supaya Anda boleh menggunakan dan menikmati lebih banyak perkhidmatan dan fungsi, aplikasi kami mungkin menanamkan software development kit (SDK) atau komponen serupa pihak ketiga. Pihak ketiga ini akan mengumpul dan memproses maklumat berkaitan mengikut dasar privasi mereka untuk menyediakan fungsi dan perkhidmatan pengiklanan secara normal. Anda boleh mengetahui peraturan pengumpulan dan pemprosesan maklumat pihak ketiga dalam bahagian berikut. Kami akan menjalankan ujian keselamatan yang ketat ke atas SDK rakan kongsi untuk melindungi penggunaan yang munasabah dan keselamatan maklumat peribadi Anda. Sila ambil perhatian bahawa SDK pihak ketiga mungkin mengubah jenis pemprosesan data disebabkan naik taraf versi. Sila rujuk dasar privasi yang diterbitkan oleh SDK pihak ketiga. Lihat butiran di bawah atau klik untuk melihat Senarai SDK Pihak Ketiga.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Maklumat diperoleh: nombor peranti, alamat IP, maklumat perisian peranti, kod pengenalan peranti (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, maklumat IMSI kad SIM, IP, alamat MAC), pengecam peranti, wilayah, maklumat aplikasi berkaitan peranti dan maklumat log lain berkaitan perkhidmatan

+

Tujuan penggunaan: log masuk dan perkongsian WeChat

+

Pembangun: Shenzhen Tencent Computer Systems Company Limited

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Maklumat diperoleh: nama aplikasi, versi aplikasi, jenama dan model peranti, sistem pengendalian, maklumat operator, resolusi skrin, maklumat sensor (vektor, pecutan, tekanan, arah, geomagnetik, giroskop, suhu, sensor cahaya, isyarat NMEA), maklumat kekuatan isyarat peranti

+

Tujuan penggunaan: navigasi menggunakan Amap

+

Pembangun: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Maklumat diperoleh: nama aplikasi, versi aplikasi, jenama dan model peranti, sistem pengendalian, maklumat rangkaian, kekuatan isyarat peranti dan lain-lain.

+

Tujuan penggunaan: paparan peta dan interaksi

+

Pembangun: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Maklumat diperoleh: maklumat lokasi (GPS, Wi‑Fi, stesen pangkalan), maklumat peranti, maklumat rangkaian dan lain-lain.

+

Tujuan penggunaan: menyediakan perkhidmatan lokasi

+

Pembangun: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Maklumat diperoleh: nama aplikasi, versi aplikasi, maklumat peranti, maklumat rangkaian dan lain-lain.

+

Tujuan penggunaan: alat peta dan pengoptimuman rendering

+

Pembangun: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Maklumat diperoleh: pengecam peranti, maklumat asas peranti, senarai perisian dipasang dan maklumat rangkaian (lihat dasar privasi rasmi untuk butiran)

+

Tujuan penggunaan: log masuk akaun Alipay dan panggilan pembayaran

+

Pembangun: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Maklumat diperoleh: versi SDK/API, platform, cap masa, pengecam aplikasi, versi aplikasi, pengeluar peranti, versi OS, lokal, zon waktu, status rangkaian (Wi‑Fi dan lain-lain), log rangkaian, data ranap dan penggunaan, alamat IP dan lain-lain (lihat dasar privasi rasmi untuk butiran)

+

Tujuan penggunaan: pemantauan kualiti aplikasi dan perkhidmatan pelaporan data

+

Pembangun: Shenzhen Tencent Computer Systems Company Limited

+

Kaedah pengumpulan: pengumpulan sendiri oleh SDK

+

Pautan Dasar Privasi: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Perlindungan kanak-kanak bawah umur

+

Pengguna produk dan perkhidmatan kami mungkin termasuk kanak-kanak bawah umur di bawah 18 tahun. Pengguna bawah umur hendaklah mendapatkan nasihat ibu bapa atau penjaga mereka mengenai Dasar Privasi ini sebelum menggunakan produk kami, dan menggunakan perkhidmatan kami atau memberikan maklumat kepada kami selepas mendapat persetujuan serta di bawah bimbingan ibu bapa atau penjaga mereka. Penjaga kanak-kanak bawah umur yang mempunyai pertanyaan boleh menghubungi kami melalui maklumat hubungan dalam Dasar Privasi ini.

+

Jika Anda tidak bersetuju dengan pengumpulan maklumat tersebut oleh penyedia perkhidmatan pihak ketiga di atas, sila hentikan penggunaan Perisian dengan segera. Semasa Anda menggunakan Perisian, pihak ketiga ini akan mengumpul dan memproses maklumat berkaitan mengikut dasar privasi mereka untuk menyediakan beberapa fungsi, pengiklanan dan perkhidmatan lain. Jika maklumat bocor disebabkan pengumpulan maklumat tersebut oleh penyedia perkhidmatan pihak ketiga yang berkaitan, penyedia perkhidmatan pihak ketiga tersebut akan menanggung tanggungjawab undang-undang yang sewajarnya.

+ +

10. Keberkesanan dan kemas kini Dasar Privasi

+

1. Dasar Privasi ini berkuat kuasa dari tarikh penerbitan.

+

2. Seiring perniagaan kami berkembang dan berubah, Dasar Privasi kami mungkin berubah. Kami berhak mengubah dasar privasi pada bila-bila masa, jadi sila semak dari semasa ke semasa. Jika kami membuat perubahan, kami akan menyiarkan kemas kini di laman web, aplikasi dan tempat lain yang kami anggap sesuai untuk memaklumkan Anda. Jika dasar privasi dikemas kini, ia berkuat kuasa dari tarikh kemas kini. Penggunaan berterusan produk atau perkhidmatan kami bermakna Anda bersetuju dengan Dasar Privasi yang telah diubah.

+ +

11. Cara menghubungi kami

+

Saitong Industries Inc ditubuhkan pada 22 November 2024, alamat berdaftar: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Jika Anda ingin mengetahui lebih lanjut tentang syarikat dan platform kami, Anda boleh menghubungi kami melalui maklumat hubungan yang disediakan dalam dasar ini (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/ms/user_agreement.html b/doc/ms/user_agreement.html new file mode 100644 index 000000000..f467fd37a --- /dev/null +++ b/doc/ms/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protokol Pengguna Aplikasi Voitrans + + + +
+
Bahasa Melayu
+ +

Protokol Pengguna Aplikasi Voitrans

+ +

Terma dan Syarat Penggunaan ini memberitahu anda cara mengakses dan menggunakan Aplikasi Voitrans dan perkhidmatan dalam talian ("Perkhidmatan"). Saitong Industries Inc. (selepas ini dirujuk sebagai "Saitong") dengan ini mengingatkan pengguna untuk membaca dengan teliti dan memahami sepenuhnya Perjanjian Pengguna ini (selepas ini dirujuk sebagai "Perjanjian"). Pengguna hendaklah membaca dengan teliti dan memahami sepenuhnya terma Perjanjian ini. Sila baca dengan teliti dan pilih untuk menerima atau tidak menerima Perjanjian ini. Penggunaan anda terhadap APP Voitrans (selepas ini dirujuk sebagai "APP" atau "Perisian") akan dianggap sebagai penerimaan Perjanjian ini dan anda bersetuju untuk terikat dengan terma Perjanjian ini. Jika anda tidak bersetuju dengan Perjanjian ini, jangan gunakan APP.

+

Saitong berhak untuk meminda Perjanjian ini, dan terma Perjanjian yang dikemas kini akan diterbitkan dalam APP ini, berkuat kuasa dari tarikh penerbitan.

+ +

1. Peraturan am

+

1.1 APP ini adalah perisian yang disediakan oleh Saitong untuk menyambungkan produk set kepala yang dikeluarkan oleh Saitong dan syarikat rakan kongsinya. Pemilikan dan hak operasi perisian dan perkhidmatan berkaitan semuanya dimiliki oleh Saitong.

+

1.2 Perjanjian ini adalah perjanjian antara anda (selepas ini dirujuk sebagai "Pengguna") dan syarikat serta rakan kongsi dan rakan kongsi operasinya (selepas ini dirujuk sebagai "Rakan Kongsi") mengenai penggunaan APP dan perkhidmatan berkaitan oleh pengguna.

+

1.3 Perisian dan perkhidmatan termasuk:

+

1.3.1 Perisian yang disediakan menyediakan pengguna Voitrans dengan sambungan dan pengikatan Voitrans, pengurusan tetapan fungsi dan perkhidmatan perisian lain, tertakluk kepada perkhidmatan perisian sebenar yang disediakan oleh APP.

+

1.3.2 Kemas kini, naik taraf dan perkhidmatan perisian lain.

+ +

2. Skop lesen perisian

+

2.1 Kami memberikan pengguna lesen peribadi, tidak boleh dipindah milik, tidak boleh disublesen, dan bukan eksklusif untuk Perisian.

+

2.2 Pengguna boleh memasang, menggunakan, memaparkan dan menjalankan perisian pada satu peranti terminal mudah alih untuk tujuan bukan komersial. Walau bagaimanapun, pengguna tidak boleh memasang, menggunakan atau menjalankan perisian untuk tujuan operasi komersial, menyalin, mengubah, mengubah suai, menyambung atau menjalankan perisian atau data yang dikeluarkan ke dalam memori mana-mana peranti terminal semasa operasi perisian atau data interaksi antara klien dan pelayan semasa operasi perisian, atau mencipta sebarang karya terbitan. Ini termasuk, tetapi tidak terhad kepada, penggunaan pemalam, tambahan, atau alat/perkhidmatan pihak ketiga yang tidak dibenarkan untuk mengakses Perisian dan sistem berkaitan. Untuk jualan komersial, pengeluaran semula dan pengedaran, seperti prapasangan dan penggabungan perisian, kebenaran dan kelulusan bertulis mesti diperoleh.

+

2.3 Pengguna tidak boleh memasang Perisian pada peranti terminal lain tanpa kebenaran nyata daripada Pencipta, termasuk tetapi tidak terhad kepada TV, kotak set atas digital, konsol permainan dan peranti lain.

+

2.4 Kecuali sebagaimana yang dibenarkan secara nyata oleh Perjanjian ini, tiada hak lain diberikan kepada Pengguna, dan Pengguna hendaklah mendapatkan persetujuan bertulis untuk menggunakan hak lain.

+ +

3. Naik taraf perisian

+

3.1 Pengguna mesti memilih versi perisian yang sesuai untuk persediaan terminal yang dipasang. Jika tidak, masalah perisian, masalah peranti atau kerosakan yang disebabkan oleh mana-mana versi perisian yang tidak sesuai untuk jenis peranti adalah tanggungjawab pengguna semata-mata.

+

3.2 Untuk meningkatkan pengalaman pengguna dan memperbaiki kandungan perkhidmatan, Saitong berhak untuk menyediakan versi penggantian, pengubahsuaian dan naik taraf perisian dari semasa ke semasa. Fungsi "Gesaan Naik Taraf" diaktifkan untuk pengguna secara lalai. Bergantung pada versi perisian yang berbeza yang digunakan oleh pengguna, Saitong menyediakan pengguna dengan pilihan untuk mengaktifkan fungsi ini. Selepas pelepasan versi baharu perisian, Saitong tidak menjamin ketersediaan berterusan versi lama perisian.

+ +

4. Spesifikasi penggunaan

+

4.1 Pengguna boleh menggunakan Perisian dan Perkhidmatan mengikut Perjanjian ini dengan premis mematuhi undang-undang dan Perjanjian ini, dan pengguna tidak boleh melakukan tindakan berikut:

+

4.1.1 Memadamkan semua maklumat hak cipta pada Perisian dan salinan lain, dan mengubah suai, memadamkan atau memintas langkah-langkah teknikal yang ditetapkan oleh Perisian untuk melindungi hak harta intelek.

+

4.1.2 Kejuruteraan songsang Perisian, seperti pembongkaran, penyahkompilasi, atau percubaan lain untuk mendapatkan kod sumber Perisian.

+

4.1.3 Dengan mengubah suai atau memalsukan arahan dan data dalam operasi perisian, menambah, memadamkan atau mengubah fungsi atau kesan operasi perisian, atau perisian atau kaedah yang akan digunakan untuk tujuan di atas untuk beroperasi atau menyebarkan kepada orang ramai, tanpa mengira sama ada tindakan ini untuk tujuan komersial.

+

4.1.4 Menggunakan perisian untuk sebarang tingkah laku yang menjejaskan keselamatan rangkaian, termasuk tetapi tidak terhad kepada: menggunakan data yang tidak dibenarkan atau mengakses pelayan/akaun yang tidak dibenarkan; mengakses rangkaian awam atau sistem operasi lain tanpa kebenaran dan memadamkan, mengubah suai atau menambah maklumat yang disimpan; percubaan yang tidak dibenarkan untuk menyiasat, mengimbas, atau menguji kelemahan sistem atau rangkaian perisian atau tindakan lain yang merosakkan keselamatan rangkaian; percubaan untuk mengganggu atau memusnahkan operasi normal sistem perisian atau laman web, menyebarkan program berniat jahat atau virus secara sengaja, dan tindakan lain yang mengganggu perkhidmatan maklumat rangkaian normal; memalsukan nama paket TCP/IP atau nama separa.

+

4.1.6 Tanpa persetujuan bertulis Syarikat, pengguna secara sewenang-wenangnya melakukan tindakan berikut terhadap perisian dan maklumat di dalamnya, termasuk tetapi tidak terhad kepada: menggunakan, menyewa, meminjamkan, menyalin, mengubah suai, memaut, mencetak semula, menyusun, menerbitkan, mengedar, mewujudkan tapak cermin, membangunkan produk terbitan, karya, perkhidmatan, pemalam, tambahan, keserasian, kesalinghubungan, dan lain-lain, dengan bantuan Perisian.

+

4.1.7 Menggunakan Perisian untuk menerbitkan, menghantar, mengedar, dan menyimpan kandungan yang melanggar undang-undang tempatan anda.

+

4.1.8 Menggunakan perisian untuk menerbitkan, menghantar, menyebarkan, dan menyimpan kandungan yang melanggar hak harta intelek, rahsia perdagangan, dan hak sah lain orang lain.

+

4.1.9 Menggunakan perisian ini untuk menerbitkan, menghantar dan menyebarkan maklumat pengiklanan dan maklumat sampah secara pukal.

+

4.1.10 Menggunakan Perisian dan Perkhidmatan lain dengan cara yang menyalahi undang-undang, untuk sebarang tujuan yang menyalahi undang-undang, atau dengan cara yang tidak konsisten dengan penggunaan berlesen Perjanjian ini.

+

4.2 Spesifikasi pelepasan maklumat

+

4.2.1 Jika anda menggunakan perisian untuk menerbitkan kandungan maklumat (jika ada), anda hendaklah menjamin bahawa anda memiliki hak harta intelek kandungan maklumat yang dimuat naik oleh anda atau telah memperoleh kebenaran undang-undang, dan sebarang tingkah laku anda menggunakan perisian dan perkhidmatan tidak melanggar hak dan kepentingan sah mana-mana pihak ketiga.

+

4.2.2 Apabila menggunakan Perisian, pengguna tidak boleh menggunakan Perisian untuk terlibat dalam aktiviti berikut, termasuk tetapi tidak terhad kepada:

+

4.2.2.1 Mencipta, menyalin, menerbitkan, menyebarkan, dan menyimpan kandungan yang melanggar undang-undang dan peraturan kebangsaan tempatan.

+

4.2.2.2 Menerbitkan, menghantar, menyebarkan, dan menyimpan kandungan yang melanggar hak undang-undang orang lain seperti reputasi, potret, harta intelek, dan rahsia perdagangan.

+

4.2.2.3 Merekayasa fakta, menyembunyikan kebenaran untuk mengelirukan atau menipu orang lain.

+

4.2.2.4 Menerbitkan, menghantar dan menyebarkan maklumat pengiklanan dan maklumat sampah.

+

4.2.2.5 Terlibat dalam tindakan lain yang melanggar undang-undang dan peraturan tempatan.

+

4.2.3 Anda tidak boleh menjalankan sebarang aktiviti komersial seperti pengiklanan dan penjualan barangan dalam Perisian tanpa kebenaran Syarikat.

+

4.3 Pengguna memahami dan bersetuju bahawa:

+

4.3.1 Saitong akan menentukan sama ada pengguna disyaki melanggar spesifikasi penggunaan di atas, dan mengikut keputusan penentuan, menggantung atau menamatkan lesen penggunaan anda atau mengambil langkah-langkah sekatan lain yang boleh diambil mengikut perjanjian ini.

+

4.3.2 Untuk penggunaan perisian berlesen oleh pengguna yang diterbitkan disyaki menyalahi undang-undang atau disyaki melanggar hak undang-undang orang lain atau melanggar Perjanjian ini, maklumat tersebut akan dipadamkan secara langsung.

+

4.3.3 Jika pelanggaran pengguna terhadap peraturan penggunaan di atas menyebabkan kerosakan kepada pihak ketiga, anda perlu menanggung tanggungjawab undang-undang secara bebas atas nama anda sendiri, dan anda hendaklah memastikan bahawa syarikat bebas daripada kerugian atau peningkatan kos.

+

4.3.4 Jika pengguna melanggar peruntukan undang-undang atau perjanjian yang berkaitan, menyebabkan Saitong mengalami kerugian, atau tertakluk kepada tuntutan pihak ketiga, atau dihukum oleh pihak berkuasa pentadbiran, pengguna hendaklah membayar pampasan bagi kerugian dan/atau perbelanjaan yang disebabkan oleh Saitong, termasuk yuran peguam yang munasabah, kos penyiasatan dan pengumpulan bukti.

+ +

5. Penerangan perkhidmatan pihak ketiga

+

5.1 Pengguna memahami dan bersetuju bahawa sistem perisian mungkin mengandungi perkhidmatan yang disediakan oleh ahli gabungan Syarikat atau pihak ketiga, dan bahawa Syarikat hanya menyediakan modul berfungsi yang berkaitan dalam sistem untuk kemudahan pengguna dan menyediakan akses kepada perkhidmatan pihak ketiga.

+

5.2 Sama ada perkhidmatan pihak ketiga dipratetap dalam perkhidmatan sistem perisian, atau dibuka atau ditempah oleh pengguna sendiri, pengguna memahami dan bersetuju bahawa Saitong tidak membuat sebarang jaminan atau waranti nyata atau tersirat mengenai kesahihan dan keberkesanan penyedia perkhidmatan pihak ketiga atau pengguna, serta kesahihan, ketepatan, keberkesanan dan keselamatan perkhidmatan pihak ketiga.

+

5.3 Syarikat tidak menyelia, mengawal atau memberikan sebarang waranti atau jaminan dalam apa jua bentuk untuk, atau menanggung sebarang liabiliti untuk, perkhidmatan pihak ketiga.

+

5.4 Sebarang pertikaian atau perselisihan antara pengguna dan penyedia perkhidmatan pihak ketiga hendaklah diselesaikan oleh Pengguna dan pihak ketiga mengikut proses perniagaan dan norma perniagaan penyedia perkhidmatan pihak ketiga, dan syarikat tidak akan menanggung sebarang tanggungjawab.

+ +

6. Dasar Privasi dan Perlindungan Maklumat Peribadi

+

6.1 Saitong komited untuk melindungi privasi pengguna mengikut dasar privasi, sila rujuk: Dasar Privasi Aplikasi Voitrans.

+ +

7. Liabiliti atas pelanggaran

+

7.1 Saitong berhak untuk menilai sama ada tingkah laku pengguna mematuhi peruntukan Perjanjian ini. Jika dipercayai bahawa Pengguna telah melanggar undang-undang dan peraturan yang berkaitan atau peruntukan Perjanjian ini dan peraturan berkaitan, mengikut keterukan pelanggaran pengguna, Saitong berhak untuk memadamkan maklumat yang menyalahi undang-undang, menyekat, menggantung, menamatkan penggunaan perkhidmatan Perisian oleh pengguna, mengejar liabiliti undang-undang pengguna dan mengambil langkah-langkah lain yang Saitong anggap sesuai. Jika kami mengalami sebarang kerugian (termasuk tetapi tidak terhad kepada menerima sebarang tuntutan pihak ketiga atau penalti daripada mana-mana jabatan pentadbiran), Pengguna hendaklah bertanggungjawab sepenuhnya.

+ +

8. Risiko Perkhidmatan dan Penafian

+

8.1 Kami ingin menyediakan sokongan perkhidmatan dengan teknologi semasa. Saitong tidak menjamin bahawa Perkhidmatan Perisian akan beroperasi tanpa gangguan atau ralat, bahawa semua kecacatan Perkhidmatan Perisian akan diperbetulkan, atau bahawa Perkhidmatan Perisian akan memenuhi semua keperluan pengguna. Akibat yang terhasil, Saitong tidak menanggung sebarang tanggungjawab.

+

8.2 Semua kerugian yang dialami oleh pengguna disebabkan oleh pihak ketiga seperti kegagalan talian komunikasi, masalah teknikal, kegagalan rangkaian, peralatan terminal komputer, ketidakstabilan sistem dan punca force majeure lain tidak akan dipertanggungjawabkan.

+

8.3 Saitong tidak menjamin kesahihan, ketulenan, ketepatan dan keberkesanan kandungan maklumat yang diperoleh melalui perisian (termasuk tetapi tidak terhad kepada kandungan perkhidmatan pihak ketiga), dan Saitong tidak menanggung sebarang tanggungjawab untuk keputusan sebarang tingkah laku yang dibuat oleh pengguna berdasarkan pertanyaan dan tontonan.

+

8.4 Perisian, seperti kebanyakan perisian Internet, dipengaruhi oleh perbezaan dalam faktor termasuk tetapi tidak terhad kepada sebab pengguna, kualiti perkhidmatan rangkaian, persekitaran sosial dan faktor lain, dan mungkin mengalami pelbagai masalah keselamatan, seperti orang lain menggunakan maklumat pengguna, menyebabkan gangguan dalam kehidupan sebenar; perisian lain yang dimuat turun dan dipasang oleh pengguna atau laman web lain yang dilawati oleh pengguna mengandungi virus seperti "kuda Trojan", yang mengancam keselamatan maklumat dan data peralatan terminal pengguna, dan seterusnya menjejaskan penggunaan normal perisian. Pengguna hendaklah mengukuhkan kesedaran keselamatan maklumat dan perlindungan data pengguna, dan memberi perhatian untuk mengukuhkan perlindungan kata laluan bagi mengelakkan kerugian dan gangguan.

+

8.5 Apabila pengguna menggunakan Perisian atau memerlukan Saitong untuk menyediakan perkhidmatan tertentu, Perisian mungkin memanggil sistem pihak ketiga atau perisian pihak ketiga untuk menyokong penggunaan atau akses pengguna, dan keputusan penggunaan atau akses disediakan oleh pihak ketiga. Selain mematuhi peraturan berkaitan Perjanjian ini, pengguna juga hendaklah mematuhi perjanjian dan peraturan berkaitan pihak ketiga. Pengguna mesti memahami dan bersetuju bahawa, apabila menggunakan perkhidmatan pihak ketiga, pihak ketiga mungkin membaca data pengguna, dan Saitong tidak menjamin keselamatan, ketepatan, keberkesanan dan risiko tidak pasti lain bagi keputusan yang dicapai melalui sistem pihak ketiga atau sokongan perisian pihak ketiga, pengguna hendaklah menggunakan pertimbangan yang berhati-hati, dan Saitong tidak menanggung sebarang tanggungjawab untuk sebarang pertikaian dan kerosakan yang disebabkan oleh perkara ini.

+

8.6 Untuk menjamin autonomi pembangunan perniagaan dan pelarasan syarikat, syarikat boleh mengubah suai atau mengganggu perkhidmatan pada bila-bila masa selepas mengambil cara yang munasabah untuk memberitahu pengguna.

+

8.7 Kecuali sebagaimana yang diperuntukkan secara nyata oleh undang-undang dan peraturan, Saitong akan berusaha sedaya upaya untuk memastikan bahawa perisian dan teknologi serta maklumat yang terlibat adalah selamat, berkesan, tepat dan boleh dipercayai, tetapi terhad oleh teknologi sedia ada, pengguna memahami bahawa Saitong tidak dapat menjaminnya.

+

8.8 Pampasan untuk kecederaan peribadi atau kerosakan ekonomi sampingan dan tidak langsung yang disebabkan oleh atau berkaitan dengan mana-mana keadaan berikut, termasuk tetapi tidak terhad kepada kehilangan keuntungan, kehilangan data, ganti rugi untuk gangguan perniagaan atau kerosakan atau kerugian perniagaan lain, hendaklah ditanggung oleh Pengguna:

+

1) Penggunaan atau kegagalan menggunakan perisian berlesen.

+

2) Penggunaan perisian tanpa kebenaran atau pengubahan data pengguna oleh pihak ketiga.

+

3) Perbelanjaan dan kerugian yang ditanggung oleh tindakan pengguna dengan perisian.

+

4) Salah tanggapan pengguna mengenai perisian.

+

5) Sebarang kerugian lain yang berkaitan dengan perisian yang tidak disebabkan oleh Saitong.

+

8.9 Pengguna bersetuju bahawa Syarikat berhak untuk menggantung, mengganggu atau menamatkan semua atau sebahagian Perkhidmatan kepada pengguna berdasarkan keperluan pihak berkuasa kehakiman, pengawalseliaan dan penyeliaan atau sebab perniagaannya sendiri. Saitong tidak menerima sebarang tanggungjawab untuk perkara ini.

+

8.10 Pengguna memahami dan bersetuju bahawa Syarikat akan menggunakan usaha yang munasabah secara komersial untuk memastikan keselamatan penyimpanan data dalam Perisian dan Perkhidmatan, tetapi syarikat tidak dapat memberikan jaminan lengkap, dan Pengguna memahami bahawa Syarikat tidak bertanggungjawab untuk pemadaman atau penyimpanan atau kegagalan sandaran data dalam Perkhidmatan.

+

8.11 Setakat yang dibenarkan sepenuhnya oleh undang-undang, Pembangun atau Pembekal tidak akan bertanggungjawab untuk sebarang kerosakan langsung, tidak langsung, sampingan, khas atau berbangkit yang timbul daripada penggunaan Aplikasi. Jika pengguna mempunyai keperluan lanjut, sila pergi ke hospital biasa untuk ujian mendalam.

+ +

9. Pernyataan harta intelek

+

9.1 Saitong adalah pemegang hak harta intelek bagi perisian ini. Semua Hak Cipta, tanda dagangan, paten, rahsia perdagangan dan hak harta intelek lain bagi perisian, serta semua kandungan maklumat yang berkaitan dengan perisian (termasuk tetapi tidak terhad kepada teks, gambar, audio, video, grafik, reka bentuk antara muka, bingkai susun atur, data berkaitan atau dokumen elektronik, dan lain-lain) dilindungi oleh undang-undang dan peraturan tempatan serta perjanjian antarabangsa yang sepadan.

+

9.2 Tanpa persetujuan bertulis Syarikat, Pengguna tidak boleh melaksanakan, menggunakan atau memindahkan hak harta intelek di atas untuk sebarang tujuan komersial atau bukan komersial, atau membenarkan mana-mana pihak ketiga, dan Syarikat berhak untuk mengejar liabiliti undang-undang bagi tindakan di atas.

+ +

10. Perubahan protokol

+

10.1 Saitong berhak untuk mengubah suai terma Perjanjian ini apabila perlu. Sebaik sahaja terma Perjanjian diubah, terma Perjanjian yang disemak semula akan diterbitkan di halaman berkaitan. Jika anda tidak bersetuju dengan kandungan yang diubah, pengguna hendaklah mengambil inisiatif untuk membatalkan perkhidmatan ini. Jika Pengguna terus menggunakan Perkhidmatan, ia dianggap menerima perubahan dalam terma Perjanjian.

+

10.2 Saitong berhak untuk mengubah suai atau menukar perkhidmatan berbayar, standard caj, kaedah caj, yuran perkhidmatan dan terma perkhidmatan yang disediakan mengikut keperluan. Apabila menyediakan perkhidmatan, kami mungkin mengenakan bayaran tertentu kepada pengguna beberapa perkhidmatan sekarang atau pada masa hadapan. Jika pengguna enggan membayar bayaran tersebut, mereka tidak boleh terus menggunakan perkhidmatan berkaitan selepas permulaan bayaran.

+
+ + diff --git a/doc/nb/privacy_policy.html b/doc/nb/privacy_policy.html new file mode 100644 index 000000000..37c3c2d69 --- /dev/null +++ b/doc/nb/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Personvernpolicy + + + + +
+

Voitrans Personvernpolicy

+

Sist oppdatert: 27. mai 2025

+

Ikrafttredelsesdato: 27. mai 2025

+ +

Velkommen til bruk av Voitrans programvare og tjenester

+

1. Voitrans leveres av Saitong Industries Inc. (heretter kalt "Selskapet"). Det kan hjelpe brukere med administrasjon av Bluetooth-enheter og andre produkter. Vi forstår viktigheten av personlig informasjon for våre brukere (heretter kalt "deg") og at effektiv beskyttelse av din personlige informasjon er grunnlaget for sunn og bærekraftig utvikling av virksomheten vår. Takk for din bruk av og tillit til Voitrans produkter eller tjenester! Vi er fullt klar over at denne tilliten ikke kommer lett, vi holder fast ved prinsippet om åpenhet og gjennomsiktighet, for å uttrykke for deg våre regler for behandling av din personlige informasjon, vi bruker lovlige og legitime metoder og klare og rimelige formål for å behandle din personlige informasjon. Spesiell merknad: Sørg for å lese og forstå denne Personvernpolicyen nøye før du bruker våre produkter eller tjenester, slik at du kan gjøre passende valg.

+

2. Denne Personvernpolicyen forklarer deg hvordan vi samler inn, bruker, lagrer og deler din personlige informasjon når du bruker Voitrans. Personlig informasjon refererer til alle typer informasjon registrert elektronisk eller på annen måte som kan identifisere en bestemt fysisk person eller gjenspeile aktivitetene til en bestemt fysisk person alene eller i kombinasjon med annen informasjon. Voitrans respekterer og beskytter det personlige personvernet til alle brukere av tjenesten. Med mindre annet er bestemt i denne Personvernpolicyen, vil Voitrans ikke avsløre denne informasjonen for offentligheten eller gi den til tredjeparter uten ditt forhåndssamtykke.

+

3. Når du bruker en tredjeparts produkt eller tjeneste gjennom et App Marketplace-produkt eller -tjeneste, vil din personlige informasjon være underlagt tredjepartens personvernpolicy.

+

4. Voitrans denne Personvernpolicyen vil bli oppdatert fra tid til annen. Ved å godta Voitrans tjenestebruksavtale og begynne å bruke Voitrans, anses du å ha godtatt hele denne Personvernpolicyen. Hvis du ikke godtar denne Personvernpolicyen, vennligst ikke bruk Voitrans programvare og tjenester.

+

5. For å analysere og måle effektiviteten av relevante tjenester, vil vi bruke og avsløre din personlige informasjon i samsvar med bestemmelsene i denne Personvernpolicyen.

+ +

Denne Personvernpolicyen vil hjelpe deg å forstå følgende:

+
    +
  • 1 Informasjonen vi samler inn
  • +
  • 2 Lagring av informasjon
  • +
  • 3 Informasjonssikkerhet
  • +
  • 4 Hvordan vi bruker informasjonen vi samler inn
  • +
  • 5 Informasjonsdeling
  • +
  • 6 Hvordan du administrerer din personlige informasjon
  • +
  • 7 Beskrivelse av applikasjonstillatelser
  • +
  • 8 Tilgang til tredjeparts SDK-er
  • +
  • 9 Beskyttelse av mindreårige
  • +
  • 10 Gyldig og oppdatert Personvernpolicy
  • +
  • 11 Hvordan kontakte oss
  • +
+ +

1. Informasjonen vi samler inn

+

1. Bruk Voitrans i begynnelsen Vi vil begynne å samle inn data om din bruk av applikasjonen

+

2. Voitrans kan innhente personlig informasjon om deg fra tredjeparter eller forretningspartnere gjennom lovlige midler

+

3. For å gi deg bedre produkter og tjenester, gi deg nettverkssikkerhet under bruk, opprettholde normal drift av produkter og optimalisere og forbedre formålet med våre informasjonstjenester, etter at du aktivt har klikket for å godta denne personvernpolicyen, bruk informasjonen vi tilbyr. Under tjenesten, i tillegg til den personlige informasjonen som er nødvendig for å sikre normal drift av Appens grunnleggende funksjoner i samsvar med nasjonale lover og forskrifter, vil vi samle inn annen personlig informasjon fra deg:

+

3.1 For å identifisere risikobrukere, bedømme brukeres ekthet og forebygge juks på en helhetlig måte, vil vi lese din enhetsinformasjon hver gang du åpner programvaren, inkludert: (Enhetsmodell, enhetens MAC-adresse, enhetens unike identifikator (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, osv.) MEID, serienummer, SSID og BSSID for WIFI), lese Bluetooth-adresse, operativsystemversjon, operativsystemnavn, brukerens påloggingskonto og passordinformasjon;

+

3.2 Når du bruker våre produkter og tjenester, kan vi samle inn viss informasjon gjennom nettverkslogginformasjon eller visse programmer og programvare, slik informasjon kan inkludere: detaljer om bruken av produkter og tjenester, som åpningstiden for applikasjonen din, brukslengden og adressen til den besøkte siden; Enhetshendelssinformasjon, som krasjer, systemaktivitet osv., for å optimalisere enheten din og forbedre våre tjenester;

+

3.3 For å identifisere applikasjoner der utstyr er i fare, tilby sikrere funksjonelle tjenester. Derfor trenger vi å få din applikasjons-/applikasjonsinstallasjonsliste i prosessen for å sikre normal drift av produktet og beskytte sikkerheten til enheten.

+

3.4 For å analysere bruken av applikasjonsfunksjoner av brukere og fastslå brukeres ekthet, trenger vi å gjennomføre datastatistikk, og samle inn ovennevnte enhetsinformasjon, inkludert enhetens MAC-adresse og enhetens unike identifikator, når enheten din er i bruk.

+

3.5 Enhetssignal: nettverksstatusen til enheten du bruker, WIFI-tilgangspunktsinformasjon osv.

+

3.6 Stedsinformasjon: Vi kan bruke GPS, WiFi eller andre tekniske midler for å samle inn og behandle informasjon om din plassering for oppdatering av lokal informasjon, levering av innholdstjenester osv.

+

For mer informasjon, klikk på "Liste over innsamling av personlig informasjon".

+ +

1. For den mer sensitive personlige informasjonen i ovennevnte informasjon, som brukerenhetsinformasjon (IMEI-nummer, anropsstatus og identifikasjonsnummer), GPS-stedsinformasjon, fotomediainnhold og filtilgangsrettigheter, vil vi innhente ditt samtykke før innsamling. For noe ikke-sensitiv informasjon kan innsamlingen være standard og automatisk. Du kan begrense vår innsamling av relevant informasjon eller bruk av visse tillatelser fra mobilenheten din ved å justere Innstillinger-alternativet for mobilenheten din. Når du begrenser vår tilgang til en bestemt tillatelse, kan vi kanskje ikke fortsette å tilby deg de tilsvarende tjenestene, og ikke lenger behandle din tilsvarende informasjon.

+

2. Vi vil ikke samle inn ditt ID-kortnummer, personlig biometrisk informasjon, bankkontonummer, eiendomsinformasjon, kredittinformasjon, helse- og fysiologisk informasjon og annen personlig sensitiv informasjon.

+

3. Om sensitive tillatelser: For å kunne bruke applikasjonsfunksjonene riktig, trenger produktet å innhente følgende tillatelser for å tilby funksjonelle tjenester relatert til normale produkter.

+ +

1 Innhente lese- og skrivetillatelser for lagring

+

1 Hvordan innhente: popup-melding, når tillatelsen er innhentet, vil brukeren aktivt klikke på godta slik at applikasjonen bruker denne tillatelsen

+

2 Formål og bruksomfang: Brukes til å skanne ressursbufferfiler og miniatyrbilder i systemet, laste musikressurser og produktbilder. Det vises i App-grensesnittet for å gjøre det enkelt for brukere å se og administrere

+ +

2 Innhente tillatelse til applikasjonsinstallasjonslisten

+

1 Hvordan innhente: popup-melding, når tillatelsen er innhentet, vil brukeren aktivt klikke på godta slik at applikasjonen bruker denne tillatelsen

+

2 Formål og bruksomfang: Når applikasjonen trenger å bruke reklametjenester, trenger tredjepartsreklameplattformen, Youmon +SDK, å innhente enhetens "tillatelse for appinstallasjonsliste" for å forhindre at brukeren får anbefalt applikasjoner brukeren allerede eier og forbedre brukeropplevelsen.

+ +

3 Tillatelsen til å innhente enhetsstatusinformasjon

+

Inkluderer: (Enhetsmodell, enhetens MAC-adresse, enhetens unike identifikator (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, osv.) MEID, serienummer, SSID og BSSID for WIFI, lese Bluetooth-adresse), operativsystemversjon, operativsystemnavn osv.;

+

1 Hvordan innhente: popup-melding, når tillatelsen er innhentet, vil brukeren aktivt klikke på godta slik at applikasjonen bruker denne tillatelsen

+

2 Formål og bruksomfang: Når du bruker vår applikasjon, for å analysere brukerens bruk av applikasjonsfunksjoner og bedømme brukerens ekthet, vil vi synkronisere tillatelsen til tredjeparts SDK-er, inkludert Autonavi SDK, Youmon +SDK osv.

+ +

4 Tilgang til stedsinformasjon

+

1 Hvordan innhente: popup-meldinger, når tillatelsen er innhentet, vil brukeren bruke denne tillatelsen kun når vedkommende aktivt klikker på godta i applikasjonen.

+

2 Formål og bruksomfang: Når applikasjonen trenger å bruke GPS, WiFi eller andre funksjoner, trenger produktet å samle inn din plassering og informasjon for å søke etter Bluetooth-enheter i nærliggende steder.

+

Merk: For flere applikasjonstillatelser, se dette dokumentet "Personvernpolicy" Seksjon 7 "Beskrivelse av applikasjonstillatelser"

+ +

2. Lagring av informasjon

+

1. Hvor informasjonen lagres

+

Den personlige informasjonen vi samler inn og genererer i Folkerepublikken Kina vil bli lagret på våre servere og/eller våre tilknyttede selskapers servere.

+

2. Informasjonslagring og -behandling

+

Vi lagrer din personlige informasjon bare i den perioden som er nødvendig for å oppnå formålet eller så lenge som kreves av lov og forskrift. Etter at du slutter å bruke dette produktet, vil vi umiddelbart slutte å samle inn og behandle din personlige informasjon og applikasjonsdata. Når ovennevnte periode overskrides, vil vi slette eller anonymisere den personlige informasjonen du har gitt oss.

+

I tillegg til de nødvendige funksjonene trenger Voitrans å søke om tilsvarende systemtillatelser. Serversiden i skyen lagrer ikke brukernes personlige informasjon, og det tilgåtte tredjeparts SDK-et vil bli anonymisert og avidentifisert av tjenesteleverandøren (Amu Statistics SDK, Autonavi SDK), slik at brukere ikke kan spores. Informasjon lagret på brukerens telefon vil automatisk bli slettet når brukeren avinstallerer Voitrans eller tømmer hurtigbufferen.

+ +

3. Informasjonssikkerhet

+

1. Voitrans lagrer og beskytter din personlige informasjon ved hjelp av bransjestandardens sikkerhetstiltak og teknologier, som autentisering, datakryptering, begrenset datasenter-tilgang og andre sikkerhetstiltak for å sikre at informasjonen din er trygg mot avsløring, endring og ødeleggelse. Til tross for ovennevnte sikkerhetstiltak, vær oppmerksom på at ingen sikkerhetstiltak kan være 100% sikre.

+

2. Når du bruker tjenestene som leveres av Voitrans, vennligst beskytt din personlige informasjon. Hvis du oppdager at din personlige informasjon har blitt kompromittert, vennligst kontakt oss umiddelbart slik at vi kan iverksette passende tiltak.

+ +

4. Hvordan vi bruker informasjonen vi samler inn

+

1. Ved implementering av applikasjonens forretningsfunksjoner kan vi bruke din personlige informasjon for å sikre integriteten og sikkerheten til produktene og tjenestene vi tilbyr deg;

+

2. Vi vil forstå dine bruksvaner gjennom den innsamlede informasjonen, og ved hjelp av dataanalyse identifisere akseptabiliteten av tjenester, dine bruksvaner osv., for å teste og skape nye produkter, funksjoner og tjenester, forbedre servicenivået og hjelpe oss med å forbedre eksisterende tjenester og utvikle nye tjenester;

+

3. Vi kan bruke din personlige informasjon til kundeundersøkelser om produktene og tjenestene, for å sende meldinger om produktene og tjenestene, og for kommersiell promotering;

+

4. Vi kan bruke informasjonen din til intern analyse og forskning relatert til applikasjonen;

+ +

5. Informasjonsdeling

+

For øyeblikket vil vi ikke aktivt dele eller overføre din personlige informasjon til tredjeparter utenfor selskapet. Hvis det er annen deling eller overføring av din personlige informasjon, vil vi direkte eller bekrefte at tredjeparten har innhentet ditt uttrykkelige samtykke til ovennevnte atferd.

+

Vi vil ikke offentliggjøre den personlige informasjonen vi samler inn. Hvis det er nødvendig å offentliggjøre den, vil vi informere deg om formålet med offentliggjøringen, typen informasjon som offentliggjøres og den sensitive informasjonen som kan være involvert, og innhente ditt uttrykkelige samtykke.

+

Etter hvert som virksomheten vår fortsetter å utvikle seg, kan vi delta i fusjoner, oppkjøp, overføring av eiendeler og andre transaksjoner, og vi vil informere deg om de relevante omstendighetene, i samsvar med lover og forskrifter og ikke lavere enn standardene som kreves av denne Guiden for å fortsette å beskytte din personlige informasjon eller kreve at en ny kontrollør fortsetter å beskytte din personlige informasjon.

+

I tillegg, i henhold til relevante lover og forskrifter og nasjonale standarder, kan vi dele, overføre og offentliggjøre personlig informasjon uten forhåndsgodkjenning og samtykke fra den registrerte under følgende omstendigheter:

+
    +
  • 1 Direkte relatert til nasjonal sikkerhet og forsvarssikkerhet;
  • +
  • 2 Direkte relatert til offentlig sikkerhet, folkehelse eller store offentlige interesser;
  • +
  • 3 Direkte relatert til etterforskning av kriminelle handlinger, tiltale, rettssak og fullbyrdelse av dommer;
  • +
  • 4 For å beskytte den registrertes eller andre individers liv, eiendom og andre store legitime rettigheter og interesser, men det er vanskelig å innhente personens samtykke;
  • +
  • 5 Personlig informasjon offentliggjort av den registrerte;
  • +
  • 6 Innsamling av personlig informasjon fra lovlig offentliggjort informasjon, som legitime nyhetsrapporter, offentliggjøring av myndighetsinformasjon og andre kanaler.
  • +
+ +

6. Hvordan du administrerer din personlige informasjon

+

I samsvar med relevante lover, forskrifter og standarder i Kina, samt vanlig praksis i andre land og regioner, garanterer vi at du utøver følgende rettigheter til din personlige informasjon:

+ +

1. Korrigere din personlige informasjon

+

Hvis du oppdager at det er en feil i din personlige informasjon behandlet av oss, har du rett til å korrigere eller oppdatere feil eller ufullstendig informasjon. Hvis du ikke kan operere selvstendig i kontosenteret, kan du sende e-post til saitong.voitrans@gmail.com Kontakt oss

+ +

2. Slette din personlige informasjon

+

I følgende tilfeller kan du rette en forespørsel til oss om å slette din personlige informasjon:

+
    +
  • Hvis vi behandler personlig informasjon i strid med lover og forskrifter;
  • +
  • Hvis vi samler inn og bruker din personlige informasjon uten ditt samtykke;
  • +
  • Hvis vår behandling av personlig informasjon bryter med vår avtale med deg;
  • +
  • Hvis du ikke lenger bruker våre produkter eller tjenester;
  • +
  • Hvis vi ikke lenger tilbyr deg produkter eller tjenester.
  • +
+

Kontakt oss. Vi vil behandle din forespørsel via saitong.voitrans@gmail.com Kontakt oss. Vi sender den til deg etter mottak innen 30 virkedager etter mottak

+ +

3. Endre omfanget av ditt samtykke

+

Du kan kontakte oss via e-post saitong.voitrans@gmail.com Kontakt oss. På din forespørsel vil vi ikke lenger samle inn, bruke eller avsløre din personlige informasjon. Vær oppmerksom på at tilbaketrekking av ditt samtykke eller sletting av din personlige informasjon kan påvirke din bruk av noen av våre tjenester.

+ +

4 Tilgang til og kopiering av personlig informasjon

+

Du kan, i samsvar med bestemmelsene i relevante lover, oppgi din imei (telefonens serienummer) eller oaid Eller Android ID Etter kontoinformasjonen og annen informasjon, kan du søke hos oss om tilgang til og kopiering av din personlige informasjon, du kan sende e-post til 3514406195@qq.com Kontakt oss.

+ +

5. Som svar på din ovennevnte forespørsel

+

Av sikkerhetsgrunner kan du trenge å sende inn en skriftlig forespørsel eller på annen måte bevise din identitet. Vi kan be deg om å verifisere din identitet før vi behandler forespørselen din. For din rimelige forespørsel vil vi svare og håndtere den i tide. Vi kan avvise forespørsler som er unødvendig gjentakende, krever for mye teknologi (for eksempel utvikling av nye systemer eller grunnleggende endringer i eksisterende praksis), utgjør en risiko for andres legitime interesser, eller er svært upraktiske.

+

Under følgende omstendigheter, i henhold til kravene i lover og forskrifter, vil vi ikke kunne svare på din forespørsel:

+
    +
  • Relatert til nasjonal sikkerhet og forsvarssikkerhet;
  • +
  • I forbindelse med etterforskning av kriminelle handlinger, tiltale og rettssak;
  • +
  • Det finnes tilstrekkelig bevis for at du har subjektiv ondsinnethet eller misbruk av rettigheter;
  • +
  • Å svare på din forespørsel vil forårsake alvorlig skade på de legitime rettighetene og interessene til deg eller andre individer og organisasjoner.
  • +
+ +

6. Kontosletting

+

Brukere kan utføre [kontosletting]-operasjon i appen. Operasjonstrinn:

+
    +
  1. Gå til [Min]-siden
  2. +
  3. Klikk på [Innstillinger]-knappen øverst til høyre
  4. +
  5. Klikk på [Slett konto] for å bekrefte
  6. +
+

Etter at du har logget ut, tømmes informasjonen om brukerkontoen

+ +

7. Beskrivelse av applikasjonstillatelser

+

For å tilby bedre produkter og tjenester, når du bruker programvaren, vil vi søke om følgende tillatelser. Når du går inn på hjemmesiden eller bruker funksjonen, vil autorisasjon bli forespurt. Hvis du nekter, vil noen av de tilsvarende funksjonene ikke kunne brukes normalt. De spesifikke formålene og påminnelsene for tillatelser er beskrevet i detalj nedenfor:

+ +

1 Stedstillatelser:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

via WiFi eller mobil basestasjon for å innhente brukerens bredde- og lengdegradsinformasjon

+

Når du bruker Voitrans, vil vi søke etter din tilkoblede Bluetooth-enhet basert på din geografiske plassering. Samtidig, for å tilby mer stabile tjenester, optimalisere produkter og forbedre opplevelsen, vil vi dele ovennevnte informasjon med tre SDK-er, som Youmon og Autonavi, for å innhente Voitrans driftsdata og funksjonelle tjenester.

+

Påminnelsesmodus: En melding som angir tillatelsen til å starte applikasjonen for første gang vises, som krever at brukeren bekrefter godkjennelse. Brukeravtale og Personvernpolicybeskrivelse.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Denne tillatelsen er nødvendig når du åpner en applikasjon for å utføre applikasjonsadministrasjonsfunksjoner.

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse.

+ +

3 Nettverkstillatelser:

+

android.permission.INTERNET

+

Når du bruker Voitrans informasjonstjenester og versjonsoppgraderingstjenester, er disse tillatelsene nødvendige, og for å forbedre brukeropplevelsen og optimalisere tjenestekapasiteten vil tredjeparts SDK-er som Friends også bruke disse tillatelsene.

+

Påminnelsesmodus: Brukeravtale og Personvernpolicybeskrivelse.

+ +

4 Innhente tillatelser for nettverksstatus:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Brukes til å innhente om den nåværende nettverkstilkoblingen er gyldig, fastslå om det nåværende 4G-miljøet er aktivt, og om nettverksmiljøendringer skal varsles om, noe som påvirker lasting av informasjonsinnhold. Denne tillatelsen søkes om når du bruker Voitrans.

+

Endringer i nettverksstatusen påvirker opplasting og lasting av data. Derfor vil tilgangen til nettverksstatustillatelse deles med friends + og andre plattformer.

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse.

+ +

5 Innhente tillatelser for oppgaveliste:

+

android.permission.GET_TASKS

+

Denne tillatelsen brukes til å innhente applikasjonslisten for programvareadministrasjonsfunksjonen. Når du bruker programvareadministrasjonsfunksjonen, trenger du å lese applikasjonene som er installert på mobiltelefonen.

+

Påminnelsesmodus: Brukeravtale og Personvernpolicybeskrivelse.

+ +

6 Innhente MAC-adressetillatelse

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Når du bruker Voitrans, vil applikasjonen trenge å innhente MAC-adressetillatelser:

+

Når en applikasjon trenger å rapportere målkonverteringsdata, trenger tredjepartsplattformer som Youmon +SDK å bruke MAC.

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse.

+ +

7 Innhente tillatelse til å ta opp lyd

+

android.permission.RECORD_AUDIO

+

Når du bruker stemmeinnmatingsfunksjonen til Voitrans, trenger du tillatelsen til å ta opp lyd, og bruker hovedsakelig stemmeinnmating for oversettelse og andre relaterte funksjoner.

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse, brukeren får dynamisk popup-boks når det er nødvendig.

+ +

8 Innhente SSID-tillatelse for WIFI

+

Når denne tillatelsen brukes, leser appen SSID-tillatelsen for WIFI:

+

Bruksomfang og formål: Når applikasjonen trenger å bruke dataanalysetjenester, trenger tredjepartsplattformer som +SDK å lese enhetens "WIFI SSID-tillatelse" for å gi brukere mer nøyaktige og effektive funksjonelle tjenester.

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse.

+ +

9 Innhente Bluetooth-tilgang

+

Når denne tillatelsen brukes, leser appen Bluetooth-tillatelsen:

+

Bruksomfang og formål: Bluetooth-enheter for søking og konfigurasjon av tilbehør, som Bluetooth-hodetelefoner, Bluetooth-klokker osv. Enkelt for brukere å administrere

+

Påminnelsesmetode: En melding som angir tillatelsen til å starte applikasjonen for første gang vises, som krever at brukeren bekrefter godkjennelse. Brukeravtale og Personvernpolicybeskrivelse.

+ +

10 Innhente BSSID-tillatelsen for WiFi

+

Når applikasjonen trenger å skille og identifisere brukeren for å tilby funksjonelle tjenester og datastatistikk, vil den lese enhetens "WiFi BSSID"-tillatelse for:

+

Bruksomfang og formål: 1 Tredjepartsplattformer: som Youmeng SDK, Bugly SDK, Autonavi SDK

+

Påminnelsesmetode: Brukeravtale og Personvernpolicybeskrivelse.

+ +

11 Innhente applikasjonsinstallasjtonstillatelsen

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Programvaren vil bruke applikasjonsinstallasjonistillatelsen, som hovedsakelig brukes til å la brukere installere en ny versjon og oppleve nye funksjoner når det er en ny versjon.

+

Påminnelsesmodus: Brukeravtale og Personvernpolicybeskrivelse.

+ +

12 Innhente tillatelser for kameraet

+

android.permission.CAMERA

+

Voitrans bruker kameratillatelser til å skanne QR-koder og binde Bluetooth-enheter som Bluetooth-hodetelefoner og -klokker.

+

Påminnelsesmetode: En melding som angir tillatelsen til å starte applikasjonen for første gang vises, som krever at brukeren bekrefter godkjennelse. Brukeravtale og Personvernpolicybeskrivelse.

+ +

Spesiell merknad:

+

1 Applikasjonsintegrasjon innenfor deres Allies SDK, Scott map SDK etter at brukeren har samtykket til å tillate bruk, applikasjon i bakgrunnen/forgrunnen for ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI og annen personlig informasjon;

+

Merknader: Mer Se følgende SDK-relatert innhold og tillatelser [VIII. Tilgang til tredjeparts SDK-liste]

+ +

8. Tilgang til tredjeparts SDK-er

+

1 For å sikre stabil drift og funksjonsimplementering av vår klient, slik at du kan bruke og nyte flere tjenester og funksjoner, vil vår applikasjon inneholde programvareverktøyutviklingspakker (SDK) eller andre lignende applikasjoner fra tredjeparter, disse tredjepartene vil samle inn og behandle relevant informasjon i samsvar med sine egne personvernpolicyer, for å normalt tilby funksjoner og reklametjenester. Du kan lære om informasjonsinnsamlings- og behandlingsreglene til tredjeparten i følgende seksjon. Vi vil gjennomføre strenge sikkerhetstester på utviklingspakker (SDK-er) for partnere å innhente informasjon, for å beskytte rimelig bruk og sikkerhet for din personlige informasjon. Vær oppmerksom på at tredjeparts SDK-er kan endre databehandlingstypene på grunn av sine versjonsoppgraderinger. Se personvernpolicyene publisert av tredjeparts SDK-er. Se detaljene nedenfor eller klikk for å se Tredjeparts SDK-listen.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Innhentet informasjon: Enhetsnummer, IP-adresse, enhetsprogramvareinformasjon, enhetsidentifikasjonskode (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kort IMSI-informasjon, IP, MAC-adresse), enhetsidentifikator, region, enhetsrelatert applikasjonsinformasjon og annen tjenesterelatert logginformasjon

+

Bruksformål: WeChat-innlogging og deling

+

Utvikler: Shenzhen Tencent Computer Systems Company Limited

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Innhentet informasjon: Applikasjonsnavn, applikasjonsversjon, enhetens merke og modell, operativsystem, operatørinformasjon, skjermoppløsning, sensorinformasjon (vektor, akselerasjon, trykk, retning, geomagnetisk, gyroskop, temperatur, lyssensor, NMEA-signal), enhetens signalstyrkeinformasjon

+

Bruksformål: Navigasjon med Amap

+

Utvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Innhentet informasjon: Applikasjonsnavn, applikasjonsversjon, enhetens merke og modell, operativsystem, nettverksinformasjon, enhetens signalstyrke osv.

+

Bruksformål: Kartvisning og interaksjon

+

Utvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Innhentet informasjon: Stedsinformasjon (GPS, Wi-Fi, basestasjon), enhetsinformasjon, nettverksinformasjon osv.

+

Bruksformål: Tilby stedstjenester

+

Utvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Innhentet informasjon: Applikasjonsnavn, applikasjonsversjon, enhetsinformasjon, nettverksinformasjon osv.

+

Bruksformål: Kartverktøy og gjengivelsesoptimalisering

+

Utvikler: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Innhentet informasjon: Enhetsidentifikatorer, grunnleggende enhetsinformasjon, installert programvareliste og nettverksinformasjon (se offisiell personvernpolicy for detaljer)

+

Bruksformål: Alipay-kontoinnlogging og betalingsanrop

+

Utvikler: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Innhentet informasjon: SDK/API-versjon, plattform, tidsstempel, appidentifikator, appversjon, enhetsprodusent, OS-versjon, lokalitet, tidssone, nettverksstatus (Wi-Fi osv.), nettverkslogger, krasj- og bruksdata, IP-adresse osv. (se offisiell personvernpolicy for detaljer)

+

Bruksformål: Appkvalitetsovervåking og datarapporteringstjeneste

+

Utvikler: Shenzhen Tencent Computer Systems Company Limited

+

Innsamlingsmetode: SDKs egen innsamling

+

Lenke til personvernpolicy: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Beskyttelse av mindreårige

+

Brukere av våre produkter og tjenester kan inkludere mindreårige under 18 år. Mindreårige brukere bør søke råd fra sine foreldre eller foresatte angående denne Personvernpolicyen før de bruker våre produkter, og bruke våre tjenester eller gi din informasjon til oss etter å ha innhentet samtykke fra og under veiledning av sine foreldre eller foresatte. Foresatte for mindreårige som har spørsmål kan kontakte oss gjennom kontaktdetaljene i denne Personvernpolicyen.

+

Hvis du ikke samtykker i innsamlingen av ovennevnte informasjon av ovennevnte tredjepartstjenesteleverandører, vennligst slutt å bruke Programvaren umiddelbart. Under din bruk av Programvaren vil disse tredjepartene samle inn og behandle relevant informasjon i samsvar med sine egne personvernpolicyer for å tilby noen funksjoner, reklame og andre tjenester. Hvis informasjonen lekkes på grunn av innsamlingen av ovennevnte informasjon av den relevante tredjepartstjenesteleverandøren, skal den relevante tredjepartstjenesteleverandøren bære det tilsvarende juridiske ansvaret.

+ +

10. Gyldig og oppdatert Personvernpolicy

+

1. Denne Personvernpolicyen er gyldig fra publiseringsdatoen.

+

2. Etter hvert som virksomheten vår utvikler seg og endres, kan vår Personvernpolicy endre seg. Vi forbeholder oss retten til å endre vår personvernpolicy når som helst, så vennligst sjekk tilbake ofte. Hvis vi gjør endringer i vår Personvernpolicy, vil vi publisere disse oppdateringene på vår nettside, i apper og der vi anser det hensiktsmessig for å holde deg informert. Hvis personvernpolicyen oppdateres, trer den i kraft fra oppdateringsdatoen. Din fortsatte bruk av våre produkter eller tjenester betyr at du godtar vår endrede Personvernpolicy.

+ +

11. Hvordan kontakte oss

+

Saitong Industries Inc ble etablert 22. november 2024, registrert adresse: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Hvis du ønsker å vite mer om vårt selskap og plattform, kan du kontakte oss gjennom kontaktinformasjonen som er gitt i denne policyen (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/nb/user_agreement.html b/doc/nb/user_agreement.html new file mode 100644 index 000000000..611d128b3 --- /dev/null +++ b/doc/nb/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans brukeravtale + + + +
+
Norsk Bokmål
+ +

Voitrans brukeravtale

+ +

Disse bruksvilkårene forteller deg hvordan du får tilgang til og bruker Voitrans-applikasjonen og nettbaserte tjenester ("Tjenestene"). Saitong Industries Inc. (heretter kalt "Saitong") minner herved brukerne om å lese nøye og fullt ut forstå denne brukeravtalen (heretter kalt "Avtalen"). Brukere bør lese nøye og fullt ut forstå vilkårene i denne Avtalen. Les nøye og velg om du godtar eller ikke godtar denne Avtalen. Din bruk av Voitrans APP (heretter kalt "Appen" eller "Programvaren") vil bli ansett som aksept av denne Avtalen, og du samtykker i å være bundet av vilkårene i denne Avtalen. Hvis du ikke er enig i denne Avtalen, skal du ikke bruke Appen.

+

Saitong forbeholder seg retten til å endre denne Avtalen, og de oppdaterte vilkårene i Avtalen vil bli publisert i denne appen, gjeldende fra publiseringsdatoen.

+ +

1. Generelle regler

+

1.1 Denne appen er programvare levert av Saitong for tilkobling av hodetelefonprodukter utgitt av Saitong og dets partnerselskaper. Eierskap og driftsrettigheter til programvaren og relaterte tjenester tilhører i sin helhet Saitong.

+

1.2 Denne Avtalen er en avtale mellom deg (heretter kalt "Brukeren") og selskapet og dets partnere og driftspartnere (heretter kalt "Partnere") vedrørende brukerens bruk av Appen og relaterte tjenester.

+

1.3 Programvaren og tjenestene inkluderer:

+

1.3.1 Den leverte programvaren tilbyr Voitrans-brukere Voitrans-tilkobling og -binding, funksjonsinnstillingsadministrasjon og andre programvaretjenester, avhengig av de faktiske programvaretjenestene som leveres av Appen.

+

1.3.2 Oppdateringer, oppgraderinger og andre tjenester for programvaren.

+ +

2. Omfang av programvarelisens

+

2.1 Vi gir brukeren en personlig, ikke-overførbar, ikke-underlisensierbar og ikke-eksklusiv lisens til Programvaren.

+

2.2 Brukere kan installere, bruke, vise og kjøre programvaren på én enkelt mobil terminalenhet for ikke-kommersielle formål. Brukeren skal imidlertid ikke installere, bruke eller kjøre programvaren for kommersielle driftsformål, kopiere, endre, modifisere, koble til eller kjøre programvaren eller dataene som er lagret i minnet til enhver terminalenhet under programvarens drift, eller interaksjonsdataene mellom klienten og serveren under programvarens drift, eller opprette noen avledede verk. Dette inkluderer, men er ikke begrenset til, bruk av programtillegg, tillegg eller uautoriserte tredjepartsverktøy/-tjenester for tilgang til Programvaren og relaterte systemer. For kommersielt salg, reproduksjon og distribusjon, som programvareforhåndsinstallasjon og -pakking, må skriftlig autorisasjon og tillatelse innhentes fra Saitong.

+

2.3 Brukeren skal ikke installere Programvaren på andre terminalenheter uten uttrykkelig tillatelse fra Saitong, inkludert, men ikke begrenset til, TV-er, digitale dekodere, spillkonsoller og andre enheter.

+

2.4 Med unntak av det som uttrykkelig er autorisert i denne Avtalen, gis ingen andre rettigheter til Brukeren, og Brukeren skal innhente skriftlig samtykke for å bruke andre rettigheter.

+ +

3. Programvareoppgradering

+

3.1 Brukeren må velge programvareversjonen som er egnet for konfigurasjonen til den installerte terminalenheten. Ellers skal programvareproblemer, enhetsproblemer eller skader forårsaket av en programvareversjon som ikke er egnet for enhetstypen, være brukerens eget ansvar.

+

3.2 For å forbedre brukeropplevelsen og forbedre tjenesteinnholdet har Saitong rett til å levere erstatnings-, endrings- og oppgraderingsversjoner av programvaren fra tid til annen. Funksjonen "Oppgraderingspåminnelse" er aktivert som standard for brukere. Avhengig av de forskjellige programvareversjonene som brukes av brukerne, gir Saitong brukerne muligheten til å aktivere denne funksjonen. Etter utgivelsen av en ny versjon av programvaren garanterer ikke Saitong fortsatt tilgjengelighet av den gamle versjonen av programvaren.

+ +

4. Bruksspesifikasjon

+

4.1 Brukere kan bruke Programvaren og Tjenestene i samsvar med denne Avtalen forutsatt at de overholder loven og denne Avtalen, og brukere skal ikke utføre følgende handlinger:

+

4.1.1 Slette all opphavsrettsinformasjon på Programvaren og andre kopier, og modifisere, slette eller omgå de tekniske tiltakene som Programvaren har satt opp for å beskytte immaterielle rettigheter.

+

4.1.2 Reversere Programvaren, som demontering, dekompilering eller andre forsøk på å skaffe Programvarens kildekode.

+

4.1.3 Ved å modifisere eller forfalske instruksjoner og data i programvarens drift, legge til, slette eller endre programvarens funksjon eller driftseffekt, eller programvare eller metoder som skal brukes til ovennevnte formål for å drive eller spre til offentligheten, uansett om disse handlingene er for kommersielle formål.

+

4.1.4 Bruke programvaren for enhver atferd som setter nettverkssikkerheten i fare, inkludert, men ikke begrenset til: bruk av uautoriserte data eller tilgang til uautoriserte servere/kontoer; tilgang til offentlige nettverk eller andre operativsystemer uten tillatelse og sletting, endring eller tillegg av lagret informasjon; uautoriserte forsøk på å undersøke, skanne eller teste svakhetene i programvarens system eller nettverk eller andre handlinger som undergraver nettverkssikkerheten; forsøk på å forstyrre eller ødelegge normal drift av programvaresystemet eller nettstedet, bevisst spredning av skadelige programmer eller virus og andre handlinger som forstyrrer normale nettverksinformasjonstjenester; forfalskning av TCP/IP-pakkenavn eller deler av navn.

+

4.1.6 Uten skriftlig samtykke fra Selskapet utfører brukeren vilkårlig følgende handlinger med programvaren og informasjonen i den, inkludert, men ikke begrenset til: bruk, utleie, utlån, kopiering, modifisering, lenking, opptrykk, kompilering, publisering, utgivelse, opprettelse av speilsider, utvikling av avledede produkter, verk, tjenester, programtillegg, kompatibilitet, sammenkobling osv., ved hjelp av Programvaren.

+

4.1.7 Bruke Programvaren til å publisere, overføre, distribuere og lagre innhold som bryter med dine lokale lover.

+

4.1.8 Bruke programvaren til å publisere, overføre, spre og lagre innhold som krenker andres immaterielle rettigheter, forretningshemmeligheter og andre legitime rettigheter.

+

4.1.9 Bruke denne programvaren til å publisere, overføre og spre reklameinformasjon og søppelinformasjon i store mengder.

+

4.1.10 Bruke Programvaren og andre Tjenester på noen ulovlig måte, for noe ulovlig formål eller på noen måte som er uforenlig med den lisensierte bruken av denne Avtalen.

+

4.2 Spesifikasjon for informasjonspublisering

+

4.2.1 Hvis du bruker programvaren til å publisere informasjonsinnhold (hvis aktuelt), bør du garantere at du eier de immaterielle rettighetene til informasjonsinnholdet du har lastet opp eller har fått lovlig autorisasjon, og at ingen av dine handlinger ved bruk av programvaren og tjenestene krenker de legitime rettighetene og interessene til noen tredjepart.

+

4.2.2 Ved bruk av Programvaren skal brukeren ikke bruke Programvaren til å delta i følgende aktiviteter, inkludert, men ikke begrenset til:

+

4.2.2.1 Opprette, kopiere, publisere, spre og lagre innhold som bryter med lokale nasjonale lover og forskrifter.

+

4.2.2.2 Publisere, overføre, spre og lagre innhold som krenker andres lovlige rettigheter som omdømme, portrett, immaterielle rettigheter og forretningshemmeligheter.

+

4.2.2.3 Fabrikkere fakta, skjule sannheten for å villede eller lure andre.

+

4.2.2.4 Publisere, overføre og spre reklameinformasjon og søppelinformasjon.

+

4.2.2.5 Delta i andre handlinger i strid med lokale lover og forskrifter.

+

4.2.3 Du kan ikke utføre noen kommersielle aktiviteter som reklame og salg av varer i Programvaren uten tillatelse fra Selskapet.

+

4.3 Brukeren forstår og samtykker til at:

+

4.3.1 Saitong vil avgjøre om brukeren er mistenkt for å bryte ovennevnte bruksspesifikasjoner, og basert på resultatene av vurderingen, suspendere eller avslutte din lisens til å bruke eller iverksette andre restriktive tiltak som kan iverksettes i samsvar med denne avtalen.

+

4.3.2 For brukerens bruk av den lisensierte programvaren publisert mistenkt ulovlig eller mistenkt krenkelse av andres lovlige rettigheter eller brudd på denne Avtalen, vil informasjonen bli slettet direkte.

+

4.3.3 Hvis brukerens brudd på ovennevnte bruksregler forårsaker skade for tredjeparter, må du bære juridisk ansvar selvstendig i eget navn, og du bør sikre at Saitong holdes skadesløs fra tap eller økte kostnader.

+

4.3.4 Hvis brukeren bryter relevante lovbestemmelser eller avtaler, som forårsaker tap for Saitong, eller blir utsatt for krav fra tredjeparter, eller blir straffet av administrativ myndighet, skal brukeren kompensere tap og/eller utgifter påført Saitong, inkludert rimelige advokathonorarer, etterforskning og bevisinnsamlingskostnader.

+ +

5. Beskrivelse av tredjepartstjenester

+

5.1 Brukeren forstår og samtykker til at programvaresystemet kan inneholde tjenester levert av Selskapets tilknyttede selskaper eller tredjeparter, og at Selskapet kun tilbyr relevante funksjonsmoduler i systemet for brukernes bekvemmelighet og gir tilgang til tredjepartstjenester.

+

5.2 Enten tredjepartstjenestene er forhåndsinnstilt i programvaresystemets tjenester, eller åpnes eller bestilles av brukerne selv, forstår og samtykker brukerne til at Saitong ikke gir noen uttrykkelig eller underforstått garanti for lovligheten og effektiviteten til tredjepartstjenesteleverandørene eller brukerne, samt lovligheten, nøyaktigheten, effektiviteten og sikkerheten til tredjepartstjenestene.

+

5.3 Selskapet overvåker, kontrollerer eller gir ingen garanti av noe slag for, eller påtar seg noe ansvar for, tredjepartstjenester.

+

5.4 Enhver tvist eller uenighet mellom brukeren og tredjepartstjenesteleverandøren skal løses av Brukeren og tredjeparten i samsvar med tredjepartstjenesteleverandørens forretningsprosess og forretningsnormer, og selskapet skal ikke påta seg noe ansvar.

+ +

6. Personvernpolicy og beskyttelse av personlig informasjon

+

6.1 Saitong forplikter seg til å beskytte brukernes personvern i samsvar med personvernpolicyen, se: Voitrans personvernpolicy.

+ +

7. Ansvar for avtalebrudd

+

7.1 Saitong har rett til å vurdere om brukerens atferd er i samsvar med bestemmelsene i denne Avtalen. Hvis det anses at Brukeren har brutt relevante lover og forskrifter eller bestemmelsene i denne Avtalen og relaterte regler, har Saitong, avhengig av alvorlighetsgraden av brukerens overtredelse, rett til å slette ulovlig informasjon, begrense, suspendere, avslutte brukerens bruk av Programvaretjenesten, forfølge brukerens juridiske ansvar og iverksette andre tiltak som Saitong anser hensiktsmessige. Hvis vi lider noe tap (inkludert, men ikke begrenset til, mottak av krav fra tredjeparter eller sanksjoner fra administrative myndigheter), skal Brukeren ha fullt ansvar.

+ +

8. Tjenerisikoer og ansvarsfraskrivelser

+

8.1 Vi ønsker å tilby tjenestestøtte med nåværende teknologi. Saitong garanterer ikke at Programvaretjenesten vil fungere uten avbrudd eller feil, at alle mangler ved Programvaretjenesten vil bli korrigert, eller at Programvaretjenesten vil oppfylle alle brukeres krav. Saitong påtar seg ikke noe ansvar for de resulterende konsekvensene.

+

8.2 Alle tap som brukeren lider på grunn av tredjeparter som kommunikasjonslinjefeil, tekniske problemer, nettverk, datamaskin terminalutstyrsfeil, systemustabilitet og andre force majeure-årsaker, kan ikke holdes ansvarlig for.

+

8.3 Saitong garanterer ikke lovligheten, ektheten, nøyaktigheten og effektiviteten til informasjonsinnholdet som er oppnådd gjennom programvaren (inkludert, men ikke begrenset til, tredjepartstjenesteinnhold), og Saitong påtar seg ikke noe ansvar for resultatene av noen atferd utført av brukere basert på spørring og visning.

+

8.4 Programvaren, som de fleste internett-programvarer, påvirkes av forskjeller i faktorer inkludert, men ikke begrenset til, brukerårsaker, nettverkstjenestekvalitet, sosialt miljø og andre faktorer, og kan utsettes for ulike sikkerhetsproblemer, som at andre bruker brukerinformasjon, som resulterer i trakassering i det virkelige liv; annen programvare lastet ned og installert av brukere eller andre nettsteder besøkt av brukere inneholder virus som "trojanske hester", som truer sikkerheten til brukernes terminalutstyrsinformasjon og data, og deretter påvirker normal bruk av programvaren. Brukere bør styrke bevisstheten om informasjonssikkerhet og beskyttelse av brukerdata, og være oppmerksom på å styrke passordbeskyttelse for å unngå tap og trakassering.

+

8.5 Når brukere bruker Programvaren eller krever at Saitong leverer spesifikke tjenester, kan Programvaren kalle tredjepartssystemer eller tredjepartsprogramvare for å støtte brukernes bruk eller tilgang, og resultatene av bruk eller tilgang leveres av tredjeparten. I tillegg til å overholde de relevante reglene i denne Avtalen, skal brukere også overholde avtaler og relaterte regler fra tredjeparten. Brukere må forstå og samtykke til at tredjeparter kan lese brukerdata ved bruk av tredjepartstjenester, og Saitong garanterer ikke sikkerheten, nøyaktigheten, effektiviteten og andre usikre risikoer ved resultater oppnådd gjennom tredjepartssystemer eller tredjepartsprogramvarestøtte, brukere bør utøve forsiktig vurdering, og Saitong påtar seg ikke noe ansvar for eventuelle tvister og skader forårsaket av dette.

+

8.6 For å garantere selskapets autonomi i forretningsutvikling og -tilpasning, kan selskapet endre eller avbryte tjenesten når som helst etter å ha varslet brukeren på en rimelig måte.

+

8.7 Med mindre det uttrykkelig er fastsatt i lover og forskrifter, vil Saitong gjøre sitt beste for å sikre at programvaren og den involverte teknologien og informasjonen er sikker, effektiv, nøyaktig og pålitelig, men begrenset av eksisterende teknologi forstår brukeren at Saitong ikke kan garantere dette.

+

8.8 Erstatning for personskade eller tilfeldige og indirekte økonomiske skader forårsaket av eller i forbindelse med noen av følgende omstendigheter, inkludert, men ikke begrenset til, tap av fortjeneste, tap av data, erstatning for forretningsavbrudd eller andre forretningsskader eller tap, skal bæres av Brukeren:

+

1) Bruk eller manglende evne til å bruke den lisensierte programvaren.

+

2) Uautorisert bruk av programvaren eller endring av brukerdata av tredjeparter.

+

3) Utgifter og tap pådratt av brukerens handlinger med programvaren.

+

4) Brukerens feiloppfatninger om programvaren.

+

5) Ethvert annet tap relatert til programvaren som ikke kan tilskrives Saitongs årsaker.

+

8.9 Brukeren samtykker i at Selskapet har rett til å suspendere, avbryte eller avslutte hele eller deler av Tjenesten til brukeren basert på krav fra rettslige, regulatoriske og tilsynsmyndigheter eller av egne forretningsgrunner. Saitong påtar seg ikke noe ansvar for dette.

+

8.10 Brukeren forstår og samtykker til at Selskapet vil bruke kommersielt rimelige anstrengelser for å sikre sikkerheten ved datalagring i Programvaren og Tjenestene, men selskapet kan ikke gi en fullstendig garanti, og Brukeren forstår at Selskapet ikke er ansvarlig for sletting eller lagrings- eller sikkerhetskopieringsfeil av data i Tjenesten.

+

8.11 I den grad det er tillatt ved lov, skal Utvikleren eller Leverandøren ikke være ansvarlig for noen direkte, indirekte, tilfeldige, spesielle eller følgeskader som oppstår fra bruken av Applikasjonen. Hvis brukeren har ytterligere behov, vennligst oppsøk et legitimt sykehus for grundig testing.

+ +

9. Erklæring om immaterielle rettigheter

+

9.1 Saitong er innehaveren av de immaterielle rettighetene til denne programvaren. Alle opphavsrettigheter, varemerker, patenter, forretningshemmeligheter og andre immaterielle rettigheter til programvaren, samt alt informasjonsinnhold relatert til programvaren (inkludert, men ikke begrenset til, tekst, bilder, lyd, video, grafikk, grensesnittdesign, layoutrammer, relevante data eller elektroniske dokumenter osv.) er beskyttet av lokale lover og forskrifter og tilsvarende internasjonale traktater.

+

9.2 Uten skriftlig samtykke fra Selskapet skal Brukeren ikke implementere, utnytte eller overføre ovennevnte immaterielle rettigheter for noe kommersielt eller ikke-kommersielt formål, eller tillate noen tredjepart, og Selskapet forbeholder seg retten til å forfølge juridisk ansvar for ovennevnte handlinger.

+ +

10. Avtaleendring

+

10.1 Saitong har rett til å endre vilkårene i denne Avtalen ved behov. Når vilkårene i Avtalen endres, vil de reviderte vilkårene i Avtalen bli publisert på den relevante siden. Hvis du ikke er enig i det endrede innholdet, bør brukeren ta initiativ til å kansellere denne tjenesten. Hvis Brukeren fortsetter å bruke Tjenestene, anses det som aksept av endringene i Avtalens vilkår.

+

10.2 Saitong forbeholder seg retten til å endre betalte tjenester, avgiftsstandarder, faktureringsmetoder, tjenesteavgifter og tjenestevilkår etter behov. Ved levering av tjenester kan vi belaste visse avgifter til brukere av noen tjenester nå eller i fremtiden. Hvis brukere nekter å betale slike avgifter, kan de ikke fortsette å bruke de relevante tjenestene etter at avgiftene begynner å gjelde.

+
+ + diff --git a/doc/nl/privacy_policy.html b/doc/nl/privacy_policy.html new file mode 100644 index 000000000..bf1a64801 --- /dev/null +++ b/doc/nl/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Privacybeleid + + + + +
+

Voitrans Privacybeleid

+

Laatst bijgewerkt: 27 mei 2025

+

Ingangsdatum: 27 mei 2025

+ +

Welkom bij het gebruik van de Voitrans-software en -diensten

+

1. Voitrans wordt aangeboden door Saitong Industries Inc. (hierna “het Bedrijf”). Voitrans kan gebruikers helpen bij het beheer van Bluetooth-apparaten en andere producten. Wij begrijpen het belang van persoonsgegevens voor onze gebruikers (hierna “u”) en dat effectieve bescherming van uw persoonsgegevens de hoeksteen is van een gezonde en duurzame ontwikkeling van onze activiteiten. Dank u voor uw gebruik en vertrouwen in Voitrans-producten of -diensten! Wij zijn ons er terdege van bewust dat dit vertrouwen niet gemakkelijk wordt verkregen. Wij hanteren de principes van openheid en transparantie om u onze regels voor de verwerking van uw persoonsgegevens uit te leggen. Wij verwerken uw persoonsgegevens op een wettige en rechtmatige manier en met duidelijke en redelijke doelen. Belangrijke opmerking: lees en begrijp dit Privacybeleid zorgvuldig voordat u onze producten of diensten gebruikt, zodat u passende keuzes kunt maken.

+

2. Dit Privacybeleid legt uit hoe wij uw persoonsgegevens verzamelen, gebruiken, opslaan en delen wanneer u Voitrans gebruikt. Persoonsgegevens zijn alle soorten informatie die elektronisch of op andere wijze worden vastgelegd en die een specifieke natuurlijke persoon kunnen identificeren of de activiteiten van een specifieke natuurlijke persoon kunnen weerspiegelen, alleen of in combinatie met andere informatie. Voitrans respecteert en beschermt de persoonlijke privacy van alle gebruikers. Tenzij anders bepaald in dit Privacybeleid, zal Voitrans deze informatie niet openbaar maken of aan derden verstrekken zonder uw voorafgaande toestemming.

+

3. Wanneer u een product of dienst van een derde partij gebruikt via een App Marketplace-product of -dienst, zijn uw persoonsgegevens onderworpen aan het privacybeleid van die derde partij.

+

4. Dit Privacybeleid van Voitrans kan van tijd tot tijd worden bijgewerkt. Door in te stemmen met de Voitrans Service Usage Agreement en Voitrans te gaan gebruiken, wordt u geacht met dit volledige Privacybeleid in te stemmen. Als u niet akkoord gaat met dit Privacybeleid, gebruik dan geen Voitrans-software en -diensten.

+

5. Om de effectiviteit van relevante diensten te analyseren en te meten, zullen wij uw persoonsgegevens gebruiken en openbaar maken in overeenstemming met de bepalingen van dit Privacybeleid.

+ +

Dit Privacybeleid helpt u het volgende te begrijpen:

+
    +
  • 1 De informatie die wij verzamelen
  • +
  • 2 Opslag van informatie
  • +
  • 3 Informatiebeveiliging
  • +
  • 4 Hoe wij de verzamelde informatie gebruiken
  • +
  • 5 Delen van informatie
  • +
  • 6 Hoe u uw persoonsgegevens beheert
  • +
  • 7 Toelichting op app-machtigingen
  • +
  • 8 Toegang tot SDK’s van derden
  • +
  • 9 Bescherming van minderjarigen
  • +
  • 10 Geldigheid en updates van het Privacybeleid
  • +
  • 11 Hoe u contact met ons opneemt
  • +
+ +

1. De informatie die wij verzamelen

+

1. Wanneer u Voitrans gaat gebruiken, beginnen wij gegevens te verzamelen over uw gebruik van de applicatie

+

2. Voitrans kan via rechtmatige middelen persoonsgegevens over u verkrijgen van derden of zakelijke partners

+

3. Om u betere producten en diensten te bieden, u netwerkbeveiliging te geven tijdens gebruik, de normale werking van producten te waarborgen en te optimaliseren en te verbeteren, zullen wij, nadat u actief akkoord bent gegaan met dit privacybeleid, naast de persoonsgegevens die nodig zijn om de basisfuncties van de app te laten werken overeenkomstig wet- en regelgeving, ook andere persoonsgegevens van u verzamelen:

+

3.1 Om risicogebruikers te identificeren, de authenticiteit van gebruikers te beoordelen en fraude te voorkomen, lezen wij telkens wanneer u de software opent apparaatinformatie, waaronder: (apparaatmodel, MAC-adres van het apparaat, unieke apparaat-ID (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, enz.) MEID, serienummer, SSID en BSSID van Wi‑Fi), Bluetooth-adres, versie van het besturingssysteem, naam van het besturingssysteem, gebruikersaccount en wachtwoordinformatie voor inloggen;

+

3.2 Wanneer u onze producten en diensten gebruikt, kunnen wij bepaalde informatie verzamelen via netwerkloggegevens of bepaalde programma’s en software, waaronder: details over het gebruik van producten en diensten (zoals het tijdstip waarop u de app opent, de gebruiksduur en het adres van de bezochte pagina); apparaatgebeurtenissen (zoals crashes, systeemactiviteit, enz.) om uw apparaat te optimaliseren en onze diensten te verbeteren;

+

3.3 Om applicaties te identificeren waarbij het apparaat risico loopt en om veiligere functionaliteit te bieden, moeten wij uw applicatielijst/lijst met geïnstalleerde apps verkrijgen om de normale werking van het product te waarborgen en de apparaatbeveiliging te beschermen.

+

3.4 Om het gebruik van app-functies te analyseren en de authenticiteit van gebruikers te bepalen, moeten wij statistieken bijhouden en de bovenstaande apparaatinfo verzamelen, waaronder het MAC-adres en de unieke apparaat-ID, wanneer uw apparaat in gebruik is.

+

3.5 Apparaatsignaal: netwerkstatus van het apparaat dat u gebruikt, Wi‑Fi-toegangspuntinformatie, enz.

+

3.6 Locatie-informatie: wij kunnen GPS, Wi‑Fi of andere technische middelen gebruiken om informatie over uw locatie te verzamelen en te verwerken, bijvoorbeeld om lokale informatie bij te werken en inhoudsdiensten te leveren.

+

Voor meer informatie klikt u op “Lijst met verzamelde persoonsgegevens”.

+ +

1. Voor meer gevoelige persoonsgegevens in bovenstaande informatie, zoals apparaatinfo van de gebruiker (IMEI-nummer, belstatus en identificatienummer), GPS-locatiegegevens, foto-/mediacontent en bestandsrechten, vragen wij uw toestemming vóór het verzamelen. Voor sommige niet-gevoelige informatie kan de verzameling standaard en automatisch plaatsvinden. U kunt onze verzameling van relevante informatie of het gebruik van bepaalde machtigingen beperken via de instellingen van uw mobiele apparaat. Wanneer u onze toegang tot een bepaalde machtiging beperkt, kunnen wij mogelijk de bijbehorende diensten niet meer leveren en uw bijbehorende informatie niet meer verwerken.

+

2. Wij verzamelen geen identiteitskaartnummer, biometrische gegevens, bankrekeningnummer, eigendomsinformatie, kredietinformatie, gezondheids- en fysiologische informatie en andere gevoelige persoonsgegevens.

+

3. Over gevoelige machtigingen: om de app-functies correct te gebruiken, moet het product de volgende machtigingen verkrijgen om functionele diensten te kunnen leveren.

+ +

1 Machtiging voor lezen en schrijven van opslag

+

1 Hoe te verkrijgen: pop-upmelding; wanneer de machtiging wordt gevraagd, klikt de gebruiker actief op akkoord en gebruikt de app deze machtiging

+

2 Doel en scope: gebruikt om cachebestanden en miniaturen te scannen, muziekbronnen en productafbeeldingen te laden en deze in de app-interface te tonen zodat gebruikers ze kunnen bekijken en gebruiken

+ +

2 Machtiging voor lijst met geïnstalleerde apps

+

1 Hoe te verkrijgen: pop-upmelding; wanneer de machtiging wordt gevraagd, klikt de gebruiker actief op akkoord en gebruikt de app deze machtiging

+

2 Doel en scope: wanneer de app advertentiepromotiediensten gebruikt, heeft het advertentieplatform van derden (Youmon +SDK) de machtiging “lijst met geïnstalleerde apps” nodig om te voorkomen dat apps worden gepusht die de gebruiker al heeft en om de gebruikerservaring te verbeteren.

+ +

3 Machtiging voor apparaatstatusinformatie

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 Hoe te verkrijgen: pop-upmelding; wanneer de machtiging wordt gevraagd, klikt de gebruiker actief op akkoord en gebruikt de app deze machtiging

+

2 Doel en scope: om het gebruik van functies te analyseren en de authenticiteit van de gebruiker te beoordelen, kunnen wij deze machtiging synchroniseren met SDK’s van derden, waaronder Autonavi SDK, Youmon +SDK, enz.

+ +

4 Toegang tot locatie-informatie

+

1 Hoe te verkrijgen: pop-upmelding; de gebruiker gebruikt deze machtiging alleen nadat hij/zij actief op akkoord heeft geklikt

+

2 Doel en scope: wanneer de app GPS, Wi‑Fi of andere functies nodig heeft, moet het product uw locatie en informatie verzamelen om Bluetooth-apparaten in de buurt te zoeken.

+

Opmerking: voor meer app-machtigingen zie dit document “Privacybeleid” sectie 7 “Toelichting op app-machtigingen”.

+ +

2. Opslag van informatie

+

1. Waar de informatie wordt opgeslagen

+

De persoonsgegevens die wij in de Volksrepubliek China verzamelen en genereren, worden opgeslagen op onze servers en/of die van onze gelieerde ondernemingen.

+

2. Opslag en verwerking

+

Wij bewaren uw persoonsgegevens alleen zolang als nodig is om het doel te bereiken of zolang als wettelijk vereist. Nadat u dit product niet meer gebruikt, stoppen wij onmiddellijk met het verzamelen en verwerken van uw persoonsgegevens en app-gegevens. Na afloop van de bovenstaande periode verwijderen of anonimiseren wij de persoonsgegevens die u aan ons heeft verstrekt.

+

Naast noodzakelijke functies moet Voitrans overeenkomstige systeemmachtigingen aanvragen. De cloudserver slaat geen persoonsgegevens van gebruikers op, en de gebruikte SDK’s van derden worden door de dienstverlener geanonimiseerd en gedeïdentificeerd (Amu Statistics SDK, Autonavi SDK), zodat gebruikers niet kunnen worden gevolgd. Informatie die op de telefoon van de gebruiker is opgeslagen, wordt automatisch verwijderd wanneer de gebruiker Voitrans verwijdert of de cache wist.

+ +

3. Informatiebeveiliging

+

1. Voitrans bewaart en beschermt uw persoonsgegevens met beveiligingsmaatregelen en -technologieën volgens industrienormen, zoals authenticatie, gegevensversleuteling, beperkte toegang tot datacenters en andere maatregelen om te zorgen dat uw informatie beschermd is tegen openbaarmaking, wijziging en vernietiging. Let op: geen enkele maatregel kan 100% veiligheid garanderen.

+

2. Bescherm uw persoonsgegevens wanneer u de diensten van Voitrans gebruikt. Als u merkt dat uw persoonsgegevens zijn gecompromitteerd, neem dan onmiddellijk contact met ons op zodat wij passende maatregelen kunnen nemen.

+ +

4. Hoe wij de verzamelde informatie gebruiken

+

1. Bij het uitvoeren van de bedrijfsfuncties van de app kunnen wij uw persoonsgegevens gebruiken om de integriteit en veiligheid van de producten en diensten die wij aan u leveren te waarborgen;

+

2. Op basis van de verzamelde informatie begrijpen wij uw gebruiksgewoonten en beoordelen wij met behulp van data-analyse de acceptatie van diensten, uw gebruiksgewoonten enz., om nieuwe producten, functies en diensten te testen en te creëren, het serviceniveau te verbeteren en bestaande diensten te optimaliseren en nieuwe diensten te ontwikkelen;

+

3. Wij kunnen uw persoonsgegevens gebruiken voor klantonderzoeken over producten en diensten, voor het verzenden van meldingen over producten en diensten en voor commerciële promotie;

+

4. Wij kunnen uw informatie gebruiken voor interne analyse en onderzoek met betrekking tot de app;

+ +

5. Delen van informatie

+

Op dit moment zullen wij uw persoonsgegevens niet actief delen of overdragen aan derden buiten het bedrijf. Als er toch sprake is van delen of overdracht van uw persoonsgegevens, zullen wij uw uitdrukkelijke toestemming verkrijgen of bevestigen dat de derde partij uw uitdrukkelijke toestemming voor deze handeling heeft verkregen.

+

Wij zullen de door ons verzamelde persoonsgegevens niet openbaar maken. Indien openbare bekendmaking noodzakelijk is, informeren wij u over het doel van de openbaarmaking, het type gegevens dat wordt bekendgemaakt en eventuele gevoelige informatie die daarbij betrokken kan zijn, en verkrijgen wij uw uitdrukkelijke toestemming.

+

Omdat onze activiteiten zich blijven ontwikkelen, kunnen er fusies, overnames, activa-overdrachten en andere transacties plaatsvinden. Wij zullen u hierover informeren overeenkomstig wet- en regelgeving en met een beschermingsniveau dat niet lager is dan de normen in dit document, om uw persoonsgegevens te blijven beschermen of een nieuwe verantwoordelijke te verplichten uw persoonsgegevens te blijven beschermen.

+

Daarnaast kunnen wij, overeenkomstig relevante wet- en regelgeving en nationale normen, persoonsgegevens delen, overdragen of openbaar maken zonder voorafgaande toestemming van de betrokkene in de volgende gevallen:

+
    +
  • 1 Direct gerelateerd aan nationale veiligheid en defensieveiligheid;
  • +
  • 2 Direct gerelateerd aan openbare veiligheid, volksgezondheid of belangrijke publieke belangen;
  • +
  • 3 Direct gerelateerd aan strafrechtelijk onderzoek, vervolging, berechting en tenuitvoerlegging van vonnissen;
  • +
  • 4 Om het leven, eigendom en andere belangrijke legitieme rechten en belangen van de betrokkene of andere personen te beschermen, maar het is moeilijk om toestemming te verkrijgen;
  • +
  • 5 Persoonsgegevens die door de betrokkene zelf openbaar zijn gemaakt;
  • +
  • 6 Verzamelen van persoonsgegevens uit wettelijk openbaar gemaakte informatie, zoals rechtmatige nieuwsberichten, overheidsinformatie en andere kanalen.
  • +
+ +

6. Hoe u uw persoonsgegevens beheert

+

In overeenstemming met de relevante wet- en regelgeving en normen van China, evenals gangbare praktijken in andere landen en regio’s, garanderen wij dat u de volgende rechten met betrekking tot uw persoonsgegevens kunt uitoefenen:

+ +

1. Uw persoonsgegevens corrigeren

+

Als u merkt dat er een fout zit in uw persoonsgegevens die door ons worden verwerkt, heeft u het recht om onjuiste of onvolledige informatie te corrigeren of bij te werken. Als u dit niet zelfstandig in het accountcentrum kunt doen, kunt u ons e-mailen via saitong.voitrans@gmail.com

+ +

2. Uw persoonsgegevens verwijderen

+

In de volgende gevallen kunt u ons verzoeken uw persoonsgegevens te verwijderen:

+
    +
  • Als wij persoonsgegevens verwerken in strijd met wet- en regelgeving;
  • +
  • Als wij uw persoonsgegevens verzamelen en gebruiken zonder uw toestemming;
  • +
  • Als onze verwerking van persoonsgegevens in strijd is met onze afspraken met u;
  • +
  • Als u onze producten of diensten niet langer gebruikt;
  • +
  • Als wij u geen producten of diensten meer leveren.
  • +
+

Neem contact met ons op via saitong.voitrans@gmail.com. Wij verwerken uw verzoek en sturen u een reactie binnen 30 werkdagen na ontvangst.

+ +

3. De reikwijdte van uw toestemming wijzigen

+

U kunt contact met ons opnemen via e-mail: saitong.voitrans@gmail.com. Op uw verzoek zullen wij uw persoonsgegevens niet langer verzamelen, gebruiken of openbaar maken. Houd er rekening mee dat het intrekken van toestemming of het verwijderen van uw persoonsgegevens invloed kan hebben op het gebruik van bepaalde diensten.

+ +

4 Persoonsgegevens inzien en kopiëren

+

U kunt, overeenkomstig de relevante wetgeving, uw imei (serienummer van de telefoon) of oaid of Android ID verstrekken, samen met accountinformatie en andere gegevens, en bij ons een aanvraag indienen om uw persoonsgegevens in te zien en te kopiëren. U kunt ons contacteren via e-mail: 3514406195@qq.com

+ +

5. Reactie op uw verzoek

+

Om veiligheidsredenen kan het nodig zijn dat u een schriftelijk verzoek indient of op een andere manier uw identiteit aantoont. Wij kunnen u vragen uw identiteit te verifiëren voordat wij uw verzoek verwerken. Op redelijke verzoeken zullen wij tijdig reageren en ze afhandelen. Wij kunnen verzoeken afwijzen die onnodig herhaald zijn, te veel technische middelen vereisen (bijvoorbeeld het ontwikkelen van nieuwe systemen of fundamentele wijzigingen in bestaande praktijken), een risico vormen voor de legitieme belangen van anderen of zeer onpraktisch zijn.

+

In de volgende omstandigheden kunnen wij, op basis van wet- en regelgeving, niet op uw verzoek reageren:

+
    +
  • Gerelateerd aan nationale veiligheid en defensieveiligheid;
  • +
  • In verband met strafrechtelijk onderzoek, vervolging en berechting;
  • +
  • Er is voldoende bewijs dat u te kwader trouw bent of misbruik maakt van rechten;
  • +
  • Het beantwoorden van uw verzoek zou ernstige schade toebrengen aan de legitieme rechten en belangen van u of anderen.
  • +
+ +

6. Account opzeggen

+

De gebruiker kan in de app de handeling [account opzeggen] uitvoeren. Stappen:

+
    +
  1. Ga naar de pagina [My]
  2. +
  3. Klik op de knop [Settings] rechtsboven
  4. +
  5. Klik op [Cancel account] om te bevestigen
  6. +
+

Nadat u uw account opzegt, wordt de informatie over het gebruikersaccount gewist

+ +

7. Toelichting op app-machtigingen

+

Om betere producten en diensten te leveren, vragen wij bij gebruik van de software de volgende machtigingen aan. Wanneer u de startpagina opent of een functie gebruikt, wordt autorisatie gevraagd. Als u weigert, kunnen sommige functies mogelijk niet normaal werken. De specifieke doelen en meldingen van machtigingen worden als volgt beschreven:

+ +

1 Locatiemachtigingen:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

via Wi‑Fi of mobiele basisstations wordt locatie-informatie (breedtegraad en lengtegraad) van de gebruiker verkregen

+

Wanneer u Voitrans gebruikt, zoeken wij uw gekoppelde Bluetooth-apparaat op basis van uw geografische locatie. Tegelijkertijd kunnen wij, om stabielere diensten te bieden, producten te optimaliseren en de ervaring te verbeteren, bovenstaande informatie delen met SDK’s van derden zoals Youmon en Autonavi om operationele gegevens en functionaliteiten van Voitrans te verkrijgen.

+

Meldingswijze: bij het voor het eerst starten van de app wordt een machtigingsprompt weergegeven en moet de gebruiker akkoord bevestigen. Zie ook de beschrijvingen in de Gebruikersovereenkomst en het Privacybeleid.

+ +

2 Opslagmachtigingen

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Deze machtiging is vereist wanneer u een applicatie opent om app-beheerfuncties uit te voeren.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

3 Netwerkmachtigingen:

+

android.permission.INTERNET

+

Deze machtigingen zijn vereist voor de informatiediensten en versie-upgradediensten van Voitrans. Om de gebruikerservaring te verbeteren en de servicecapaciteiten te optimaliseren, kunnen SDK’s van derden deze machtigingen ook gebruiken.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

4 Machtigingen voor netwerkstatus:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Wordt gebruikt om te bepalen of de huidige netwerkverbinding geldig is, om de huidige netwerkomgeving (bijv. 4G) te beoordelen en om te melden wanneer de netwerkomgeving verandert, wat het laden van informatie kan beïnvloeden. Deze machtiging wordt gevraagd wanneer u Voitrans gebruikt.

+

Wijzigingen in de netwerkstatus beïnvloeden het uploaden en laden van gegevens. Daarom kan toegang tot de netwerkstatusmachtiging ook door platformen van derden worden gebruikt.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

5 Machtiging voor takenlijst:

+

android.permission.GET_TASKS

+

Deze machtiging wordt gebruikt om de app-lijst te verkrijgen voor de softwarebeheerfunctie. Wanneer u de softwarebeheerfunctie gebruikt, moet de lijst met geïnstalleerde apps op de telefoon worden gelezen.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

6 Machtiging voor MAC-adres

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Wanneer u Voitrans gebruikt, kan de app MAC-adresmachtigingen nodig hebben:

+

Wanneer een app doelconversiegegevens moet rapporteren, kunnen platformen van derden zoals Youmon +SDK MAC gebruiken.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

7 Machtiging om audio op te nemen

+

android.permission.RECORD_AUDIO

+

Wanneer u de spraakinvoerfunctie van Voitrans gebruikt, is de machtiging voor audio-opname nodig. Deze wordt voornamelijk gebruikt voor spraakinvoer voor vertaling en andere gerelateerde functies.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid; indien nodig verschijnt er dynamisch een pop-up.

+ +

8 Machtiging voor Wi‑Fi SSID

+

Wanneer deze machtiging wordt gebruikt, leest de app de Wi‑Fi-SSID:

+

Doel en scope: wanneer de app data-analysediensten moet gebruiken, kunnen platformen van derden de “Wi‑Fi SSID” van het apparaat lezen om nauwkeurigere en effectievere functionaliteit te leveren.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

9 Bluetooth-toegang

+

Wanneer deze machtiging wordt gebruikt, gebruikt de app Bluetooth-machtigingen:

+

Doel en scope: zoeken en configureren van Bluetooth-accessoires, zoals Bluetooth-headsets, Bluetooth-horloges enz., zodat gebruikers ze gemakkelijk kunnen beheren

+

Meldingswijze: bij het voor het eerst starten van de app wordt een machtigingsprompt weergegeven en moet de gebruiker akkoord bevestigen. Zie ook de beschrijvingen in de Gebruikersovereenkomst en het Privacybeleid.

+ +

10 Machtiging voor Wi‑Fi BSSID

+

Wanneer de app gebruikers moet onderscheiden en identificeren om functionaliteit te leveren en statistieken bij te houden, leest zij de “Wi‑Fi BSSID” van het apparaat voor:

+

Doel en scope: 1) platformen van derden, zoals Youmeng SDK, Bugly SDK, Autonavi SDK

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

11 Machtiging om apps te installeren

+

android.permission.REQUEST_INSTALL_PACKAGES

+

De software gebruikt de machtiging om apps te installeren, voornamelijk zodat gebruikers een nieuwe versie kunnen installeren en nieuwe functies kunnen gebruiken wanneer er een nieuwe versie beschikbaar is.

+

Meldingswijze: beschrijving in de Gebruikersovereenkomst en het Privacybeleid.

+ +

12 Cameramachtiging

+

android.permission.CAMERA

+

Voitrans gebruikt cameramachtigingen om QR-codes te scannen en Bluetooth-apparaten zoals Bluetooth-headsets en horloges te koppelen.

+

Meldingswijze: bij het voor het eerst starten van de app wordt een machtigingsprompt weergegeven en moet de gebruiker akkoord bevestigen. Zie ook de beschrijvingen in de Gebruikersovereenkomst en het Privacybeleid.

+ +

Speciale opmerking:

+

1 De app integreert SDK’s van derden. Nadat de gebruiker toestemming heeft gegeven, kan de app op de achtergrond/voorgrond ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI en andere persoonsgegevens verzamelen;

+

Opmerking: zie voor meer informatie de onderstaande SDK-gerelateerde inhoud en machtigingen [VIII. Lijst met SDK’s van derden].

+ +

8. Toegang tot SDK’s van derden

+

1 Om de stabiele werking en functionele realisatie van onze client te waarborgen, zodat u meer diensten en functies kunt gebruiken en ervan kunt genieten, kan onze app software development kits (SDK’s) of vergelijkbare componenten van derden integreren. Deze derden verzamelen en verwerken relevante informatie overeenkomstig hun eigen privacybeleid om functies en advertentiediensten normaal te kunnen leveren. U kunt in het volgende gedeelte meer lezen over de regels voor gegevensverzameling en -verwerking van derden. Wij voeren strikte beveiligingstests uit op SDK’s van partners om de redelijke inzet en veiligheid van uw persoonsgegevens te beschermen. Let op: SDK’s van derden kunnen door versie-upgrades de soorten gegevensverwerking wijzigen. Raadpleeg het privacybeleid dat door de betreffende SDK’s van derden is gepubliceerd. Zie hieronder de details of bekijk de lijst met SDK’s van derden.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Verkregen informatie: apparaatnummer, IP-adres, apparaatsoftware-informatie, apparaatidentificatiecode (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, IMSI van SIM-kaart, IP, MAC-adres), apparaat-ID, regio, app-informatie gerelateerd aan het apparaat en andere servicegerelateerde loggegevens

+

Doel van gebruik: WeChat-inloggen en delen

+

Ontwikkelaar: Shenzhen Tencent Computer Systems Company Limited

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Verkregen informatie: app-naam, app-versie, apparaatmerk en -model, besturingssysteem, providerinformatie, schermresolutie, sensorinformatie (vector, acceleratie, druk, richting, geomagnetisch, gyroscoop, temperatuur, lichtsensor, NMEA-signaal), signaalsterkte-informatie van het apparaat

+

Doel van gebruik: navigatie via Amap

+

Ontwikkelaar: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Verkregen informatie: app-naam, app-versie, apparaatmerk en -model, besturingssysteem, netwerkinformatie, signaalsterkte van het apparaat, enz.

+

Doel van gebruik: kaartweergave en interactie

+

Ontwikkelaar: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Verkregen informatie: locatie-informatie (GPS, Wi‑Fi, basisstation), apparaatinformatie, netwerkinformatie, enz.

+

Doel van gebruik: locatie-diensten leveren

+

Ontwikkelaar: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Verkregen informatie: app-naam, app-versie, apparaatinformatie, netwerkinformatie, enz.

+

Doel van gebruik: kaarttools en optimalisatie van rendering

+

Ontwikkelaar: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Verkregen informatie: apparaat-ID’s, basisapparaatiinformatie, lijst met geïnstalleerde software en netwerkinformatie (zie het officiële privacybeleid voor details)

+

Doel van gebruik: Alipay-accountinloggen en het aanroepen van betalingen

+

Ontwikkelaar: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Verkregen informatie: SDK/API-versie, platform, tijdstempel, app-ID, app-versie, apparaatfabrikant, OS-versie, locale, tijdzone, netwerkstatus (Wi‑Fi, enz.), netwerklogboeken, crash- en gebruiksgegevens, IP-adres, enz. (zie het officiële privacybeleid voor details)

+

Doel van gebruik: monitoring van app-kwaliteit en gegevensrapportagedienst

+

Ontwikkelaar: Shenzhen Tencent Computer Systems Company Limited

+

Verzamelmethode: verzameling door de SDK zelf

+

Link naar privacybeleid: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Bescherming van minderjarigen

+

Gebruikers van onze producten en diensten kunnen minderjarigen onder de 18 jaar omvatten. Minderjarige gebruikers dienen vóór gebruik van onze producten advies in te winnen bij hun ouders of voogden over dit Privacybeleid en onze diensten alleen te gebruiken of informatie aan ons te verstrekken na toestemming en onder begeleiding van hun ouders of voogden. Voogden van minderjarigen met vragen kunnen contact met ons opnemen via de contactgegevens in dit Privacybeleid.

+

Als u niet akkoord gaat met de verzameling van bovenstaande informatie door de genoemde dienstverleners van derden, stop dan onmiddellijk met het gebruik van de software. Tijdens uw gebruik van de software zullen deze derden relevante informatie verzamelen en verwerken volgens hun eigen privacybeleid om bepaalde functies, advertenties en andere diensten te leveren. Als informatie lekt door de verzameling van dergelijke informatie door de betreffende derde partij, draagt die derde partij de bijbehorende wettelijke verantwoordelijkheid.

+ +

10. Geldigheid en updates van het Privacybeleid

+

1. Dit Privacybeleid is van kracht vanaf de publicatiedatum.

+

2. Naarmate onze activiteiten zich ontwikkelen en veranderen, kan ons Privacybeleid veranderen. Wij behouden ons het recht voor om dit beleid op elk moment te wijzigen, dus controleer het regelmatig. Als wij wijzigingen aanbrengen, zullen wij updates plaatsen op onze website, in apps en op andere plaatsen die wij passend achten om u te informeren. Als het Privacybeleid wordt bijgewerkt, treedt het in werking vanaf de datum van update. Als u onze producten of diensten blijft gebruiken, betekent dit dat u akkoord gaat met het gewijzigde Privacybeleid.

+ +

11. Hoe u contact met ons opneemt

+

Saitong Industries Inc is opgericht op 22 november 2024, geregistreerd adres: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Als u meer wilt weten over ons bedrijf en platform, kunt u contact met ons opnemen via de contactgegevens in dit beleid (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/nl/user_agreement.html b/doc/nl/user_agreement.html new file mode 100644 index 000000000..284042b64 --- /dev/null +++ b/doc/nl/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans Applicatie Gebruikersovereenkomst + + + +
+
Nederlands
+ +

Voitrans Applicatie Gebruikersprotocol

+ +

Deze Gebruiksvoorwaarden vertellen u hoe u toegang krijgt tot en gebruik maakt van de Voitrans Applicatie en online diensten (de "Diensten"). Saitong Industries Inc. (hierna "Saitong" genoemd) herinnert gebruikers er hierbij aan deze Gebruikersovereenkomst (hierna de "Overeenkomst" genoemd) zorgvuldig te lezen en volledig te begrijpen. Gebruikers dienen de voorwaarden van deze Overeenkomst zorgvuldig te lezen en volledig te begrijpen. Lees deze zorgvuldig door en kies of u deze Overeenkomst accepteert of niet accepteert. Uw gebruik van de Voitrans APP (hierna "de APP" of "de Software" genoemd) wordt beschouwd als acceptatie van deze Overeenkomst en u stemt ermee in gebonden te zijn aan de voorwaarden van deze Overeenkomst. Als u niet akkoord gaat met deze Overeenkomst, gebruik de APP dan niet.

+

Saitong behoudt zich het recht voor om deze Overeenkomst te wijzigen, en de bijgewerkte voorwaarden van de Overeenkomst zullen in deze APP worden gepubliceerd en zijn van kracht vanaf de datum van publicatie.

+ +

1. Algemene regels

+

1.1 Deze APP is de software die door Saitong wordt geleverd voor het verbinden van de headsetproducten die door Saitong en zijn partnerbedrijven worden uitgebracht. De eigendoms- en exploitatierechten van de software en gerelateerde diensten zijn volledig eigendom van Saitong.

+

1.2 Deze Overeenkomst is een overeenkomst tussen u (hierna de "Gebruiker" genoemd) en het bedrijf en zijn partners en operationele partners (hierna de "Partners" genoemd) met betrekking tot het gebruik van de APP en gerelateerde diensten door de Gebruiker.

+

1.3 De Software en diensten omvatten:

+

1.3.1 De geleverde software biedt Voitrans-gebruikers Voitrans-verbinding en -koppeling, beheer van functie-instellingen en andere softwarediensten, onderworpen aan de daadwerkelijke softwarediensten die door de APP worden geleverd.

+

1.3.2 Updates, upgrades en andere diensten van de software.

+ +

2. Omvang van de softwarelicentie

+

2.1 Wij verlenen de gebruiker een persoonlijke, niet-overdraagbare, niet-sublicentieerbare en niet-exclusieve licentie op de Software.

+

2.2 Gebruikers mogen de software installeren, gebruiken, weergeven en uitvoeren op een enkel mobiel eindapparaat voor niet-commerciële doeleinden. De gebruiker mag de software echter niet installeren, gebruiken of uitvoeren voor commerciële exploitatiedoeleinden, de software of de gegevens die in het geheugen van een eindapparaat worden opgeslagen tijdens de werking van de software of de interactiegegevens tussen de client en de server tijdens de werking van de software kopiëren, wijzigen, aanpassen, verbinden of uitvoeren, of afgeleide werken creëren. Dit omvat, maar is niet beperkt tot, het gebruik van plug-ins, extensies of ongeautoriseerde hulpmiddelen/diensten van derden om toegang te krijgen tot de Software en gerelateerde systemen. Voor commerciële verkoop, reproductie en distributie, zoals voorinstallatie en bundeling van software, moet schriftelijke autorisatie en toestemming worden verkregen.

+

2.3 De Gebruiker mag de Software niet installeren op andere eindapparaten zonder uitdrukkelijke toestemming van de maker, inclusief maar niet beperkt tot tv's, digitale set-top boxes, spelconsoles en andere apparaten.

+

2.4 Behalve de rechten die uitdrukkelijk door deze Overeenkomst zijn verleend, worden geen andere rechten aan de Gebruiker verleend, en de Gebruiker moet schriftelijke toestemming verkrijgen om andere rechten te gebruiken.

+ +

3. Software-upgrade

+

3.1 De gebruiker moet de softwareversie selecteren die geschikt is voor de configuratie van het geïnstalleerde eindapparaat. Anders zijn softwareproblemen, apparaatproblemen of schade veroorzaakt door een softwareversie die niet geschikt is voor het apparaattype uitsluitend de verantwoordelijkheid van de gebruiker.

+

3.2 Om de gebruikerservaring te verbeteren en de service-inhoud te verbeteren, heeft Saitong het recht om van tijd tot tijd vervangende, gewijzigde en geüpgrade versies van de software te leveren. De functie "Upgrade-herinnering" is standaard ingeschakeld voor gebruikers. Afhankelijk van de verschillende softwareversies die door gebruikers worden gebruikt, biedt Saitong gebruikers de optie om deze functie te activeren. Na de release van een nieuwe versie van de software garandeert Saitong niet de voortdurende beschikbaarheid van de oude versie van de software.

+ +

4. Gebruiksspecificatie

+

4.1 Gebruikers mogen de Software en Diensten gebruiken in overeenstemming met deze Overeenkomst onder de voorwaarde dat zij zich houden aan de wet en deze Overeenkomst, en gebruikers mogen de volgende handelingen niet verrichten:

+

4.1.1 Alle auteursrechtinformatie op de Software en andere kopieën verwijderen en de technische maatregelen die door de Software zijn ingesteld om intellectuele eigendomsrechten te beschermen, wijzigen, verwijderen of omzeilen.

+

4.1.2 Reverse engineering van de Software, zoals demontage, decompilatie of andere pogingen om de broncode van de Software te verkrijgen.

+

4.1.3 Door het wijzigen of vervalsen van instructies en gegevens in de werking van de software, het vergroten, verwijderen of wijzigen van de functie of het werkingseffect van de software, of software of methoden die voor bovengenoemde doeleinden moeten worden gebruikt om te exploiteren of te verspreiden onder het publiek, ongeacht of deze handelingen commerciële doeleinden hebben.

+

4.1.4 De software gebruiken voor gedrag dat de netwerkbeveiliging in gevaar brengt, inclusief maar niet beperkt tot: het gebruik van ongeautoriseerde gegevens of toegang tot ongeautoriseerde servers/accounts; zonder toestemming toegang krijgen tot openbare netwerken of andere besturingssystemen en opgeslagen informatie verwijderen, wijzigen of toevoegen; ongeautoriseerde pogingen om de zwakheden van het systeem of netwerk van de software te onderzoeken, scannen of testen of andere handelingen die de netwerkbeveiliging ondermijnen; pogingen om de normale werking van het softwaresysteem of de website te verstoren of te vernietigen, opzettelijk kwaadaardige programma's of virussen verspreiden en andere handelingen die normale netwerkinformatiediensten verstoren; het vervalsen van TCP/IP-pakketnamen of gedeeltelijke namen.

+

4.1.6 Zonder schriftelijke toestemming van het Bedrijf voert de gebruiker willekeurig de volgende handelingen uit met betrekking tot de software en de informatie daarin, inclusief maar niet beperkt tot: gebruiken, verhuren, uitlenen, kopiëren, wijzigen, linken, herdrukken, compileren, publiceren, uitgeven, spiegelsites oprichten, afgeleide producten, werken, diensten, plug-ins, extensies, compatibiliteit, interconnectie, enz. ontwikkelen, met behulp van de Software.

+

4.1.7 De Software gebruiken om inhoud te publiceren, verzenden, verspreiden en opslaan die in strijd is met uw lokale wetten.

+

4.1.8 De software gebruiken om inhoud te publiceren, verzenden, verspreiden en opslaan die inbreuk maakt op de intellectuele eigendomsrechten, handelsgeheimen en andere legitieme rechten van anderen.

+

4.1.9 Deze software gebruiken om in bulk reclame-informatie en ongewenste informatie te publiceren, verzenden en verspreiden.

+

4.1.10 De Software en andere Diensten gebruiken op een onwettige manier, voor een onwettig doel of op een manier die niet in overeenstemming is met het gelicentieerde gebruik van deze Overeenkomst.

+

4.2 Specificatie voor informatiepublicatie

+

4.2.1 Als u de software gebruikt om informatie-inhoud te publiceren (indien van toepassing), dient u te garanderen dat u de intellectuele eigendomsrechten bezit van de door u geüploade informatie-inhoud of dat u wettelijke autorisatie heeft verkregen, en dat elk gedrag van u bij het gebruik van de software en diensten geen inbreuk maakt op de legitieme rechten en belangen van derden.

+

4.2.2 Bij het gebruik van de Software mag de gebruiker de Software niet gebruiken om de volgende activiteiten uit te voeren, inclusief maar niet beperkt tot:

+

4.2.2.1 Inhoud creëren, kopiëren, publiceren, verspreiden en opslaan die in strijd is met lokale nationale wet- en regelgeving.

+

4.2.2.2 Inhoud publiceren, verzenden, verspreiden en opslaan die inbreuk maakt op de wettelijke rechten van anderen, zoals reputatie, portret, intellectueel eigendom en handelsgeheimen.

+

4.2.2.3 Feiten verzinnen, de waarheid verbergen om anderen te misleiden of te bedriegen.

+

4.2.2.4 Reclame-informatie en ongewenste informatie publiceren, verzenden en verspreiden.

+

4.2.2.5 Andere handelingen verrichten in strijd met lokale wet- en regelgeving.

+

4.2.3 U mag zonder toestemming van het Bedrijf geen commerciële activiteiten uitvoeren zoals adverteren en het verkopen van goederen in de Software.

+

4.3 De Gebruiker begrijpt en gaat akkoord dat:

+

4.3.1 Saitong zal bepalen of de gebruiker wordt verdacht van het schenden van de bovengenoemde gebruiksspecificaties, en op basis van de resultaten van de bepaling uw licentie opschorten of beëindigen of andere beperkende maatregelen nemen die kunnen worden genomen in overeenstemming met deze overeenkomst.

+

4.3.2 Voor het gebruik door de gebruiker van de gelicentieerde software die informatie heeft gepubliceerd die verdacht wordt van illegaliteit of vermeende inbreuk op de wettelijke rechten van anderen of in strijd met deze Overeenkomst, zal de informatie direct worden verwijderd.

+

4.3.3 Als de schending door de gebruiker van de bovengenoemde gebruiksregels schade toebrengt aan derden, dient u de wettelijke aansprakelijkheid zelfstandig op eigen naam te dragen, en u dient ervoor te zorgen dat het bedrijf gevrijwaard wordt van verliezen of verhoogde kosten.

+

4.3.4 Als de gebruiker de relevante wettelijke bepalingen of overeenkomsten schendt en daardoor Saitong verlies lijdt, of onderworpen wordt aan vorderingen van derden, of bestraft wordt door de administratieve autoriteit, zal de gebruiker het verlies en/of de kosten die Saitong heeft geleden compenseren, inclusief redelijke advocaatkosten, onderzoeks- en bewijsverzamelingskosten.

+ +

5. Beschrijving van diensten van derden

+

5.1 De gebruiker begrijpt en gaat ermee akkoord dat het softwaresysteem diensten kan bevatten die worden geleverd door gelieerde ondernemingen van het Bedrijf of derden, en dat het Bedrijf alleen relevante functionele modules in het systeem biedt voor het gemak van gebruikers en toegang biedt tot diensten van derden.

+

5.2 Ongeacht of de diensten van derden vooraf zijn ingesteld in de softwaresysteemdiensten of door de gebruikers zelf zijn geopend of besteld, begrijpen en aanvaarden gebruikers dat Saitong geen uitdrukkelijke of impliciete garantie geeft met betrekking tot de wettigheid en effectiviteit van de externe dienstverleners of gebruikers, evenals de wettigheid, nauwkeurigheid, effectiviteit en veiligheid van de diensten van derden.

+

5.3 Het Bedrijf houdt geen toezicht op, controleert niet en biedt geen garantie van welke aard dan ook voor diensten van derden, noch aanvaardt het enige aansprakelijkheid.

+

5.4 Elk geschil of meningsverschil tussen de gebruiker en de externe dienstverlener wordt opgelost door de Gebruiker en de derde partij in overeenstemming met het bedrijfsproces en de bedrijfsnormen van de externe dienstverlener, en het bedrijf aanvaardt geen enkele verantwoordelijkheid.

+ +

6. Privacybeleid en Bescherming van Persoonsgegevens

+

6.1 Saitong zet zich in voor de bescherming van de privacy van gebruikers in overeenstemming met het privacybeleid, zie: Voitrans Privacybeleid.

+ +

7. Aansprakelijkheid voor contractbreuk

+

7.1 Saitong heeft het recht te beoordelen of het gedrag van de gebruiker in overeenstemming is met de bepalingen van deze Overeenkomst. Als wordt aangenomen dat de Gebruiker relevante wet- en regelgeving of de bepalingen van deze Overeenkomst en gerelateerde regels heeft geschonden, heeft Saitong, afhankelijk van de ernst van de schending door de gebruiker, het recht om illegale informatie te verwijderen, het gebruik van de Softwaredienst door de gebruiker te beperken, op te schorten, te beëindigen, de wettelijke aansprakelijkheid van de gebruiker te vervolgen en andere maatregelen te nemen die Saitong passend acht. Als wij enig verlies lijden (inclusief maar niet beperkt tot het ontvangen van vorderingen van derden of boetes van enige administratieve afdeling), draagt de Gebruiker de volledige aansprakelijkheid.

+ +

8. Servicerisico's en disclaimers

+

8.1 Wij willen serviceondersteuning bieden met de huidige technologie. Saitong garandeert niet dat de Softwaredienst zonder onderbreking of fouten zal werken, dat alle gebreken van de Softwaredienst zullen worden gecorrigeerd, of dat de Softwaredienst aan alle eisen van gebruikers zal voldoen. Voor de daaruit voortvloeiende gevolgen aanvaardt Saitong geen enkele aansprakelijkheid.

+

8.2 Alle verliezen die de gebruiker lijdt als gevolg van derden, zoals storingen in communicatielijnen, technische problemen, netwerk, storingen in computerterminalapparatuur, systeeminstabiliteit en andere overmachtsituaties, zijn niet de aansprakelijkheid van de gebruiker.

+

8.3 Saitong garandeert niet de wettigheid, authenticiteit, nauwkeurigheid en effectiviteit van de informatie-inhoud verkregen via de software (inclusief maar niet beperkt tot inhoud van diensten van derden), en Saitong aanvaardt geen enkele aansprakelijkheid voor de resultaten van enig gedrag van gebruikers op basis van zoekopdrachten en weergave.

+

8.4 De software wordt, net als de meeste internetsoftware, beïnvloed door verschillen in factoren, waaronder maar niet beperkt tot gebruikersgerelateerde redenen, kwaliteit van netwerkdiensten, sociale omgeving en andere factoren, en kan onderhevig zijn aan verschillende beveiligingsproblemen, zoals het gebruik van gebruikersinformatie door anderen, resulterend in overlast in het echte leven; andere software die door gebruikers is gedownload en geïnstalleerd of andere websites die door gebruikers worden bezocht, bevatten virussen zoals "Trojaanse paarden", die de veiligheid van de informatie en gegevens van het eindapparaat van gebruikers bedreigen en vervolgens het normale gebruik van de software beïnvloeden. Gebruikers dienen het bewustzijn van informatiebeveiliging en bescherming van gebruikersgegevens te versterken en aandacht te besteden aan het versterken van wachtwoordbeveiliging om verlies en overlast te voorkomen.

+

8.5 Wanneer gebruikers de Software gebruiken of Saitong verzoeken om specifieke diensten te verlenen, kan de Software systemen van derden of software van derden aanroepen om het gebruik of de toegang van gebruikers te ondersteunen, en de resultaten van gebruik of toegang worden geleverd door de derde partij. Naast het naleven van de relevante regels van deze Overeenkomst, dienen gebruikers ook de overeenkomsten en relevante regels van de derde partij na te leven. Gebruikers moeten begrijpen en ermee instemmen dat, bij het gebruik van diensten van derden, derden gebruikersgegevens kunnen lezen, en Saitong garandeert niet de veiligheid, nauwkeurigheid, effectiviteit en andere onzekere risico's van de resultaten die worden bereikt via systemen van derden of ondersteuning van software van derden; gebruikers dienen voorzichtig te oordelen, en Saitong aanvaardt geen enkele aansprakelijkheid voor geschillen en schade die hieruit voortvloeien.

+

8.6 Om de autonomie van de bedrijfsontwikkeling en -aanpassing van het bedrijf te waarborgen, kan het bedrijf de dienst op elk moment wijzigen of onderbreken na de gebruiker op redelijke wijze te hebben geïnformeerd.

+

8.7 Behalve wat uitdrukkelijk door wet- en regelgeving is bepaald, zal Saitong haar uiterste best doen om ervoor te zorgen dat de software en de betrokken technologie en informatie veilig, effectief, nauwkeurig en betrouwbaar zijn, maar beperkt door de bestaande technologie begrijpt de gebruiker dat Saitong dit niet kan garanderen.

+

8.8 Vergoeding voor persoonlijk letsel of incidentele en indirecte economische schade veroorzaakt door of in verband met een van de volgende omstandigheden, inclusief maar niet beperkt tot winstderving, gegevensverlies, schade voor bedrijfsonderbreking of andere zakelijke schade of verliezen, komt voor rekening van de Gebruiker:

+

1) Gebruik van of het niet kunnen gebruiken van de gelicentieerde software.

+

2) Ongeautoriseerd gebruik van de software of wijziging van gebruikersgegevens door derden.

+

3) Kosten en verliezen als gevolg van de handelingen van de gebruiker met de software.

+

4) Misvattingen van de gebruiker over de software.

+

5) Elk ander verlies gerelateerd aan de software dat niet toe te schrijven is aan Saitong.

+

8.9 De Gebruiker stemt ermee in dat het Bedrijf het recht heeft om de gehele of een deel van de Dienst aan de gebruiker op te schorten, te onderbreken of te beëindigen op basis van de vereisten van de gerechtelijke, regelgevende en toezichthoudende autoriteiten of om eigen zakelijke redenen. Saitong aanvaardt hiervoor geen aansprakelijkheid.

+

8.10 De Gebruiker begrijpt en gaat ermee akkoord dat het Bedrijf commercieel redelijke inspanningen zal leveren om de veiligheid van de gegevensopslag in de Software en Diensten te waarborgen, maar het bedrijf kan geen volledige garantie bieden, en de Gebruiker begrijpt dat het Bedrijf niet verantwoordelijk is voor het verwijderen of opslaan of het falen van back-ups van gegevens in de Dienst.

+

8.11 Voor zover maximaal toegestaan door de wet, is de Ontwikkelaar of Leverancier niet aansprakelijk voor enige directe, indirecte, incidentele, speciale of gevolgschade voortvloeiend uit het gebruik van de Applicatie. Als de gebruiker verdere behoeften heeft, ga dan naar een regulier ziekenhuis voor diepgaand onderzoek.

+ +

9. Verklaring inzake intellectueel eigendom

+

9.1 Saitong is de houder van de intellectuele eigendomsrechten van deze software. Alle auteursrechten, handelsmerken, patenten, handelsgeheimen en andere intellectuele eigendomsrechten van de software, evenals alle informatie-inhoud gerelateerd aan de software (inclusief maar niet beperkt tot tekst, afbeeldingen, audio, video, grafische elementen, interface-ontwerp, lay-outkader, relevante gegevens of elektronische documenten, enz.) worden beschermd door lokale wet- en regelgeving en overeenkomstige internationale verdragen.

+

9.2 Zonder de schriftelijke toestemming van het Bedrijf mag de Gebruiker de bovengenoemde intellectuele eigendomsrechten niet implementeren, benutten of overdragen voor enig commercieel of niet-commercieel doel, noch enige derde partij toestaan dit te doen, en het Bedrijf behoudt zich het recht voor om de wettelijke aansprakelijkheid voor de bovengenoemde handelingen te vervolgen.

+ +

10. Wijziging van de overeenkomst

+

10.1 Saitong heeft het recht om de voorwaarden van deze Overeenkomst te wijzigen wanneer dit nodig is. Wanneer de voorwaarden van de Overeenkomst zijn gewijzigd, worden de herziene voorwaarden van de Overeenkomst op de relevante pagina gepubliceerd. Als u niet akkoord gaat met de gewijzigde inhoud, dient de gebruiker het initiatief te nemen om deze dienst te annuleren. Als de Gebruiker de Diensten blijft gebruiken, wordt dit beschouwd als acceptatie van de wijzigingen in de voorwaarden van de Overeenkomst.

+

10.2 Saitong behoudt zich het recht voor om de betaalde diensten, tariefnormen, factureringsmethoden, servicekosten en servicevoorwaarden indien nodig te wijzigen of aan te passen. Bij het verlenen van diensten kunnen wij nu of in de toekomst bepaalde kosten in rekening brengen bij gebruikers van sommige diensten. Als gebruikers weigeren dergelijke kosten te betalen, kunnen zij na het ingaan van de kosten niet blijven gebruikmaken van de betreffende diensten.

+
+ + diff --git a/doc/pl/privacy_policy.html b/doc/pl/privacy_policy.html new file mode 100644 index 000000000..6ea74e06a --- /dev/null +++ b/doc/pl/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Polityka Prywatności + + + + +
+

Voitrans Polityka Prywatności

+

Ostatnia aktualizacja: 27 maja 2025

+

Data wejścia w życie: 27 maja 2025

+ +

Witamy w korzystaniu z Oprogramowania i Usług Voitrans

+

1. Voitrans jest dostarczany przez Saitong Industries Inc. (zwana dalej "Firmą"). Może pomóc użytkownikom w zarządzaniu urządzeniami Bluetooth i innymi produktami. Rozumiemy znaczenie danych osobowych dla naszych użytkowników (zwanych dalej "Tobą") oraz że skuteczna ochrona Twoich danych osobowych jest fundamentem zdrowego i zrównoważonego rozwoju naszej działalności. Dziękujemy za korzystanie z produktów lub usług Voitrans i zaufanie! W pełni zdajemy sobie sprawę, że to zaufanie nie przychodzi łatwo, przestrzegamy zasady otwartości i przejrzystości, aby wyrazić Ci nasze zasady przetwarzania Twoich danych osobowych, wykorzystujemy legalne i uprawnione sposoby oraz jasne i rozsądne cele do przetwarzania Twoich danych osobowych. Uwaga specjalna: Przed skorzystaniem z naszych produktów lub usług, proszę upewnij się, że dokładnie przeczytałeś i zrozumiałeś niniejszą Politykę Prywatności, abyś mógł dokonać odpowiednich wyborów.

+

2. Niniejsza Polityka Prywatności wyjaśnia, w jaki sposób zbieramy, wykorzystujemy, przechowujemy i udostępniamy Twoje dane osobowe podczas korzystania z Voitrans. Dane osobowe odnoszą się do wszelkiego rodzaju informacji rejestrowanych drogą elektroniczną lub innymi środkami, które mogą identyfikować określoną osobę fizyczną lub odzwierciedlać działalność określonej osoby fizycznej samodzielnie lub w połączeniu z innymi informacjami. Voitrans szanuje i chroni prywatność osobistą wszystkich użytkowników usługi. O ile niniejsza Polityka Prywatności nie stanowi inaczej, Voitrans nie ujawni tych informacji publicznie ani nie udostępni ich stronom trzecim bez Twojej uprzedniej zgody.

+

3. Gdy korzystasz z produktu lub usługi strony trzeciej za pośrednictwem produktu lub usługi App Marketplace, Twoje dane osobowe podlegają polityce prywatności strony trzeciej.

+

4. Voitrans Niniejsza Polityka Prywatności będzie od czasu do czasu aktualizowana. Zgadzając się na Umowę o korzystaniu z usług Voitrans i rozpoczynając korzystanie z Voitrans, uznaje się, że wyraziłeś zgodę na całość niniejszej Polityki Prywatności. Jeśli nie zgadzasz się z niniejszą Polityką Prywatności, prosimy o niekorzystanie z Oprogramowania i Usług Voitrans.

+

5. W celu analizy i pomiaru skuteczności odpowiednich usług, będziemy wykorzystywać i ujawniać Twoje dane osobowe zgodnie z postanowieniami niniejszej Polityki Prywatności.

+ +

Niniejsza Polityka Prywatności pomoże Ci zrozumieć następujące kwestie:

+
    +
  • 1 Informacje, które zbieramy
  • +
  • 2 Przechowywanie informacji
  • +
  • 3 Bezpieczeństwo informacji
  • +
  • 4 Jak wykorzystujemy zebrane informacje
  • +
  • 5 Udostępnianie informacji
  • +
  • 6 Jak zarządzasz swoimi danymi osobowymi
  • +
  • 7 Opis uprawnień aplikacji
  • +
  • 8 Dostęp do SDK stron trzecich
  • +
  • 9 Ochrona nieletnich
  • +
  • 10 Obowiązywanie i aktualizacja Polityki Prywatności
  • +
  • 11 Jak się z nami skontaktować
  • +
+ +

1. Informacje, które zbieramy

+

1. Korzystanie z Voitrans Na początku zaczniemy zbierać dane o Twoim korzystaniu z aplikacji

+

2. Voitrans może uzyskiwać dane osobowe o Tobie od stron trzecich lub partnerów biznesowych w sposób zgodny z prawem

+

3. Aby zapewnić Ci lepsze produkty i usługi, zapewnić bezpieczeństwo sieci podczas użytkowania, utrzymać normalną pracę produktów oraz optymalizować i ulepszać, w celu realizacji naszych usług informacyjnych, po aktywnym kliknięciu przez Ciebie zgody na niniejszą politykę prywatności, korzystasz z dostarczanych przez nas informacji. Podczas korzystania z usługi, oprócz danych osobowych niezbędnych do zapewnienia normalnego funkcjonowania podstawowych funkcji Aplikacji zgodnie z krajowymi przepisami prawa, będziemy zbierać od Ciebie inne dane osobowe:

+

3.1 W celu identyfikacji użytkowników zagrożonych, oceny autentyczności użytkowników i kompleksowego zapobiegania oszustwom, będziemy odczytywać informacje o Twoim urządzeniu za każdym razem, gdy otworzysz oprogramowanie, w tym: (Model urządzenia, adres MAC urządzenia, unikalny identyfikator urządzenia (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, itp.) MEID, numer seryjny, SSID i BSSID WIFI), odczyt adresu Bluetooth, wersja systemu operacyjnego, nazwa systemu operacyjnego, konto logowania użytkownika i informacje o haśle;

+

3.2 Gdy korzystasz z naszych produktów i usług, możemy zbierać określone informacje za pośrednictwem informacji z dziennika sieci lub określonych programów i oprogramowania, takie informacje mogą obejmować: szczegóły korzystania z produktów i usług, takie jak czas otwarcia aplikacji, czas korzystania i adres odwiedzanej strony; informacje o zdarzeniach urządzenia, takie jak awarie, aktywność systemu itp., w celu optymalizacji urządzenia i poprawy naszych usług;

+

3.3 W celu identyfikacji aplikacji, w których sprzęt jest zagrożony, oraz zapewnienia bezpieczniejszych usług funkcjonalnych. Dlatego musimy uzyskać listę Twoich aplikacji/zainstalowanych aplikacji w procesie, aby zapewnić normalne działanie produktu i chronić bezpieczeństwo urządzenia.

+

3.4 W celu analizy korzystania z funkcji aplikacji przez użytkowników i określenia autentyczności użytkowników, musimy przeprowadzać statystyki danych i zbierać powyższe informacje o urządzeniu, w tym adres MAC urządzenia i unikalny identyfikator urządzenia, gdy Twoje urządzenie jest w użyciu.

+

3.5 Sygnał urządzenia: stan sieci używanego urządzenia, informacje o punkcie dostępowym WIFI itp.

+

3.6 Informacje o lokalizacji: Możemy używać GPS, WiFi lub innych środków technicznych do zbierania i przetwarzania informacji o Twojej lokalizacji w celu aktualizacji informacji lokalnych, świadczenia usług treściowych itp.

+

Więcej informacji znajdziesz po kliknięciu "Lista zbieranych danych osobowych".

+ +

1. W przypadku bardziej wrażliwych danych osobowych w powyższych informacjach, takich jak informacje o urządzeniu użytkownika (numer IMEI, stan połączenia i numer identyfikacyjny), informacje o lokalizacji GPS, treści multimedialne zdjęć i prawa dostępu do plików, uzyskamy Twoją zgodę przed ich zbieraniem. W przypadku niektórych niewrażliwych informacji zbieranie może być domyślne i automatyczne. Możesz ograniczyć nasze zbieranie odpowiednich informacji lub korzystanie z określonych uprawnień poprzez dostosowanie opcji Ustawień urządzenia mobilnego. Gdy ograniczysz nasz dostęp do określonego uprawnienia, możemy nie być w stanie kontynuować świadczenia odpowiednich usług i nie będziemy już przetwarzać Twoich odpowiednich informacji.

+

2. Nie będziemy zbierać Twojego numeru dowodu osobistego, osobistych informacji biometrycznych, numeru konta bankowego, informacji o majątku, informacji kredytowych, informacji zdrowotnych i fizjologicznych oraz innych wrażliwych danych osobowych.

+

3. O wrażliwych uprawnieniach: W celu prawidłowego korzystania z funkcji aplikacji, produkt musi uzyskać następujące uprawnienia w celu świadczenia usług funkcjonalnych związanych z normalnymi produktami.

+ +

1 Uzyskanie uprawnień do odczytu i zapisu pamięci

+

1 Sposób uzyskania: wyskakujący monit, po uzyskaniu uprawnienia użytkownik aktywnie kliknie zgodę i aplikacja będzie korzystać z tego uprawnienia

+

2 Cel i zakres użycia: Służy do skanowania plików pamięci podręcznej zasobów i miniatur w systemie, ładowania zasobów muzycznych i zdjęć produktów. Jest wyświetlany w interfejsie aplikacji, aby ułatwić użytkownikom przeglądanie i obsługę

+ +

2 Uzyskanie uprawnienia do listy zainstalowanych aplikacji

+

1 Sposób uzyskania: wyskakujący monit, po uzyskaniu uprawnienia użytkownik aktywnie kliknie zgodę i aplikacja będzie korzystać z tego uprawnienia

+

2 Cel i zakres użycia: Gdy aplikacja musi korzystać z usług promocji reklamowej, platforma reklamowa strony trzeciej, Youmon +SDK, musi uzyskać "uprawnienie do listy zainstalowanego oprogramowania aplikacji" urządzenia, aby zapobiec wysyłaniu użytkownikowi aplikacji, którą już posiada, i poprawić doświadczenie użytkownika.

+ +

3 Uprawnienie do uzyskania informacji o stanie urządzenia

+

Obejmuje: (Model urządzenia, adres MAC urządzenia, unikalny identyfikator urządzenia (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, itp.) MEID, numer seryjny, SSID i BSSID WIFI, odczyt adresu Bluetooth), wersja systemu operacyjnego, nazwa systemu operacyjnego itp.;

+

1 Sposób uzyskania: wyskakujący monit, po uzyskaniu uprawnienia użytkownik aktywnie kliknie zgodę i aplikacja będzie korzystać z tego uprawnienia

+

2 Cel i zakres użycia: Podczas korzystania z naszej aplikacji, w celu analizy korzystania przez użytkownika z funkcji aplikacji i oceny autentyczności użytkownika, zsynchronizujemy uprawnienie z SDK stron trzecich, w tym Autonavi SDK, Youmon +SDK itp.

+ +

4 Dostęp do informacji o lokalizacji

+

1 Sposób uzyskania: wyskakujące monity, po uzyskaniu uprawnienia użytkownik będzie korzystał z tego uprawnienia tylko po aktywnym kliknięciu zgody na aplikację.

+

2 Cel i zakres użycia: Gdy aplikacja musi korzystać z GPS, WiFi lub innych funkcji, produkt musi zbierać Twoją lokalizację i informacje w celu wyszukiwania urządzeń Bluetooth w pobliskich lokalizacjach.

+

Uwaga: Więcej informacji o uprawnieniach aplikacji znajduje się w tym dokumencie "Polityka Prywatności" Sekcja 7 "Opis uprawnień aplikacji"

+ +

2. Przechowywanie informacji

+

1. Gdzie informacje są przechowywane

+

Dane osobowe, które zbieramy i generujemy w Chińskiej Republice Ludowej, będą przechowywane na naszych serwerach i/lub serwerach naszych podmiotów powiązanych.

+

2. Przechowywanie i przetwarzanie informacji

+

Przechowujemy Twoje dane osobowe tylko przez okres niezbędny do osiągnięcia celu lub tak długo, jak wymagają tego przepisy prawa. Po zaprzestaniu korzystania z tego produktu natychmiast zaprzestaniemy zbierania i przetwarzania Twoich danych osobowych i danych aplikacji. Po przekroczeniu powyższego okresu usuniemy lub zanonimizujemy dane osobowe, które nam przekazałeś.

+

Oprócz niezbędnych funkcji, Voitrans musi ubiegać się o odpowiednie uprawnienia systemowe. Strona serwerowa chmury nie przechowuje danych osobowych użytkowników, a SDK stron trzecich, do których uzyskano dostęp, zostaną zanonimizowane i pozbawione identyfikacji przez dostawcę usług (Amu Statistics SDK, Autonavi SDK), dzięki czemu użytkownicy nie mogą być śledzeni. Informacje przechowywane na telefonie użytkownika zostaną automatycznie usunięte po odinstalowaniu Voitrans lub wyczyszczeniu pamięci podręcznej.

+ +

3. Bezpieczeństwo informacji

+

1. Voitrans przechowuje i chroni Twoje dane osobowe przy użyciu standardowych w branży środków bezpieczeństwa i technologii, takich jak uwierzytelnianie, szyfrowanie danych, ograniczony dostęp do centrum danych i inne środki bezpieczeństwa, aby zapewnić, że Twoje informacje są chronione przed ujawnieniem, zmianą i zniszczeniem. Pomimo wspomnianych środków bezpieczeństwa, proszę pamiętać, że żaden środek bezpieczeństwa nie może być w 100% bezpieczny.

+

2. Podczas korzystania z usług świadczonych przez Voitrans, prosimy o ochronę swoich danych osobowych. Jeśli odkryjesz, że Twoje dane osobowe zostały naruszone, prosimy o natychmiastowy kontakt z nami, abyśmy mogli podjąć odpowiednie działania.

+ +

4. Jak wykorzystujemy zebrane informacje

+

1. Podczas realizacji funkcji biznesowych aplikacji możemy wykorzystywać Twoje dane osobowe w celu zapewnienia integralności i bezpieczeństwa produktów i usług, które Ci dostarczamy;

+

2. Poprzez zebrane informacje zrozumiemy Twoje nawyki użytkowania, a za pomocą analizy danych zidentyfikujemy akceptowalność usług, Twoje nawyki użytkowania itp., w celu testowania i tworzenia nowych produktów, funkcji i usług, podnoszenia poziomu usług oraz pomagania nam w ulepszaniu istniejących usług i rozwijaniu nowych usług;

+

3. Możemy wykorzystywać Twoje dane osobowe do ankiet klientów dotyczących produktów i usług, do wysyłania powiadomień o produktach i usługach oraz do promocji handlowej;

+

4. Możemy wykorzystywać Twoje informacje do wewnętrznej analizy i badań związanych z aplikacją;

+ +

5. Udostępnianie informacji

+

Obecnie nie będziemy aktywnie udostępniać ani przekazywać Twoich danych osobowych stronom trzecim spoza firmy. Jeśli wystąpi inne udostępnianie lub przekazywanie Twoich danych osobowych, zrobimy to bezpośrednio lub potwierdzimy, że strona trzecia uzyskała Twoją wyraźną zgodę na powyższe działanie.

+

Nie będziemy publicznie ujawniać zebranych danych osobowych. Jeśli konieczne będzie publiczne ujawnienie, poinformujemy Cię o celu publicznego ujawnienia, rodzaju ujawnianych informacji i wrażliwych informacjach, które mogą być zaangażowane, oraz uzyskamy Twoją wyraźną zgodę.

+

W miarę kontynuowania rozwoju naszej działalności możemy angażować się w fuzje, przejęcia, przeniesienia aktywów i inne transakcje, i poinformujemy Cię o odpowiednich okolicznościach, zgodnie z przepisami prawa i nie niżej niż standardy wymagane przez niniejszy Przewodnik, aby kontynuować ochronę Twoich danych osobowych lub wymagać od nowego administratora kontynuowania ochrony Twoich danych osobowych.

+

Ponadto, zgodnie z odpowiednimi przepisami prawa i normami krajowymi, możemy udostępniać, przekazywać i publicznie ujawniać dane osobowe bez uprzedniej autoryzacji i zgody podmiotu danych osobowych w następujących okolicznościach:

+
    +
  • 1 Bezpośrednio związane z bezpieczeństwem narodowym i obroną narodową;
  • +
  • 2 Bezpośrednio związane z bezpieczeństwem publicznym, zdrowiem publicznym lub ważnymi interesami publicznymi;
  • +
  • 3 Bezpośrednio związane z dochodzeniem karnym, ściganiem, postępowaniem sądowym i wykonywaniem wyroków;
  • +
  • 4 W celu ochrony życia, mienia i innych ważnych uzasadnionych praw i interesów podmiotu danych osobowych lub innych osób, ale trudno jest uzyskać zgodę osoby;
  • +
  • 5 Dane osobowe ujawnione publicznie przez podmiot danych osobowych;
  • +
  • 6 Zbieranie danych osobowych z legalnie publicznie ujawnionych informacji, takich jak legalne raporty prasowe, ujawnianie informacji rządowych i inne kanały.
  • +
+ +

6. Jak zarządzasz swoimi danymi osobowymi

+

Zgodnie z odpowiednimi przepisami prawa, regulacjami i standardami Chin, a także powszechnymi praktykami innych krajów i regionów, gwarantujemy, że korzystasz z następujących praw do swoich danych osobowych:

+ +

1. Popraw swoje dane osobowe

+

Jeśli odkryjesz, że w Twoich danych osobowych przetwarzanych przez nas występuje błąd, masz prawo do poprawienia lub zaktualizowania błędnych lub niekompletnych informacji. Jeśli nie możesz samodzielnie dokonać operacji w centrum konta, możesz wysłać e-mail na adres saitong.voitrans@gmail.com Skontaktuj się z nami

+ +

2. Usuń swoje dane osobowe

+

W następujących przypadkach możesz złożyć do nas wniosek o usunięcie Twoich danych osobowych:

+
    +
  • Jeśli przetwarzamy dane osobowe z naruszeniem przepisów prawa;
  • +
  • Jeśli zbieramy i wykorzystujemy Twoje dane osobowe bez Twojej zgody;
  • +
  • Jeśli nasze przetwarzanie danych osobowych narusza naszą umowę z Tobą;
  • +
  • Jeśli nie korzystasz już z naszych produktów lub usług;
  • +
  • Jeśli nie dostarczamy Ci już produktów lub usług.
  • +
+

Skontaktuj się z nami. Przetworzymy Twój wniosek na adres saitong.voitrans@gmail.com Skontaktuj się z nami. Wyślemy do Ciebie po otrzymaniu 30 dni roboczych od otrzymania

+ +

3. Zmień zakres swojej zgody

+

Możesz skontaktować się z nami e-mailem na adres saitong.voitrans@gmail.com Skontaktuj się z nami. Na Twoje żądanie nie będziemy już zbierać, wykorzystywać ani ujawniać Twoich danych osobowych. Proszę pamiętać, że wycofanie zgody lub usunięcie danych osobowych może wpłynąć na korzystanie z niektórych naszych usług.

+ +

4 Dostęp i kopiowanie danych osobowych

+

Możesz, zgodnie z postanowieniami odpowiednich przepisów prawa, podając swój imei (numer seryjny telefonu) lub oaid lub Android ID informacje o koncie i inne informacje, złożyć do nas wniosek o dostęp do i skopiowanie Twoich danych osobowych, możesz wysłać e-mail na adres 3514406195@qq.com Skontaktuj się z nami.

+ +

5. W odpowiedzi na powyższy wniosek

+

Ze względów bezpieczeństwa może być konieczne złożenie pisemnego wniosku lub inne potwierdzenie tożsamości. Możemy poprosić Cię o weryfikację tożsamości przed przetworzeniem Twojego wniosku. Na Twój uzasadniony wniosek odpowiemy i zajmiemy się nim w odpowiednim czasie. Możemy odrzucić wnioski, które są niepotrzebnie powtarzalne, wymagają zbyt dużo technologii (na przykład opracowanie nowych systemów lub fundamentalne zmiany w istniejących praktykach), stanowią ryzyko dla uzasadnionych interesów innych osób lub są wysoce niepraktyczne.

+

W następujących okolicznościach, zgodnie z wymogami przepisów prawa, nie będziemy mogli odpowiedzieć na Twój wniosek:

+
    +
  • Związane z bezpieczeństwem narodowym i obroną narodową;
  • +
  • W związku z dochodzeniem karnym, ściganiem i postępowaniem sądowym;
  • +
  • Istnieją wystarczające dowody, że masz subiektywną złą wolę lub nadużywasz praw;
  • +
  • Odpowiedź na Twój wniosek spowoduje poważne szkody dla uzasadnionych praw i interesów Twoich lub innych osób i organizacji.
  • +
+ +

6. Usunięcie konta

+

Użytkownik może wykonać operację [usunięcia konta] w APP. Kroki operacji:

+
    +
  1. Przejdź do strony [Moje]
  2. +
  3. Kliknij przycisk [Ustawienia] w prawym górnym rogu
  4. +
  5. Kliknij [Usuń konto], aby potwierdzić
  6. +
+

Po wylogowaniu informacje o koncie użytkownika zostaną wyczyszczone

+ +

7. Opis uprawnień aplikacji

+

Aby zapewnić lepsze produkty i usługi, podczas korzystania z oprogramowania będziemy ubiegać się o następujące prawa; po wejściu na stronę główną lub użyciu funkcji zostanie wyświetlone żądanie autoryzacji; jeśli odmówisz, część odpowiednich funkcji nie będzie mogła być normalnie używana. Szczegółowe cele i przypomnienia dotyczące uprawnień opisano poniżej:

+ +

1 Uprawnienia lokalizacyjne:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

uzyskanie informacji o położeniu geograficznym użytkownika (szerokość i długość geograficzna) za pośrednictwem WiFi lub mobilnej stacji bazowej

+

Podczas korzystania z Voitrans będziemy wyszukiwać podłączone urządzenie Bluetooth na podstawie Twojej lokalizacji geograficznej. Jednocześnie, aby zapewnić bardziej stabilne usługi, optymalizować produkty i poprawić doświadczenia, będziemy udostępniać powyższe informacje trzem SDK, takim jak Youmon i Autonavi, w celu uzyskania danych operacyjnych i usług funkcjonalnych Voitrans.

+

Tryb przypomnienia: Przy pierwszym uruchomieniu aplikacji wyświetlany jest monit informujący o uprawnieniu, wymagający potwierdzenia akceptacji przez użytkownika. Opis Umowy Użytkownika i Polityki Prywatności.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

To uprawnienie jest wymagane podczas uzyskiwania dostępu do aplikacji w celu wykonywania funkcji zarządzania aplikacją.

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

3 Uprawnienia sieciowe:

+

android.permission.INTERNET

+

Te uprawnienia są wymagane dla usług informacyjnych i usług aktualizacji wersji Voitrans, a w celu poprawy doświadczenia użytkownika i optymalizacji możliwości usługowych, SDK stron trzecich, takie jak Friends, będą również korzystać z tych uprawnień.

+

Tryb przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

4 Uzyskanie uprawnień stanu sieci:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Służy do uzyskania informacji o tym, czy bieżące połączenie sieciowe jest ważne, określenia, czy bieżące środowisko jest 4G, oraz czy przypominać o zmianach środowiska sieciowego, co wpływa na ładowanie treści informacyjnych. To uprawnienie jest wymagane podczas korzystania z Voitrans.

+

Zmiany stanu sieci wpływają na przesyłanie i ładowanie danych. Dlatego uprawnienie dostępu do stanu sieci będzie udostępniane friends + i innym platformom.

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

5 Uzyskanie uprawnień listy zadań:

+

android.permission.GET_TASKS

+

To uprawnienie służy do uzyskania listy aplikacji dla funkcji zarządzania oprogramowaniem. Podczas korzystania z funkcji zarządzania oprogramowaniem konieczne jest odczytanie aplikacji zainstalowanych na telefonie komórkowym.

+

Tryb przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

6 Uzyskanie uprawnienia do adresu MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Podczas korzystania z Voitrans aplikacja będzie musiała uzyskać uprawnienia do adresu MAC:

+

Gdy aplikacja musi raportować dane konwersji docelowej, platformy stron trzecich, takie jak Youmon +SDK, muszą używać MAC.

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

7 Uzyskanie uprawnienia do nagrywania dźwięku

+

android.permission.RECORD_AUDIO

+

Podczas korzystania z funkcji wprowadzania głosowego Voitrans konieczne jest użycie uprawnienia do nagrywania dźwięku, które jest wykorzystywane głównie do wprowadzania głosowego w celu tłumaczenia i innych powiązanych funkcji.

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności, dynamiczne wyświetlanie okna dialogowego na żądanie użytkownika.

+ +

8 Uzyskanie uprawnienia SSID dla WIFI

+

Gdy to uprawnienie jest używane, aplikacja odczytuje uprawnienie SSID dla WIFI:

+

Zakres użycia i cel: Gdy aplikacja musi korzystać z usług analizy danych, platformy stron trzecich, takie jak +SDK, muszą odczytać "uprawnienie WIFI SSID" urządzenia, aby zapewnić użytkownikom dokładniejsze i bardziej efektywne usługi funkcjonalne.

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

9 Uzyskanie dostępu Bluetooth

+

Gdy to uprawnienie jest używane, aplikacja odczytuje uprawnienie Bluetooth:

+

Zakres użycia i cel: Urządzenia Bluetooth do wyszukiwania i konfigurowania akcesoriów, takich jak słuchawki Bluetooth, zegarki Bluetooth itp. Ułatwienie zarządzania użytkownikom

+

Tryb przypomnienia: Przy pierwszym uruchomieniu aplikacji wyświetlany jest monit informujący o uprawnieniu, wymagający potwierdzenia akceptacji przez użytkownika. Opis Umowy Użytkownika i Polityki Prywatności.

+ +

10 Uzyskanie uprawnienia BSSID dla WiFi

+

Gdy aplikacja musi rozróżnić i zidentyfikować użytkownika w celu świadczenia usług funkcjonalnych i statystyk danych, odczyta uprawnienie "WiFi BSSID" urządzenia dla:

+

Zakres użycia i cel: 1 Platformy stron trzecich: takie jak Youmeng SDK, Bugly SDK, Autonavi SDK

+

Metoda przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

11 Uzyskanie uprawnienia do instalacji aplikacji

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Oprogramowanie będzie korzystać z uprawnienia do instalacji aplikacji, które jest głównie używane do umożliwienia użytkownikom zainstalowania nowej wersji i doświadczenia nowych funkcji, gdy pojawi się nowa wersja.

+

Tryb przypomnienia: Opis Umowy Użytkownika i Polityki Prywatności.

+ +

12 Uzyskanie uprawnień do kamery

+

android.permission.CAMERA

+

Voitrans używa uprawnień do kamery do skanowania kodów QR i wiązania urządzeń Bluetooth, takich jak słuchawki Bluetooth i zegarki.

+

Metoda przypomnienia: Przy pierwszym uruchomieniu aplikacji wyświetlany jest monit informujący o uprawnieniu, wymagający potwierdzenia akceptacji przez użytkownika. Opis Umowy Użytkownika i Polityki Prywatności.

+ +

Uwaga specjalna:

+

1 Aplikacja integruje w sobie Allies SDK, Scott map SDK; po wyrażeniu zgody przez użytkownika, aplikacja w tle/na pierwszym planie zbiera ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI i inne dane osobowe;

+

Uwagi: Więcej informacji znajduje się w poniższej treści dotyczącej SDK i uprawnień [VIII. Lista dostępu do SDK stron trzecich]

+ +

8. Dostęp do SDK stron trzecich

+

1 W celu zapewnienia stabilnej pracy i realizacji funkcji naszego klienta, abyś mógł korzystać i cieszyć się większą liczbą usług i funkcji, nasza aplikacja będzie osadzać zestawy narzędzi programistycznych (SDK) lub inne podobne aplikacje stron trzecich; te strony trzecie będą zbierać i przetwarzać odpowiednie informacje zgodnie z własnymi politykami prywatności, w celu normalnego świadczenia funkcji i usług reklamowych. Możesz zapoznać się z zasadami zbierania i przetwarzania informacji przez stronę trzecią w poniższej sekcji. Przeprowadzimy rygorystyczne testy bezpieczeństwa zestawów programistycznych (SDK) używanych przez partnerów do uzyskiwania informacji, w celu ochrony racjonalnego wykorzystania i bezpieczeństwa Twoich danych osobowych. Proszę pamiętać, że SDK stron trzecich mogą zmieniać typy przetwarzania danych w związku z aktualizacjami wersji. Prosimy o zapoznanie się z politykami prywatności opublikowanymi przez SDK stron trzecich. Szczegóły znajdują się poniżej lub kliknij, aby wyświetlić Listę SDK Stron Trzecich.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Uzyskane informacje: Numer urządzenia, adres IP, informacje o oprogramowaniu urządzenia, kod identyfikacyjny urządzenia (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informacje IMSI karty SIM, IP, adres MAC), identyfikator urządzenia, region, informacje o aplikacjach związanych z urządzeniem i inne informacje z dziennika usług

+

Cel użycia: Logowanie i udostępnianie WeChat

+

Deweloper: Shenzhen Tencent Computer Systems Company Limited

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Uzyskane informacje: Nazwa aplikacji, numer wersji aplikacji, marka i model urządzenia, system operacyjny, informacje o operatorze, rozdzielczość ekranu, informacje o czujnikach (wektor, przyspieszenie, ciśnienie, kierunek, geomagnetyczny, żyroskop, temperatura, czujnik światła, sygnał NMEA), informacje o sile sygnału urządzenia

+

Cel użycia: Nawigacja z użyciem Amap

+

Deweloper: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Uzyskane informacje: Nazwa aplikacji, wersja aplikacji, marka i model urządzenia, system operacyjny, informacje o sieci, siła sygnału urządzenia itp.

+

Cel użycia: Wyświetlanie mapy i interakcja

+

Deweloper: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Uzyskane informacje: Informacje o lokalizacji (GPS, Wi-Fi, stacja bazowa), informacje o urządzeniu, informacje o sieci itp.

+

Cel użycia: Świadczenie usług lokalizacyjnych

+

Deweloper: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Uzyskane informacje: Nazwa aplikacji, wersja aplikacji, informacje o urządzeniu, informacje o sieci itp.

+

Cel użycia: Narzędzia mapowe i optymalizacja renderowania

+

Deweloper: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Uzyskane informacje: Identyfikatory urządzenia, podstawowe informacje o urządzeniu, lista zainstalowanego oprogramowania i informacje o sieci (szczegóły w oficjalnej polityce prywatności)

+

Cel użycia: Logowanie na konto Alipay i wywoływanie płatności

+

Deweloper: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Uzyskane informacje: Wersja SDK/API, platforma, znacznik czasu, identyfikator aplikacji, wersja aplikacji, producent urządzenia, wersja systemu operacyjnego, ustawienia regionalne, strefa czasowa, stan sieci (Wi-Fi itp.), dzienniki sieciowe, dane o awariach i użytkowaniu, adres IP itp. (szczegóły w oficjalnej polityce prywatności)

+

Cel użycia: Monitorowanie jakości aplikacji i usługa raportowania danych

+

Deweloper: Shenzhen Tencent Computer Systems Company Limited

+

Metoda zbierania: Samozbieranie SDK

+

Link do Polityki Prywatności: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Ochrona nieletnich

+

Użytkownicy naszych produktów i usług mogą obejmować nieletnich poniżej 18 roku życia; nieletni użytkownicy powinni zasięgnąć porady swoich rodziców lub opiekunów w sprawie niniejszej Polityki Prywatności przed skorzystaniem z naszych produktów, a także korzystać z naszych usług lub przekazywać nam swoje informacje po uzyskaniu zgody rodziców lub opiekunów i pod ich kierunkiem. Opiekunowie nieletnich, którzy mają pytania, mogą się z nami skontaktować za pomocą danych kontaktowych podanych w niniejszej Polityce Prywatności.

+

Jeśli nie zgadzasz się na zbieranie wyżej wymienionych informacji przez powyższych dostawców usług stron trzecich, prosimy o natychmiastowe zaprzestanie korzystania z Oprogramowania. Podczas korzystania z Oprogramowania te strony trzecie będą zbierać i przetwarzać odpowiednie informacje zgodnie z własnymi politykami prywatności w celu świadczenia niektórych funkcji, reklam i innych usług. Jeśli informacje zostaną ujawnione z powodu zbierania wyżej wymienionych informacji przez odpowiedniego dostawcę usług strony trzeciej, odpowiedni dostawca usług strony trzeciej poniesie odpowiednią odpowiedzialność prawną.

+ +

10. Obowiązywanie i aktualizacja Polityki Prywatności

+

1. Niniejsza Polityka Prywatności obowiązuje od daty publikacji.

+

2. W miarę rozwoju i zmian naszej działalności, nasza Polityka Prywatności może ulec zmianie. Zastrzegamy sobie prawo do zmiany naszej polityki prywatności w dowolnym momencie, dlatego prosimy o częste sprawdzanie. Jeśli dokonamy zmian w naszej Polityce Prywatności, opublikujemy te aktualizacje na naszej stronie internetowej, w aplikacjach i tam, gdzie uznamy to za stosowne, aby informować Cię na bieżąco. Jeśli polityka prywatności zostanie zaktualizowana, wejdzie w życie od daty aktualizacji. Dalsze korzystanie z naszych produktów lub usług oznacza, że zgadzasz się na zmienioną Politykę Prywatności.

+ +

11. Jak się z nami skontaktować

+

Saitong Industries Inc została założona 22 listopada 2024 r., adres siedziby: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Jeśli chcesz dowiedzieć się więcej o naszej firmie i platformie, możesz skontaktować się z nami za pośrednictwem danych kontaktowych podanych w niniejszej polityce (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/pl/user_agreement.html b/doc/pl/user_agreement.html new file mode 100644 index 000000000..4b4af1746 --- /dev/null +++ b/doc/pl/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Umowa Użytkownika Aplikacji Voitrans + + + +
+
Polski
+ +

Umowa Użytkownika Aplikacji Voitrans

+ +

Niniejsze Warunki Użytkowania informują o sposobie dostępu i korzystania z Aplikacji Voitrans oraz usług online ("Usługi"). Saitong Industries Inc. (zwana dalej "Saitong") niniejszym przypomina użytkownikom o konieczności uważnego przeczytania i pełnego zrozumienia niniejszej Umowy Użytkownika (zwanej dalej "Umową"). Użytkownicy powinni uważnie przeczytać i w pełni zrozumieć postanowienia niniejszej Umowy. Prosimy o uważne przeczytanie i dokonanie wyboru o akceptacji lub odrzuceniu niniejszej Umowy. Korzystanie z aplikacji Voitrans (zwanej dalej "Aplikacją" lub "Oprogramowaniem") będzie uznawane za akceptację niniejszej Umowy i wyrażenie zgody na związanie się jej postanowieniami. Jeśli nie zgadzasz się z niniejszą Umową, nie korzystaj z Aplikacji.

+

Saitong zastrzega sobie prawo do zmiany niniejszej Umowy, a zaktualizowane postanowienia Umowy zostaną opublikowane w niniejszej Aplikacji i będą obowiązywać od daty publikacji.

+ +

1. Zasady ogólne

+

1.1 Niniejsza Aplikacja jest oprogramowaniem dostarczonym przez Saitong do łączenia produktów słuchawkowych wydawanych przez Saitong i jej firmy partnerskie. Prawa własności i prawa do eksploatacji oprogramowania i powiązanych usług należą w całości do Saitong.

+

1.2 Niniejsza Umowa jest umową między Tobą (zwanym dalej "Użytkownikiem") a firmą i jej partnerami oraz partnerami operacyjnymi (zwanymi dalej "Partnerami") dotyczącą korzystania przez Użytkownika z Aplikacji i powiązanych usług.

+

1.3 Oprogramowanie i usługi obejmują:

+

1.3.1 Dostarczone oprogramowanie zapewnia użytkownikom Voitrans połączenie i powiązanie Voitrans, zarządzanie ustawieniami funkcji oraz inne usługi oprogramowania, zgodnie z faktycznymi usługami oprogramowania świadczonymi przez Aplikację.

+

1.3.2 Aktualizacje, uaktualnienia i inne usługi oprogramowania.

+ +

2. Zakres licencji oprogramowania

+

2.1 Udzielamy Użytkownikowi osobistej, nieprzenoszalnej, niepodlegającej sublicencjonowaniu i niewyłącznej licencji na Oprogramowanie.

+

2.2 Użytkownicy mogą instalować, używać, wyświetlać i uruchamiać oprogramowanie na pojedynczym mobilnym urządzeniu końcowym w celach niekomercyjnych. Jednakże użytkownik nie może instalować, używać ani uruchamiać oprogramowania w celach komercyjnych, kopiować, zmieniać, modyfikować, łączyć ani uruchamiać oprogramowania ani danych zapisanych w pamięci jakiegokolwiek urządzenia końcowego podczas działania oprogramowania, ani danych interakcji między klientem a serwerem podczas działania oprogramowania, ani tworzyć jakichkolwiek prac pochodnych. Obejmuje to w szczególności korzystanie z wtyczek, rozszerzeń lub nieautoryzowanych narzędzi/usług stron trzecich w celu uzyskania dostępu do Oprogramowania i powiązanych systemów. W przypadku komercyjnej sprzedaży, powielania i dystrybucji, takiej jak wstępna instalacja i pakowanie oprogramowania, konieczne jest uzyskanie pisemnej autoryzacji i pozwolenia.

+

2.3 Użytkownik nie może instalować Oprogramowania na innych urządzeniach końcowych bez wyraźnej zgody twórcy, w tym między innymi na telewizorach, cyfrowych dekoderach, konsolach do gier i innych urządzeniach.

+

2.4 Z wyjątkiem przypadków wyraźnie autoryzowanych przez niniejszą Umowę, Użytkownikowi nie przyznaje się żadnych innych praw, a Użytkownik powinien uzyskać pisemną zgodę na korzystanie z innych praw.

+ +

3. Aktualizacja oprogramowania

+

3.1 Użytkownik musi wybrać wersję oprogramowania odpowiednią do konfiguracji zainstalowanego terminala. W przeciwnym razie problemy z oprogramowaniem, problemy z urządzeniem lub uszkodzenia spowodowane przez jakąkolwiek wersję oprogramowania nieodpowiednią dla danego typu urządzenia będą wyłączną odpowiedzialnością użytkownika.

+

3.2 W celu poprawy doświadczeń użytkownika i ulepszenia treści usług, Saitong ma prawo od czasu do czasu dostarczać zamienne, zmodyfikowane i zaktualizowane wersje oprogramowania. Funkcja "Powiadomienie o aktualizacji" jest domyślnie włączona dla użytkowników. W zależności od różnych wersji oprogramowania używanych przez użytkowników, Saitong zapewnia użytkownikom opcję aktywacji tej funkcji. Po wydaniu nowej wersji oprogramowania Saitong nie gwarantuje dalszej dostępności starej wersji oprogramowania.

+ +

4. Zasady użytkowania

+

4.1 Użytkownicy mogą korzystać z Oprogramowania i Usług zgodnie z niniejszą Umową pod warunkiem przestrzegania prawa i niniejszej Umowy, a użytkownicy nie powinni wykonywać następujących czynności:

+

4.1.1 Usuwanie wszelkich informacji o prawach autorskich na Oprogramowaniu i innych kopiach oraz modyfikowanie, usuwanie lub obchodzenie środków technicznych ustanowionych przez Oprogramowanie w celu ochrony praw własności intelektualnej.

+

4.1.2 Inżynieria wsteczna Oprogramowania, taka jak dezasemblacja, dekompilacja lub inne próby uzyskania kodu źródłowego Oprogramowania.

+

4.1.3 Poprzez modyfikowanie lub fałszowanie instrukcji i danych w działaniu oprogramowania, zwiększanie, usuwanie lub zmienianie funkcji lub efektu działania oprogramowania, lub oprogramowania lub metod, które mają być używane do powyższych celów w celu działania lub rozpowszechniania wśród publiczności, niezależnie od tego, czy działania te mają cele komercyjne.

+

4.1.4 Korzystanie z oprogramowania w celu jakiegokolwiek zachowania zagrażającego bezpieczeństwu sieci, w tym między innymi: korzystanie z nieautoryzowanych danych lub dostęp do nieautoryzowanych serwerów/kont; dostęp do sieci publicznych lub innych systemów operacyjnych bez pozwolenia oraz usuwanie, modyfikowanie lub dodawanie przechowywanych informacji; nieautoryzowane próby badania, skanowania lub testowania słabości systemu lub sieci oprogramowania lub inne działania podważające bezpieczeństwo sieci; próby zakłócenia lub zniszczenia normalnego działania systemu oprogramowania lub strony internetowej, celowe rozpowszechnianie złośliwych programów lub wirusów oraz inne działania zakłócające normalne usługi informacyjne sieci; fałszowanie nazw lub częściowych nazw pakietów TCP/IP.

+

4.1.6 Bez pisemnej zgody Firmy użytkownik samowolnie wykonuje następujące czynności dotyczące oprogramowania i zawartych w nim informacji, w tym między innymi: korzystanie, wynajmowanie, pożyczanie, kopiowanie, modyfikowanie, łączenie, przedrukowywanie, kompilowanie, publikowanie, wydawanie, tworzenie stron lustrzanych, opracowywanie produktów pochodnych, dzieł, usług, wtyczek, rozszerzeń, kompatybilności, wzajemnych połączeń itp. przy pomocy Oprogramowania.

+

4.1.7 Korzystanie z Oprogramowania do publikowania, przesyłania, dystrybucji i przechowywania treści naruszających lokalne przepisy prawa.

+

4.1.8 Korzystanie z oprogramowania do publikowania, przesyłania, rozpowszechniania i przechowywania treści naruszających prawa własności intelektualnej, tajemnice handlowe i inne uzasadnione prawa innych osób.

+

4.1.9 Korzystanie z niniejszego oprogramowania do masowego publikowania, przesyłania i rozpowszechniania informacji reklamowych i niechcianych informacji.

+

4.1.10 Korzystanie z Oprogramowania i innych Usług w jakikolwiek niezgodny z prawem sposób, w jakimkolwiek niezgodnym z prawem celu lub w jakikolwiek sposób niezgodny z licencjonowanym użytkowaniem niniejszej Umowy.

+

4.2 Zasady publikowania informacji

+

4.2.1 Jeśli korzystasz z oprogramowania do publikowania treści informacyjnych (jeśli dotyczy), powinieneś zagwarantować, że posiadasz prawa własności intelektualnej do przesłanych przez Ciebie treści informacyjnych lub uzyskałeś legalną autoryzację, a wszelkie Twoje zachowania związane z korzystaniem z oprogramowania i usług nie naruszają uzasadnionych praw i interesów jakiejkolwiek strony trzeciej.

+

4.2.2 Podczas korzystania z Oprogramowania użytkownik nie powinien używać Oprogramowania do prowadzenia następujących działań, w tym między innymi:

+

4.2.2.1 Tworzenie, kopiowanie, publikowanie, rozpowszechnianie i przechowywanie treści naruszających lokalne przepisy i regulacje.

+

4.2.2.2 Publikowanie, przesyłanie, rozpowszechnianie i przechowywanie treści naruszających prawa inne osób, takie jak reputacja, wizerunek, własność intelektualna i tajemnice handlowe.

+

4.2.2.3 Fabrykowanie faktów, ukrywanie prawdy w celu wprowadzenia w błąd lub oszukania innych.

+

4.2.2.4 Publikowanie, przesyłanie i rozpowszechnianie informacji reklamowych i niechcianych informacji.

+

4.2.2.5 Angażowanie się w inne działania naruszające lokalne przepisy prawa i regulacje.

+

4.2.3 Bez zgody Firmy nie wolno prowadzić żadnych działalności komercyjnych, takich jak reklama i sprzedaż towarów w Oprogramowaniu.

+

4.3 Użytkownik rozumie i zgadza się, że:

+

4.3.1 Saitong określi, czy użytkownik jest podejrzany o naruszenie powyższych zasad użytkowania, i zgodnie z wynikami oceny zawiesi lub zakończy licencję użytkownika lub podejmie inne środki ograniczające, które mogą być podjęte zgodnie z niniejszą umową.

+

4.3.2 Informacje opublikowane przez użytkownika z wykorzystaniem licencjonowanego oprogramowania, co do których istnieje podejrzenie naruszenia prawa lub praw innych osób lub naruszenia niniejszej Umowy, zostaną bezpośrednio usunięte.

+

4.3.3 Jeśli naruszenie przez użytkownika powyższych zasad użytkowania spowoduje szkodę dla stron trzecich, użytkownik musi ponieść odpowiedzialność prawną samodzielnie, we własnym imieniu, i powinien zapewnić, że firma jest wolna od strat lub zwiększonych kosztów.

+

4.3.4 Jeśli użytkownik naruszy odpowiednie przepisy prawne lub umowy, powodując straty Saitong lub podlegając roszczeniom stron trzecich lub karze ze strony organu administracyjnego, użytkownik zrekompensuje straty i/lub wydatki poniesione przez Saitong, w tym uzasadnione honoraria adwokackie, koszty dochodzenia i gromadzenia dowodów.

+ +

5. Opis usług stron trzecich

+

5.1 Użytkownik rozumie i zgadza się, że system oprogramowania może zawierać usługi świadczone przez podmioty powiązane z Firmą lub strony trzecie, a Firma zapewnia jedynie odpowiednie moduły funkcjonalne w systemie dla wygody użytkowników i zapewnia dostęp do usług stron trzecich.

+

5.2 Niezależnie od tego, czy usługi stron trzecich są wstępnie ustawione w usługach systemu oprogramowania, czy też zostały otwarte lub zamówione przez samych użytkowników, użytkownicy rozumieją i zgadzają się, że Saitong nie udziela żadnych wyraźnych ani dorozumianych gwarancji dotyczących legalności i skuteczności dostawców usług stron trzecich lub użytkowników, ani legalności, dokładności, skuteczności i bezpieczeństwa usług stron trzecich.

+

5.3 Firma nie nadzoruje, nie kontroluje ani nie zapewnia żadnych gwarancji ani poręczeń jakiegokolwiek rodzaju dla usług stron trzecich, ani nie ponosi żadnej odpowiedzialności.

+

5.4 Wszelkie spory lub kontrowersje między użytkownikiem a dostawcą usług stron trzecich będą rozstrzygane przez Użytkownika i stronę trzecią zgodnie z procesem biznesowym i normami biznesowymi dostawcy usług stron trzecich, a firma nie ponosi żadnej odpowiedzialności.

+ +

6. Polityka Prywatności i Ochrona Danych Osobowych

+

6.1 Saitong zobowiązuje się do ochrony prywatności użytkowników zgodnie z polityką prywatności, prosimy zapoznać się z: Polityka Prywatności Voitrans.

+ +

7. Odpowiedzialność za naruszenie umowy

+

7.1 Saitong ma prawo oceniać, czy zachowanie użytkownika jest zgodne z postanowieniami niniejszej Umowy. W przypadku stwierdzenia, że Użytkownik naruszył odpowiednie przepisy prawa lub postanowienia niniejszej Umowy i powiązanych zasad, w zależności od wagi naruszenia użytkownika, Saitong ma prawo usunąć nielegalne informacje, ograniczyć, zawiesić, zakończyć korzystanie przez użytkownika z usługi Oprogramowania, dochodzić odpowiedzialności prawnej użytkownika oraz podjąć inne środki, które Saitong uzna za stosowne. Jeśli poniesiemy jakiekolwiek straty (w tym między innymi otrzymanie roszczeń od stron trzecich lub kar od jakiegokolwiek departamentu administracyjnego), Użytkownik ponosi pełną odpowiedzialność.

+ +

8. Ryzyko usług i wyłączenie odpowiedzialności

+

8.1 Chcemy zapewnić wsparcie usług przy użyciu obecnej technologii. Saitong nie gwarantuje, że Usługa Oprogramowania będzie działać bez przerw lub błędów, że wszystkie wady Usługi Oprogramowania zostaną poprawione lub że Usługa Oprogramowania spełni wszystkie wymagania użytkowników. Za wynikające z tego konsekwencje Saitong nie ponosi żadnej odpowiedzialności.

+

8.2 Za wszelkie straty poniesione przez użytkownika z powodu stron trzecich, takie jak awaria linii komunikacyjnych, problemy techniczne, sieć, awaria sprzętu terminalowego komputera, niestabilność systemu i inne przyczyny siły wyższej, nie ponosi się odpowiedzialności.

+

8.3 Saitong nie gwarantuje legalności, autentyczności, dokładności i skuteczności treści informacji uzyskanych za pośrednictwem oprogramowania (w tym między innymi treści usług stron trzecich), a Saitong nie ponosi żadnej odpowiedzialności za wyniki jakichkolwiek działań podejmowanych przez użytkowników na podstawie zapytań i przeglądania.

+

8.4 Oprogramowanie, jak większość oprogramowania internetowego, podlega wpływowi różnic w czynnikach, w tym między innymi przyczynach użytkownika, jakości usług sieciowych, otoczeniu społecznym i innych, i może być narażone na różne problemy bezpieczeństwa, takie jak wykorzystanie informacji użytkownika przez inne osoby, prowadzące do nękania w prawdziwym życiu; inne oprogramowanie pobrane i zainstalowane przez użytkowników lub odwiedzane strony internetowe mogą zawierać wirusy, takie jak "Konie trojańskie", które zagrażają bezpieczeństwu informacji i danych urządzenia końcowego użytkownika, a następnie wpływają na normalne korzystanie z oprogramowania. Użytkownicy powinni wzmocnić świadomość bezpieczeństwa informacji i ochrony danych użytkownika oraz zwrócić uwagę na wzmocnienie ochrony hasłem, aby uniknąć strat i nękania.

+

8.5 Gdy użytkownicy korzystają z Oprogramowania lub wymagają od Saitong świadczenia określonych usług, Oprogramowanie może wywoływać systemy stron trzecich lub oprogramowanie stron trzecich w celu wsparcia użytkowania lub dostępu użytkowników, a wyniki użytkowania lub dostępu są dostarczane przez stronę trzecią. Oprócz przestrzegania odpowiednich zasad niniejszej Umowy, użytkownicy powinni również przestrzegać umów i odpowiednich zasad strony trzeciej. Użytkownicy muszą rozumieć i zgadzać się, że korzystając z usług stron trzecich, strony trzecie mogą odczytywać dane użytkownika, a Saitong nie gwarantuje bezpieczeństwa, dokładności, skuteczności i innych niepewnych ryzyk wyników osiągniętych za pośrednictwem systemów stron trzecich lub wsparcia oprogramowania stron trzecich, użytkownicy powinni zachować ostrożność w ocenie, a Saitong nie ponosi żadnej odpowiedzialności za jakiekolwiek spory i szkody z tego wynikające.

+

8.6 W celu zagwarantowania autonomii rozwoju i dostosowania biznesu firmy, firma może w każdym momencie zmodyfikować lub przerwać usługę po powiadomieniu użytkownika w rozsądny sposób.

+

8.7 Z wyjątkiem przypadków wyraźnie przewidzianych przez przepisy prawa, Saitong dołoży wszelkich starań, aby zapewnić, że oprogramowanie i związana z nim technologia oraz informacje są bezpieczne, skuteczne, dokładne i niezawodne, ale ograniczona istniejącą technologią, użytkownik rozumie, że Saitong nie może tego zagwarantować.

+

8.8 Odszkodowanie za obrażenia ciała lub przypadkowe i pośrednie szkody ekonomiczne wynikające z lub w związku z którąkolwiek z poniższych okoliczności, w tym między innymi utrata zysków, utrata danych, odszkodowania za przerwy w działalności lub inne szkody lub straty biznesowe, ponosi Użytkownik:

+

1) Korzystanie lub niemożność korzystania z licencjonowanego oprogramowania.

+

2) Nieautoryzowane korzystanie z oprogramowania lub zmiana danych użytkownika przez strony trzecie.

+

3) Wydatki i straty poniesione w wyniku działań użytkownika z oprogramowaniem.

+

4) Błędne przekonania użytkownika dotyczące oprogramowania.

+

5) Wszelkie inne straty związane z oprogramowaniem, których nie można przypisać Saitong.

+

8.9 Użytkownik zgadza się, że Firma ma prawo do zawieszenia, przerwania lub zakończenia całości lub części Usługi dla użytkownika na podstawie wymagań organów sądowych, regulacyjnych i nadzorczych lub z własnych powodów biznesowych. Saitong nie ponosi za to żadnej odpowiedzialności.

+

8.10 Użytkownik rozumie i zgadza się, że Firma dołoży komercyjnie uzasadnionych starań w celu zapewnienia bezpieczeństwa przechowywania danych w Oprogramowaniu i Usługach, ale firma nie może zapewnić pełnej gwarancji, a Użytkownik rozumie, że Firma nie ponosi odpowiedzialności za usunięcie lub przechowywanie danych w Usłudze ani za niepowodzenie tworzenia kopii zapasowych.

+

8.11 W najszerszym zakresie dozwolonym przez prawo, Deweloper lub Dostawca nie ponosi odpowiedzialności za jakiekolwiek bezpośrednie, pośrednie, przypadkowe, specjalne lub wtórne szkody wynikające z korzystania z Aplikacji. Jeśli użytkownik ma dalsze potrzeby, prosimy o udanie się do szpitala w celu przeprowadzenia szczegółowych badań.

+ +

9. Oświadczenie o własności intelektualnej

+

9.1 Saitong jest posiadaczem praw własności intelektualnej do niniejszego oprogramowania. Wszystkie prawa autorskie, znaki towarowe, patenty, tajemnice handlowe i inne prawa własności intelektualnej oprogramowania, a także wszelkie treści informacyjne związane z oprogramowaniem (w tym między innymi tekst, zdjęcia, audio, wideo, grafika, projekt interfejsu, układ ramowy, odpowiednie dane lub dokumenty elektroniczne itp.) są chronione przez lokalne przepisy i regulacje oraz odpowiednie traktaty międzynarodowe.

+

9.2 Bez pisemnej zgody Firmy, Użytkownik nie będzie wdrażać, wykorzystywać ani przenosić powyższych praw własności intelektualnej w żadnym celu komercyjnym ani niekomercyjnym, ani zezwalać na to jakiejkolwiek stronie trzeciej, a Firma zastrzega sobie prawo do dochodzenia odpowiedzialności prawnej za powyższe działania.

+ +

10. Zmiana umowy

+

10.1 Saitong ma prawo do zmiany postanowień niniejszej Umowy, gdy jest to konieczne. Po zmianie postanowień Umowy, zmienione postanowienia Umowy zostaną opublikowane na odpowiedniej stronie. Jeśli nie zgadzasz się ze zmienioną treścią, użytkownik powinien z własnej inicjatywy anulować tę usługę. Jeśli Użytkownik kontynuuje korzystanie z Usług, uznaje się, że akceptuje zmiany w postanowieniach Umowy.

+

10.2 Saitong zastrzega sobie prawo do modyfikacji lub zmiany płatnych usług, standardów opłat, metod naliczania opłat, opłat za usługi i warunków usług świadczonych w razie potrzeby. Podczas świadczenia usług możemy pobierać określone opłaty od użytkowników niektórych usług teraz lub w przyszłości. Jeśli użytkownicy odmówią uiszczenia takich opłat, nie będą mogli kontynuować korzystania z odpowiednich usług po rozpoczęciu naliczania opłat.

+
+ + diff --git a/doc/pt/privacy_policy.html b/doc/pt/privacy_policy.html new file mode 100644 index 000000000..f5ab65567 --- /dev/null +++ b/doc/pt/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Política de Privacidade do Voitrans + + + + +
+

Política de Privacidade do Voitrans

+

Última atualização: 27 de maio de 2025

+

Data de vigência: 27 de maio de 2025

+ +

Bem-vindo ao Software e Serviços Voitrans

+

1. O Voitrans é fornecido pela Saitong Industries Inc. (doravante designada "a Empresa"). Pode ajudar os utilizadores a gerir dispositivos Bluetooth e outros produtos. Compreendemos a importância das informações pessoais para os nossos utilizadores (doravante designados "você") e que a proteção eficaz das suas informações pessoais é a pedra angular do desenvolvimento saudável e sustentável do nosso negócio. Agradecemos a sua utilização e confiança nos produtos ou serviços Voitrans! Estamos plenamente conscientes de que esta confiança não é fácil de conseguir, aderimos ao princípio de abertura e transparência, para expressar as nossas regras de processamento das suas informações pessoais, utilizamos formas legais e legítimas e propósitos claros e razoáveis para processar as suas informações pessoais. Nota especial: Certifique-se de ler e compreender esta Política de Privacidade cuidadosamente antes de utilizar os nossos produtos ou serviços para que possa fazer as escolhas adequadas.

+

2. Esta Política de Privacidade explica-lhe como recolhemos, utilizamos, armazenamos e partilhamos as suas informações pessoais quando utiliza o Voitrans. Informações pessoais referem-se a todos os tipos de informações registadas por meios eletrónicos ou outros que podem identificar uma pessoa natural específica ou refletir as atividades de uma pessoa natural específica isoladamente ou em combinação com outras informações. O Voitrans respeita e protege a privacidade pessoal de todos os utilizadores do serviço. Exceto conforme disposto nesta Política de Privacidade, o Voitrans não divulgará estas informações ao público nem as fornecerá a terceiros sem a sua permissão prévia.

+

3. Quando utiliza o produto ou serviço de um terceiro através de um produto ou serviço da App Marketplace, as suas informações pessoais estarão sujeitas à política de privacidade do terceiro.

+

4. Esta Política de Privacidade do Voitrans será atualizada periodicamente. Ao concordar com o Acordo de Utilização do Serviço Voitrans e começar a utilizar o Voitrans, considera-se que concordou com toda esta Política de Privacidade. Se não concordar com esta Política de Privacidade, não utilize o Software e os Serviços Voitrans.

+

5. Para analisar e medir a eficácia dos serviços relevantes, utilizaremos e divulgaremos as suas informações pessoais de acordo com as disposições desta Política de Privacidade.

+ +

Esta Política de Privacidade ajudá-lo-á a compreender o seguinte:

+
    +
  • 1 As informações que recolhemos
  • +
  • 2 Armazenamento de informações
  • +
  • 3 Segurança das informações
  • +
  • 4 Como utilizamos as informações que recolhemos
  • +
  • 5 Partilha de informações
  • +
  • 6 Como gere as suas informações pessoais
  • +
  • 7 Descrição das permissões da aplicação
  • +
  • 8 Acesso a SDKs de terceiros
  • +
  • 9 Proteção de menores
  • +
  • 10 Política de Privacidade vigente e atualizada
  • +
  • 11 Como contactar-nos
  • +
+ +

1. As informações que recolhemos

+

1. Ao começar a utilizar o Voitrans, começaremos a recolher dados sobre a sua utilização da aplicação

+

2. O Voitrans pode obter informações pessoais sobre si de terceiros ou parceiros comerciais por meios legais

+

3. Para lhe fornecer melhores produtos e serviços, proporcionar-lhe segurança de rede durante a utilização, manter o funcionamento normal dos produtos e otimizar e melhorar, o propósito dos nossos serviços de informação, depois de clicar ativamente para concordar com esta política de privacidade, utilize as informações que fornecemos. Durante o serviço, além das informações pessoais necessárias para garantir o funcionamento normal das funções básicas da App de acordo com as leis e regulamentos nacionais, recolheremos outras informações pessoais suas:

+

3.1 Para identificar utilizadores de risco, avaliar a autenticidade dos utilizadores e prevenir fraudes de forma abrangente, leremos as informações do seu dispositivo sempre que abrir o software, incluindo: (modelo do dispositivo, endereço MAC do dispositivo, identificador único do dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, número de série, SSID e BSSID do WIFI), leitura do endereço Bluetooth, versão do sistema operativo, nome do sistema operativo, informações de conta e palavra-passe de início de sessão do utilizador;

+

3.2 Quando utiliza os nossos produtos e serviços, podemos recolher certas informações através de informações de registo de rede ou determinados programas e software, tais informações podem incluir: detalhes da utilização de produtos e serviços, como o horário de abertura da sua aplicação, a duração de utilização e o endereço da página visitada; informações de eventos do dispositivo, como falhas, atividade do sistema, etc., para otimizar o seu dispositivo e melhorar os nossos serviços;

+

3.3 Para identificar aplicações onde o equipamento está em risco, fornecer serviços funcionais mais seguros. Portanto, precisamos de obter a sua lista de aplicações/instalações no processo para garantir o funcionamento normal do produto e proteger a segurança do dispositivo.

+

3.4 Para analisar a utilização das funções da aplicação pelos utilizadores e determinar a autenticidade dos utilizadores, precisamos de realizar estatísticas de dados e recolher as informações do dispositivo acima mencionadas, incluindo o endereço MAC do dispositivo e o identificador único do dispositivo, quando o seu dispositivo está em utilização.

+

3.5 Sinal do dispositivo: o estado de rede do dispositivo que utiliza, informações do ponto de acesso WIFI, etc.

+

3.6 Informações de localização: Podemos utilizar GPS, WiFi ou outros meios técnicos para recolher e processar informações sobre a sua localização para atualizar informações locais, fornecer serviços de conteúdo, etc.

+

Para mais informações, clique em "Lista de Recolha de Informações Pessoais".

+ +

1. Para as informações pessoais mais sensíveis nas informações acima, como informações do dispositivo do utilizador (número IMEI, estado da chamada e número de identificação), informações de localização GPS, conteúdo multimédia de fotos e direitos de acesso a ficheiros, obteremos o seu consentimento antes da recolha. Para certas informações não sensíveis, a recolha pode ser predefinida e automática. Pode restringir a nossa recolha de informações relevantes ou a utilização de certas permissões no seu dispositivo móvel ajustando a opção de Definições do seu dispositivo móvel. Quando restringir o nosso acesso a uma determinada permissão, poderemos não conseguir continuar a fornecer-lhe os serviços correspondentes, e deixaremos de processar as suas informações correspondentes.

+

2. Não recolheremos o seu número de documento de identidade, informações biométricas pessoais, número de conta bancária, informações patrimoniais, informações de crédito, informações de saúde e fisiológicas e outras informações pessoais sensíveis.

+

3. Sobre permissões sensíveis: Para utilizar corretamente as funções da aplicação, o produto necessita de obter as seguintes permissões para fornecer serviços funcionais relacionados com produtos normais.

+ +

1 Obter permissões de leitura e escrita de armazenamento

+

1 Como obter: aviso pop-up, quando a permissão é obtida, o utilizador clicará ativamente em concordar e a aplicação utilizará esta permissão

+

2 Finalidade e âmbito de utilização: É utilizado para verificar os ficheiros de cache de recursos e miniaturas no sistema, carregar recursos musicais e imagens de produtos. É exibido na interface da App para facilitar aos utilizadores a visualização e operação

+ +

2 Obter permissão para a lista de instalação de aplicações

+

1 Como obter: aviso pop-up, quando a permissão é obtida, o utilizador clicará ativamente em concordar e a aplicação utilizará esta permissão

+

2 Finalidade e âmbito de utilização: Quando a aplicação precisa de utilizar serviços de promoção publicitária, a plataforma publicitária de terceiros, Youmon +SDK, precisa de obter a "permissão da lista de instalação de software de aplicações" do dispositivo para evitar enviar ao utilizador aplicações que já possui e melhorar a experiência do utilizador.

+ +

3 A permissão para obter informações do estado do dispositivo

+

Inclui: (modelo do dispositivo, endereço MAC do dispositivo, identificador único do dispositivo (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, número de série, SSID e BSSID do WIFI, leitura do endereço Bluetooth), versão do sistema operativo, nome do sistema operativo, etc.;

+

1 Como obter: aviso pop-up, quando a permissão é obtida, o utilizador clicará ativamente em concordar e a aplicação utilizará esta permissão

+

2 Finalidade e âmbito de utilização: Ao utilizar a nossa aplicação, para analisar a utilização das funções da aplicação pelo utilizador e avaliar a autenticidade do utilizador, sincronizaremos a permissão com SDKs de terceiros, incluindo Autonavi SDK, Youmon +SDK, etc.

+ +

4 Acesso a informações de localização

+

1 Como obter: avisos pop-up, quando a permissão é obtida, o utilizador utilizará esta permissão apenas quando clicar ativamente em concordar com a aplicação.

+

2 Finalidade e âmbito de utilização: Quando a aplicação precisa de utilizar GPS, WiFi ou outras funções, o produto precisa de recolher a sua localização e informações para procurar dispositivos Bluetooth em localizações próximas.

+

Nota: Para mais permissões da aplicação, consulte a Secção 7 "Descrição das Permissões da Aplicação" deste documento "Política de Privacidade"

+ +

2. Armazenamento de informações

+

1. Onde as informações são armazenadas

+

As informações pessoais que recolhemos e geramos na República Popular da China serão armazenadas nos nossos servidores e/ou nos dos nossos afiliados.

+

2. Armazenamento e processamento de informações

+

Armazenamos as suas informações pessoais apenas durante o período necessário para atingir o objetivo ou durante o tempo exigido por lei e regulamento. Depois de deixar de utilizar este produto, deixaremos imediatamente de recolher e processar as suas informações pessoais e dados da aplicação. Quando o período acima mencionado for excedido, eliminaremos ou anonimizaremos as informações pessoais que nos forneceu.

+

Além das funções necessárias, o Voitrans precisa de solicitar as permissões de sistema correspondentes. O lado do servidor na nuvem não armazena informações pessoais do utilizador, e o SDK de terceiros acedido será anonimizado e desidentificado pelo fornecedor de serviços (Amu Statistics SDK, Autonavi SDK), pelo que os utilizadores não podem ser rastreados. As informações armazenadas no telemóvel do utilizador serão automaticamente eliminadas quando o utilizador desinstalar o Voitrans ou limpar a cache.

+ +

3. Segurança das informações

+

1. O Voitrans armazena e protege as suas informações pessoais utilizando medidas e tecnologias de segurança padrão da indústria, como autenticação, encriptação de dados, acesso restrito ao centro de dados e outras medidas de segurança para garantir que as suas informações estão seguras contra divulgação, alteração e destruição. Apesar das medidas de segurança acima mencionadas, tenha em atenção que nenhuma medida de segurança pode ser 100% segura.

+

2. Quando utiliza os serviços fornecidos pelo Voitrans, proteja as suas informações pessoais. Se descobrir que as suas informações pessoais foram comprometidas, contacte-nos imediatamente para que possamos tomar as medidas adequadas.

+ +

4. Como utilizamos as informações que recolhemos

+

1. Ao implementar as funções comerciais da aplicação, podemos utilizar as suas informações pessoais para garantir a integridade e segurança dos produtos e serviços que lhe fornecemos;

+

2. Compreenderemos os seus hábitos de utilização através das informações recolhidas, e com a ajuda da análise de dados, identificaremos a aceitabilidade dos serviços, os seus hábitos de utilização, etc., para testar e criar novos produtos, funções e serviços, melhorar o nível de serviço e ajudar-nos a melhorar os serviços existentes e desenvolver novos serviços;

+

3. Podemos utilizar as suas informações pessoais para inquéritos a clientes sobre os produtos e serviços, para enviar avisos sobre os produtos e serviços, e para promoção comercial;

+

4. Podemos utilizar as suas informações para análise interna e investigação relacionada com a aplicação;

+ +

5. Partilha de informações

+

Atualmente, não partilharemos nem transferiremos ativamente as suas informações pessoais para terceiros fora da empresa. Se houver outra partilha ou transferência das suas informações pessoais, confirmaremos diretamente ou confirmaremos que o terceiro obteve o seu consentimento expresso para o comportamento acima.

+

Não divulgaremos publicamente as informações pessoais que recolhemos. Se for necessário divulgá-las publicamente, informá-lo-emos sobre o propósito da divulgação pública, o tipo de informação divulgada e as informações sensíveis que possam estar envolvidas, e obteremos o seu consentimento expresso.

+

À medida que o nosso negócio continua a desenvolver-se, poderemos participar em fusões, aquisições, transferências de ativos e outras transações, e informá-lo-emos das circunstâncias relevantes, de acordo com as leis e regulamentos e não menos do que os padrões exigidos por este Guia para continuar a proteger as suas informações pessoais ou exigir que um novo controlador continue a proteger as suas informações pessoais.

+

Além disso, de acordo com as leis e regulamentos pertinentes e os padrões nacionais, podemos partilhar, transferir e divulgar publicamente informações pessoais sem a autorização e consentimento prévios do titular das informações pessoais nas seguintes circunstâncias:

+
    +
  • 1 Diretamente relacionado com a segurança nacional e a defesa nacional;
  • +
  • 2 Diretamente relacionado com a segurança pública, a saúde pública ou interesses públicos importantes;
  • +
  • 3 Diretamente relacionado com a investigação criminal, acusação, julgamento e execução de sentenças;
  • +
  • 4 Para proteger a vida, a propriedade e outros direitos e interesses legítimos importantes do titular dos dados pessoais ou de outras pessoas, mas é difícil obter o consentimento da pessoa;
  • +
  • 5 Informações pessoais divulgadas ao público pelo próprio titular das informações pessoais;
  • +
  • 6 Recolha de informações pessoais de informações legalmente divulgadas publicamente, como relatórios de notícias legítimos, divulgação de informações governamentais e outros canais.
  • +
+ +

6. Como gere as suas informações pessoais

+

De acordo com as leis, regulamentos e padrões relevantes da China, bem como as práticas comuns de outros países e regiões, garantimos que exerce os seguintes direitos sobre as suas informações pessoais:

+ +

1. Corrigir as suas informações pessoais

+

Se descobrir que há um erro nas suas informações pessoais processadas por nós, tem o direito de corrigir ou atualizar as informações erradas ou incompletas. Se não conseguir operar de forma independente no centro de conta, pode enviar-nos um e-mail para saitong.voitrans@gmail.com para nos contactar

+ +

2. Eliminar as suas informações pessoais

+

Nos seguintes casos, pode fazer-nos um pedido para eliminar as suas informações pessoais:

+
    +
  • Se processarmos informações pessoais em violação de leis e regulamentos;
  • +
  • Se recolhermos e utilizarmos as suas informações pessoais sem o seu consentimento;
  • +
  • Se o nosso processamento de informações pessoais violar o nosso acordo consigo;
  • +
  • Se já não utilizar os nossos produtos ou serviços;
  • +
  • Se já não lhe fornecermos produtos ou serviços.
  • +
+

Contacte-nos. Processaremos o seu pedido em saitong.voitrans@gmail.com Contacte-nos. Enviar-lhe-emos após a receção dentro de 30 dias úteis de receção

+ +

3. Alterar o âmbito do seu consentimento

+

Pode contactar-nos por e-mail para saitong.voitrans@gmail.com Contacte-nos. A seu pedido, deixaremos de recolher, utilizar ou divulgar as suas informações pessoais. Tenha em atenção que a retirada do seu consentimento ou a eliminação das suas informações pessoais pode afetar a sua utilização de alguns dos nossos serviços.

+ +

4 Aceder e copiar informações pessoais

+

Pode, de acordo com as disposições das leis pertinentes, fornecer o seu IMEI (número de série do telemóvel) ou OAID ou Android ID após as informações da conta e outras informações, pode solicitar-nos o acesso e cópia das suas informações pessoais, pode enviar um e-mail para 3514406195@qq.com para entrar em contacto connosco.

+ +

5. Em resposta ao seu pedido acima

+

Por razões de segurança, pode ser necessário fornecer um pedido por escrito ou provar a sua identidade de outra forma. Podemos pedir-lhe que verifique a sua identidade antes de processar o seu pedido. Para o seu pedido razoável, responderemos e trataremos de forma atempada. Podemos rejeitar pedidos desnecessariamente repetitivos, que requerem demasiada tecnologia (por exemplo, o desenvolvimento de novos sistemas ou alterações fundamentais às práticas existentes), que representam um risco para os interesses legítimos de outros ou que são altamente impraticáveis.

+

Nas seguintes circunstâncias, de acordo com os requisitos das leis e regulamentos, não poderemos responder ao seu pedido:

+
    +
  • Relacionado com a segurança nacional e a defesa nacional;
  • +
  • Em relação com a investigação criminal, acusação e julgamento;
  • +
  • Existe evidência suficiente de que tem má intenção subjetiva ou abuso de direitos;
  • +
  • Responder ao seu pedido causará danos graves aos direitos e interesses legítimos seus ou de outras pessoas e organizações.
  • +
+ +

6. Cancelamento de conta

+

O utilizador pode realizar a operação de [cancelamento de conta] na APP. Passos de operação:

+
    +
  1. Ir à página [O meu perfil]
  2. +
  3. Clicar no botão [Definições] no canto superior direito
  4. +
  5. Clicar em [Cancelar conta] para confirmar
  6. +
+

Depois de terminar a sessão, as informações sobre a conta do utilizador são apagadas

+ +

7. Descrição das permissões da aplicação

+

Para fornecer melhores produtos e serviços, quando utiliza o software, solicitaremos os seguintes direitos; quando entrar na página inicial ou utilizar a função será solicitada autorização; se recusar, algumas das funções correspondentes não poderão ser utilizadas normalmente. As finalidades específicas e lembretes de permissões são descritos em detalhe a seguir:

+ +

1 Permissões de localização:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Através de WiFi ou estação base móvel para obter informações de latitude e longitude da localização do utilizador

+

Quando utiliza o Voitrans, procuraremos o seu dispositivo Bluetooth anexo com base na sua localização geográfica. Ao mesmo tempo, para fornecer serviços mais estáveis, otimizar produtos e melhorar a experiência, partilharemos as informações acima com três SDKs, como Youmon e Autonavi, para obter dados operacionais do Voitrans e serviços funcionais.

+

Modo de lembrete: É apresentado um aviso indicando a permissão para iniciar a aplicação pela primeira vez, exigindo que o utilizador confirme a aceitação. Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Esta permissão é necessária quando acede a uma aplicação para executar funções de gestão de aplicações.

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

3 Permissões de rede:

+

android.permission.INTERNET

+

Quando utiliza estas permissões são necessárias para os serviços de informação do Voitrans e os serviços de atualização de versão, e para melhorar a experiência do utilizador e otimizar as capacidades do serviço, SDKs de terceiros como Friends também utilizarão estas permissões.

+

Modo de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

4 Permissões para obter o estado da rede:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

É utilizado para obter se a conexão de rede atual é válida, determinar se o ambiente 4G atual está ativo e se deve lembrar as alterações do ambiente de rede, afetando o carregamento do conteúdo de informação. Esta permissão é solicitada quando utiliza o Voitrans.

+

As alterações no estado da rede afetam o carregamento e descarregamento de dados. Portanto, o acesso à permissão de estado da rede será partilhado com Friends+ e outras plataformas.

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

5 Permissões para obter a lista de tarefas:

+

android.permission.GET_TASKS

+

Esta permissão é utilizada para obter a lista de aplicações para a função de gestão de software. Quando utiliza a função de gestão de software, precisa de ler as aplicações instaladas no telemóvel.

+

Modo de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

6 Obter permissão de endereço MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Quando utiliza o Voitrans, a aplicação precisará de obter permissões de endereço MAC:

+

Quando uma aplicação precisa de reportar dados de conversão de objetivos, plataformas de terceiros como Youmon +SDK precisam de utilizar MAC.

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

7 Obter permissão para gravar áudio

+

android.permission.RECORD_AUDIO

+

Quando utiliza a função de entrada de voz do Voitrans, precisa de utilizar a permissão para gravar áudio, e utiliza principalmente a entrada de voz para tradução e outras funções relacionadas.

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade, a caixa de diálogo aparece dinamicamente quando requerido pelo utilizador.

+ +

8 Obter permissão SSID para WIFI

+

Quando esta permissão é utilizada, a aplicação lê a permissão SSID para WIFI:

+

Âmbito de utilização e finalidade: Quando a aplicação precisa de utilizar serviços de análise de dados, plataformas de terceiros como +SDK precisam de ler a "permissão SSID do WIFI" do dispositivo para fornecer aos utilizadores serviços funcionais mais precisos e eficazes.

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

9 Obter acesso Bluetooth

+

Quando esta permissão é utilizada, a aplicação lê a permissão Bluetooth:

+

Âmbito de utilização e finalidade: Dispositivos Bluetooth para procurar e configurar acessórios, como auscultadores Bluetooth, relógios Bluetooth, etc. Fácil para os utilizadores gerirem

+

Método de lembrete: É apresentado um aviso indicando a permissão para iniciar a aplicação pela primeira vez, exigindo que o utilizador confirme a aceitação. Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

10 Obter a permissão BSSID para WiFi

+

Quando a aplicação precisa de distinguir e identificar o utilizador para fornecer serviços funcionais e estatísticas de dados, lerá a permissão "WiFi BSSID" do dispositivo para:

+

Âmbito de utilização e finalidade: 1 Plataformas de terceiros: como Youmeng SDK, Bugly SDK, Autonavi SDK

+

Método de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

11 Obter a permissão de instalação de aplicações

+

android.permission.REQUEST_INSTALL_PACKAGES

+

O software utilizará a permissão de instalação de aplicações, que é utilizada principalmente para permitir aos utilizadores instalar uma nova versão e experimentar novas funções quando houver uma nova versão.

+

Modo de lembrete: Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

12 Obter permissões para a câmara

+

android.permission.CAMERA

+

O Voitrans utiliza permissões de câmara para digitalizar códigos QR e vincular dispositivos Bluetooth como auscultadores Bluetooth e relógios.

+

Método de lembrete: É apresentado um aviso indicando a permissão para iniciar a aplicação pela primeira vez, exigindo que o utilizador confirme a aceitação. Descrição do Acordo de Utilizador e Política de Privacidade.

+ +

Nota especial:

+

1 A integração da aplicação dentro do seu Allies SDK, Scott map SDK, após o consentimento do utilizador, a aplicação em segundo plano/primeiro plano para ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI e outras informações pessoais;

+

Observações: Para mais informações, consulte o seguinte conteúdo e permissões relacionados com SDK [VIII. Acesso à lista de SDKs de terceiros]

+ +

8. Acesso a SDKs de terceiros

+

1 Para garantir o funcionamento estável e a realização funcional do nosso cliente, para que possa utilizar e desfrutar de mais serviços e funções, a nossa aplicação será integrada no kit de desenvolvimento de ferramentas de software (SDK) ou outras aplicações semelhantes de terceiros, estes terceiros recolherão e processarão as informações relevantes de acordo com as suas próprias políticas de privacidade, para fornecer normalmente funções e serviços publicitários. Pode conhecer as regras de recolha e processamento de informações de terceiros na secção seguinte. Realizaremos testes de segurança rigorosos nos kits de desenvolvimento (SDKs) para que os parceiros obtenham informações, a fim de proteger a utilização razoável e a segurança das suas informações pessoais. Tenha em atenção que os SDKs de terceiros podem alterar os tipos de processamento de dados devido às suas atualizações de versão. Consulte as políticas de privacidade publicadas pelos SDKs de terceiros. Veja os detalhes abaixo ou clique para ver a Lista de SDK de Terceiros.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Informações obtidas: Número do dispositivo, endereço IP, informações de software do dispositivo, código de identificação do dispositivo (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informações IMSI do cartão SIM, IP, endereço MAC), identificador do dispositivo, região, informações de aplicações relacionadas com o dispositivo e outras informações de registo relacionadas com o serviço

+

Finalidade de utilização: Início de sessão e partilha do WeChat

+

Programador: Shenzhen Tencent Computer Systems Company Limited

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Informações obtidas: Nome da aplicação, versão da aplicação, marca e modelo do dispositivo, sistema operativo, informações do operador, resolução do ecrã, informações de sensores (vetor, aceleração, pressão, direção, geomagnético, giroscópio, temperatura, sensor de luz, sinal NMEA), informações de intensidade do sinal do dispositivo

+

Finalidade de utilização: Navegação usando Amap

+

Programador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Informações obtidas: Nome da aplicação, versão da aplicação, marca e modelo do dispositivo, sistema operativo, informações de rede, intensidade do sinal do dispositivo, etc.

+

Finalidade de utilização: Exibição e interação do mapa

+

Programador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Informações obtidas: Informações de localização (GPS, Wi-Fi, estação base), informações do dispositivo, informações de rede, etc.

+

Finalidade de utilização: Fornecer serviços de localização

+

Programador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Informações obtidas: Nome da aplicação, versão da aplicação, informações do dispositivo, informações de rede, etc.

+

Finalidade de utilização: Ferramentas de mapa e otimização de renderização

+

Programador: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Informações obtidas: Identificadores do dispositivo, informações básicas do dispositivo, lista de software instalado e informações de rede (consulte a política de privacidade oficial para mais detalhes)

+

Finalidade de utilização: Início de sessão com conta Alipay e invocação de pagamento

+

Programador: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Informações obtidas: Versão do SDK/API, plataforma, marca temporal, identificador da aplicação, versão da aplicação, fabricante do dispositivo, versão do SO, configuração regional, fuso horário, estado da rede (Wi-Fi, etc.), registos de rede, dados de falhas e utilização, endereço IP, etc. (consulte a política de privacidade oficial para mais detalhes)

+

Finalidade de utilização: Serviço de monitorização de qualidade da aplicação e reporte de dados

+

Programador: Shenzhen Tencent Computer Systems Company Limited

+

Método de recolha: Autorrecolha do SDK

+

Ligação da Política de Privacidade: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Proteção de menores

+

Os utilizadores dos nossos produtos e serviços podem incluir menores de 18 anos. Os utilizadores menores devem procurar o conselho dos seus pais ou tutores relativamente a esta Política de Privacidade antes de utilizar os nossos produtos, e utilizar os nossos serviços ou fornecer-nos as suas informações após obter o consentimento de e sob a orientação dos seus pais ou tutores. Os tutores de menores que tenham questões podem contactar-nos através dos dados de contacto nesta Política de Privacidade.

+

Se não concordar com a recolha das informações mencionadas pelos fornecedores de serviços de terceiros acima, pare de utilizar o Software imediatamente. Durante a sua utilização do Software, estes terceiros recolherão e processarão as informações relevantes de acordo com as suas próprias políticas de privacidade para fornecer algumas funções, publicidade e outros serviços. Se as informações forem divulgadas devido à recolha das informações mencionadas pelo fornecedor de serviços de terceiros relevante, o fornecedor de serviços de terceiros relevante assumirá a responsabilidade legal correspondente.

+ +

10. Política de Privacidade vigente e atualizada

+

1. Esta Política de Privacidade é eficaz a partir da data de publicação.

+

2. À medida que o nosso negócio evolui e muda, a nossa Política de Privacidade pode mudar. Reservamo-nos o direito de alterar a nossa política de privacidade a qualquer momento, portanto consulte frequentemente. Se fizermos alterações à nossa Política de Privacidade, publicaremos estas atualizações no nosso website, aplicações e onde considerarmos apropriado para o manter informado. Se a política de privacidade for atualizada, entrará em vigor a partir da data de atualização. A sua utilização contínua dos nossos produtos ou serviços significa que concorda com a nossa Política de Privacidade alterada.

+ +

11. Como contactar-nos

+

Saitong Industries Inc estabelecida a 22 de novembro de 2024, endereço registado: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Se quiser saber mais sobre a nossa empresa e plataforma, pode contactar-nos através das informações de contacto fornecidas nesta política (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/pt/user_agreement.html b/doc/pt/user_agreement.html new file mode 100644 index 000000000..6479bb137 --- /dev/null +++ b/doc/pt/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protocolo de Utilizador da Aplicação Voitrans + + + +
+
Português
+ +

Protocolo de Utilizador da Aplicação Voitrans

+ +

Estes Termos e Condições de Utilização informam-no sobre como aceder e utilizar a Aplicação Voitrans e os serviços online (os "Serviços"). A Saitong Industries Inc. (doravante designada "Saitong") lembra os utilizadores de lerem atentamente e compreenderem plenamente este Acordo de Utilizador (doravante designado "Acordo"). Os utilizadores devem ler atentamente e compreender plenamente os termos deste Acordo. Leia atentamente e escolha aceitar ou não aceitar este Acordo. A sua utilização da APP Voitrans (doravante designada "a APP" ou "o Software") será considerada como aceitação deste Acordo e concorda em ficar vinculado aos termos deste Acordo. Se não concordar com este Acordo, não utilize a APP.

+

A Saitong reserva-se o direito de alterar este Acordo, e os termos atualizados do Acordo serão publicados nesta APP, com efeito a partir da data de publicação.

+ +

1. Regras gerais

+

1.1 Esta APP é o software fornecido pela Saitong para conectar os produtos de auscultadores lançados pela Saitong e pelas suas empresas parceiras. A propriedade e os direitos de operação do software e serviços relacionados são todos propriedade da Saitong.

+

1.2 Este Acordo é um acordo entre si (doravante designado "Utilizador") e a empresa e os seus parceiros e parceiros operacionais (doravante designados "Parceiros") relativamente à utilização da APP e serviços relacionados pelo utilizador.

+

1.3 O Software e os serviços incluem:

+

1.3.1 O software fornecido oferece aos utilizadores do Voitrans a conexão e vinculação do Voitrans, gestão de configuração de funções e outros serviços de software, sujeito aos serviços de software reais fornecidos pela APP.

+

1.3.2 Atualizações, melhorias e outros serviços do software.

+ +

2. Âmbito da licença de software

+

2.1 Concedemos ao utilizador uma licença pessoal, intransferível, não sublicenciável e não exclusiva para o Software.

+

2.2 Os utilizadores podem instalar, utilizar, exibir e executar o software num único dispositivo terminal móvel para fins não comerciais. No entanto, o utilizador não deve instalar, utilizar ou executar o software para fins de operação comercial, copiar, alterar, modificar, conectar ou executar o software ou os dados libertados na memória de qualquer dispositivo terminal durante a operação do software ou os dados de interação entre o cliente e o servidor durante a operação do software, nem criar quaisquer obras derivadas. Isto inclui, mas não se limita a, a utilização de plug-ins, extensões ou ferramentas/serviços de terceiros não autorizados para aceder ao Software e sistemas relacionados. Para venda comercial, reprodução e distribuição, como pré-instalação e empacotamento de software, deve ser obtida autorização e permissão por escrito.

+

2.3 O Utilizador não deve instalar o Software em outros dispositivos terminais sem a permissão expressa do Criador, incluindo, mas não limitado a, televisores, set-top boxes digitais, consolas de jogos e outros dispositivos.

+

2.4 Exceto conforme expressamente autorizado por este Acordo, nenhum outro direito é concedido ao Utilizador, e o Utilizador deve obter o consentimento por escrito para utilizar outros direitos.

+ +

3. Atualização do software

+

3.1 O utilizador deve selecionar a versão do software adequada para a configuração do terminal instalado. Caso contrário, problemas de software, problemas do dispositivo ou danos causados por qualquer versão de software não adequada para o tipo de dispositivo serão da responsabilidade exclusiva do utilizador.

+

3.2 Para melhorar a experiência do utilizador e melhorar o conteúdo do serviço, a Saitong tem o direito de lhe fornecer versões de substituição, modificação e atualização do software periodicamente. A função "Aviso de atualização" está ativada por defeito para os utilizadores. Dependendo das diferentes versões de software utilizadas pelos utilizadores, a Saitong oferece aos utilizadores a opção de ativar esta função. Após o lançamento de uma nova versão do software, a Saitong não garante a disponibilidade contínua da versão antiga do software.

+ +

4. Especificações de utilização

+

4.1 Os utilizadores podem utilizar o Software e os Serviços de acordo com este Acordo sob a premissa de cumprir a lei e este Acordo, e os utilizadores não devem realizar os seguintes atos:

+

4.1.1 Eliminar toda a informação de direitos de autor do Software e outras cópias, e modificar, eliminar ou contornar as medidas técnicas estabelecidas pelo Software para proteger os direitos de propriedade intelectual.

+

4.1.2 Engenharia reversa do Software, como desmontagem, descompilação ou outras tentativas de obter o código-fonte do Software.

+

4.1.3 Através da modificação ou falsificação de instruções e dados na operação do software, aumentar, eliminar ou alterar a função ou o efeito de operação do software, ou software ou métodos destinados aos fins acima mencionados para operar ou difundir ao público, independentemente de estes atos serem para fins comerciais.

+

4.1.4 Utilizar o software para qualquer comportamento que ponha em perigo a segurança da rede, incluindo, mas não limitado a: utilizar dados não autorizados ou aceder a servidores/contas não autorizados; aceder a redes públicas ou outros sistemas operativos sem permissão e eliminar, modificar ou adicionar informações armazenadas; tentativas não autorizadas de sondar, verificar ou testar as fraquezas do sistema ou rede do software ou outros atos que comprometam a segurança da rede; tentativas de interferir ou destruir o funcionamento normal do sistema de software ou website, difundir intencionalmente programas maliciosos ou vírus, e outros atos que perturbem os serviços normais de informação da rede; falsificar nomes de pacotes TCP/IP ou nomes parciais.

+

4.1.6 Sem o consentimento por escrito da Empresa, o utilizador realiza arbitrariamente os seguintes atos sobre o software e a informação nele contida, incluindo, mas não limitado a: utilizar, alugar, emprestar, copiar, modificar, vincular, reimprimir, compilar, publicar, publicar, estabelecer sites espelho, desenvolver produtos derivados, obras, serviços, plug-ins, extensões, compatibilidade, interconexão, etc., com a ajuda do Software.

+

4.1.7 Utilizar o Software para publicar, transmitir, distribuir e armazenar conteúdo que viole as leis locais.

+

4.1.8 Utilizar o software para publicar, transmitir, difundir e armazenar conteúdo que infrinja os direitos de propriedade intelectual, segredos comerciais e outros direitos legítimos de terceiros.

+

4.1.9 Utilizar este software para publicar, transmitir e difundir informação publicitária e informação indesejada em grandes quantidades.

+

4.1.10 Utilizar o Software e outros Serviços de qualquer forma ilegal, para qualquer finalidade ilegal ou de qualquer forma inconsistente com a utilização licenciada deste Acordo.

+

4.2 Especificação de publicação de informação

+

4.2.1 Se utilizar o software para publicar conteúdo de informação (se houver), deve garantir que possui os direitos de propriedade intelectual do conteúdo de informação carregado por si ou que obteve autorização legal, e qualquer comportamento seu ao utilizar o software e os serviços não infringe os direitos e interesses legítimos de qualquer terceiro.

+

4.2.2 Ao utilizar o Software, o utilizador não deve utilizar o Software para participar nas seguintes atividades, incluindo, mas não limitado a:

+

4.2.2.1 Criar, copiar, publicar, difundir e armazenar conteúdo que viole as leis e regulamentos nacionais locais.

+

4.2.2.2 Publicar, transmitir, difundir e armazenar conteúdo que infrinja os direitos legais de terceiros, como reputação, imagem, propriedade intelectual e segredos comerciais.

+

4.2.2.3 Fabricar factos, ocultar a verdade com o objetivo de enganar ou confundir outros.

+

4.2.2.4 Publicar, transmitir e difundir informação publicitária e informação indesejada.

+

4.2.2.5 Participar em outros atos que violem as leis e regulamentos locais.

+

4.2.3 Não pode realizar quaisquer atividades comerciais como publicidade e venda de produtos no Software sem a permissão da Empresa.

+

4.3 O Utilizador compreende e concorda que:

+

4.3.1 A Saitong determinará se o utilizador é suspeito de violar as especificações de utilização acima, e de acordo com os resultados da determinação, suspenderá ou terminará a sua licença de utilização ou tomará outras medidas restritivas que possam ser tomadas de acordo com este acordo.

+

4.3.2 Para a utilização do software licenciado pelo utilizador que publique conteúdo suspeito de ser ilegal ou suspeito de infringir os direitos legais de terceiros ou de violar este Acordo, a informação será diretamente eliminada.

+

4.3.3 Se a violação por parte do utilizador das regras de utilização acima causar danos a terceiros, deve assumir a responsabilidade legal de forma independente em seu próprio nome, e deve garantir que a empresa fique livre de perdas ou custos adicionais.

+

4.3.4 Se o utilizador violar as disposições legais ou acordos pertinentes, causando perdas à Saitong, ou for objeto de reclamações de terceiros, ou for sancionado pela autoridade administrativa, o utilizador deve compensar as perdas e/ou despesas causadas à Saitong, incluindo honorários razoáveis de advogados, custos de investigação e recolha de provas.

+ +

5. Descrição de serviços de terceiros

+

5.1 O utilizador compreende e concorda que o sistema de software pode conter serviços fornecidos por afiliadas da Empresa ou terceiros, e que a Empresa apenas fornece módulos funcionais relevantes no sistema para conveniência dos utilizadores e fornece acesso a serviços de terceiros.

+

5.2 Quer os serviços de terceiros estejam predefinidos nos serviços do sistema de software, ou sejam abertos ou encomendados pelos próprios utilizadores, os utilizadores compreendem e concordam que a Saitong não faz qualquer garantia expressa ou implícita sobre a legalidade e eficácia dos fornecedores de serviços de terceiros ou utilizadores, bem como sobre a legalidade, precisão, eficácia e segurança dos serviços de terceiros.

+

5.3 A empresa não supervisiona, controla ou fornece qualquer garantia de qualquer tipo nem assume qualquer responsabilidade pelos serviços de terceiros.

+

5.4 Qualquer disputa ou controvérsia entre o utilizador e o fornecedor de serviços de terceiros será resolvida pelo Utilizador e o terceiro de acordo com o processo comercial e as normas comerciais do fornecedor de serviços de terceiros, e a empresa não assumirá qualquer responsabilidade.

+ +

6. Política de Privacidade e Proteção de Informações Pessoais

+

6.1 A Saitong compromete-se a proteger a privacidade dos utilizadores de acordo com a política de privacidade, consulte: Política de Privacidade da aplicação Voitrans.

+ +

7. Responsabilidade por incumprimento

+

7.1 A Saitong tem o direito de avaliar se o comportamento do utilizador está em conformidade com as disposições deste Acordo. Se se considerar que o Utilizador violou as leis e regulamentos pertinentes ou as disposições deste Acordo e regras relacionadas, de acordo com a gravidade da violação do utilizador, a Saitong tem o direito de eliminar a informação ilegal, restringir, suspender, terminar a utilização do serviço do Software pelo utilizador, responsabilizar legalmente o utilizador e tomar outras medidas que a Saitong considere apropriadas. Se sofrermos qualquer perda (incluindo, mas não limitado a, receber quaisquer reclamações de terceiros ou sanções de qualquer departamento administrativo), o Utilizador será totalmente responsável.

+ +

8. Riscos do serviço e isenção de responsabilidade

+

8.1 Pretendemos fornecer suporte de serviço com a tecnologia atual. A Saitong não garante que o Serviço do Software funcionará sem interrupções ou erros, que todos os defeitos do Serviço do Software serão corrigidos, ou que o Serviço do Software cumprirá todos os requisitos dos utilizadores. As consequências resultantes não serão da responsabilidade da Saitong.

+

8.2 Todas as perdas sofridas pelo utilizador devido a terceiros, como falhas na linha de comunicação, problemas técnicos, falhas de rede, de equipamento terminal de computador, de sistema, instabilidade e outras causas de força maior, não serão da nossa responsabilidade.

+

8.3 A Saitong não garante a legalidade, autenticidade, precisão e eficácia do conteúdo de informação obtido através do software (incluindo, mas não limitado a, o conteúdo de serviços de terceiros), e a Saitong não assume qualquer responsabilidade pelos resultados de qualquer comportamento realizado pelos utilizadores com base em consultas e visualizações.

+

8.4 O software, como a maioria do software da Internet, é afetado por diferenças em fatores incluindo, mas não limitado a, razões do utilizador, qualidade do serviço de rede, ambiente social e outros fatores, e pode estar sujeito a vários problemas de segurança, como outros a utilizarem a informação do utilizador, resultando em assédio na vida real; outro software descarregado e instalado pelos utilizadores ou outros websites visitados pelos utilizadores contêm vírus como "cavalos de Troia", que ameaçam a segurança da informação e dados do equipamento terminal dos utilizadores, e depois afetam a utilização normal do software. Os utilizadores devem reforçar a consciência de segurança da informação e proteção de dados do utilizador, e prestar atenção ao reforço da proteção de palavras-passe para evitar perdas e assédio.

+

8.5 Quando os utilizadores utilizam o Software ou requerem que a Saitong forneça serviços específicos, o Software pode chamar sistemas de terceiros ou software de terceiros para apoiar a utilização ou acesso dos utilizadores, e os resultados da utilização ou acesso são fornecidos por terceiros. Além de cumprir as regras pertinentes deste Acordo, os utilizadores também devem cumprir os acordos e regras pertinentes de terceiros. Os utilizadores devem compreender e concordar que, ao utilizar serviços de terceiros, estes podem ler dados do utilizador, e a Saitong não garante a segurança, precisão, eficácia e outros riscos incertos dos resultados alcançados através de sistemas de terceiros ou suporte de software de terceiros, os utilizadores devem exercer um julgamento prudente, e a Saitong não assume qualquer responsabilidade por qualquer disputa e dano causado por isto.

+

8.6 Para garantir a autonomia do desenvolvimento empresarial e ajuste da empresa, a empresa pode modificar ou interromper o serviço a qualquer momento após notificar o utilizador de forma razoável.

+

8.7 Exceto conforme expressamente previsto pelas leis e regulamentos, a Saitong fará os seus melhores esforços para garantir que o software e a tecnologia e informação envolvidas sejam seguros, eficazes, precisos e fiáveis, mas limitado pela tecnologia existente, o utilizador compreende que a Saitong não pode garantir isto.

+

8.8 A compensação por lesões pessoais ou danos económicos incidentais e indiretos causados por ou em conexão com qualquer das seguintes circunstâncias, incluindo, mas não limitado a, perda de lucros, perda de dados, danos por interrupção comercial ou outros danos ou perdas comerciais, será da responsabilidade do Utilizador:

+

1) Utilização ou incapacidade de utilizar o software licenciado.

+

2) Utilização não autorizada do software ou alteração de dados do utilizador por terceiros.

+

3) Despesas e perdas incorridas pelas ações do utilizador com o software.

+

4) Conceitos errados do utilizador sobre o software.

+

5) Qualquer outra perda relacionada com o software que não seja atribuível a causas da Saitong.

+

8.9 O Utilizador concorda que a Empresa tem o direito de suspender, interromper ou terminar todo ou parte do Serviço ao utilizador com base nos requisitos das autoridades judiciais, reguladoras e de supervisão ou pelas suas próprias razões comerciais. A Saitong não aceita qualquer responsabilidade por isto.

+

8.10 O Utilizador compreende e concorda que a Empresa utilizará os seus esforços comercialmente razoáveis para garantir a segurança do armazenamento de dados no Software e nos Serviços, mas a empresa não pode fornecer uma garantia completa, e o Utilizador compreende que a Empresa não é responsável pela eliminação ou falha no armazenamento ou cópia de segurança de dados no Serviço.

+

8.11 Na máxima extensão permitida por lei, o Desenvolvedor ou Fornecedor não será responsável por quaisquer danos diretos, indiretos, incidentais, especiais ou consequenciais resultantes da utilização da Aplicação. Se o utilizador tiver necessidades adicionais, dirija-se a um hospital regular para testes aprofundados.

+ +

9. Declaração de propriedade intelectual

+

9.1 A Saitong é a titular dos direitos de propriedade intelectual deste software. Todos os direitos de autor, marcas comerciais, patentes, segredos comerciais e outros direitos de propriedade intelectual do software, bem como todo o conteúdo de informação relacionado com o software (incluindo, mas não limitado a, texto, imagens, áudio, vídeo, gráficos, design de interface, estrutura de layout, dados relevantes ou documentos eletrónicos, etc.) são protegidos pelas leis e regulamentos locais e pelos tratados internacionais correspondentes.

+

9.2 Sem o consentimento por escrito da Empresa, o Utilizador não implementará, utilizará ou transferirá os direitos de propriedade intelectual acima para qualquer finalidade comercial ou não comercial, nem permitirá que qualquer terceiro o faça, e a Empresa reserva-se o direito de responsabilizar legalmente pelos atos acima.

+ +

10. Alteração do protocolo

+

10.1 A Saitong tem o direito de modificar os termos deste Acordo quando necessário. Uma vez que os termos do Acordo sejam alterados, os termos revistos do Acordo serão publicados na página relevante. Se não concordar com o conteúdo alterado, o utilizador deve tomar a iniciativa de cancelar este serviço. Se o Utilizador continuar a utilizar os Serviços, considera-se que aceita as alterações nos termos do Acordo.

+

10.2 A Saitong reserva-se o direito de modificar ou alterar os serviços pagos, padrões de cobrança, métodos de cobrança, taxas de serviço e termos de serviço fornecidos conforme necessário. Ao fornecer serviços, podemos cobrar certas taxas aos utilizadores de alguns serviços agora ou no futuro. Se os utilizadores se recusarem a pagar tais taxas, não poderão continuar a utilizar os serviços relevantes após o início das cobranças.

+
+ + diff --git a/doc/ro/privacy_policy.html b/doc/ro/privacy_policy.html new file mode 100644 index 000000000..5038dd8e4 --- /dev/null +++ b/doc/ro/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Politica de confidențialitate Voitrans + + + + +
+

Politica de confidențialitate Voitrans

+

Ultima actualizare: 27 mai 2025

+

Data intrării în vigoare: 27 mai 2025

+ +

Bine ați venit la utilizarea software-ului și serviciilor Voitrans

+

1. Voitrans este furnizat de Saitong Industries Inc. (denumită în continuare „Compania"). Poate ajuta utilizatorii să realizeze gestionarea dispozitivelor Bluetooth și a altor produse. Înțelegem importanța informațiilor personale pentru utilizatorii noștri (denumiți în continuare „dumneavoastră") și că protecția eficientă a informațiilor dumneavoastră personale este piatra de temelie a dezvoltării sănătoase și durabile a afacerii noastre. Vă mulțumim pentru utilizarea și încrederea în produsele sau serviciile Voitrans! Suntem pe deplin conștienți că această încredere nu vine ușor, aderăm la principiul deschiderii și transparenței, pentru a vă exprima regulile noastre de prelucrare a informațiilor dumneavoastră personale, utilizăm mijloace legale și legitime și scopuri clare și rezonabile pentru a prelucra informațiile dumneavoastră personale. Notă specială: Vă rugăm să citiți și să înțelegeți cu atenție această Politică de confidențialitate înainte de a utiliza produsele sau serviciile noastre, pentru a putea face alegeri adecvate.

+

2. Această Politică de confidențialitate vă explică modul în care colectăm, utilizăm, stocăm și partajăm informațiile dumneavoastră personale atunci când utilizați Voitrans. Informațiile personale se referă la toate tipurile de informații înregistrate prin mijloace electronice sau de alt tip care pot identifica o anumită persoană fizică sau reflecta activitățile unei anumite persoane fizice, singure sau în combinație cu alte informații. Voitrans respectă și protejează confidențialitatea personală a tuturor utilizatorilor serviciului. Cu excepția cazurilor prevăzute altfel în această Politică de confidențialitate, Voitrans nu va dezvălui aceste informații publicului și nu le va furniza terților fără permisiunea dumneavoastră prealabilă.

+

3. Când utilizați produsul sau serviciul unui terț printr-un produs sau serviciu App Marketplace, informațiile dumneavoastră personale vor fi supuse politicii de confidențialitate a terțului.

+

4. Această Politică de confidențialitate Voitrans va fi actualizată din când în când. Prin acceptarea Acordului de utilizare a serviciului Voitrans și începerea utilizării Voitrans, se consideră că ați fost de acord cu întreaga această Politică de confidențialitate. Dacă nu sunteți de acord cu această Politică de confidențialitate, vă rugăm să nu utilizați software-ul și serviciile Voitrans.

+

5. Pentru a analiza și măsura eficacitatea serviciilor relevante, vom utiliza și dezvălui informațiile dumneavoastră personale în conformitate cu prevederile acestei Politici de confidențialitate.

+ +

Această Politică de confidențialitate vă va ajuta să înțelegeți următoarele:

+
    +
  • 1 Informațiile pe care le colectăm
  • +
  • 2 Stocarea informațiilor
  • +
  • 3 Securitatea informațiilor
  • +
  • 4 Cum utilizăm informațiile pe care le colectăm
  • +
  • 5 Partajarea informațiilor
  • +
  • 6 Cum vă gestionați informațiile personale
  • +
  • 7 Descrierea permisiunilor aplicației
  • +
  • 8 Accesul la SDK-uri terțe
  • +
  • 9 Protecția minorilor
  • +
  • 10 Politică de confidențialitate eficientă și actualizată
  • +
  • 11 Cum să ne contactați
  • +
+ +

1. Informațiile pe care le colectăm

+

1. Când începeți să utilizați Voitrans, vom începe să colectăm date despre utilizarea aplicației de către dumneavoastră

+

2. Voitrans poate obține informații personale despre dumneavoastră de la terți sau parteneri de afaceri prin mijloace legale

+

3. Pentru a vă oferi produse și servicii mai bune, a vă asigura securitatea rețelei în timpul utilizării, a menține funcționarea normală a produselor și a optimiza și îmbunătăți scopul serviciilor noastre de informare, după ce faceți clic activ pentru a accepta această politică de confidențialitate, utilizați informațiile pe care le furnizăm. În timpul serviciului, pe lângă informațiile personale necesare pentru a asigura funcționarea normală a funcțiilor de bază ale Aplicației în conformitate cu legile și reglementările naționale, vom colecta alte informații personale de la dumneavoastră:

+

3.1 Pentru a identifica utilizatorii cu risc, a judeca autenticitatea utilizatorilor și a preveni fraudarea în mod cuprinzător, vom citi informațiile dispozitivului dumneavoastră de fiecare dată când deschideți software-ul, inclusiv: (Modelul dispozitivului, adresa MAC a dispozitivului, identificatorul unic al dispozitivului (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID etc.) MEID, număr de serie, SSID și BSSID WIFI), citirea adresei Bluetooth, versiunea sistemului de operare, numele sistemului de operare, contul de conectare și informațiile de parolă ale utilizatorului;

+

3.2 Când utilizați produsele și serviciile noastre, putem colecta anumite informații prin informații din jurnalul de rețea sau prin anumite programe și software, aceste informații pot include: detalii despre utilizarea produselor și serviciilor, cum ar fi ora de deschidere a aplicației, durata de utilizare și adresa paginii vizitate; Informații despre evenimentele dispozitivului, cum ar fi erori, activitate de sistem etc., pentru a optimiza dispozitivul și a îmbunătăți serviciile noastre;

+

3.3 Pentru a identifica aplicațiile în care echipamentul este expus riscurilor, a furniza servicii funcționale mai sigure. Prin urmare, trebuie să obținem lista de aplicații/instalări în procesul de a asigura funcționarea normală a produsului și a proteja securitatea dispozitivului.

+

3.4 Pentru a analiza utilizarea funcțiilor aplicației de către utilizatori și a determina autenticitatea utilizatorilor, trebuie să efectuăm statistici de date și să colectăm informațiile de dispozitiv de mai sus, inclusiv adresa MAC a dispozitivului și identificatorul unic al dispozitivului, când dispozitivul dumneavoastră este în uz.

+

3.5 Semnal dispozitiv: starea rețelei dispozitivului pe care îl utilizați, informații despre punctul de acces WIFI etc.

+

3.6 Informații de localizare: Putem utiliza GPS, WiFi sau alte mijloace tehnice pentru a colecta și prelucra informații despre locația dumneavoastră pentru actualizarea informațiilor locale, furnizarea de servicii de conținut etc.

+

Pentru mai multe informații, vă rugăm să faceți clic pe „Lista de colectare a informațiilor personale".

+ +

1. Pentru informațiile personale mai sensibile din informațiile de mai sus, cum ar fi informațiile despre dispozitivul utilizatorului (numărul IMEI, starea apelului și numărul de identificare), informațiile de localizare GPS, conținutul foto-media și drepturile de acces la fișiere, vom obține consimțământul dumneavoastră înainte de colectare. Pentru unele informații nesensibile, colectarea poate fi implicită și automată. Puteți restricționa colectarea noastră de informații relevante sau utilizarea anumitor permisiuni de pe dispozitivul dumneavoastră mobil prin ajustarea opțiunii Setări pentru dispozitivul mobil. Când restricționați accesul nostru la o anumită permisiune, este posibil să nu putem continua să vă furnizăm serviciile corespunzătoare și nu vom mai prelucra informațiile dumneavoastră corespunzătoare.

+

2. Nu vom colecta numărul cărții de identitate, informații biometrice personale, numărul contului bancar, informații despre proprietate, informații de credit, informații de sănătate și fiziologice și alte informații personale sensibile.

+

3. Despre permisiunile sensibile: Pentru a utiliza corect funcțiile aplicației, produsul trebuie să obțină următoarele permisiuni pentru a furniza servicii funcționale legate de produsele normale.

+ +

1 Obținerea permisiunilor de citire și scriere în stocare

+

1 Cum se obține: prompt pop-up, când se obține permisiunea, utilizatorul va face clic activ pe acceptă și aplicația va utiliza această permisiune

+

2 Scopul și domeniul de utilizare: Este utilizat pentru a scana fișierele cache de resurse și miniaturile din sistem, pentru a încărca resurse muzicale și imagini de produs. Este afișat pe interfața Aplicației pentru a facilita vizualizarea și operarea de către utilizatori

+ +

2 Obținerea permisiunii la lista de instalare a aplicațiilor

+

1 Cum se obține: prompt pop-up, când se obține permisiunea, utilizatorul va face clic activ pe acceptă și aplicația va utiliza această permisiune

+

2 Scopul și domeniul de utilizare: Când aplicația trebuie să utilizeze servicii de promovare publicitară, platforma publicitară terță, Youmon +SDK, trebuie să obțină „permisiunea listei de instalare a software-ului aplicației" a dispozitivului pentru a preveni împingerea către utilizator a aplicațiilor pe care le deține deja și pentru a îmbunătăți experiența utilizatorului.

+ +

3 Permisiunea de obținere a informațiilor despre starea dispozitivului

+

Include: (Modelul dispozitivului, adresa MAC a dispozitivului, identificatorul unic al dispozitivului (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID etc.) MEID, număr de serie, SSID și BSSID WIFI, citirea adresei Bluetooth), versiunea sistemului de operare, numele sistemului de operare etc.;

+

1 Cum se obține: prompt pop-up, când se obține permisiunea, utilizatorul va face clic activ pe acceptă și aplicația va utiliza această permisiune

+

2 Scopul și domeniul de utilizare: Când utilizați aplicația noastră, pentru a analiza utilizarea funcțiilor aplicației de către utilizator și a judeca autenticitatea utilizatorului, vom sincroniza permisiunea cu SDK-urile terțe, inclusiv Autonavi SDK, Youmon +SDK etc.

+ +

4 Acces la informații de localizare

+

1 Cum se obține: prompturi pop-up, când se obține permisiunea, utilizatorul va utiliza această permisiune doar când face clic activ pe acceptă în aplicație.

+

2 Scopul și domeniul de utilizare: Când aplicația trebuie să utilizeze GPS, WiFi sau alte funcții, produsul trebuie să colecteze locația și informațiile dumneavoastră pentru a căuta dispozitive Bluetooth în locații din apropiere.

+

Notă: Pentru mai multe permisiuni ale aplicației, consultați acest document „Politica de confidențialitate" Secțiunea 7 „Descrierea permisiunilor aplicației"

+ +

2. Stocarea informațiilor

+

1. Unde sunt stocate informațiile

+

Informațiile personale pe care le colectăm și le generăm în Republica Populară Chineză vor fi stocate pe serverele noastre și/sau ale afiliaților noștri.

+

2. Stocarea și prelucrarea informațiilor

+

Stocăm informațiile dumneavoastră personale doar pentru perioada necesară atingerii scopului sau atât cât este necesar conform legii și reglementărilor. După ce încetați să utilizați acest produs, vom opri imediat colectarea și prelucrarea informațiilor dumneavoastră personale și a datelor aplicației. Când perioada de mai sus este depășită, vom șterge sau anonimiza informațiile personale pe care ni le-ați furnizat.

+

Pe lângă funcțiile necesare, Voitrans trebuie să solicite permisiuni de sistem corespunzătoare. Partea de server a cloudului nu stochează informații personale ale utilizatorilor, iar SDK-ul terț accesat va fi anonimizat și de-identificat de furnizorul de servicii (Amu Statistics SDK, Autonavi SDK), astfel încât utilizatorii nu pot fi urmăriți. Informațiile stocate pe telefonul utilizatorului vor fi șterse automat când utilizatorul dezinstalează Voitrans sau curăță cache-ul.

+ +

3. Securitatea informațiilor

+

1. Voitrans stochează și protejează informațiile dumneavoastră personale utilizând măsuri și tehnologii de securitate standard din industrie, cum ar fi autentificarea, criptarea datelor, accesul restricționat la centrul de date și alte măsuri de securitate pentru a asigura că informațiile dumneavoastră sunt protejate împotriva dezvăluirii, alterării și distrugerii. În ciuda măsurilor de securitate menționate anterior, vă rugăm să rețineți că nicio măsură de securitate nu poate fi 100% sigură.

+

2. Când utilizați serviciile furnizate de Voitrans, vă rugăm să vă protejați informațiile personale. Dacă descoperiți că informațiile dumneavoastră personale au fost compromise, vă rugăm să ne contactați imediat pentru a putea lua măsurile corespunzătoare.

+ +

4. Cum utilizăm informațiile pe care le colectăm

+

1. La implementarea funcțiilor de afaceri ale aplicației, putem utiliza informațiile dumneavoastră personale pentru a asigura integritatea și securitatea produselor și serviciilor pe care vi le furnizăm;

+

2. Vom înțelege obiceiurile dumneavoastră de utilizare prin informațiile colectate și, cu ajutorul analizei datelor, vom identifica acceptabilitatea serviciilor, obiceiurile dumneavoastră de utilizare etc., pentru a testa și crea noi produse, funcții și servicii, pentru a îmbunătăți nivelul serviciilor și pentru a ne ajuta să îmbunătățim serviciile existente și să dezvoltăm servicii noi;

+

3. Putem utiliza informațiile dumneavoastră personale pentru sondaje ale clienților despre produsele și serviciile, pentru trimiterea de notificări despre produsele și serviciile și pentru promovare comercială;

+

4. Putem utiliza informațiile dumneavoastră pentru analize interne și cercetare legate de aplicație;

+ +

5. Partajarea informațiilor

+

În prezent, nu vom partaja sau transfera activ informațiile dumneavoastră personale către terți din afara companiei; dacă există alte partajări sau transferuri ale informațiilor dumneavoastră personale, vom obține direct sau vom confirma că terțul a obținut consimțământul dumneavoastră expres pentru comportamentul de mai sus.

+

Nu vom dezvălui public informațiile personale pe care le colectăm. Dacă este necesar să le dezvăluim public, vă vom informa despre scopul dezvăluirii publice, tipul de informații dezvăluite și informațiile sensibile care pot fi implicate și vom obține consimțământul dumneavoastră expres.

+

Pe măsură ce afacerea noastră continuă să se dezvolte, putem efectua fuziuni, achiziții, transferuri de active și alte tranzacții, iar noi vă vom informa despre circumstanțele relevante, în conformitate cu legile și reglementările și la standarde nu mai mici decât cele cerute de acest Ghid, pentru a continua să protejăm informațiile dumneavoastră personale sau pentru a cere unui nou controlor să continue să protejeze informațiile dumneavoastră personale.

+

În plus, conform legilor și reglementărilor relevante și standardelor naționale, putem partaja, transfera și dezvălui public informații personale fără autorizarea și consimțământul prealabil al subiectului informațiilor personale în următoarele circumstanțe:

+
    +
  • 1 Direct legate de securitatea națională și apărarea națională;
  • +
  • 2 Direct legate de siguranța publică, sănătatea publică sau interesele publice majore;
  • +
  • 3 Direct legate de investigarea penală, urmărirea penală, judecata și executarea hotărârilor;
  • +
  • 4 Pentru a proteja viața, proprietatea și alte drepturi și interese legitime majore ale subiectului datelor personale sau ale altor persoane, dar este dificil de obținut consimțământul persoanei;
  • +
  • 5 Informații personale dezvăluite publicului de către subiectul informațiilor personale;
  • +
  • 6 Colectarea informațiilor personale din informații dezvăluite public în mod legal, cum ar fi reportaje de presă legitime, dezvăluiri de informații guvernamentale și alte canale.
  • +
+ +

6. Cum vă gestionați informațiile personale

+

În conformitate cu legile, reglementările și standardele relevante din China, precum și cu practicile comune ale altor țări și regiuni, vă garantăm că exercitați următoarele drepturi cu privire la informațiile dumneavoastră personale:

+ +

1. Corectarea informațiilor personale

+

Dacă descoperiți că există o eroare în informațiile dumneavoastră personale prelucrate de noi, aveți dreptul de a corecta sau actualiza informațiile eronate sau incomplete. Dacă nu puteți opera independent în centrul de cont, puteți trimite un e-mail la saitong.voitrans@gmail.com pentru a ne contacta

+ +

2. Ștergerea informațiilor personale

+

În următoarele cazuri, puteți face o cerere către noi pentru ștergerea informațiilor dumneavoastră personale:

+
    +
  • Dacă prelucrăm informații personale cu încălcarea legilor și reglementărilor;
  • +
  • Dacă colectăm și utilizăm informațiile dumneavoastră personale fără consimțământul dumneavoastră;
  • +
  • Dacă prelucrarea noastră a informațiilor personale încalcă acordul nostru cu dumneavoastră;
  • +
  • Dacă nu mai utilizați produsele sau serviciile noastre;
  • +
  • Dacă nu vă mai furnizăm produse sau servicii.
  • +
+

Contactați-ne. Vom procesa cererea dumneavoastră la saitong.voitrans@gmail.com Contactați-ne. Vă vom trimite răspunsul în 30 de zile lucrătoare de la primire

+ +

3. Modificarea domeniului de aplicare al consimțământului dumneavoastră

+

Ne puteți contacta prin e-mail la saitong.voitrans@gmail.com Contactați-ne. La cererea dumneavoastră, nu vom mai colecta, utiliza sau dezvălui informațiile dumneavoastră personale. Vă rugăm să rețineți că retragerea consimțământului sau ștergerea informațiilor dumneavoastră personale poate afecta utilizarea unora dintre serviciile noastre.

+ +

4 Accesul și copierea informațiilor personale

+

Puteți, în conformitate cu prevederile legilor relevante, furniza imei-ul (numărul de serie al telefonului) sau oaid sau Android ID după informațiile contului și alte informații, puteți solicita accesul și copierea informațiilor dumneavoastră personale, puteți trimite un e-mail la 3514406195@qq.com pentru a ne contacta.

+ +

5. Ca răspuns la cererea dumneavoastră de mai sus

+

Din motive de securitate, este posibil să fie necesar să furnizați o cerere scrisă sau să vă dovediți identitatea în alt mod. Putem să vă cerem să vă verificați identitatea înainte de a procesa cererea dumneavoastră. Pentru cererea dumneavoastră rezonabilă, vom răspunde și o vom trata în timp util. Putem respinge cererile care sunt repetitive în mod inutil, necesită prea multă tehnologie (de exemplu, dezvoltarea de noi sisteme sau modificări fundamentale ale practicilor existente), prezintă un risc pentru interesele legitime ale altora sau sunt foarte nepractice.

+

În următoarele circumstanțe, conform cerințelor legilor și reglementărilor, nu vom putea răspunde cererii dumneavoastră:

+
    +
  • Legate de securitatea națională și apărarea națională;
  • +
  • Legate de investigarea penală, urmărirea penală și judecata;
  • +
  • Există dovezi suficiente că aveți intenții rău-voitoare subiective sau abuz de drepturi;
  • +
  • Răspunsul la cererea dumneavoastră va cauza daune grave drepturilor și intereselor legitime ale dumneavoastră sau ale altor persoane și organizații.
  • +
+ +

6. Anularea contului

+

Utilizatorul poate efectua operațiunea de [anulare cont] în Aplicație. Pașii operațiunii:

+
    +
  1. Accesați pagina [Contul meu]
  2. +
  3. Faceți clic pe butonul [Setări] din dreapta sus
  4. +
  5. Faceți clic pe [Anulare cont] pentru a confirma
  6. +
+

După deconectare, informațiile despre contul utilizatorului sunt șterse

+ +

7. Descrierea permisiunilor aplicației

+

Pentru a oferi produse și servicii mai bune, când utilizați software-ul, vom solicita următoarele drepturi; când intrați pe pagina principală sau utilizați funcția, va fi solicitată autorizarea; dacă refuzați, unele dintre funcțiile corespunzătoare nu vor putea fi utilizate normal. Scopurile specifice și avertismentele permisiunilor sunt descrise în detaliu după cum urmează:

+ +

1 Drepturi de localizare:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

prin WiFi sau stația de bază mobilă pentru a obține informațiile de latitudine și longitudine ale locației utilizatorului

+

Când utilizați Voitrans, vom căuta dispozitivul dumneavoastră Bluetooth atașat pe baza locației dumneavoastră geografice. În același timp, pentru a oferi servicii mai stabile, a optimiza produsele și a îmbunătăți experiența, vom partaja informațiile de mai sus cu trei SDK-uri, cum ar fi Youmon și Autonavi, pentru a obține date de operare Voitrans și servicii funcționale.

+

Mod de notificare: La prima pornire a aplicației se afișează un prompt care indică permisiunea, solicitând utilizatorului să confirme acceptarea. Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Această permisiune este necesară când accesați o aplicație pentru a efectua funcții de gestionare a aplicației.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

3 Permisiuni de rețea:

+

android.permission.INTERNET

+

Când utilizați serviciile de informare și serviciile de actualizare a versiunii Voitrans, aceste permisiuni sunt necesare, și pentru a îmbunătăți experiența utilizatorului și a optimiza capacitățile de serviciu, SDK-urile terțe precum Friends vor utiliza și ele aceste permisiuni.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

4 Obținerea permisiunilor de stare a rețelei:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Este utilizat pentru a obține dacă conexiunea de rețea curentă este validă, a determina dacă mediul 4G curent este activ și dacă se reamintesc schimbările mediului de rețea, afectând astfel încărcarea conținutului informativ. Această permisiune este solicitată când utilizați Voitrans.

+

Schimbările în starea rețelei afectează încărcarea și descărcarea datelor. Prin urmare, accesul la permisiunea de stare a rețelei va fi partajat cu prietenii + și alte platforme.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

5 Obținerea permisiunilor pentru lista de sarcini:

+

android.permission.GET_TASKS

+

Această permisiune este utilizată pentru a obține lista de aplicații pentru funcția de gestionare a software-ului. Când utilizați funcția de gestionare a software-ului, trebuie să citiți aplicațiile instalate pe telefonul mobil.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

6 Obținerea permisiunii pentru adresa MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Când utilizați Voitrans, aplicația va avea nevoie de permisiuni pentru adresa MAC:

+

Când o aplicație trebuie să raporteze date de conversie țintă, platformele terțe precum Youmon +SDK trebuie să utilizeze MAC.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

7 Obținerea permisiunii de înregistrare audio

+

android.permission.RECORD_AUDIO

+

Când utilizați funcția de introducere vocală a Voitrans, trebuie să utilizați permisiunea de înregistrare audio și utilizați în principal introducerea vocală pentru traducere și alte funcții conexe.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate, utilizatorului i se afișează dinamic o casetă când este necesar.

+ +

8 Obținerea permisiunii SSID pentru WIFI

+

Când se utilizează această permisiune, aplicația citește permisiunea SSID pentru WIFI:

+

Domeniul de utilizare și scopul: Când aplicația trebuie să utilizeze servicii de analiză a datelor, platformele terțe precum +SDK trebuie să citească „permisiunea WIFI SSID" a dispozitivului pentru a oferi utilizatorilor servicii funcționale mai precise și eficiente.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

9 Obținerea accesului Bluetooth

+

Când se utilizează această permisiune, aplicația citește permisiunea Bluetooth:

+

Domeniul de utilizare și scopul: Dispozitive Bluetooth pentru căutarea și configurarea accesoriilor, cum ar fi căștile Bluetooth, ceasurile Bluetooth etc. Ușor de gestionat pentru utilizatori

+

Mod de notificare: La prima pornire a aplicației se afișează un prompt care indică permisiunea, solicitând utilizatorului să confirme acceptarea. Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

10 Obținerea permisiunii BSSID pentru WiFi

+

Când aplicația trebuie să distingă și să identifice utilizatorul pentru a furniza servicii funcționale și statistici de date, va citi permisiunea „WiFi BSSID" a dispozitivului pentru:

+

Domeniul de utilizare și scopul: 1 Platforme terțe: cum ar fi Youmeng SDK, Bugly SDK, Autonavi SDK

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

11 Obținerea permisiunii de instalare a aplicației

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Software-ul va utiliza permisiunea de instalare a aplicației, care este utilizată în principal pentru a permite utilizatorilor să instaleze o nouă versiune și să experimenteze funcții noi când există o nouă versiune.

+

Mod de notificare: Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

12 Obținerea permisiunilor pentru cameră

+

android.permission.CAMERA

+

Voitrans utilizează permisiunile camerei pentru a scana coduri QR și a asocia dispozitive Bluetooth precum căști Bluetooth și ceasuri.

+

Mod de notificare: La prima pornire a aplicației se afișează un prompt care indică permisiunea, solicitând utilizatorului să confirme acceptarea. Descrierea Acordului de utilizare și a Politicii de confidențialitate.

+ +

Notă specială:

+

1 Integrarea aplicației în cadrul SDK-ului Allies, SDK-ul Scott map, după ce utilizatorul este de acord să permită utilizarea, aplicația colectează în fundal/în prim-plan ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI și alte informații personale;

+

Observații: Mai multe, vă rugăm să consultați următorul conținut și permisiunile SDK [VIII. Lista SDK-urilor terțe accesate]

+ +

8. Accesul la SDK-uri terțe

+

1 Pentru a asigura funcționarea stabilă și realizarea funcțională a clientului nostru, astfel încât să puteți utiliza și beneficia de mai multe servicii și funcții, aplicația noastră va încorpora kitul de dezvoltare a instrumentelor software (SDK) sau alte aplicații similare ale terților, acești terți vor colecta și prelucra informațiile relevante în conformitate cu propriile politici de confidențialitate, pentru a furniza în mod normal funcții și servicii publicitare. Puteți afla despre regulile de colectare și prelucrare a informațiilor ale terțului în secțiunea următoare. Vom efectua teste de securitate stricte pe kiturile de dezvoltare (SDK-uri) pentru ca partenerii să obțină informații, pentru a proteja utilizarea rezonabilă și securitatea informațiilor dumneavoastră personale. Vă rugăm să rețineți că SDK-urile terțe pot modifica tipurile de prelucrare a datelor din cauza actualizărilor versiunii lor. Vă rugăm să consultați politicile de confidențialitate publicate de SDK-urile terțe. Vedeți detaliile mai jos sau faceți clic pentru a vizualiza Lista SDK-urilor terțe.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Informații obținute: Numărul dispozitivului, adresa IP, informațiile software ale dispozitivului, codul de identificare al dispozitivului (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informații IMSI ale cardului SIM, IP, adresa MAC), identificatorul dispozitivului, regiunea, informații despre aplicațiile legate de dispozitiv și alte informații din jurnalul serviciilor

+

Scopul utilizării: Conectare și partajare WeChat

+

Dezvoltator: Shenzhen Tencent Computer Systems Company Limited

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Informații obținute: Numele aplicației, versiunea aplicației, marca și modelul dispozitivului, sistemul de operare, informații despre operator, rezoluția ecranului, informații despre senzori (vector, accelerare, presiune, direcție, geomagnetism, giroscop, temperatură, senzor de lumină, semnal NMEA), informații despre puterea semnalului dispozitivului

+

Scopul utilizării: Navigare utilizând Amap

+

Dezvoltator: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Informații obținute: Numele aplicației, versiunea aplicației, marca și modelul dispozitivului, sistemul de operare, informații despre rețea, puterea semnalului dispozitivului etc.

+

Scopul utilizării: Afișarea și interacțiunea cu harta

+

Dezvoltator: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Informații obținute: Informații de localizare (GPS, Wi-Fi, stație de bază), informații despre dispozitiv, informații despre rețea etc.

+

Scopul utilizării: Furnizarea de servicii de localizare

+

Dezvoltator: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Informații obținute: Numele aplicației, versiunea aplicației, informații despre dispozitiv, informații despre rețea etc.

+

Scopul utilizării: Instrumente de hartă și optimizare a randării

+

Dezvoltator: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Informații obținute: Identificatoare de dispozitiv, informații de bază despre dispozitiv, lista de software instalat și informații despre rețea (consultați politica oficială de confidențialitate pentru detalii)

+

Scopul utilizării: Conectare cont Alipay și invocare plată

+

Dezvoltator: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Informații obținute: Versiunea SDK/API, platforma, marcajul temporal, identificatorul aplicației, versiunea aplicației, producătorul dispozitivului, versiunea sistemului de operare, limba, fusul orar, starea rețelei (Wi-Fi etc.), jurnale de rețea, date de erori și utilizare, adresa IP etc. (consultați politica oficială de confidențialitate pentru detalii)

+

Scopul utilizării: Monitorizarea calității aplicației și serviciul de raportare a datelor

+

Dezvoltator: Shenzhen Tencent Computer Systems Company Limited

+

Metoda de colectare: Auto-colectare SDK

+

Link politică de confidențialitate: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Protecția minorilor

+

Utilizatorii produselor și serviciilor noastre pot include minori sub 18 ani, utilizatorii minori ar trebui să solicite sfatul părinților sau tutorilor cu privire la această Politică de confidențialitate înainte de a utiliza produsele noastre și să utilizeze serviciile noastre sau să ne furnizeze informațiile după obținerea consimțământului și sub îndrumarea părinților sau tutorilor lor. Tutorii minorilor care au întrebări ne pot contacta prin datele de contact din această Politică de confidențialitate.

+

Dacă nu sunteți de acord cu colectarea informațiilor menționate anterior de către furnizorii de servicii terți de mai sus, vă rugăm să opriți imediat utilizarea Software-ului. În timpul utilizării Software-ului, acești terți vor colecta și prelucra informațiile relevante în conformitate cu propriile politici de confidențialitate pentru a furniza unele funcții, publicitate și alte servicii. Dacă informațiile sunt divulgate din cauza colectării informațiilor menționate de către furnizorul de servicii terț relevant, furnizorul de servicii terț relevant va suporta responsabilitatea juridică corespunzătoare.

+ +

10. Politică de confidențialitate eficientă și actualizată

+

1. Această Politică de confidențialitate intră în vigoare de la data publicării.

+

2. Pe măsură ce afacerea noastră evoluează și se schimbă, Politica noastră de confidențialitate se poate schimba. Ne rezervăm dreptul de a modifica politica noastră de confidențialitate în orice moment, așa că vă rugăm să verificați des. Dacă aducem modificări Politicii noastre de confidențialitate, vom publica aceste actualizări pe site-ul nostru web, în aplicații și acolo unde considerăm potrivit pentru a vă ține la curent. Dacă politica de confidențialitate este actualizată, va intra în vigoare de la data actualizării. Continuarea utilizării produselor sau serviciilor noastre înseamnă că sunteți de acord cu Politica noastră de confidențialitate modificată.

+ +

11. Cum să ne contactați

+

Saitong Industries Inc înființată la 22 noiembrie 2024, adresa înregistrată: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Dacă doriți să aflați mai multe despre compania și platforma noastră, ne puteți contacta prin informațiile de contact furnizate în această politică (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/ro/user_agreement.html b/doc/ro/user_agreement.html new file mode 100644 index 000000000..a5e83eb8e --- /dev/null +++ b/doc/ro/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Protocolul de utilizare a aplicației Voitrans + + + +
+
Română
+ +

Protocolul de utilizare a aplicației Voitrans

+ +

Acești Termeni și condiții de utilizare vă informează despre modul de accesare și utilizare a aplicației Voitrans și a serviciilor online (denumite „Serviciile"). Saitong Industries Inc. (denumită în continuare „Saitong") le reamintește utilizatorilor să citească cu atenție și să înțeleagă pe deplin acest Acord de utilizare (denumit în continuare „Acordul"). Utilizatorii trebuie să citească cu atenție și să înțeleagă pe deplin termenii acestui Acord. Vă rugăm să citiți cu atenție și să alegeți dacă acceptați sau nu acest Acord. Utilizarea de către dumneavoastră a aplicației Voitrans (denumită în continuare „Aplicația" sau „Software-ul") va fi considerată ca acceptare a acestui Acord și sunteți de acord să respectați termenii acestui Acord. Dacă nu sunteți de acord cu acest Acord, nu utilizați Aplicația.

+

Saitong își rezervă dreptul de a modifica acest Acord, iar termenii actualizați ai Acordului vor fi publicați în această Aplicație, intrând în vigoare de la data publicării.

+ +

1. Reguli generale

+

1.1 Această Aplicație este software-ul furnizat de Saitong pentru conectarea produselor de tip cască lansate de Saitong și companiile sale partenere. Dreptul de proprietate și drepturile de operare ale software-ului și serviciilor conexe sunt deținute în totalitate de Saitong.

+

1.2 Acest Acord este un acord între dumneavoastră (denumit în continuare „Utilizatorul") și compania, precum și partenerii și partenerii de operare ai acesteia (denumiți în continuare „Partenerii") cu privire la utilizarea de către utilizator a Aplicației și a serviciilor conexe.

+

1.3 Software-ul și serviciile includ:

+

1.3.1 Software-ul furnizat oferă utilizatorilor Voitrans conectarea și asocierea Voitrans, gestionarea setărilor funcțiilor și alte servicii software, sub rezerva serviciilor software efective furnizate de Aplicație.

+

1.3.2 Actualizări, upgrade-uri și alte servicii ale software-ului.

+ +

2. Domeniul de aplicare al licenței software

+

2.1 Acordăm utilizatorului o licență personală, netransferabilă, nesublicențiabilă și neexclusivă pentru Software.

+

2.2 Utilizatorii pot instala, utiliza, afișa și rula software-ul pe un singur dispozitiv terminal mobil în scopuri necomerciale. Cu toate acestea, utilizatorul nu are dreptul să instaleze, să utilizeze sau să ruleze software-ul în scopuri de operare comercială, să copieze, să modifice, să conecteze sau să ruleze software-ul sau datele eliberate în memoria oricărui dispozitiv terminal în timpul funcționării software-ului sau datele de interacțiune dintre client și server în timpul funcționării software-ului, sau să creeze lucrări derivate. Aceasta include, dar nu se limitează la, utilizarea de plug-in-uri sau instrumente/servicii terțe neautorizate pentru a accesa Software-ul și sistemele conexe. Pentru vânzarea comercială, reproducerea și distribuția, cum ar fi preinstalarea și includerea software-ului, trebuie obținută autorizarea și permisiunea scrisă.

+

2.3 Utilizatorul nu are dreptul să instaleze Software-ul pe alte dispozitive terminale fără permisiunea expresă, inclusiv, dar fără a se limita la televizoare, set-top box-uri digitale, console de jocuri și alte dispozitive.

+

2.4 Cu excepția celor autorizate în mod expres de acest Acord, nu se acordă Utilizatorului niciun alt drept, iar Utilizatorul trebuie să obțină consimțământul scris pentru a utiliza alte drepturi.

+ +

3. Actualizarea software-ului

+

3.1 Utilizatorul trebuie să selecteze versiunea de software potrivită pentru configurarea terminalului instalat. În caz contrar, problemele de software, problemele dispozitivului sau daunele cauzate de orice versiune de software care nu este potrivită pentru tipul de dispozitiv vor fi responsabilitatea exclusivă a utilizatorului.

+

3.2 Pentru a îmbunătăți experiența utilizatorului și a îmbunătăți conținutul serviciilor, Saitong are dreptul de a vă furniza din când în când versiuni de înlocuire, modificare și actualizare ale software-ului. Funcția „Mesaj de actualizare" este activată implicit pentru utilizatori. În funcție de diferitele versiuni de software utilizate de utilizatori, Saitong le oferă utilizatorilor opțiunea de a activa această funcție. După lansarea unei noi versiuni a software-ului, Saitong nu garantează disponibilitatea continuă a versiunii vechi a software-ului.

+ +

4. Specificații de utilizare

+

4.1 Utilizatorii pot utiliza Software-ul și Serviciile în conformitate cu acest Acord, cu condiția respectării legii și a acestui Acord, iar utilizatorii nu trebuie să efectueze următoarele acte:

+

4.1.1 Ștergerea tuturor informațiilor privind drepturile de autor de pe Software și alte copii și modificarea, ștergerea sau eludarea măsurilor tehnice stabilite de Software pentru protecția drepturilor de proprietate intelectuală.

+

4.1.2 Inginerie inversă a Software-ului, cum ar fi dezasamblarea, decompilarea sau alte încercări de a obține codul sursă al Software-ului.

+

4.1.3 Prin modificarea sau falsificarea instrucțiunilor și datelor în funcționarea software-ului, adăugarea, ștergerea sau modificarea funcției sau efectului de funcționare al software-ului, sau software și metode utilizate în scopurile menționate mai sus pentru a opera sau disemina către public, indiferent dacă aceste acte au scopuri comerciale.

+

4.1.4 Utilizarea software-ului pentru orice comportament care pune în pericol securitatea rețelei, inclusiv, dar fără a se limita la: utilizarea datelor neautorizate sau accesarea serverelor/conturilor neautorizate; Accesarea rețelelor publice sau a altor sisteme de operare fără permisiune și ștergerea, modificarea sau adăugarea informațiilor stocate; Încercări neautorizate de a investiga, scana sau testa punctele slabe ale sistemului sau rețelei software-ului sau alte acte care subminează securitatea rețelei; Încercări de a interfera cu sau de a distruge funcționarea normală a sistemului software sau a site-ului web, răspândirea intenționată a programelor malițioase sau a virusurilor și alte acte care perturbă serviciile normale de informații din rețea; Falsificarea numelor sau a numelor parțiale ale pachetelor TCP/IP.

+

4.1.6 Fără consimțământul scris al Companiei, utilizatorul efectuează în mod arbitrar următoarele acte asupra software-ului și informațiilor din acesta, inclusiv, dar fără a se limita la: utilizarea, închirierea, împrumutul, copierea, modificarea, conectarea, retipărirea, compilarea, publicarea, crearea de site-uri oglindă, dezvoltarea de produse derivate, lucrări, servicii, plug-in-uri, compatibilitate, interconectare etc., cu ajutorul Software-ului.

+

4.1.7 Utilizarea Software-ului pentru a publica, transmite, distribui și stoca conținut care încalcă legile locale.

+

4.1.8 Utilizarea software-ului pentru a publica, transmite, disemina și stoca conținut care încalcă drepturile de proprietate intelectuală ale altora, secretele comerciale și alte drepturi legitime.

+

4.1.9 Utilizarea acestui software pentru a publica, transmite și disemina în masă informații publicitare și informații nedorite.

+

4.1.10 Utilizarea Software-ului și a altor Servicii în orice mod ilegal, în orice scop ilegal sau în orice mod incompatibil cu utilizarea licențiată a acestui Acord.

+

4.2 Specificații privind publicarea informațiilor

+

4.2.1 Dacă utilizați software-ul pentru a publica conținut informațional (dacă este cazul), trebuie să garantați că dețineți drepturile de proprietate intelectuală asupra conținutului informațional încărcat de dumneavoastră sau că ați obținut autorizarea legală, iar orice comportament al dumneavoastră în utilizarea software-ului și a serviciilor nu încalcă drepturile și interesele legitime ale niciunui terț.

+

4.2.2 La utilizarea Software-ului, utilizatorul nu trebuie să utilizeze Software-ul pentru a desfășura următoarele activități, inclusiv, dar fără a se limita la:

+

4.2.2.1 Crearea, copierea, publicarea, diseminarea și stocarea de conținut care încalcă legile și reglementările naționale locale.

+

4.2.2.2 Publicarea, transmiterea, diseminarea și stocarea de conținut care încalcă drepturile legale ale altora, cum ar fi reputația, portretul, proprietatea intelectuală și secretele comerciale.

+

4.2.2.3 Fabricarea de fapte, ascunderea adevărului în scopul de a induce în eroare sau de a înșela pe alții.

+

4.2.2.4 Publicarea, transmiterea și diseminarea de informații publicitare și informații nedorite.

+

4.2.2.5 Angajarea în alte acte care încalcă legile și reglementările locale.

+

4.2.3 Nu puteți desfășura activități comerciale, cum ar fi publicitatea și vânzarea de bunuri în Software, fără permisiunea Companiei.

+

4.3 Utilizatorul înțelege și este de acord că:

+

4.3.1 Saitong va determina dacă utilizatorul este suspectat de încălcarea specificațiilor de utilizare de mai sus și, conform rezultatelor determinării, va suspenda sau va încheia licența de utilizare sau va lua alte măsuri restrictive care pot fi luate în conformitate cu acest Acord.

+

4.3.2 Pentru informațiile publicate de utilizator prin utilizarea software-ului licențiat care sunt suspectate de ilegalitate sau de încălcarea drepturilor legale ale altora sau de încălcarea acestui Acord, informațiile vor fi șterse direct.

+

4.3.3 Dacă încălcarea de către utilizator a regulilor de utilizare de mai sus cauzează daune terților, trebuie să purtați responsabilitatea juridică în mod independent, în nume propriu, și trebuie să vă asigurați că compania nu suferă pierderi sau costuri suplimentare.

+

4.3.4 Dacă utilizatorul încalcă prevederile legale relevante sau acordurile, cauzând pierderi pentru Saitong sau fiind supus reclamațiilor terților sau pedepsit de autoritatea administrativă, utilizatorul va compensa pierderile și/sau cheltuielile cauzate Saitong, inclusiv onorariile rezonabile ale avocaților, costurile de investigare și de colectare a probelor.

+ +

5. Descrierea serviciilor terților

+

5.1 Utilizatorul înțelege și este de acord că sistemul software poate conține servicii furnizate de afiliații Companiei sau de terți și că Compania furnizează doar modulele funcționale relevante în sistem pentru comoditatea utilizatorilor și oferă acces la serviciile terților.

+

5.2 Indiferent dacă serviciile terțe sunt presetate în serviciile sistemului software sau sunt deschise sau comandate de utilizatorii înșiși, utilizatorii înțeleg și sunt de acord că Saitong nu oferă nicio garanție expresă sau implicită cu privire la legalitatea și eficacitatea furnizorilor de servicii terți sau a utilizatorilor, precum și la legalitatea, acuratețea, eficacitatea și securitatea serviciilor terțe.

+

5.3 Compania nu supraveghează, nu controlează și nu oferă niciun fel de garanție sau asigurare pentru serviciile terțe și nu își asumă nicio responsabilitate.

+

5.4 Orice dispută sau dezacord între utilizator și furnizorul de servicii terț va fi rezolvat de Utilizator și de terț în conformitate cu procesul de afaceri și normele comerciale ale furnizorului de servicii terț, iar compania nu va asuma nicio responsabilitate.

+ +

6. Politica de confidențialitate și protecția informațiilor personale

+

6.1 Saitong se angajează să protejeze confidențialitatea utilizatorilor în conformitate cu politica de confidențialitate, vă rugăm să consultați: Politica de confidențialitate Voitrans.

+ +

7. Răspunderea pentru încălcarea contractului

+

7.1 Saitong are dreptul de a judeca dacă comportamentul utilizatorului respectă prevederile acestui Acord. Dacă se consideră că Utilizatorul a încălcat legile și reglementările relevante sau prevederile acestui Acord și regulile conexe, în funcție de gravitatea încălcării utilizatorului, Saitong are dreptul de a șterge informațiile ilegale, de a restricționa, suspenda, încheia utilizarea serviciului Software de către utilizator, de a urmări responsabilitatea juridică a utilizatorului și de a lua alte măsuri pe care Saitong le consideră adecvate. Dacă suferim orice pierdere (inclusiv, dar fără a se limita la primirea oricăror reclamații ale terților sau penalități din partea oricărui departament administrativ), Utilizatorul va fi pe deplin responsabil.

+ +

8. Riscurile serviciului și exonerarea de răspundere

+

8.1 Dorim să oferim suport de servicii cu tehnologia actuală. Saitong nu garantează că serviciul Software va funcționa fără întrerupere sau eroare, că toate defectele serviciului Software vor fi corectate sau că serviciul Software va îndeplini toate cerințele utilizatorilor. Pentru consecințele rezultate, Saitong nu își asumă nicio responsabilitate.

+

8.2 Toate pierderile suferite de utilizator din cauza terților, cum ar fi defecțiuni ale liniei de comunicare, probleme tehnice, defecțiuni ale rețelei, ale echipamentelor terminale ale computerului, instabilitatea sistemului și alte cauze de forță majoră, nu vor fi responsabilitatea companiei.

+

8.3 Saitong nu garantează legalitatea, autenticitatea, acuratețea și eficacitatea conținutului informațional obținut prin software (inclusiv, dar fără a se limita la conținutul serviciilor terțe), iar Saitong nu își asumă nicio responsabilitate pentru rezultatele oricărui comportament efectuat de utilizatori pe baza interogărilor și vizualizărilor.

+

8.4 Software-ul, ca majoritatea software-ului de pe Internet, este afectat de diferențe în factori incluzând, dar fără a se limita la, motive ale utilizatorului, calitatea serviciului de rețea, mediul social și alți factori, și poate fi supus diverselor probleme de securitate, cum ar fi utilizarea de către alții a informațiilor utilizatorului, rezultând hărțuire în viața reală; Alte software-uri descărcate și instalate de utilizatori sau alte site-uri web vizitate de utilizatori conțin viruși precum „cai troieni", care amenință securitatea informațiilor și datelor echipamentelor terminale ale utilizatorilor, afectând apoi utilizarea normală a software-ului. Utilizatorii ar trebui să consolideze conștientizarea securității informațiilor și a protecției datelor utilizatorilor și să acorde atenție consolidării protecției prin parolă pentru a evita pierderile și hărțuirea.

+

8.5 Când utilizatorii folosesc Software-ul sau solicită Saitong să furnizeze servicii specifice, Software-ul poate apela sisteme terțe sau software terț pentru a sprijini utilizarea sau accesul utilizatorilor, iar rezultatele utilizării sau accesului sunt furnizate de terți. Pe lângă respectarea regulilor relevante ale acestui Acord, utilizatorii trebuie să respecte și acordurile și regulile relevante ale terților. Utilizatorii trebuie să înțeleagă și să fie de acord că, atunci când utilizează servicii terțe, terții pot citi datele utilizatorilor, iar Saitong nu garantează siguranța, acuratețea, eficacitatea și alte riscuri incerte ale rezultatelor obținute prin sisteme terțe sau suport software terț, utilizatorii ar trebui să exercite o judecată prudentă, iar Saitong nu își asumă nicio responsabilitate pentru nicio dispută și niciun prejudiciu cauzate de aceasta.

+

8.6 Pentru a garanta autonomia dezvoltării și ajustării afacerilor companiei, compania poate modifica sau întrerupe serviciul în orice moment după ce a notificat utilizatorul într-un mod rezonabil.

+

8.7 Cu excepția celor prevăzute în mod expres de legile și reglementările în vigoare, Saitong va depune toate eforturile pentru a se asigura că software-ul și tehnologia și informațiile implicate sunt sigure, eficiente, exacte și fiabile, dar limitată de tehnologia existentă, utilizatorul înțelege că Saitong nu poate garanta acest lucru.

+

8.8 Compensarea pentru vătămarea corporală sau prejudiciul economic incidental și indirect cauzat de sau în legătură cu oricare dintre următoarele circumstanțe, inclusiv, dar fără a se limita la pierderea profiturilor, pierderea datelor, daune pentru întreruperea activității sau alte daune sau pierderi comerciale, va fi suportată de Utilizator:

+

1) Utilizarea sau imposibilitatea de a utiliza software-ul licențiat.

+

2) Utilizarea neautorizată a software-ului sau modificarea datelor utilizatorilor de către terți.

+

3) Cheltuieli și pierderi generate de acțiunile utilizatorului cu software-ul.

+

4) Concepțiile greșite ale utilizatorului despre software.

+

5) Orice altă pierdere legată de software care nu este atribuibilă cauzelor Saitong.

+

8.9 Utilizatorul este de acord că Compania are dreptul de a suspenda, întrerupe sau înceta total sau parțial Serviciul către utilizator pe baza cerințelor autorităților judiciare, de reglementare și de supraveghere sau din propriile motive de afaceri. Saitong nu acceptă nicio responsabilitate pentru aceasta.

+

8.10 Utilizatorul înțelege și este de acord că Compania va depune eforturi rezonabile din punct de vedere comercial pentru a asigura securitatea stocării datelor în Software și Servicii, dar compania nu poate oferi o garanție completă, iar Utilizatorul înțelege că Compania nu este responsabilă pentru ștergerea sau eșecul stocării sau al copiei de siguranță a datelor din Serviciu.

+

8.11 În măsura maximă permisă de lege, Dezvoltatorul sau Furnizorul nu va fi responsabil pentru nicio daună directă, indirectă, incidentală, specială sau consecventă rezultată din utilizarea Aplicației. Dacă utilizatorul are nevoi suplimentare, vă rugăm să mergeți la un spital acreditat pentru teste aprofundate.

+ +

9. Declarația privind proprietatea intelectuală

+

9.1 Saitong este titularul drepturilor de proprietate intelectuală asupra acestui software. Toate drepturile de autor, mărcile comerciale, brevetele, secretele comerciale și alte drepturi de proprietate intelectuală ale software-ului, precum și tot conținutul informațional legat de software (inclusiv, dar fără a se limita la text, imagini, audio, video, grafică, design de interfață, cadru de layout, date relevante sau documente electronice etc.) sunt protejate de legile și reglementările locale și de tratatele internaționale corespunzătoare.

+

9.2 Fără consimțământul scris al Companiei, Utilizatorul nu va implementa, utiliza sau transfera drepturile de proprietate intelectuală menționate mai sus în niciun scop comercial sau necomercial și nu va permite niciunui terț, iar Compania își rezervă dreptul de a urmări responsabilitatea juridică pentru actele menționate mai sus.

+ +

10. Modificarea protocolului

+

10.1 Saitong are dreptul de a modifica termenii acestui Acord atunci când este necesar. Odată ce termenii Acordului sunt modificați, termenii revizuiți ai Acordului vor fi publicați pe pagina relevantă. Dacă nu sunteți de acord cu conținutul modificat, utilizatorul ar trebui să ia inițiativa de a anula acest serviciu. Dacă Utilizatorul continuă să utilizeze Serviciile, se consideră că acceptă modificările în termenii Acordului.

+

10.2 Saitong își rezervă dreptul de a modifica sau schimba serviciile plătite, standardele de taxare, metodele de taxare, taxele de serviciu și termenii serviciului furnizate, după cum este necesar. La furnizarea serviciilor, putem percepe anumite taxe utilizatorilor unor servicii acum sau în viitor. Dacă utilizatorii refuză să plătească astfel de taxe, nu pot continua să utilizeze serviciile relevante după începerea perceperii taxelor.

+
+ + diff --git a/doc/ru/privacy_policy.html b/doc/ru/privacy_policy.html new file mode 100644 index 000000000..bc1630526 --- /dev/null +++ b/doc/ru/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Политика конфиденциальности Voitrans + + + + +
+

Политика конфиденциальности Voitrans

+

Последнее обновление: 27 мая 2025 г.

+

Дата вступления в силу: 27 мая 2025 г.

+ +

Добро пожаловать в программное обеспечение и сервисы Voitrans

+

1. Voitrans предоставляется компанией Saitong Industries Inc. (далее — «Компания»). Приложение может помочь пользователям управлять устройствами Bluetooth и другими продуктами. Мы понимаем важность персональных данных для наших пользователей (далее — «вы») и что эффективная защита ваших персональных данных является краеугольным камнем здорового и устойчивого развития нашего бизнеса. Благодарим вас за использование и доверие к продуктам или услугам Voitrans! Мы полностью осознаём, что это доверие даётся нелегко, мы придерживаемся принципа открытости и прозрачности, чтобы довести до вашего сведения наши правила обработки ваших персональных данных. Мы используем законные и легитимные способы и ясные и разумные цели для обработки ваших персональных данных. Особое примечание: Обязательно внимательно прочитайте и полностью поймите настоящую Политику конфиденциальности перед использованием наших продуктов или услуг, чтобы вы могли сделать правильный выбор.

+

2. Настоящая Политика конфиденциальности объясняет, как мы собираем, используем, храним и передаём ваши персональные данные при использовании Voitrans. Персональные данные — это все виды информации, записанной электронными или иными средствами, которая может идентифицировать конкретное физическое лицо или отражать деятельность конкретного физического лица самостоятельно или в сочетании с другой информацией. Voitrans уважает и защищает личную конфиденциальность всех пользователей сервиса. За исключением случаев, предусмотренных настоящей Политикой конфиденциальности, Voitrans не будет раскрывать эту информацию общественности или предоставлять её третьим лицам без вашего предварительного разрешения.

+

3. Когда вы используете продукт или услугу третьей стороны через продукт или услугу магазина приложений, ваши персональные данные будут регулироваться политикой конфиденциальности третьей стороны.

+

4. Voitrans Настоящая Политика конфиденциальности будет обновляться время от времени. Согласившись с Соглашением об использовании сервиса Voitrans и начав использовать Voitrans, вы считаетесь согласившимся со всей настоящей Политикой конфиденциальности. Если вы не согласны с настоящей Политикой конфиденциальности, пожалуйста, не используйте программное обеспечение и услуги Voitrans.

+

5. В целях анализа и оценки эффективности соответствующих услуг мы будем использовать и раскрывать ваши персональные данные в соответствии с положениями настоящей Политики конфиденциальности.

+ +

Настоящая Политика конфиденциальности поможет вам понять следующее:

+
    +
  • 1 Информация, которую мы собираем
  • +
  • 2 Хранение информации
  • +
  • 3 Безопасность информации
  • +
  • 4 Как мы используем собранную информацию
  • +
  • 5 Обмен информацией
  • +
  • 6 Как вы управляете своими персональными данными
  • +
  • 7 Описание разрешений приложения
  • +
  • 8 Доступ к сторонним SDK
  • +
  • 9 Защита несовершеннолетних
  • +
  • 10 Действующая и обновлённая Политика конфиденциальности
  • +
  • 11 Как связаться с нами
  • +
+ +

1. Информация, которую мы собираем

+

1. При начале использования Voitrans мы начнём собирать данные о вашем использовании приложения

+

2. Voitrans может получать персональные данные о вас от третьих лиц или деловых партнёров законными способами

+

3. Для предоставления вам лучших продуктов и услуг, обеспечения сетевой безопасности во время использования, поддержания нормальной работы продуктов и их оптимизации и улучшения, в целях наших информационных услуг, после того как вы активно нажали на согласие с настоящей политикой конфиденциальности, при использовании предоставляемого нами сервиса, помимо персональных данных, необходимых для обеспечения нормального функционирования базовых функций приложения в соответствии с национальными законами и нормативными актами, мы будем собирать у вас другие персональные данные:

+

3.1 Для идентификации рисковых пользователей, оценки подлинности пользователей и всесторонней профилактики мошенничества мы будем считывать информацию о вашем устройстве каждый раз, когда вы открываете программу, включая: (Модель устройства, MAC-адрес устройства, уникальный идентификатор устройства (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID и т.д.) MEID, серийный номер, SSID и BSSID WIFI), считывание адреса Bluetooth, версию операционной системы, название операционной системы, учётную запись и пароль пользователя;

+

3.2 При использовании наших продуктов и услуг мы можем собирать определённую информацию через сетевые журналы или определённые программы и программное обеспечение. Такая информация может включать: детали использования продуктов и услуг, такие как время открытия вашего приложения, продолжительность использования и адрес посещённой страницы; информация о событиях устройства, таких как сбои, системная активность и т.д., для оптимизации вашего устройства и улучшения наших услуг;

+

3.3 Для идентификации приложений, в которых оборудование подвергается риску, предоставления более безопасных функциональных услуг. Поэтому нам необходимо получить ваш список приложений/установленных приложений в процессе работы для обеспечения нормальной работы продукта и защиты безопасности устройства.

+

3.4 Для анализа использования функций приложения пользователями и определения подлинности пользователей нам необходимо проводить статистический анализ данных и собирать вышеуказанную информацию об устройстве, включая MAC-адрес устройства и уникальный идентификатор устройства, когда ваше устройство используется.

+

3.5 Сигнал устройства: состояние сети используемого вами устройства, информация о точке доступа WIFI и т.д.

+

3.6 Информация о местоположении: Мы можем использовать GPS, WiFi или другие технические средства для сбора и обработки информации о вашем местоположении для обновления местной информации, предоставления контент-услуг и т.д.

+

Для получения дополнительной информации нажмите «Список сбора персональных данных».

+ +

1. Для более чувствительных персональных данных из указанной выше информации, таких как информация об устройстве пользователя (номер IMEI, состояние вызова и идентификационный номер), информация о местоположении GPS, фото-медиа контент и права доступа к файлам, мы получим ваше согласие перед сбором. Для некоторой нечувствительной информации сбор может быть по умолчанию и автоматическим. Вы можете ограничить сбор нами соответствующей информации или использование определённых разрешений с вашего мобильного устройства, настроив параметры вашего мобильного устройства. Когда вы ограничиваете наш доступ к определённому разрешению, мы, возможно, не сможем продолжать предоставлять вам соответствующие услуги и перестанем обрабатывать вашу соответствующую информацию.

+

2. Мы не будем собирать ваш номер удостоверения личности, персональную биометрическую информацию, номер банковского счёта, информацию об имуществе, кредитную информацию, информацию о здоровье и физиологическую информацию и другие персональные чувствительные данные.

+

3. О чувствительных разрешениях: Для надлежащего использования функций приложения продукту необходимо получить следующие разрешения для предоставления функциональных услуг, связанных с нормальными продуктами.

+ +

1 Получение разрешений на чтение и запись хранилища

+

1 Способ получения: всплывающее уведомление, при получении разрешения пользователь активно нажимает «Согласен», и приложение будет использовать это разрешение

+

2 Цель и область использования: Используется для сканирования файлов кэша ресурсов и миниатюр в системе, загрузки музыкальных ресурсов и изображений продуктов. Отображается на интерфейсе приложения для удобного просмотра и управления пользователями

+ +

2 Получение разрешения на список установленных приложений

+

1 Способ получения: всплывающее уведомление, при получении разрешения пользователь активно нажимает «Согласен», и приложение будет использовать это разрешение

+

2 Цель и область использования: Когда приложению необходимо использовать рекламные услуги, сторонняя рекламная платформа Youmon +SDK должна получить «разрешение на список установленного ПО» устройства, чтобы предотвратить отправку пользователю приложения, которое он уже имеет, и улучшить пользовательский опыт.

+ +

3 Разрешение на получение информации о состоянии устройства

+

Включает: (Модель устройства, MAC-адрес устройства, уникальный идентификатор устройства (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID и т.д.) MEID, серийный номер, SSID и BSSID WIFI, считывание адреса Bluetooth), версия операционной системы, название операционной системы и т.д.;

+

1 Способ получения: всплывающее уведомление, при получении разрешения пользователь активно нажимает «Согласен», и приложение будет использовать это разрешение

+

2 Цель и область использования: При использовании нашего приложения, для анализа использования функций приложения пользователем и оценки подлинности пользователя, мы синхронизируем разрешение со сторонними SDK, включая Autonavi SDK, Youmon +SDK и т.д.

+ +

4 Доступ к информации о местоположении

+

1 Способ получения: всплывающие уведомления, при получении разрешения пользователь будет использовать это разрешение только при активном нажатии «Согласен» в приложении.

+

2 Цель и область использования: Когда приложению необходимо использовать GPS, WiFi или другие функции, продукт должен собирать информацию о вашем местоположении для поиска устройств Bluetooth в ближайших местах.

+

Примечание: Для получения дополнительных разрешений приложения см. настоящий документ «Политика конфиденциальности» Раздел 7 «Описание разрешений приложения»

+ +

2. Хранение информации

+

1. Где хранится информация

+

Персональные данные, которые мы собираем и генерируем в Китайской Народной Республике, будут храниться на наших серверах и/или серверах наших аффилированных лиц.

+

2. Хранение и обработка информации

+

Мы храним ваши персональные данные только в течение периода, необходимого для достижения цели, или в течение срока, требуемого законом и нормативными актами. После того как вы прекратите использование данного продукта, мы немедленно прекратим сбор и обработку ваших персональных данных и данных приложения. По истечении вышеуказанного периода мы удалим или анонимизируем предоставленные вами персональные данные.

+

Помимо необходимых функций, Voitrans должен запрашивать соответствующие системные разрешения. Серверная сторона облака не хранит персональные данные пользователей, а используемые сторонние SDK анонимизируются и деидентифицируются поставщиком услуг (Amu Statistics SDK, Autonavi SDK), поэтому пользователей невозможно отследить. Информация, хранящаяся на телефоне пользователя, будет автоматически удалена при удалении Voitrans или очистке кэша.

+ +

3. Безопасность информации

+

1. Voitrans хранит и защищает ваши персональные данные, используя стандартные отраслевые меры безопасности и технологии, такие как аутентификация, шифрование данных, ограниченный доступ к центрам обработки данных и другие меры безопасности для обеспечения защиты вашей информации от раскрытия, изменения и уничтожения. Несмотря на вышеупомянутые меры безопасности, обратите внимание, что ни одна мера безопасности не может быть на 100% безопасной.

+

2. При использовании услуг, предоставляемых Voitrans, защищайте свои персональные данные. Если вы обнаружите, что ваши персональные данные были скомпрометированы, немедленно свяжитесь с нами, чтобы мы могли принять соответствующие меры.

+ +

4. Как мы используем собранную информацию

+

1. При реализации бизнес-функций приложения мы можем использовать ваши персональные данные для обеспечения целостности и безопасности продуктов и услуг, которые мы вам предоставляем;

+

2. Мы будем понимать ваши привычки использования на основе собранной информации и с помощью анализа данных определять приемлемость услуг, ваши привычки использования и т.д., чтобы тестировать и создавать новые продукты, функции и услуги, повышать уровень сервиса и помогать нам улучшать существующие услуги и разрабатывать новые;

+

3. Мы можем использовать ваши персональные данные для проведения опросов клиентов о продуктах и услугах, для отправки уведомлений о продуктах и услугах, а также для коммерческого продвижения;

+

4. Мы можем использовать вашу информацию для внутреннего анализа и исследований, связанных с приложением;

+ +

5. Обмен информацией

+

В настоящее время мы не будем активно делиться или передавать ваши персональные данные третьим лицам за пределами компании. Если будет другой обмен или передача ваших персональных данных, мы напрямую подтвердим или убедимся, что третья сторона получила ваше явное согласие на вышеуказанные действия.

+

Мы не будем публично раскрывать собранные нами персональные данные. Если необходимо их публичное раскрытие, мы проинформируем вас о цели публичного раскрытия, типе раскрываемой информации и чувствительной информации, которая может быть затронута, и получим ваше явное согласие.

+

По мере дальнейшего развития нашего бизнеса мы можем участвовать в слияниях, поглощениях, передаче активов и других сделках, и мы будем информировать вас о соответствующих обстоятельствах в соответствии с законами и нормативными актами и не ниже стандартов, требуемых настоящим Руководством, для продолжения защиты ваших персональных данных или для требования от нового контролёра продолжить защиту ваших персональных данных.

+

Кроме того, в соответствии с соответствующими законами, нормативными актами и национальными стандартами мы можем делиться, передавать и публично раскрывать персональные данные без предварительного разрешения и согласия субъекта персональных данных в следующих обстоятельствах:

+
    +
  • 1 Непосредственно связанных с национальной безопасностью и обороной;
  • +
  • 2 Непосредственно связанных с общественной безопасностью, общественным здравоохранением или крупными общественными интересами;
  • +
  • 3 Непосредственно связанных с уголовным расследованием, судебным преследованием, судом и исполнением приговоров;
  • +
  • 4 Для защиты жизни, имущества и других важных законных прав и интересов субъекта персональных данных или других лиц, но когда трудно получить согласие лица;
  • +
  • 5 Персональные данные, раскрытые общественности субъектом персональных данных;
  • +
  • 6 Сбор персональных данных из законно публично раскрытой информации, такой как законные новостные сообщения, раскрытие государственной информации и другие каналы.
  • +
+ +

6. Как вы управляете своими персональными данными

+

В соответствии с соответствующими законами, нормативными актами и стандартами Китая, а также общепринятой практикой других стран и регионов, мы гарантируем вам осуществление следующих прав в отношении ваших персональных данных:

+ +

1. Исправление ваших персональных данных

+

Если вы обнаружите ошибку в ваших персональных данных, обработанных нами, вы имеете право исправить или обновить неверную или неполную информацию. Если вы не можете действовать самостоятельно в центре учётных записей, вы можете связаться с нами по электронной почте saitong.voitrans@gmail.com

+ +

2. Удаление ваших персональных данных

+

В следующих случаях вы можете обратиться к нам с просьбой об удалении ваших персональных данных:

+
    +
  • Если мы обрабатываем персональные данные с нарушением законов и нормативных актов;
  • +
  • Если мы собираем и используем ваши персональные данные без вашего согласия;
  • +
  • Если наша обработка персональных данных нарушает наше соглашение с вами;
  • +
  • Если вы больше не используете наши продукты или услуги;
  • +
  • Если мы больше не предоставляем вам продукты или услуги.
  • +
+

Свяжитесь с нами. Мы обработаем ваш запрос по адресу saitong.voitrans@gmail.com. Мы отправим вам ответ в течение 30 рабочих дней с момента получения

+ +

3. Изменение объёма вашего согласия

+

Вы можете связаться с нами по электронной почте saitong.voitrans@gmail.com. По вашему запросу мы больше не будем собирать, использовать или раскрывать ваши персональные данные. Обратите внимание, что отзыв вашего согласия или удаление ваших персональных данных может повлиять на использование вами некоторых наших услуг.

+ +

4 Доступ и копирование персональных данных

+

Вы можете, в соответствии с положениями соответствующих законов, предоставить свой imei (серийный номер телефона) или oaid или Android ID после информации об учётной записи и другой информации, подать нам заявку на доступ к и копирование ваших персональных данных. Вы можете связаться с нами по электронной почте 3514406195@qq.com.

+ +

5. В ответ на ваш вышеуказанный запрос

+

В целях безопасности вам может потребоваться предоставить письменный запрос или иным образом подтвердить свою личность. Мы можем попросить вас подтвердить вашу личность перед обработкой вашего запроса. На ваш обоснованный запрос мы ответим и обработаем его своевременно. Мы можем отклонить запросы, которые являются необоснованно повторяющимися, требуют слишком много технологий (например, разработка новых систем или фундаментальные изменения существующей практики), представляют риск для законных интересов других лиц или являются крайне непрактичными.

+

В следующих обстоятельствах, в соответствии с требованиями законов и нормативных актов, мы не сможем ответить на ваш запрос:

+
    +
  • Связанных с национальной безопасностью и обороной;
  • +
  • В связи с уголовным расследованием, судебным преследованием и судебным разбирательством;
  • +
  • Имеются достаточные доказательства того, что у вас есть субъективный злой умысел или злоупотребление правами;
  • +
  • Ответ на ваш запрос причинит серьёзный ущерб законным правам и интересам вас или других лиц и организаций.
  • +
+ +

6. Удаление учётной записи

+

Пользователь может выполнить операцию [удаление учётной записи] в APP. Порядок действий:

+
    +
  1. Перейдите на страницу [Мой профиль]
  2. +
  3. Нажмите кнопку [Настройки] в верхнем правом углу
  4. +
  5. Нажмите [Удалить учётную запись] для подтверждения
  6. +
+

После выхода информация об учётной записи пользователя будет удалена

+ +

7. Описание разрешений приложения

+

Для предоставления лучших продуктов и услуг, при использовании программного обеспечения мы будем запрашивать следующие права. При входе на главную страницу или использовании функции будет запрошена авторизация. Если вы откажете, некоторые из соответствующих функций не смогут использоваться нормально. Конкретные цели и напоминания о разрешениях подробно описаны ниже:

+ +

1 Права на определение местоположения:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Через WiFi или мобильную базовую станцию для получения информации о широте и долготе пользователя

+

При использовании Voitrans мы будем искать ваше Bluetooth-устройство поблизости на основе вашего географического местоположения. Одновременно, для предоставления более стабильных услуг, оптимизации продуктов и улучшения опыта, мы будем делиться вышеуказанной информацией с тремя SDK, такими как Youmon и Autonavi, для получения операционных данных Voitrans и функциональных услуг.

+

Режим напоминания: При первом запуске приложения отображается уведомление о разрешении, требующее подтверждения пользователя. Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Это разрешение требуется при доступе к приложению для выполнения функций управления приложением.

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

3 Сетевые разрешения:

+

android.permission.INTERNET

+

Эти разрешения необходимы для информационных служб Voitrans и служб обновления версий, а для улучшения пользовательского опыта и оптимизации возможностей обслуживания сторонние SDK, такие как Friends, также будут использовать эти разрешения.

+

Режим напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

4 Получение разрешений на состояние сети:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Используется для определения того, является ли текущее сетевое соединение действительным, является ли текущая среда 4G, и нужно ли напоминать об изменениях сетевой среды, что влияет на загрузку информационного контента. Это разрешение запрашивается при использовании Voitrans.

+

Изменения состояния сети влияют на загрузку и выгрузку данных. Поэтому разрешение на доступ к состоянию сети будет передано friends + и другим платформам.

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

5 Получение разрешений на список задач:

+

android.permission.GET_TASKS

+

Это разрешение используется для получения списка приложений для функции управления программным обеспечением. При использовании функции управления программным обеспечением необходимо считывать приложения, установленные на мобильном телефоне.

+

Режим напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

6 Получение разрешения на MAC-адрес

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

При использовании Voitrans приложению необходимо получить разрешения на MAC-адрес:

+

Когда приложению необходимо сообщить данные целевой конверсии, сторонние платформы, такие как Youmon +SDK, должны использовать MAC.

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

7 Получение разрешения на запись аудио

+

android.permission.RECORD_AUDIO

+

При использовании функции голосового ввода Voitrans необходимо разрешение на запись аудио, преимущественно для голосового ввода для перевода и других связанных функций.

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности, динамическое всплывающее окно отображается для пользователя при необходимости.

+ +

8 Получение разрешения на SSID WIFI

+

При использовании этого разрешения приложение считывает разрешение на SSID WIFI:

+

Область использования и цель: Когда приложению необходимо использовать службы анализа данных, сторонние платформы, такие как +SDK, должны считывать «разрешение на SSID WIFI» устройства для предоставления пользователям более точных и эффективных функциональных услуг.

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

9 Получение доступа к Bluetooth

+

При использовании этого разрешения приложение считывает разрешение Bluetooth:

+

Область использования и цель: Устройства Bluetooth для поиска и настройки аксессуаров, таких как Bluetooth-гарнитуры, Bluetooth-часы и т.д. Удобно для управления пользователями

+

Режим напоминания: При первом запуске приложения отображается уведомление о разрешении, требующее подтверждения пользователя. Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

10 Получение разрешения на BSSID WiFi

+

Когда приложению необходимо различать и идентифицировать пользователя для предоставления функциональных услуг и статистики данных, оно считывает разрешение «WiFi BSSID» устройства для:

+

Область использования и цель: 1 Сторонние платформы: такие как Youmeng SDK, Bugly SDK, Autonavi SDK

+

Способ напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

11 Получение разрешения на установку приложения

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Программное обеспечение будет использовать разрешение на установку приложения, которое в основном используется для того, чтобы позволить пользователям установить новую версию и испытать новые функции при наличии новой версии.

+

Режим напоминания: Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

12 Получение разрешений на камеру

+

android.permission.CAMERA

+

Voitrans использует разрешения на камеру для сканирования QR-кодов и привязки Bluetooth-устройств, таких как Bluetooth-гарнитуры и часы.

+

Способ напоминания: При первом запуске приложения отображается уведомление о разрешении, требующее подтверждения пользователя. Описание Пользовательского соглашения и Политики конфиденциальности.

+ +

Особое примечание:

+

1 Приложение интегрирует Allies SDK, Scott map SDK. После согласия пользователя на разрешение использования, приложение в фоновом/переднем режиме собирает ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI и другие персональные данные;

+

Примечания: Подробнее см. ниже содержание и разрешения, связанные с SDK [VIII. Доступ к списку сторонних SDK]

+ +

8. Доступ к сторонним SDK

+

1 Для обеспечения стабильной работы и функциональной реализации нашего клиента, чтобы вы могли использовать и наслаждаться большим количеством услуг и функций, наше приложение будет встроено в набор средств разработки программного обеспечения (SDK) или другие аналогичные приложения третьих сторон. Эти третьи стороны будут собирать и обрабатывать соответствующую информацию в соответствии с их собственными политиками конфиденциальности для нормального предоставления функций и рекламных услуг. Вы можете узнать о правилах сбора и обработки информации третьей стороной в следующем разделе. Мы будем проводить строгие тесты безопасности наборов средств разработки (SDK) партнёров для получения информации, чтобы защитить разумное использование и безопасность ваших персональных данных. Обратите внимание, что сторонние SDK могут изменить типы обработки данных в связи с обновлением версий. Пожалуйста, ознакомьтесь с политиками конфиденциальности, опубликованными сторонними SDK. Подробности см. ниже или нажмите для просмотра списка сторонних SDK.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Полученная информация: Номер устройства, IP-адрес, информация о программном обеспечении устройства, код идентификации устройства (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, информация IMSI SIM-карты, IP, MAC-адрес), идентификатор устройства, регион, информация о приложениях, связанных с устройством, и другая информация журнала, связанная с сервисом

+

Цель использования: Вход и обмен через WeChat

+

Разработчик: Shenzhen Tencent Computer Systems Company Limited

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Полученная информация: Название приложения, номер версии приложения, марка и модель устройства, операционная система, информация об операторе связи, разрешение экрана, информация датчиков (вектор, ускорение, давление, направление, геомагнитный, гироскоп, температура, датчик освещённости, сигнал NMEA), информация о силе сигнала устройства

+

Цель использования: Навигация с использованием Amap

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Полученная информация: Название приложения, версия приложения, марка и модель устройства, операционная система, сетевая информация, сила сигнала устройства и т.д.

+

Цель использования: Отображение карты и взаимодействие

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Полученная информация: Информация о местоположении (GPS, Wi-Fi, базовая станция), информация об устройстве, сетевая информация и т.д.

+

Цель использования: Предоставление услуг определения местоположения

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Полученная информация: Название приложения, версия приложения, информация об устройстве, сетевая информация и т.д.

+

Цель использования: Картографические инструменты и оптимизация рендеринга

+

Разработчик: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Полученная информация: Идентификаторы устройства, основная информация об устройстве, список установленного программного обеспечения и сетевая информация (подробности см. в официальной политике конфиденциальности)

+

Цель использования: Вход в учётную запись Alipay и вызов оплаты

+

Разработчик: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Полученная информация: Версия SDK/API, платформа, временная метка, идентификатор приложения, версия приложения, производитель устройства, версия ОС, локаль, часовой пояс, состояние сети (Wi-Fi и т.д.), сетевые журналы, данные о сбоях и использовании, IP-адрес и т.д. (подробности см. в официальной политике конфиденциальности)

+

Цель использования: Служба мониторинга качества приложения и отчётности по данным

+

Разработчик: Shenzhen Tencent Computer Systems Company Limited

+

Метод сбора: Самостоятельный сбор SDK

+

Ссылка на политику конфиденциальности: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Защита несовершеннолетних

+

Пользователи наших продуктов и услуг могут включать несовершеннолетних в возрасте до 18 лет. Несовершеннолетние пользователи должны обратиться за советом к своим родителям или опекунам относительно настоящей Политики конфиденциальности перед использованием наших продуктов и использовать наши услуги или предоставлять свою информацию нам после получения согласия и под руководством своих родителей или опекунов. Опекуны несовершеннолетних, у которых есть вопросы, могут связаться с нами по контактным данным, указанным в настоящей Политике конфиденциальности.

+

Если вы не согласны со сбором вышеупомянутой информации указанными выше сторонними поставщиками услуг, пожалуйста, немедленно прекратите использование Программного обеспечения. Во время использования Программного обеспечения эти третьи стороны будут собирать и обрабатывать соответствующую информацию в соответствии с их собственными политиками конфиденциальности для предоставления некоторых функций, рекламы и других услуг. Если информация утекает из-за сбора вышеупомянутой информации соответствующим сторонним поставщиком услуг, соответствующий сторонний поставщик услуг несёт соответствующую юридическую ответственность.

+ +

10. Действующая и обновлённая Политика конфиденциальности

+

1. Настоящая Политика конфиденциальности действует с даты публикации.

+

2. По мере развития и изменения нашего бизнеса наша Политика конфиденциальности может измениться. Мы оставляем за собой право изменять нашу политику конфиденциальности в любое время, поэтому, пожалуйста, проверяйте её регулярно. Если мы внесём изменения в нашу Политику конфиденциальности, мы опубликуем эти обновления на нашем веб-сайте, в приложениях и там, где сочтём это уместным, чтобы информировать вас. Если политика конфиденциальности будет обновлена, она вступит в силу с даты обновления. Ваше продолжение использования наших продуктов или услуг означает, что вы согласны с нашей изменённой Политикой конфиденциальности.

+ +

11. Как связаться с нами

+

Saitong Industries Inc основана 22 ноября 2024 года, зарегистрированный адрес: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Если вы хотите узнать больше о нашей компании и платформе, вы можете связаться с нами по контактной информации, указанной в настоящей политике (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/ru/user_agreement.html b/doc/ru/user_agreement.html new file mode 100644 index 000000000..7fb488d1a --- /dev/null +++ b/doc/ru/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Пользовательский протокол приложения Voitrans + + + +
+
Русский
+ +

Пользовательский протокол приложения Voitrans

+ +

Настоящие Условия использования описывают порядок доступа к приложению Voitrans и онлайн-сервисам («Сервисы») и их использования. Компания Saitong Industries Inc. (далее — «Saitong») настоящим напоминает пользователям о необходимости внимательно прочитать и полностью понять настоящее Пользовательское соглашение (далее — «Соглашение»). Пользователи должны внимательно прочитать и полностью понять условия настоящего Соглашения. Пожалуйста, внимательно прочитайте и выберите — принять или не принять настоящее Соглашение. Использование вами приложения Voitrans APP (далее — «Приложение» или «Программное обеспечение») будет считаться принятием настоящего Соглашения, и вы соглашаетесь быть связанными его условиями. Если вы не согласны с настоящим Соглашением, не используйте Приложение.

+

Saitong оставляет за собой право вносить изменения в настоящее Соглашение, и обновлённые условия Соглашения будут опубликованы в данном Приложении с момента публикации.

+ +

1. Общие правила

+

1.1 Данное Приложение является программным обеспечением, предоставленным компанией Saitong для подключения гарнитурных продуктов, выпущенных Saitong и её партнёрскими компаниями. Право собственности и права на эксплуатацию программного обеспечения и связанных с ним сервисов принадлежат Saitong.

+

1.2 Настоящее Соглашение является договором между вами (далее — «Пользователь») и компанией, а также её партнёрами и операционными партнёрами (далее — «Партнёры») относительно использования Пользователем Приложения и связанных сервисов.

+

1.3 Программное обеспечение и сервисы включают:

+

1.3.1 Предоставляемое программное обеспечение обеспечивает пользователям Voitrans подключение и привязку Voitrans, управление настройками функций и другие программные услуги в соответствии с фактическими программными услугами, предоставляемыми Приложением.

+

1.3.2 Обновления, модернизации и другие услуги программного обеспечения.

+ +

2. Объём лицензии на программное обеспечение

+

2.1 Мы предоставляем Пользователю персональную, непередаваемую, не подлежащую сублицензированию и неисключительную лицензию на Программное обеспечение.

+

2.2 Пользователи могут устанавливать, использовать, отображать и запускать программное обеспечение на одном мобильном терминальном устройстве в некоммерческих целях. Однако Пользователь не должен устанавливать, использовать или запускать программное обеспечение в коммерческих целях, копировать, изменять, модифицировать, подключать или запускать программное обеспечение или данные, размещённые в памяти любого терминального устройства во время работы программного обеспечения, или данные взаимодействия между клиентом и сервером во время работы программного обеспечения, а также создавать производные работы. Это включает, помимо прочего, использование плагинов, расширений или несанкционированных сторонних инструментов/сервисов для доступа к Программному обеспечению и связанным системам. Для коммерческой продажи, воспроизведения и распространения, включая предустановку и комплектацию программного обеспечения, необходимо получить письменное разрешение.

+

2.3 Пользователь не должен устанавливать Программное обеспечение на другие терминальные устройства без явного разрешения Создателя, включая, помимо прочего, телевизоры, цифровые приставки, игровые консоли и другие устройства.

+

2.4 За исключением случаев, прямо предусмотренных настоящим Соглашением, Пользователю не предоставляются никакие другие права, и Пользователь должен получить письменное согласие для использования других прав.

+ +

3. Обновление программного обеспечения

+

3.1 Пользователь должен выбрать версию программного обеспечения, подходящую для настройки установленного терминала. В противном случае проблемы с программным обеспечением, устройством или повреждения, вызванные несоответствием версии программного обеспечения типу устройства, являются исключительно ответственностью Пользователя.

+

3.2 В целях улучшения пользовательского опыта и повышения качества услуг Saitong имеет право время от времени предоставлять вам заменяющие, изменённые и обновлённые версии программного обеспечения. Функция «Уведомление об обновлении» включена для пользователей по умолчанию. В зависимости от различных версий программного обеспечения, используемых пользователями, Saitong предоставляет пользователям возможность активировать эту функцию. После выпуска новой версии программного обеспечения Saitong не гарантирует дальнейшую доступность старой версии программного обеспечения.

+ +

4. Правила использования

+

4.1 Пользователи могут использовать Программное обеспечение и Сервисы в соответствии с настоящим Соглашением при условии соблюдения законодательства и настоящего Соглашения. Пользователи не должны совершать следующие действия:

+

4.1.1 Удалять всю информацию об авторских правах на Программное обеспечение и другие копии, а также изменять, удалять или обходить технические меры, установленные Программным обеспечением для защиты прав интеллектуальной собственности.

+

4.1.2 Осуществлять обратное проектирование Программного обеспечения, такое как дизассемблирование, декомпиляция или иные попытки получить исходный код Программного обеспечения.

+

4.1.3 Путём изменения или фальсификации инструкций и данных в работе программного обеспечения, добавления, удаления или изменения функций или эффекта работы программного обеспечения, или использования программного обеспечения или методов, предназначенных для вышеуказанных целей, для распространения среди общественности, независимо от того, преследуют ли эти действия коммерческие цели.

+

4.1.4 Использовать программное обеспечение для любых действий, угрожающих сетевой безопасности, включая, помимо прочего: использование несанкционированных данных или доступ к несанкционированным серверам/учётным записям; доступ к публичным сетям или другим операционным системам без разрешения и удаление, изменение или добавление хранимой информации; несанкционированные попытки зондирования, сканирования или тестирования уязвимостей системы или сети программного обеспечения или другие действия, подрывающие сетевую безопасность; попытки вмешательства или разрушения нормальной работы программной системы или веб-сайта, умышленное распространение вредоносных программ или вирусов и другие действия, нарушающие нормальные сетевые информационные услуги; подделка имён или частей имён TCP/IP-пакетов.

+

4.1.6 Без письменного согласия Компании пользователь произвольно выполняет следующие действия с программным обеспечением и содержащейся в нём информацией, включая, помимо прочего: использование, аренду, одалживание, копирование, изменение, создание ссылок, перепечатку, компиляцию, публикацию, размещение, создание зеркальных сайтов, разработку производных продуктов, работ, услуг, плагинов, расширений, обеспечение совместимости, взаимосвязи и т.д. с помощью Программного обеспечения.

+

4.1.7 Использовать Программное обеспечение для публикации, передачи, распространения и хранения контента, нарушающего местное законодательство.

+

4.1.8 Использовать программное обеспечение для публикации, передачи, распространения и хранения контента, нарушающего права интеллектуальной собственности, коммерческую тайну и другие законные права третьих лиц.

+

4.1.9 Использовать данное программное обеспечение для массовой публикации, передачи и распространения рекламной информации и спама.

+

4.1.10 Использовать Программное обеспечение и другие Сервисы любым незаконным способом, в незаконных целях или способом, не соответствующим лицензированному использованию по настоящему Соглашению.

+

4.2 Правила публикации информации

+

4.2.1 Если вы используете программное обеспечение для публикации информационного контента (при наличии), вы должны гарантировать, что вы владеете правами интеллектуальной собственности на загружаемый вами информационный контент или получили законное разрешение, и что любое ваше поведение при использовании программного обеспечения и услуг не нарушает законных прав и интересов третьих лиц.

+

4.2.2 При использовании Программного обеспечения пользователь не должен использовать Программное обеспечение для осуществления следующих действий, включая, помимо прочего:

+

4.2.2.1 Создание, копирование, публикация, распространение и хранение контента, нарушающего местные национальные законы и нормативные акты.

+

4.2.2.2 Публикация, передача, распространение и хранение контента, нарушающего законные права третьих лиц, такие как репутация, портретные права, интеллектуальная собственность и коммерческая тайна.

+

4.2.2.3 Фабрикация фактов, сокрытие истины с целью введения в заблуждение или обмана других лиц.

+

4.2.2.4 Публикация, передача и распространение рекламной информации и спама.

+

4.2.2.5 Участие в других действиях, нарушающих местные законы и нормативные акты.

+

4.2.3 Вы не можете осуществлять коммерческую деятельность, такую как реклама и продажа товаров, в Программном обеспечении без разрешения Компании.

+

4.3 Пользователь понимает и соглашается с тем, что:

+

4.3.1 Saitong определит, подозревается ли пользователь в нарушении вышеуказанных правил использования, и в зависимости от результатов определения приостановит или прекратит действие вашей лицензии на использование или примет другие ограничительные меры, которые могут быть приняты в соответствии с настоящим соглашением.

+

4.3.2 Информация, опубликованная пользователем с использованием лицензированного программного обеспечения, подозреваемая в нарушении закона или прав третьих лиц или нарушении настоящего Соглашения, будет немедленно удалена.

+

4.3.3 Если нарушение пользователем вышеуказанных правил использования причиняет ущерб третьим лицам, вы должны нести юридическую ответственность самостоятельно от своего имени и обеспечить, чтобы Saitong не понёс убытков или дополнительных расходов.

+

4.3.4 Если пользователь нарушает соответствующие правовые положения или соглашения, причиняя убытки Saitong, или подвергается претензиям третьих лиц, или подвергается наказанию административного органа, пользователь должен возместить убытки и/или расходы, причинённые Saitong, включая разумные гонорары адвокатов, расходы на расследование и сбор доказательств.

+ +

5. Описание сторонних сервисов

+

5.1 Пользователь понимает и соглашается с тем, что программная система может содержать услуги, предоставляемые аффилированными лицами Компании или третьими сторонами, и что Компания лишь предоставляет соответствующие функциональные модули в системе для удобства пользователей и обеспечивает доступ к сторонним сервисам.

+

5.2 Независимо от того, предустановлены ли сторонние сервисы в программной системе или открыты/заказаны самими пользователями, пользователи понимают и соглашаются с тем, что Saitong не даёт никаких явных или подразумеваемых гарантий или заверений относительно законности и эффективности сторонних поставщиков услуг или пользователей, а также законности, точности, эффективности и безопасности сторонних сервисов.

+

5.3 Компания не осуществляет надзор, контроль или предоставление каких-либо гарантий или заверений в отношении сторонних сервисов и не несёт никакой ответственности.

+

5.4 Любой спор или разногласие между пользователем и сторонним поставщиком услуг должны быть разрешены Пользователем и третьей стороной в соответствии с бизнес-процессом и бизнес-нормами стороннего поставщика услуг, и Компания не несёт никакой ответственности.

+ +

6. Политика конфиденциальности и защита персональных данных

+

6.1 Saitong обязуется защищать конфиденциальность пользователей в соответствии с политикой конфиденциальности, пожалуйста, ознакомьтесь: Политика конфиденциальности приложения Voitrans.

+ +

7. Ответственность за нарушение

+

7.1 Saitong имеет право определять, соответствует ли поведение пользователя положениям настоящего Соглашения. Если считается, что Пользователь нарушил соответствующие законы и нормативные акты или положения настоящего Соглашения и связанных правил, в зависимости от тяжести нарушения пользователя, Saitong имеет право удалить незаконную информацию, ограничить, приостановить, прекратить использование Пользователем услуги Программного обеспечения, привлечь Пользователя к юридической ответственности и принять другие меры, которые Saitong сочтёт уместными. Если мы понесём какие-либо убытки (включая, помимо прочего, получение претензий третьих лиц или штрафов от любого административного органа), Пользователь несёт полную ответственность.

+ +

8. Риски, связанные с обслуживанием, и отказ от ответственности

+

8.1 Мы стремимся обеспечить поддержку сервиса с использованием современных технологий. Saitong не гарантирует, что программный сервис будет работать без перебоев или ошибок, что все дефекты программного сервиса будут исправлены или что программный сервис будет соответствовать всем требованиям пользователей. За возникающие последствия Saitong не несёт никакой ответственности.

+

8.2 За все убытки, понесённые пользователем вследствие действий третьих лиц, таких как сбои линий связи, технические проблемы, неисправности сети, компьютерного терминального оборудования, нестабильность системы и другие обстоятельства непреодолимой силы, ответственность не несётся.

+

8.3 Saitong не гарантирует законность, достоверность, точность и эффективность информационного контента, полученного через программное обеспечение (включая, помимо прочего, контент сторонних сервисов), и Saitong не несёт никакой ответственности за результаты любых действий, совершённых пользователями на основании запросов и просмотра.

+

8.4 Программное обеспечение, как и большинство интернет-программ, подвержено влиянию различных факторов, включая, помимо прочего, причины, связанные с пользователем, качество сетевых услуг, социальную среду и другие факторы, и может быть подвержено различным проблемам безопасности, таким как использование другими лицами информации пользователя, что приводит к преследованию в реальной жизни; другое программное обеспечение, загруженное и установленное пользователями, или другие веб-сайты, посещаемые пользователями, могут содержать вирусы, такие как «троянские кони», которые угрожают безопасности информации и данных терминального оборудования пользователей, а затем влияют на нормальное использование программного обеспечения. Пользователи должны повышать осведомлённость о информационной безопасности и защите пользовательских данных и обращать внимание на усиление защиты паролей во избежание потерь и преследований.

+

8.5 Когда пользователи используют Программное обеспечение или требуют от Saitong предоставления определённых услуг, Программное обеспечение может вызывать сторонние системы или стороннее программное обеспечение для поддержки использования или доступа пользователей, и результаты использования или доступа предоставляются третьей стороной. Помимо соблюдения соответствующих правил настоящего Соглашения, пользователи также должны соблюдать соглашения и соответствующие правила третьей стороны. Пользователи должны понимать и соглашаться с тем, что при использовании сторонних сервисов третьи стороны могут считывать данные пользователей, и Saitong не гарантирует безопасность, точность, эффективность и иные неопределённые риски результатов, достигнутых с помощью сторонних систем или стороннего программного обеспечения, пользователи должны проявлять осмотрительность, и Saitong не несёт никакой ответственности за любые споры и убытки, возникшие в связи с этим.

+

8.6 В целях обеспечения автономии развития и корректировки бизнеса компании, компания может изменить или прервать предоставление услуг в любое время после разумного уведомления пользователя.

+

8.7 За исключением случаев, прямо предусмотренных законами и нормативными актами, Saitong приложит максимальные усилия для обеспечения безопасности, эффективности, точности и надёжности программного обеспечения и задействованных технологий и информации, но в силу ограничений существующих технологий пользователь понимает, что Saitong не может это гарантировать.

+

8.8 Компенсация за телесные повреждения или сопутствующий и косвенный экономический ущерб, причинённый или связанный с любым из следующих обстоятельств, включая, помимо прочего, упущенную выгоду, потерю данных, ущерб от прерывания бизнеса или другие коммерческие убытки или потери, несёт Пользователь:

+

1) Использование или невозможность использования лицензионного программного обеспечения.

+

2) Несанкционированное использование программного обеспечения или изменение данных пользователя третьими лицами.

+

3) Расходы и убытки, понесённые вследствие действий пользователя с программным обеспечением.

+

4) Ошибочные представления пользователя о программном обеспечении.

+

5) Любые другие убытки, связанные с программным обеспечением, не обусловленные причинами, относящимися к Saitong.

+

8.9 Пользователь соглашается с тем, что Компания имеет право приостановить, прервать или прекратить предоставление всех или части Услуг пользователю на основании требований судебных, регулирующих и надзорных органов или по собственным деловым причинам. Saitong не несёт за это никакой ответственности.

+

8.10 Пользователь понимает и соглашается с тем, что Компания будет прилагать коммерчески разумные усилия для обеспечения безопасности хранения данных в Программном обеспечении и Сервисах, но компания не может предоставить полную гарантию, и Пользователь понимает, что Компания не несёт ответственности за удаление данных или сбой хранения или резервного копирования данных в Сервисе.

+

8.11 В максимальной степени, допускаемой законом, Разработчик или Поставщик не несёт ответственности за любой прямой, косвенный, случайный, особый или последующий ущерб, возникший в результате использования Приложения. Если у пользователя есть дополнительные потребности, пожалуйста, обратитесь в специализированное медицинское учреждение для углублённого обследования.

+ +

9. Заявление об интеллектуальной собственности

+

9.1 Saitong является правообладателем интеллектуальной собственности данного программного обеспечения. Все авторские права, товарные знаки, патенты, коммерческие тайны и другие права интеллектуальной собственности на программное обеспечение, а также весь информационный контент, связанный с программным обеспечением (включая, помимо прочего, текст, изображения, аудио, видео, графику, дизайн интерфейса, структуру макета, соответствующие данные или электронные документы и т.д.), защищены местными законами и нормативными актами и соответствующими международными договорами.

+

9.2 Без письменного согласия Компании Пользователь не должен реализовывать, использовать или передавать вышеуказанные права интеллектуальной собственности в коммерческих или некоммерческих целях и не должен разрешать это третьим лицам. Компания оставляет за собой право преследовать юридическую ответственность за вышеуказанные действия.

+ +

10. Изменение протокола

+

10.1 Saitong имеет право изменять условия настоящего Соглашения при необходимости. После изменения условий Соглашения пересмотренные условия Соглашения будут опубликованы на соответствующей странице. Если вы не согласны с изменённым содержанием, пользователь должен самостоятельно отменить данную услугу. Если Пользователь продолжает пользоваться Услугами, считается, что он принимает изменения в условиях Соглашения.

+

10.2 Saitong оставляет за собой право изменять или менять платные услуги, стандарты тарификации, способы тарификации, плату за услуги и условия предоставления услуг по мере необходимости. При предоставлении услуг мы можем взимать определённую плату с пользователей некоторых услуг в настоящее время или в будущем. Если пользователи отказываются оплачивать такие сборы, они не смогут продолжать использовать соответствующие услуги после начала взимания платы.

+
+ + diff --git a/doc/sk/privacy_policy.html b/doc/sk/privacy_policy.html new file mode 100644 index 000000000..9a912b538 --- /dev/null +++ b/doc/sk/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Zásady ochrany osobných údajov + + + + +
+

Voitrans Zásady ochrany osobných údajov

+

Posledná aktualizácia: 27. mája 2025

+

Dátum účinnosti: 27. mája 2025

+ +

Vitajte pri používaní softvéru a služieb Voitrans

+

1. Voitrans je poskytovaný spoločnosťou Saitong Industries Inc. (ďalej len „Spoločnosť"). Dokáže pomôcť používateľom pri správe zariadení Bluetooth a iných produktov. Rozumieme dôležitosti osobných informácií pre našich používateľov (ďalej len „vy") a efektívna ochrana vašich osobných informácií je základným kameňom zdravého a udržateľného rozvoja nášho podnikania. Ďakujeme za vaše používanie a dôveru v produkty alebo služby Voitrans! Plne si uvedomujeme, že táto dôvera neprichádza ľahko, dodržiavame zásady otvorenosti a transparentnosti, aby sme vám vyjadrili naše pravidlá spracovania vašich osobných informácií, používame legálne a legitímne spôsoby a jasné a primerané účely na spracovanie vašich osobných informácií. Osobitná poznámka: Pred použitím našich produktov alebo služieb si prosím nezabudnite pozorne prečítať a pochopiť tieto Zásady ochrany osobných údajov, aby ste mohli urobiť vhodné rozhodnutia.

+

2. Tieto Zásady ochrany osobných údajov vám vysvetľujú, ako zhromažďujeme, používame, uchovávame a zdieľame vaše osobné informácie pri používaní Voitrans. Osobné informácie sú všetky druhy informácií zaznamenané elektronickými alebo inými prostriedkami, ktoré môžu identifikovať konkrétnu fyzickú osobu alebo odrážať činnosti konkrétnej fyzickej osoby samostatne alebo v kombinácii s inými informáciami. Voitrans rešpektuje a chráni osobné súkromie všetkých používateľov služby. Okrem prípadov uvedených v týchto Zásadách ochrany osobných údajov Voitrans bez vášho predchádzajúceho súhlasu nezverejní tieto informácie verejnosti ani ich neposkytne tretím stranám.

+

3. Keď používate produkt alebo službu tretej strany prostredníctvom produktu alebo služby App Marketplace, vaše osobné informácie sa riadia zásadami ochrany osobných údajov tretej strany.

+

4. Voitrans Tieto Zásady ochrany osobných údajov budú priebežne aktualizované. Súhlasom so Zmluvou o používaní služby Voitrans a začatím používania Voitrans sa považujete za osobu, ktorá súhlasí so všetkými ustanoveniami týchto Zásad ochrany osobných údajov. Ak nesúhlasíte s týmito Zásadami ochrany osobných údajov, nepoužívajte softvér a služby Voitrans.

+

5. S cieľom analyzovať a merať účinnosť príslušných služieb budeme používať a zverejňovať vaše osobné informácie v súlade s ustanoveniami týchto Zásad ochrany osobných údajov.

+ +

Tieto Zásady ochrany osobných údajov vám pomôžu pochopiť nasledujúce:

+
    +
  • 1 Informácie, ktoré zhromažďujeme
  • +
  • 2 Uchovávanie informácií
  • +
  • 3 Bezpečnosť informácií
  • +
  • 4 Ako používame zhromaždené informácie
  • +
  • 5 Zdieľanie informácií
  • +
  • 6 Ako spravujete svoje osobné informácie
  • +
  • 7 Popis oprávnení aplikácie
  • +
  • 8 Prístup k SDK tretích strán
  • +
  • 9 Ochrana maloletých
  • +
  • 10 Účinnosť a aktualizácie Zásad ochrany osobných údajov
  • +
  • 11 Ako nás kontaktovať
  • +
+ +

1. Informácie, ktoré zhromažďujeme

+

1. Používanie Voitrans Na začiatku začneme zhromažďovať údaje o vašom používaní aplikácie

+

2. Voitrans môže získať vaše osobné informácie od tretích strán alebo obchodných partnerov prostredníctvom zákonných prostriedkov

+

3. S cieľom poskytnúť vám lepšie produkty a služby, zabezpečiť vašu sieťovú bezpečnosť počas používania, udržiavať normálnu prevádzku produktov a optimalizovať a zlepšovať účel našich informačných služieb, po tom, čo aktívne kliknete na súhlas s týmito zásadami ochrany osobných údajov, budete používať informácie, ktoré poskytujeme. Počas služby, okrem osobných informácií nevyhnutných na zabezpečenie normálnej prevádzky základných funkcií Aplikácie v súlade s národnými zákonmi a predpismi, budeme od vás zhromažďovať ďalšie osobné informácie:

+

3.1 S cieľom identifikovať rizikových používateľov, posúdiť pravosť používateľov a komplexne predchádzať podvodom budeme pri každom otvorení softvéru čítať informácie o vašom zariadení, vrátane: (Model zariadenia, MAC adresa zariadenia, jedinečný identifikátor zariadenia (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID atď.) MEID, sériové číslo, SSID a BSSID WIFI), čítať adresu Bluetooth, verziu operačného systému, názov operačného systému, prihlasovacie meno a heslo používateľa;

+

3.2 Keď používate naše produkty a služby, môžeme zhromažďovať určité informácie prostredníctvom sieťových protokolových informácií alebo určitých programov a softvéru, takéto informácie môžu zahŕňať: podrobnosti o používaní produktov a služieb, ako je čas otvorenia vašej aplikácie, dĺžka používania a adresa navštívenej stránky; informácie o udalostiach zariadenia, ako sú pády, systémové aktivity atď., na optimalizáciu vášho zariadenia a zlepšenie našich služieb;

+

3.3 Na identifikáciu aplikácií, pri ktorých je zariadenie vystavené riziku, a poskytovanie bezpečnejších funkčných služieb. Preto potrebujeme získať váš zoznam aplikácií/inštalovaných aplikácií v procese, aby sme zabezpečili normálnu prevádzku produktu a ochránili bezpečnosť zariadenia.

+

3.4 S cieľom analyzovať používanie funkcií aplikácie používateľmi a určiť pravosť používateľov potrebujeme vykonávať štatistiku údajov a zhromažďovať vyššie uvedené informácie o zariadení, vrátane MAC adresy zariadenia a jedinečného identifikátora zariadenia, keď je vaše zariadenie v prevádzke.

+

3.5 Signál zariadenia: stav siete zariadenia, ktoré používate, informácie o prístupovom bode WIFI atď.

+

3.6 Informácie o polohe: Môžeme použiť GPS, WiFi alebo iné technické prostriedky na zhromažďovanie a spracovanie informácií o vašej polohe na aktualizáciu miestnych informácií, poskytovanie obsahových služieb atď.

+

Pre viac informácií prosím kliknite na „Zoznam zhromažďovaných osobných informácií".

+ +

1. Pre citlivejšie osobné informácie vo vyššie uvedených informáciách, ako sú informácie o zariadení používateľa (číslo IMEI, stav hovoru a identifikačné číslo), informácie o polohe GPS, prístup k obsahu fotografií a súborov, získame váš súhlas pred zhromažďovaním. Pre niektoré necitlivé informácie môže byť zhromažďovanie predvolené a automatické. Zhromažďovanie príslušných informácií alebo používanie určitých oprávnení nami môžete obmedziť úpravou možnosti Nastavenia na vašom mobilnom zariadení. Keď obmedzíte náš prístup k určitému oprávneniu, nemusíme byť schopní naďalej vám poskytovať príslušné služby a nebudeme ďalej spracovávať vaše zodpovedajúce informácie.

+

2. Nebudeme zhromažďovať číslo vášho občianskeho preukazu, osobné biometrické informácie, číslo bankového účtu, informácie o majetku, informácie o úveroch, zdravotné a fyziologické informácie a ďalšie osobné citlivé informácie.

+

3. O citlivých oprávneniach: Aby sa funkcie aplikácie mohli správne používať, produkt potrebuje získať nasledujúce oprávnenia na poskytovanie funkčných služieb súvisiacich s normálnymi produktmi.

+ +

1 Získanie oprávnení na čítanie a zápis úložiska

+

1 Spôsob získania: vyskakovacie upozornenie, pri získaní oprávnenia používateľ aktívne klikne na súhlas a aplikácia použije toto oprávnenie

+

2 Účel a rozsah použitia: Používa sa na skenovanie vyrovnávacej pamäte zdrojových súborov a miniatúr v systéme, načítanie hudobných zdrojov a obrázkov produktov. Zobrazuje sa v rozhraní Aplikácie na uľahčenie prezerania a ovládania používateľmi

+ +

2 Získanie oprávnenia na zoznam inštalovaných aplikácií

+

1 Spôsob získania: vyskakovacie upozornenie, pri získaní oprávnenia používateľ aktívne klikne na súhlas a aplikácia použije toto oprávnenie

+

2 Účel a rozsah použitia: Keď aplikácia potrebuje používať reklamné propagačné služby, reklamná platforma tretej strany, Youmon +SDK, potrebuje získať „oprávnenie na zoznam inštalovaného softvéru" zariadenia, aby sa zabránilo odosielaniu aplikácií, ktoré používateľ už vlastní, a zlepšila sa používateľská skúsenosť.

+ +

3 Oprávnenie na získanie informácií o stave zariadenia

+

Zahŕňa: (Model zariadenia, MAC adresa zariadenia, jedinečný identifikátor zariadenia (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID atď.) MEID, sériové číslo, SSID a BSSID WIFI, čítanie adresy Bluetooth), verzia operačného systému, názov operačného systému atď.;

+

1 Spôsob získania: vyskakovacie upozornenie, pri získaní oprávnenia používateľ aktívne klikne na súhlas a aplikácia použije toto oprávnenie

+

2 Účel a rozsah použitia: Pri používaní našej aplikácie, s cieľom analyzovať používanie funkcií aplikácie používateľom a posúdiť pravosť používateľa, synchronizujeme oprávnenie s SDK tretích strán, vrátane Autonavi SDK, Youmon +SDK atď.

+ +

4 Prístup k informáciám o polohe

+

1 Spôsob získania: vyskakovacie upozornenia, pri získaní oprávnenia používateľ použije toto oprávnenie iba keď aktívne klikne na súhlas s aplikáciou.

+

2 Účel a rozsah použitia: Keď aplikácia potrebuje používať GPS, WiFi alebo iné funkcie, produkt potrebuje zhromažďovať vašu polohu a informácie na vyhľadávanie zariadení Bluetooth v blízkych lokalitách.

+

Poznámka: Ďalšie oprávnenia aplikácie nájdete v tomto dokumente „Zásady ochrany osobných údajov" v časti 7 „Popis oprávnení aplikácie"

+ +

2. Uchovávanie informácií

+

1. Kde sú informácie uchovávané

+

Osobné informácie, ktoré zhromažďujeme a generujeme v Čínskej ľudovej republike, budú uchovávané na našich serveroch a/alebo serveroch našich pridružených spoločností.

+

2. Uchovávanie a spracovanie informácií

+

Vaše osobné informácie uchovávame len po dobu nevyhnutnú na dosiahnutie účelu alebo po dobu vyžadovanú zákonom a predpismi. Po ukončení používania tohto produktu okamžite ukončíme zhromažďovanie a spracovanie vašich osobných informácií a údajov aplikácie. Po uplynutí vyššie uvedeného obdobia vymažeme alebo anonymizujeme osobné informácie, ktoré ste nám poskytli.

+

Okrem nevyhnutných funkcií Voitrans potrebuje požiadať o príslušné systémové oprávnenia. Serverová strana cloudu neukladá osobné informácie používateľov a SDK tretích strán, ku ktorým sa pristupuje, budú poskytovateľom služieb anonymizované a deidentifikované (Amu Statistics SDK, Autonavi SDK), takže používateľov nie je možné sledovať. Informácie uložené v telefóne používateľa budú automaticky vymazané, keď používateľ odinštaluje Voitrans alebo vymaže vyrovnávaciu pamäť.

+ +

3. Bezpečnosť informácií

+

1. Voitrans uchováva a chráni vaše osobné informácie pomocou bezpečnostných opatrení a technológií podľa priemyselných štandardov, ako sú overenie identity, šifrovanie údajov, obmedzený prístup k dátovým centrám a ďalšie bezpečnostné opatrenia na zabezpečenie toho, aby vaše informácie boli chránené pred zverejnením, zmenou a zničením. Napriek vyššie uvedeným bezpečnostným opatreniam si prosím uvedomte, že žiadne bezpečnostné opatrenie nemôže byť 100% bezpečné.

+

2. Pri používaní služieb poskytovaných Voitrans si prosím chráňte svoje osobné informácie. Ak zistíte, že vaše osobné informácie boli kompromitované, kontaktujte nás ihneď, aby sme mohli prijať príslušné opatrenia.

+ +

4. Ako používame zhromaždené informácie

+

1. Pri realizácii obchodných funkcií aplikácie môžeme použiť vaše osobné informácie na zabezpečenie integrity a bezpečnosti produktov a služieb, ktoré vám poskytujeme;

+

2. Budeme rozumieť vašim používateľským návykom prostredníctvom zhromaždených informácií a s pomocou analýzy údajov identifikovať akceptovateľnosť služieb, vaše používateľské návyky atď., s cieľom testovať a vytvárať nové produkty, funkcie a služby, zlepšovať úroveň služieb a pomáhať nám vylepšovať existujúce služby a vyvíjať nové služby;

+

3. Vaše osobné informácie môžeme použiť na prieskumy spokojnosti zákazníkov týkajúce sa produktov a služieb, na zasielanie oznámení o produktoch a službách a na komerčnú propagáciu;

+

4. Vaše informácie môžeme použiť na internú analýzu a výskum súvisiaci s aplikáciou;

+ +

5. Zdieľanie informácií

+

V súčasnosti nebudeme aktívne zdieľať ani prenášať vaše osobné informácie tretím stranám mimo spoločnosti, ak dôjde k inému zdieľaniu alebo prenosu vašich osobných informácií, priamo potvrdíme alebo potvrdíme, že tretia strana získala váš výslovný súhlas s vyššie uvedeným konaním.

+

Nebudeme verejne zverejňovať osobné informácie, ktoré zhromažďujeme. Ak je nevyhnutné ich verejne zverejniť, informujeme vás o účele verejného zverejnenia, type zverejňovaných informácií a citlivých informáciách, ktoré môžu byť zahrnuté, a získame váš výslovný súhlas.

+

Keďže naše podnikanie sa neustále vyvíja, môžeme uskutočniť fúzie, akvizície, prevody aktív a iné transakcie, budeme vás informovať o príslušných okolnostiach v súlade so zákonmi a predpismi a nie nižšie ako normy vyžadované týmto Sprievodcom, aby sme pokračovali v ochrane vašich osobných informácií alebo požadovali od nového správcu pokračovanie v ochrane vašich osobných informácií.

+

Okrem toho, podľa príslušných zákonov a predpisov a národných noriem, môžeme zdieľať, prenášať a verejne zverejňovať osobné informácie bez predchádzajúceho súhlasu subjektu osobných informácií za nasledujúcich okolností:

+
    +
  • 1 Priamo súvisiace s národnou bezpečnosťou a bezpečnosťou obrany;
  • +
  • 2 Priamo súvisiace s verejnou bezpečnosťou, verejným zdravím alebo dôležitými verejnými záujmami;
  • +
  • 3 Priamo súvisiace s trestným vyšetrovaním, stíhaním, súdnym konaním a výkonom rozsudkov;
  • +
  • 4 Na ochranu života, majetku a iných dôležitých legitímnych práv a záujmov subjektu osobných údajov alebo iných jednotlivcov, ale je ťažké získať súhlas dotknutej osoby;
  • +
  • 5 Osobné informácie zverejnené verejnosti subjektom osobných informácií;
  • +
  • 6 Zhromažďovanie osobných informácií z legitímne verejne zverejnených informácií, ako sú legitímne spravodajské správy, zverejnenie vládnych informácií a iné kanály.
  • +
+ +

6. Ako spravujete svoje osobné informácie

+

V súlade s príslušnými zákonmi, predpismi a normami Číny, ako aj bežnými postupmi iných krajín a regiónov, zaručujeme, že budete uplatňovať nasledujúce práva k svojim osobným informáciám:

+ +

1. Oprava vašich osobných informácií

+

Ak zistíte, že vo vašich osobných informáciách, ktoré spracúvame, je chyba, máte právo opraviť alebo aktualizovať nesprávne alebo neúplné informácie. Ak nemôžete nezávisle operovať v centre účtu, môžete nás kontaktovať e-mailom saitong.voitrans@gmail.com

+ +

2. Vymazanie vašich osobných informácií

+

V nasledujúcich prípadoch môžete podať žiadosť o vymazanie vašich osobných informácií:

+
    +
  • Ak spracúvame osobné informácie v rozpore so zákonmi a predpismi;
  • +
  • Ak zhromažďujeme a používame vaše osobné informácie bez vášho súhlasu;
  • +
  • Ak naše spracovanie osobných informácií porušuje našu zmluvu s vami;
  • +
  • Ak už nepoužívate naše produkty alebo služby;
  • +
  • Ak vám už neposkytujeme produkty alebo služby.
  • +
+

Kontaktujte nás. Vašu žiadosť spracujeme na saitong.voitrans@gmail.com Kontaktujte nás. Po prijatí vám odpovieme do 30 pracovných dní od prijatia

+ +

3. Zmena rozsahu vášho súhlasu

+

Môžete nás kontaktovať e-mailom saitong.voitrans@gmail.com Kontaktujte nás. Na vašu žiadosť už nebudeme zhromažďovať, používať ani zverejňovať vaše osobné informácie. Upozorňujeme, že odvolanie vášho súhlasu alebo vymazanie vašich osobných informácií môže ovplyvniť vaše používanie niektorých našich služieb.

+ +

4 Prístup a kopírovanie osobných informácií

+

V súlade s ustanoveniami príslušných zákonov môžete po poskytnutí vášho imei (sériové číslo telefónu) alebo oaid alebo Android ID a ďalších informácií o účte požiadať o prístup k vašim osobným informáciám a ich kopírovanie, môžete nám zaslať e-mail na 3514406195@qq.com a kontaktovať nás.

+ +

5. V odpovedi na vašu vyššie uvedenú žiadosť

+

Z bezpečnostných dôvodov budete možno musieť poskytnúť písomnú žiadosť alebo inak preukázať svoju totožnosť. Pred spracovaním vašej žiadosti vás môžeme požiadať o overenie vašej totožnosti. Na vašu primeranú žiadosť odpovieme a budeme ju riešiť včas. Môžeme odmietnuť žiadosti, ktoré sú zbytočne opakujúce sa, vyžadujú príliš veľa technológie (napríklad vývoj nových systémov alebo zásadné zmeny existujúcich postupov), predstavujú riziko pre legitímne záujmy iných alebo sú vysoko nepraktické.

+

Za nasledujúcich okolností, podľa požiadaviek zákonov a predpisov, nebudeme schopní vyhovieť vašej žiadosti:

+
    +
  • Súvisiace s národnou bezpečnosťou a bezpečnosťou obrany;
  • +
  • V súvislosti s trestným vyšetrovaním, stíhaním a súdnym konaním;
  • +
  • Existuje dostatočný dôkaz, že máte subjektívny zlý úmysel alebo zneužívate práva;
  • +
  • Vyhovenie vašej žiadosti spôsobí vážne poškodenie legitímnych práv a záujmov vás alebo iných jednotlivcov a organizácií.
  • +
+ +

6. Zrušenie účtu

+

Používateľ môže vykonať [zrušenie účtu] v Aplikácii. Kroky operácie:

+
    +
  1. Prejdite na stránku [Moje]
  2. +
  3. Kliknite na tlačidlo [Nastavenia] vpravo hore
  4. +
  5. Kliknite na [Zrušiť účet] na potvrdenie
  6. +
+

Po odhlásení sa informácie o používateľskom účte vymažú

+ +

7. Popis oprávnení aplikácie

+

S cieľom poskytnúť lepšie produkty a služby, keď používate softvér, požiadame o nasledujúce práva, keď vstúpite na domovskú stránku alebo použijete funkciu, vyžiada sa autorizácia, ak odmietnete, niektoré príslušné funkcie nebudú fungovať normálne. Konkrétne účely a upozornenia k oprávneniam sú podrobne popísané nasledovne:

+ +

1 Oprávnenia na prístup k polohe:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

prostredníctvom WiFi alebo mobilnej základňovej stanice na získanie informácií o zemepisnej šírke a dĺžke polohy používateľa

+

Keď používate Voitrans, budeme na základe vašej geografickej polohy vyhľadávať vaše pripojené zariadenie Bluetooth. Zároveň, s cieľom poskytnúť stabilnejšie služby, optimalizovať produkty a zlepšiť skúsenosti, budeme zdieľať vyššie uvedené informácie s tromi SDK, ako sú Youmon a Autonavi, na získanie prevádzkových údajov Voitrans a funkčných služieb.

+

Spôsob upozornenia: Pri prvom spustení aplikácie sa zobrazí výzva na povolenie oprávnenia, vyžadujúca potvrdenie prijatia používateľom. Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Toto oprávnenie je vyžadované pri prístupe k aplikácii na vykonávanie funkcií správy aplikácie.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

3 Oprávnenia na prístup k sieti:

+

android.permission.INTERNET

+

Keď používate Tieto oprávnenia sú vyžadované pre informačné služby Voitrans a služby aktualizácie verzie a s cieľom zlepšiť používateľskú skúsenosť a optimalizovať schopnosti služieb, SDK tretích strán, ako napríklad Friends, budú tiež používať tieto oprávnenia.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

4 Oprávnenia na získanie stavu siete:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Používa sa na zistenie, či je aktuálne sieťové pripojenie platné, na určenie, či je aktuálne prostredie 4G, a na upozornenie na zmeny sieťového prostredia, čím ovplyvňuje načítanie informačného obsahu. Toto oprávnenie sa žiada pri používaní Voitrans.

+

Zmeny stavu siete ovplyvňujú nahrávanie a načítanie údajov. Preto bude oprávnenie na prístup k stavu siete zdieľané s friends + a inými platformami.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

5 Oprávnenia na získanie zoznamu úloh:

+

android.permission.GET_TASKS

+

Toto oprávnenie sa používa na získanie zoznamu aplikácií pre funkciu správy softvéru. Keď používate funkciu správy softvéru, je potrebné prečítať aplikácie nainštalované v mobilnom telefóne.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

6 Oprávnenie na získanie MAC adresy

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Keď používate Voitrans, aplikácia bude potrebovať oprávnenie na získanie MAC adresy:

+

Keď aplikácia potrebuje hlásiť údaje o cieľovej konverzii, platformy tretích strán, ako napríklad Youmon +SDK, potrebujú používať MAC.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

7 Oprávnenie na nahrávanie zvuku

+

android.permission.RECORD_AUDIO

+

Keď používate funkciu hlasového vstupu Voitrans, je potrebné oprávnenie na nahrávanie zvuku, pričom hlasový vstup sa používa najmä na preklad a iné súvisiace funkcie.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov, používateľovi sa dynamicky zobrazí dialógové okno, keď je to potrebné.

+ +

8 Oprávnenie na získanie SSID WIFI

+

Keď sa toto oprávnenie používa, aplikácia číta oprávnenie SSID WIFI:

+

Rozsah použitia a účel: Keď aplikácia potrebuje používať služby analýzy údajov, platformy tretích strán, ako napríklad +SDK, potrebujú prečítať „oprávnenie WIFI SSID" zariadenia, aby používateľom poskytovali presnejšie a efektívnejšie funkčné služby.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

9 Oprávnenie na prístup k Bluetooth

+

Keď sa toto oprávnenie používa, aplikácia číta oprávnenie Bluetooth:

+

Rozsah použitia a účel: Zariadenia Bluetooth na vyhľadávanie a konfiguráciu príslušenstva, ako sú Bluetooth slúchadlá, Bluetooth hodinky atď. Pre jednoduchú správu používateľmi

+

Spôsob upozornenia: Pri prvom spustení aplikácie sa zobrazí výzva na povolenie oprávnenia, vyžadujúca potvrdenie prijatia používateľom. Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

10 Oprávnenie na získanie BSSID WiFi

+

Keď aplikácia potrebuje rozlíšiť a identifikovať používateľa na poskytovanie funkčných služieb a štatistiky údajov, prečíta oprávnenie „WiFi BSSID" zariadenia pre:

+

Rozsah použitia a účel: 1 Platformy tretích strán: ako napríklad Youmeng SDK, Bugly SDK, Autonavi SDK

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

11 Oprávnenie na inštaláciu aplikácie

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Softvér bude používať oprávnenie na inštaláciu aplikácie, ktoré sa používa hlavne na umožnenie inštalácie novej verzie používateľom a využitie nových funkcií, keď je k dispozícii nová verzia.

+

Spôsob upozornenia: Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

12 Oprávnenie na prístup ku kamere

+

android.permission.CAMERA

+

Voitrans používa oprávnenia kamery na skenovanie QR kódov a párovanie zariadení Bluetooth, ako sú Bluetooth slúchadlá a hodinky.

+

Spôsob upozornenia: Pri prvom spustení aplikácie sa zobrazí výzva na povolenie oprávnenia, vyžadujúca potvrdenie prijatia používateľom. Popis v Používateľskej zmluve a Zásadách ochrany osobných údajov.

+ +

Osobitná poznámka:

+

1 Integrácia aplikácie v rámci ich Allies SDK, Scott map SDK, po súhlase používateľa s povolením, aplikácia na pozadí/v popredí pre ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI a ďalšie osobné informácie;

+

Poznámky: Viac informácií nájdete v nasledujúcom obsahu a oprávneniach súvisiacich s SDK [VIII. Prístup k zoznamu SDK tretích strán]

+ +

8. Prístup k SDK tretích strán

+

1 S cieľom zabezpečiť stabilnú prevádzku a funkčnú realizáciu nášho klienta, aby ste mohli používať a využívať viac služieb a funkcií, naša aplikácia bude integrovaná so sadou nástrojov na vývoj softvéru (SDK) alebo inými podobnými aplikáciami tretích strán, tieto tretie strany budú zhromažďovať a spracovávať príslušné informácie v súlade so svojimi vlastnými zásadami ochrany osobných údajov s cieľom normálne poskytovať funkcie a reklamné služby. V nasledujúcej časti sa môžete dozvedieť o pravidlách zhromažďovania a spracovania informácií tretích strán. Vykonáme prísne bezpečnostné testy vývojových sád (SDK) partnerov na získanie informácií s cieľom chrániť primerané používanie a bezpečnosť vašich osobných informácií. Upozorňujeme, že SDK tretích strán môžu zmeniť typy spracúvania údajov v dôsledku svojich aktualizácií verzií. Obráťte sa na zásady ochrany osobných údajov zverejnené SDK tretích strán. Podrobnosti nájdete nižšie alebo kliknite na zobrazenie Zoznamu SDK tretích strán.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Získané informácie: Číslo zariadenia, IP adresa, informácie o softvéri zariadenia, identifikačný kód zariadenia (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, informácie o IMSI SIM karty, IP, MAC adresa), identifikátor zariadenia, región, informácie o aplikáciách súvisiacich so zariadením a ďalšie informácie protokolu súvisiace so službou

+

Účel použitia: Prihlásenie a zdieľanie cez WeChat

+

Vývojár: Shenzhen Tencent Computer Systems Company Limited

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Získané informácie: Názov aplikácie, verzia aplikácie, značka a model zariadenia, operačný systém, informácie o operátorovi, rozlíšenie obrazovky, informácie o senzoroch (vektor, zrýchlenie, tlak, smer, geomagnetizmus, gyroskop, teplota, svetelný senzor, NMEA signál), informácie o sile signálu zariadenia

+

Účel použitia: Navigácia pomocou Amap

+

Vývojár: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Získané informácie: Názov aplikácie, verzia aplikácie, značka a model zariadenia, operačný systém, sieťové informácie, sila signálu zariadenia atď.

+

Účel použitia: Zobrazenie a interakcia s mapou

+

Vývojár: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Získané informácie: Informácie o polohe (GPS, Wi-Fi, základňová stanica), informácie o zariadení, sieťové informácie atď.

+

Účel použitia: Poskytovanie lokalizačných služieb

+

Vývojár: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Získané informácie: Názov aplikácie, verzia aplikácie, informácie o zariadení, sieťové informácie atď.

+

Účel použitia: Nástroje mapy a optimalizácia vykresľovania

+

Vývojár: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Získané informácie: Identifikátory zariadenia, základné informácie o zariadení, zoznam inštalovaného softvéru a sieťové informácie (podrobnosti nájdete v oficiálnych zásadách ochrany osobných údajov)

+

Účel použitia: Prihlásenie do účtu Alipay a volanie platieb

+

Vývojár: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Získané informácie: Verzia SDK/API, platforma, časová pečiatka, identifikátor aplikácie, verzia aplikácie, výrobca zariadenia, verzia OS, lokalizácia, časové pásmo, stav siete (Wi-Fi atď.), sieťové protokoly, údaje o pádoch a používaní, IP adresa atď. (podrobnosti nájdete v oficiálnych zásadách ochrany osobných údajov)

+

Účel použitia: Monitorovanie kvality aplikácie a služba hlásenia údajov

+

Vývojár: Shenzhen Tencent Computer Systems Company Limited

+

Spôsob zhromažďovania: Automatické zhromažďovanie SDK

+

Odkaz na zásady ochrany osobných údajov: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Ochrana maloletých

+

Používatelia našich produktov a služieb môžu zahŕňať maloletých mladších ako 18 rokov, maloletí používatelia by sa mali pred použitím našich produktov poradiť so svojimi rodičmi alebo zákonnými zástupcami ohľadom týchto Zásad ochrany osobných údajov a používať naše služby alebo nám poskytnúť vaše informácie po získaní súhlasu a pod vedením ich rodičov alebo zákonných zástupcov. Zákonní zástupcovia maloletých, ktorí majú otázky, nás môžu kontaktovať prostredníctvom kontaktných údajov v týchto Zásadách ochrany osobných údajov.

+

Ak nesúhlasíte so zhromažďovaním vyššie uvedených informácií vyššie uvedenými poskytovateľmi služieb tretích strán, okamžite prestaňte používať Softvér. Počas vášho používania Softvéru budú tieto tretie strany zhromažďovať a spracovávať príslušné informácie v súlade so svojimi vlastnými zásadami ochrany osobných údajov na poskytovanie niektorých funkcií, reklamy a ďalších služieb. Ak dôjde k úniku informácií v dôsledku zhromažďovania vyššie uvedených informácií príslušným poskytovateľom služieb tretej strany, príslušný poskytovateľ služieb tretej strany nesie zodpovedajúcu právnu zodpovednosť.

+ +

10. Účinnosť a aktualizácie Zásad ochrany osobných údajov

+

1. Tieto Zásady ochrany osobných údajov sú účinné od dátumu zverejnenia.

+

2. Keďže sa naše podnikanie vyvíja a mení, naše Zásady ochrany osobných údajov sa môžu zmeniť. Vyhradzujeme si právo kedykoľvek zmeniť naše zásady ochrany osobných údajov, preto prosím pravidelne kontrolujte. Ak vykonáme zmeny v našich Zásadách ochrany osobných údajov, zverejníme tieto aktualizácie na našej webovej stránke, v aplikáciách a tam, kde to považujeme za vhodné, aby ste boli informovaní. Ak sa zásady ochrany osobných údajov aktualizujú, nadobudnú účinnosť od dátumu aktualizácie. Vaše pokračujúce používanie našich produktov alebo služieb znamená, že súhlasíte s našimi zmenenými Zásadami ochrany osobných údajov.

+ +

11. Ako nás kontaktovať

+

Saitong Industries Inc bola založená 22. novembra 2024, sídlo: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ak sa chcete dozvedieť viac o našej spoločnosti a platforme, môžete nás kontaktovať prostredníctvom kontaktných informácií uvedených v týchto zásadách (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/sk/user_agreement.html b/doc/sk/user_agreement.html new file mode 100644 index 000000000..8540aff25 --- /dev/null +++ b/doc/sk/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Používateľský protokol aplikácie Voitrans + + + +
+
Slovenčina
+ +

Používateľský protokol aplikácie Voitrans

+ +

Tieto Podmienky používania vám vysvetľujú, ako pristupovať k aplikácii Voitrans a online službám (ďalej len „Služby") a ako ich používať. Spoločnosť Saitong Industries Inc. (ďalej len „Saitong") týmto upozorňuje používateľov, aby si pozorne prečítali a plne porozumeli tejto Používateľskej zmluve (ďalej len „Zmluva"). Používatelia by si mali pozorne prečítať a plne porozumieť podmienkam tejto Zmluvy. Pozorne si prečítajte a vyberte si, či túto Zmluvu prijmete alebo neprijmete. Vaše používanie aplikácie Voitrans (ďalej len „Aplikácia" alebo „Softvér") sa bude považovať za prijatie tejto Zmluvy a súhlasíte s tým, že budete viazaní podmienkami tejto Zmluvy. Ak s touto Zmluvou nesúhlasíte, Aplikáciu nepoužívajte.

+

Spoločnosť Saitong si vyhradzuje právo túto Zmluvu zmeniť a aktualizované podmienky Zmluvy budú zverejnené v tejto Aplikácii s účinnosťou od dátumu zverejnenia.

+ +

1. Všeobecné pravidlá

+

1.1 Táto Aplikácia je softvér poskytovaný spoločnosťou Saitong na pripojenie produktov slúchadiel vydaných spoločnosťou Saitong a jej partnerskými spoločnosťami. Vlastnícke a prevádzkové práva k softvéru a súvisiacim službám vlastní spoločnosť Saitong.

+

1.2 Táto Zmluva je zmluvou medzi vami (ďalej len „Používateľ") a spoločnosťou a jej partnermi a prevádzkovými partnermi (ďalej len „Partneri") týkajúcou sa používania Aplikácie a súvisiacich služieb používateľom.

+

1.3 Softvér a služby zahŕňajú:

+

1.3.1 Poskytovaný softvér ponúka používateľom Voitrans pripojenie a párovanie Voitrans, správu nastavení funkcií a ďalšie softvérové služby, podľa skutočných softvérových služieb poskytovaných Aplikáciou.

+

1.3.2 Aktualizácie, inovácie a ďalšie služby softvéru.

+ +

2. Rozsah softvérovej licencie

+

2.1 Používateľovi udeľujeme osobnú, neprenosnú, nesublicencovateľnú a nevýhradnú licenciu na Softvér.

+

2.2 Používatelia môžu inštalovať, používať, zobrazovať a spúšťať softvér na jednom mobilnom koncovom zariadení na nekomerčné účely. Používateľ však nesmie inštalovať, používať ani spúšťať softvér na komerčné prevádzkové účely, kopírovať, meniť, upravovať, pripájať ani spúšťať softvér alebo údaje uvoľnené do pamäte akéhokoľvek koncového zariadenia počas prevádzky softvéru alebo interakčné údaje medzi klientom a serverom počas prevádzky softvéru, ani vytvárať akékoľvek odvodené diela. To zahŕňa, ale nie je obmedzené na, použitie doplnkov, zásuvných modulov alebo neoprávnených nástrojov/služieb tretích strán na prístup k Softvéru a súvisiacim systémom. Na komerčný predaj, reprodukciu a distribúciu, ako je predinštalácia a balenie softvéru, je potrebné získať písomné oprávnenie a povolenie.

+

2.3 Používateľ nesmie inštalovať Softvér na iné koncové zariadenia bez výslovného súhlasu tvorcu, vrátane, ale nie výlučne, televízorov, digitálnych set-top boxov, herných konzol a iných zariadení.

+

2.4 Okrem výslovne schválených v tejto Zmluve sa Používateľovi neudeľujú žiadne iné práva a Používateľ musí na použitie iných práv získať písomný súhlas.

+ +

3. Inovácia softvéru

+

3.1 Používateľ musí zvoliť verziu softvéru vhodnú pre nastavenie inštalovaného koncového zariadenia. V opačnom prípade za problémy so softvérom, zariadením alebo poškodenie spôsobené akoukoľvek verziou softvéru nevhodnou pre daný typ zariadenia nesie zodpovednosť výlučne používateľ.

+

3.2 S cieľom zlepšiť používateľský zážitok a zdokonaliť obsah služieb má spoločnosť Saitong právo priebežne poskytovať náhradné, upravené a inovované verzie softvéru. Funkcia „Upozornenie na inováciu" je pre používateľov predvolene zapnutá. V závislosti od rôznych verzií softvéru používaných používateľmi spoločnosť Saitong poskytuje používateľom možnosť aktivovať túto funkciu. Po vydaní novej verzie softvéru spoločnosť Saitong nezaručuje pokračujúcu dostupnosť starej verzie softvéru.

+ +

4. Špecifikácia používania

+

4.1 Používatelia môžu používať Softvér a Služby v súlade s touto Zmluvou za predpokladu dodržiavania zákonov a tejto Zmluvy a nesmú vykonávať nasledujúce činnosti:

+

4.1.1 Odstraňovať všetky informácie o autorských právach na Softvéri a ďalších kópiách a upravovať, odstraňovať alebo obchádzať technické opatrenia nastavené Softvérom na ochranu práv duševného vlastníctva.

+

4.1.2 Spätne analyzovať Softvér, ako je rozoberanie, dekompilácia alebo iné pokusy o získanie zdrojového kódu Softvéru.

+

4.1.3 Úpravou alebo falšovaním inštrukcií a údajov v prevádzke softvéru pridávať, odstraňovať alebo meniť funkciu alebo prevádzkový efekt softvéru, alebo softvér alebo metódy určené na vyššie uvedené účely prevádzkovať alebo šíriť verejnosti, bez ohľadu na to, či sú tieto činnosti na komerčné účely.

+

4.1.4 Používať softvér na akékoľvek správanie ohrozujúce bezpečnosť siete, vrátane, ale nie výlučne: používania neoprávnených údajov alebo prístupu k neoprávneným serverom/účtom; prístupu k verejným sieťam alebo iným operačným systémom bez povolenia a odstraňovania, úpravy alebo pridávania uložených informácií; neoprávnených pokusov o sondovanie, skenovanie alebo testovanie slabín systému alebo siete softvéru alebo iných činností narúšajúcich bezpečnosť siete; pokusov o narušenie alebo zničenie normálnej prevádzky softvérového systému alebo webovej stránky, úmyselné šírenie škodlivých programov alebo vírusov a ďalšie činnosti narúšajúce normálne služby sieťových informácií; falšovanie názvov TCP/IP paketov alebo čiastočných názvov.

+

4.1.6 Bez písomného súhlasu Spoločnosti používateľ svojvoľne vykonáva nasledujúce činnosti so softvérom a informáciami v ňom, vrátane, ale nie výlučne: používania, prenájmu, požičiavania, kopírovania, úpravy, prepojenia, pretlače, kompilácie, zverejnenia, vydávania, vytvárania zrkadlových stránok, vývoja odvodených produktov, diel, služieb, doplnkov, zásuvných modulov, kompatibility, prepojení atď., s pomocou Softvéru.

+

4.1.7 Používať Softvér na zverejňovanie, prenášanie, distribúciu a ukladanie obsahu, ktorý porušuje vaše miestne zákony.

+

4.1.8 Používať softvér na zverejňovanie, prenášanie, šírenie a ukladanie obsahu, ktorý porušuje práva duševného vlastníctva, obchodné tajomstvá a ďalšie oprávnené práva iných.

+

4.1.9 Používať tento softvér na hromadné zverejňovanie, prenášanie a šírenie reklamných informácií a nevyžiadaných správ.

+

4.1.10 Používať Softvér a ďalšie Služby akýmkoľvek nezákonným spôsobom, na akýkoľvek nezákonný účel alebo akýmkoľvek spôsobom nezlučiteľným s licencovaným použitím tejto Zmluvy.

+

4.2 Špecifikácia zverejňovania informácií

+

4.2.1 Ak používate softvér na zverejňovanie informačného obsahu (ak existuje), mali by ste zaručiť, že vlastníte práva duševného vlastníctva k informačnému obsahu, ktorý ste nahrali, alebo ste získali zákonné oprávnenie, a že žiadne vaše správanie pri používaní softvéru a služieb neporušuje oprávnené práva a záujmy žiadnej tretej strany.

+

4.2.2 Pri používaní Softvéru sa používateľ nesmie zapájať do nasledujúcich činností prostredníctvom Softvéru, vrátane, ale nie výlučne:

+

4.2.2.1 Vytvárať, kopírovať, zverejňovať, šíriť a ukladať obsah, ktorý porušuje miestne národné zákony a predpisy.

+

4.2.2.2 Zverejňovať, prenášať, šíriť a ukladať obsah, ktorý porušuje zákonné práva iných, ako sú práva na dobré meno, podobizeň, duševné vlastníctvo a obchodné tajomstvá.

+

4.2.2.3 Vymýšľať fakty, zatajovať pravdu s cieľom zavádzať alebo klamať iných.

+

4.2.2.4 Zverejňovať, prenášať a šíriť reklamné informácie a nevyžiadané správy.

+

4.2.2.5 Zapájať sa do iných činností porušujúcich miestne zákony a predpisy.

+

4.2.3 Bez povolenia Spoločnosti nesmiete vykonávať žiadne komerčné aktivity, ako je reklama a predaj tovaru, v Softvéri.

+

4.3 Používateľ rozumie a súhlasí, že:

+

4.3.1 Spoločnosť Saitong určí, či je používateľ podozrivý z porušenia vyššie uvedených špecifikácií používania, a podľa výsledkov určenia pozastaví alebo ukončí vašu licenciu na používanie alebo prijme iné obmedzujúce opatrenia, ktoré je možné prijať v súlade s touto zmluvou.

+

4.3.2 Pokiaľ ide o obsah zverejnený používateľom pri používaní licencovaného softvéru, ktorý je podozrivý z nezákonnosti alebo podozrivý z porušovania zákonných práv iných, alebo z porušenia tejto Zmluvy, bude priamo odstránený.

+

4.3.3 Ak porušenie vyššie uvedených pravidiel používania zo strany používateľa spôsobí škodu tretím stranám, musíte niesť právnu zodpovednosť samostatne vo vlastnom mene a mali by ste zabezpečiť, aby spoločnosť nebola vystavená stratám ani zvýšeným nákladom.

+

4.3.4 Ak používateľ poruší príslušné právne predpisy alebo zmluvy, čím spoločnosti Saitong spôsobí straty alebo bude vystavená nárokom tretích strán alebo bude potrestaná správnym orgánom, používateľ nahradí straty a/alebo výdavky spôsobené spoločnosti Saitong, vrátane primeraných poplatkov za právne zastúpenie, nákladov na vyšetrovanie a zhromažďovanie dôkazov.

+ +

5. Popis služieb tretích strán

+

5.1 Používateľ rozumie a súhlasí s tým, že softvérový systém môže obsahovať služby poskytované pridruženými spoločnosťami alebo tretími stranami a že Spoločnosť v systéme poskytuje iba príslušné funkčné moduly pre pohodlie používateľov a poskytuje prístup k službám tretích strán.

+

5.2 Bez ohľadu na to, či sú služby tretích strán prednastavené v softvérovom systéme alebo sú otvorené alebo objednané samotnými používateľmi, používatelia rozumejú a súhlasia s tým, že spoločnosť Saitong neposkytuje žiadnu výslovnú ani implicitnú záruku zákonnosti a účinnosti poskytovateľov služieb tretích strán alebo používateľov, ani zákonnosti, presnosti, účinnosti a bezpečnosti služieb tretích strán.

+

5.3 Spoločnosť nedohliada, nekontroluje ani neposkytuje žiadnu záruku akéhokoľvek druhu za služby tretích strán a nepreberá za ne žiadnu zodpovednosť.

+

5.4 Akýkoľvek spor alebo rozpor medzi používateľom a poskytovateľom služieb tretej strany bude riešený Používateľom a treťou stranou v súlade s obchodnými procesmi a obchodnými normami poskytovateľa služieb tretej strany a spoločnosť nepreberá žiadnu zodpovednosť.

+ +

6. Zásady ochrany osobných údajov a ochrana osobných informácií

+

6.1 Spoločnosť Saitong sa zaväzuje chrániť súkromie používateľov v súlade so zásadami ochrany osobných údajov, pozrite si prosím: Voitrans Zásady ochrany osobných údajov.

+ +

7. Zodpovednosť za porušenie

+

7.1 Spoločnosť Saitong má právo posúdiť, či správanie používateľa je v súlade s ustanoveniami tejto Zmluvy. Ak sa domnieva, že Používateľ porušil príslušné zákony a predpisy alebo ustanovenia tejto Zmluvy a súvisiace pravidlá, podľa závažnosti porušenia zo strany používateľa má spoločnosť Saitong právo odstrániť nezákonné informácie, obmedziť, pozastaviť, ukončiť používanie služby Softvéru používateľom, vymáhať právnu zodpovednosť používateľa a prijať ďalšie opatrenia, ktoré spoločnosť Saitong považuje za vhodné. Ak nám vznikne akákoľvek strata (vrátane, ale nie výlučne, prijatia akýchkoľvek nárokov tretích strán alebo sankcií od akéhokoľvek správneho orgánu), Používateľ bude niesť plnú zodpovednosť.

+ +

8. Riziká služieb a vyhlásenia o odmietnutí zodpovednosti

+

8.1 Chceme poskytovať servisnú podporu s aktuálnou technológiou. Spoločnosť Saitong nezaručuje, že služba Softvéru bude fungovať bez prerušenia alebo chýb, že budú opravené všetky chyby služby Softvéru, alebo že služba Softvéru splní všetky požiadavky používateľov. Za výsledné dôsledky spoločnosť Saitong nenesie žiadnu zodpovednosť.

+

8.2 Za všetky straty, ktoré používateľ utrpí v dôsledku tretích strán, ako je porucha komunikačnej linky, technické problémy, sieť, porucha počítačového koncového zariadenia, nestabilita systému a iné príčiny vyššej moci, sa nenesie zodpovednosť.

+

8.3 Spoločnosť Saitong nezaručuje zákonnosť, pravosť, presnosť a účinnosť informačného obsahu získaného prostredníctvom softvéru (vrátane, ale nie výlučne, obsahu služieb tretích strán) a spoločnosť Saitong nenesie žiadnu zodpovednosť za výsledky akéhokoľvek správania uskutočneného používateľmi na základe vyhľadávania a prezerania.

+

8.4 Softvér, podobne ako väčšina internetového softvéru, je ovplyvnený rozdielmi vo faktoroch vrátane, ale nie výlučne, dôvodov na strane používateľa, kvality sieťových služieb, sociálneho prostredia a ďalších faktorov a môže byť vystavený rôznym bezpečnostným problémom, napríklad iní používajú informácie o používateľovi, čo vedie k obťažovaniu v reálnom živote; iný softvér stiahnutý a nainštalovaný používateľmi alebo iné webové stránky navštívené používateľmi obsahujú vírusy ako „trójske kone", ktoré ohrozujú bezpečnosť informácií a údajov koncového zariadenia používateľov a následne ovplyvňujú normálne používanie softvéru. Používatelia by mali posilniť povedomie o informačnej bezpečnosti a ochrane údajov používateľov a venovať pozornosť posilneniu ochrany hesiel, aby sa vyhli strate a obťažovaniu.

+

8.5 Keď používatelia používajú Softvér alebo požadujú od spoločnosti Saitong poskytovanie konkrétnych služieb, Softvér môže volať systémy tretích strán alebo softvér tretích strán na podporu používania alebo prístupu používateľov a výsledky používania alebo prístupu sú poskytované treťou stranou. Okrem dodržiavania príslušných pravidiel tejto Zmluvy musia používatelia dodržiavať aj zmluvy a príslušné pravidlá tretej strany. Používatelia musia rozumieť a súhlasiť s tým, že pri používaní služieb tretích strán môžu tretie strany čítať údaje používateľov a spoločnosť Saitong nezaručuje bezpečnosť, presnosť, účinnosť a ďalšie neisté riziká výsledkov dosiahnutých prostredníctvom systémov tretích strán alebo podpory softvéru tretích strán, používatelia by mali vykonávať obozretné posúdenie a spoločnosť Saitong nenesie žiadnu zodpovednosť za akékoľvek spory a škody tým spôsobené.

+

8.6 S cieľom zaručiť autonómiu obchodného rozvoja a úprav spoločnosti môže spoločnosť kedykoľvek upraviť alebo prerušiť službu po primeranom upozornení používateľa.

+

8.7 Pokiaľ nie je výslovne stanovené zákonmi a predpismi, spoločnosť Saitong vynaloží maximálne úsilie na zabezpečenie toho, aby softvér a príslušné technológie a informácie boli bezpečné, účinné, presné a spoľahlivé, ale vzhľadom na existujúcu technológiu používateľ rozumie, že spoločnosť Saitong to nemôže zaručiť.

+

8.8 Náhradu za zranenie osôb alebo náhodné a nepriame ekonomické škody spôsobené alebo v súvislosti s niektorou z nasledujúcich okolností, vrátane, ale nie výlučne, straty zisku, straty údajov, náhrady škody za prerušenie podnikania alebo iné obchodné škody či straty, znáša Používateľ:

+

1) Používanie alebo nemožnosť používať licencovaný softvér.

+

2) Neoprávnené použitie softvéru alebo zmena údajov používateľa tretími stranami.

+

3) Výdavky a straty vzniknuté v dôsledku činností používateľa so softvérom.

+

4) Nesprávne pochopenie softvéru používateľom.

+

5) Akákoľvek iná strata súvisiaca so softvérom, ktorá nie je pripísateľná príčinám spoločnosti Saitong.

+

8.9 Používateľ súhlasí s tým, že Spoločnosť má právo pozastaviť, prerušiť alebo ukončiť celú alebo časť Služby pre používateľa na základe požiadaviek súdnych, regulačných a dozorných orgánov alebo z vlastných obchodných dôvodov. Spoločnosť Saitong za to nenesie žiadnu zodpovednosť.

+

8.10 Používateľ rozumie a súhlasí s tým, že Spoločnosť vynaloží obchodne primerané úsilie na zabezpečenie bezpečnosti ukladania údajov v Softvéri a Službách, ale spoločnosť nemôže poskytnúť úplnú záruku a Používateľ rozumie, že Spoločnosť nie je zodpovedná za vymazanie alebo zlyhanie uloženia alebo zálohovania údajov v Službe.

+

8.11 V maximálnom rozsahu povolenom zákonom vývojár alebo dodávateľ nenesie zodpovednosť za akékoľvek priame, nepriame, náhodné, špeciálne alebo následné škody vyplývajúce z používania Aplikácie. Ak má používateľ ďalšie potreby, obráťte sa na riadnu nemocnicu pre hĺbkové vyšetrenie.

+ +

9. Vyhlásenie o duševnom vlastníctve

+

9.1 Spoločnosť Saitong je držiteľom práv duševného vlastníctva tohto softvéru. Všetky autorské práva, ochranné známky, patenty, obchodné tajomstvá a iné práva duševného vlastníctva softvéru, ako aj všetok informačný obsah súvisiaci so softvérom (vrátane, ale nie výlučne, textu, obrázkov, zvuku, videa, grafiky, dizajnu rozhrania, rozloženia rámca, príslušných údajov alebo elektronických dokumentov atď.) sú chránené miestnymi zákonmi a predpismi a zodpovedajúcimi medzinárodnými zmluvami.

+

9.2 Bez písomného súhlasu Spoločnosti nesmie Používateľ implementovať, využívať ani previesť vyššie uvedené práva duševného vlastníctva na akýkoľvek komerčný alebo nekomerčný účel ani povoliť žiadnej tretej strane a Spoločnosť si vyhradzuje právo vymáhať právnu zodpovednosť za vyššie uvedené činnosti.

+ +

10. Zmena protokolu

+

10.1 Spoločnosť Saitong má právo upraviť podmienky tejto Zmluvy, keď je to potrebné. Po zmene podmienok Zmluvy budú revidované podmienky Zmluvy zverejnené na príslušnej stránke. Ak nesúhlasíte so zmeneným obsahom, používateľ by mal z vlastnej iniciatívy zrušiť túto službu. Ak Používateľ pokračuje v používaní Služieb, považuje sa to za prijatie zmien v podmienkach Zmluvy.

+

10.2 Spoločnosť Saitong si vyhradzuje právo upraviť alebo zmeniť platené služby, štandardy účtovania, spôsoby účtovania, poplatky za služby a podmienky služieb podľa potreby. Pri poskytovaní služieb môžeme účtovať určité poplatky používateľom niektorých služieb teraz alebo v budúcnosti. Ak používatelia odmietnu zaplatiť takéto poplatky, nemôžu pokračovať v používaní príslušných služieb po začiatku účtovania poplatkov.

+
+ + diff --git a/doc/sl/privacy_policy.html b/doc/sl/privacy_policy.html new file mode 100644 index 000000000..fb88e87a2 --- /dev/null +++ b/doc/sl/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Politika zasebnosti + + + + +
+

Voitrans Politika zasebnosti

+

Zadnja posodobitev: 27. maja 2025

+

Datum začetka veljavnosti: 27. maja 2025

+ +

Dobrodošli pri uporabi programske opreme in storitev Voitrans

+

1. Voitrans zagotavlja Saitong Industries Inc. (v nadaljevanju »Podjetje«). Pomaga lahko uporabnikom pri upravljanju naprav Bluetooth in drugih izdelkov. Razumemo pomembnost osebnih podatkov za naše uporabnike (v nadaljevanju »vi«) in učinkovita zaščita vaših osebnih podatkov je temelj zdravega in trajnostnega razvoja našega poslovanja. Zahvaljujemo se vam za uporabo in zaupanje v izdelke ali storitve Voitrans! V celoti se zavedamo, da to zaupanje ne pride zlahka, držimo se načel odprtosti in preglednosti, da vam izrazimo naša pravila za obdelavo vaših osebnih podatkov, vaše osebne podatke obdelujemo na zakonite in legitimne načine ter z jasnimi in razumnimi nameni. Posebna opomba: Pred uporabo naših izdelkov ali storitev obvezno skrbno preberite in razumite to Politiko zasebnosti, da boste lahko sprejeli ustrezne odločitve.

+

2. Ta Politika zasebnosti vam pojasnjuje, kako zbiramo, uporabljamo, shranjujemo in delimo vaše osebne podatke, ko uporabljate Voitrans. Osebni podatki se nanašajo na vse vrste informacij, zabeleženih z elektronskimi ali drugimi sredstvi, ki lahko identificirajo določeno fizično osebo ali odražajo dejavnosti določene fizične osebe samostojno ali v kombinaciji z drugimi informacijami. Voitrans spoštuje in varuje osebno zasebnost vseh uporabnikov storitve. Razen v primerih, določenih v tej Politiki zasebnosti, Voitrans brez vašega predhodnega dovoljenja teh informacij ne bo razkrival javnosti ali jih posredoval tretjim osebam.

+

3. Ko uporabljate izdelek ali storitev tretje osebe prek izdelka ali storitve App Marketplace, za vaše osebne podatke velja politika zasebnosti tretje osebe.

+

4. Voitrans Ta Politika zasebnosti bo občasno posodobljena. S soglasjem k Pogodbi o uporabi storitve Voitrans in začetkom uporabe Voitrans se šteje, da ste soglašali z vsemi določili te Politike zasebnosti. Če se s to Politiko zasebnosti ne strinjate, prosimo, ne uporabljajte programske opreme in storitev Voitrans.

+

5. Za analizo in merjenje učinkovitosti ustreznih storitev bomo vaše osebne podatke uporabljali in razkrivali v skladu z določbami te Politike zasebnosti.

+ +

Ta Politika zasebnosti vam bo pomagala razumeti naslednje:

+
    +
  • 1 Podatki, ki jih zbiramo
  • +
  • 2 Shranjevanje podatkov
  • +
  • 3 Varnost podatkov
  • +
  • 4 Kako uporabljamo zbrane podatke
  • +
  • 5 Deljenje podatkov
  • +
  • 6 Kako upravljate svoje osebne podatke
  • +
  • 7 Opis dovoljenj aplikacije
  • +
  • 8 Dostop do SDK-jev tretjih oseb
  • +
  • 9 Zaščita mladoletnikov
  • +
  • 10 Veljavnost in posodobitve Politike zasebnosti
  • +
  • 11 Kako nas kontaktirati
  • +
+ +

1. Podatki, ki jih zbiramo

+

1. Uporaba Voitrans Na začetku bomo začeli zbirati podatke o vaši uporabi aplikacije

+

2. Voitrans lahko pridobi vaše osebne podatke od tretjih oseb ali poslovnih partnerjev z zakonitimi sredstvi

+

3. Za zagotavljanje boljših izdelkov in storitev, zagotavljanje vaše omrežne varnosti med uporabo, vzdrževanje normalnega delovanja izdelkov ter optimizacijo in izboljšanje namena naših informacijskih storitev, potem ko aktivno kliknete na soglasje s to politiko zasebnosti, uporabljate informacije, ki jih zagotavljamo. Med storitvijo bomo poleg osebnih podatkov, potrebnih za zagotovitev normalnega delovanja osnovnih funkcij Aplikacije v skladu z nacionalnimi zakoni in predpisi, od vas zbirali druge osebne podatke:

+

3.1 Za prepoznavanje tveganih uporabnikov, ocenjevanje pristnosti uporabnikov in celovito preprečevanje goljufij bomo ob vsakem odprtju programske opreme prebrali podatke o vaši napravi, vključno z: (Model naprave, MAC naslov naprave, edinstveni identifikator naprave (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID itd.) MEID, serijska številka, SSID in BSSID WIFI), branje naslova Bluetooth, različica operacijskega sistema, ime operacijskega sistema, uporabniški račun in geslo za prijavo;

+

3.2 Ko uporabljate naše izdelke in storitve, lahko zbiramo določene informacije prek informacij omrežnega dnevnika ali določenih programov in programske opreme, takšne informacije lahko vključujejo: podrobnosti o uporabi izdelkov in storitev, kot so čas odpiranja vaše aplikacije, trajanje uporabe in naslov obiskane strani; podatke o dogodkih naprave, kot so sesutja, sistemske dejavnosti itd., za optimizacijo vaše naprave in izboljšanje naših storitev;

+

3.3 Za prepoznavanje aplikacij, pri katerih je oprema ogrožena, zagotavljanje varnejših funkcionalnih storitev. Zato moramo v procesu pridobiti vaš seznam aplikacij/nameščenih aplikacij, da zagotovimo normalno delovanje izdelka in zaščitimo varnost naprave.

+

3.4 Za analizo uporabe funkcij aplikacije s strani uporabnikov in ugotavljanje pristnosti uporabnikov moramo izvajati statistiko podatkov in zbirati zgoraj navedene podatke o napravi, vključno z MAC naslovom naprave in edinstvenim identifikatorjem naprave, ko je vaša naprava v uporabi.

+

3.5 Signal naprave: stanje omrežja naprave, ki jo uporabljate, informacije o dostopni točki WIFI itd.

+

3.6 Podatki o lokaciji: Za posodabljanje lokalnih informacij, zagotavljanje vsebinskih storitev itd. lahko uporabimo GPS, WiFi ali druga tehnična sredstva za zbiranje in obdelavo informacij o vaši lokaciji.

+

Za več informacij kliknite »Seznam zbranih osebnih podatkov«.

+ +

1. Za občutljivejše osebne podatke med zgoraj navedenimi informacijami, kot so podatki o napravi uporabnika (številka IMEI, stanje klica in identifikacijska številka), podatki o lokaciji GPS, dostop do fotografij, medijev in datotek, bomo pridobili vaše soglasje pred zbiranjem. Za nekatere neobčutljive informacije je zbiranje lahko privzeto in samodejno. Zbiranje ustreznih informacij ali uporabo določenih dovoljenj z naše strani lahko omejite s prilagoditvijo možnosti Nastavitve na vaši mobilni napravi. Ko omejite naš dostop do določenega dovoljenja, vam morda ne bomo mogli nadalje zagotavljati ustreznih storitev in ne bomo več obdelovali vaših ustreznih informacij.

+

2. Ne bomo zbirali vaše številke osebnega dokumenta, osebnih biometričnih podatkov, številke bančnega računa, podatkov o premoženju, podatkov o kreditni sposobnosti, zdravstvenih in fizioloških podatkov ter drugih osebnih občutljivih podatkov.

+

3. O občutljivih dovoljenjih: Za pravilno uporabo funkcij aplikacije mora izdelek pridobiti naslednja dovoljenja za zagotavljanje funkcionalnih storitev, povezanih z normalnimi izdelki.

+ +

1 Pridobitev dovoljenj za branje in pisanje v pomnilnik

+

1 Način pridobitve: pojavno okno, ko je dovoljenje pridobljeno, uporabnik aktivno klikne na soglasje in aplikacija bo uporabila to dovoljenje

+

2 Namen in obseg uporabe: Uporablja se za skeniranje predpomnilniških datotek virov in sličic v sistemu, nalaganje glasbenih virov in slik izdelkov. Prikazano je v vmesniku Aplikacije za lažji ogled in upravljanje s strani uporabnikov

+ +

2 Pridobitev dovoljenja za seznam nameščenih aplikacij

+

1 Način pridobitve: pojavno okno, ko je dovoljenje pridobljeno, uporabnik aktivno klikne na soglasje in aplikacija bo uporabila to dovoljenje

+

2 Namen in obseg uporabe: Ko aplikacija potrebuje oglaševalske promocijske storitve, oglaševalska platforma tretje osebe, Youmon +SDK, potrebuje pridobiti »dovoljenje za seznam nameščene programske opreme« naprave, da prepreči pošiljanje aplikacij, ki jih uporabnik že ima, in izboljša uporabniško izkušnjo.

+ +

3 Dovoljenje za pridobitev podatkov o stanju naprave

+

Vključuje: (Model naprave, MAC naslov naprave, edinstveni identifikator naprave (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID itd.) MEID, serijska številka, SSID in BSSID WIFI, branje naslova Bluetooth), različica operacijskega sistema, ime operacijskega sistema itd.;

+

1 Način pridobitve: pojavno okno, ko je dovoljenje pridobljeno, uporabnik aktivno klikne na soglasje in aplikacija bo uporabila to dovoljenje

+

2 Namen in obseg uporabe: Pri uporabi naše aplikacije bomo za analizo uporabe funkcij aplikacije s strani uporabnika in oceno pristnosti uporabnika dovoljenje sinhronizirali s SDK-ji tretjih oseb, vključno z Autonavi SDK, Youmon +SDK itd.

+ +

4 Dostop do podatkov o lokaciji

+

1 Način pridobitve: pojavna okna, ko je dovoljenje pridobljeno, uporabnik bo to dovoljenje uporabil šele, ko aktivno klikne na soglasje z aplikacijo.

+

2 Namen in obseg uporabe: Ko aplikacija potrebuje uporabo GPS, WiFi ali drugih funkcij, mora izdelek zbirati vašo lokacijo in podatke za iskanje naprav Bluetooth v bližnjih lokacijah.

+

Opomba: Za več dovoljenj aplikacije glejte ta dokument »Politika zasebnosti« razdelek 7 »Opis dovoljenj aplikacije«

+ +

2. Shranjevanje podatkov

+

1. Kje so podatki shranjeni

+

Osebni podatki, ki jih zbiramo in ustvarjamo v Ljudski republiki Kitajski, bodo shranjeni na naših strežnikih in/ali strežnikih naših povezanih podjetij.

+

2. Shranjevanje in obdelava podatkov

+

Vaše osebne podatke shranjujemo le za obdobje, potrebno za dosego namena, ali tako dolgo, kot to zahtevajo zakoni in predpisi. Ko prenehate uporabljati ta izdelek, bomo takoj prenehali zbirati in obdelovati vaše osebne podatke in podatke aplikacije. Ko je zgoraj navedeno obdobje preseženo, bomo osebne podatke, ki ste nam jih posredovali, izbrisali ali anonimizirali.

+

Poleg potrebnih funkcij mora Voitrans zaprositi za ustrezna sistemska dovoljenja. Strežniška stran oblaka ne shranjuje osebnih podatkov uporabnikov, SDK-ji tretjih oseb, do katerih se dostopa, pa bodo anonimizirani in deidentificirani s strani ponudnika storitev (Amu Statistics SDK, Autonavi SDK), tako da uporabnikov ni mogoče slediti. Podatki, shranjeni v telefonu uporabnika, bodo samodejno izbrisani, ko uporabnik odstrani Voitrans ali počisti predpomnilnik.

+ +

3. Varnost podatkov

+

1. Voitrans shranjuje in varuje vaše osebne podatke z varnostnimi ukrepi in tehnologijami po industrijskih standardih, kot so preverjanje pristnosti, šifriranje podatkov, omejen dostop do podatkovnih centrov in drugi varnostni ukrepi za zagotavljanje, da so vaši podatki zaščiteni pred razkritjem, spremembo in uničenjem. Kljub zgoraj navedenim varnostnim ukrepom upoštevajte, da noben varnostni ukrep ne more biti 100% varen.

+

2. Ko uporabljate storitve, ki jih zagotavlja Voitrans, prosimo zaščitite svoje osebne podatke. Če ugotovite, da so vaši osebni podatki ogroženi, nas takoj obvestite, da bomo lahko sprejeli ustrezne ukrepe.

+ +

4. Kako uporabljamo zbrane podatke

+

1. Pri izvajanju poslovnih funkcij aplikacije lahko vaše osebne podatke uporabimo za zagotavljanje celovitosti in varnosti izdelkov in storitev, ki vam jih zagotavljamo;

+

2. Razumeli bomo vaše uporabniške navade prek zbranih podatkov in s pomočjo analize podatkov prepoznali sprejemljivost storitev, vaše uporabniške navade itd., da bi testirali in ustvarili nove izdelke, funkcije in storitve, izboljšali raven storitev ter nam pomagali izboljšati obstoječe storitve in razviti nove storitve;

+

3. Vaše osebne podatke lahko uporabimo za ankete med strankami o izdelkih in storitvah, za pošiljanje obvestil o izdelkih in storitvah ter za komercialno promocijo;

+

4. Vaše podatke lahko uporabimo za notranjo analizo in raziskave, povezane z aplikacijo;

+ +

5. Deljenje podatkov

+

Trenutno ne bomo aktivno delili ali prenašali vaših osebnih podatkov tretjim osebam zunaj podjetja. Če pride do drugega deljenja ali prenosa vaših osebnih podatkov, bomo neposredno potrdili ali zagotovili, da je tretja oseba pridobila vaše izrecno soglasje za zgoraj navedeno ravnanje.

+

Ne bomo javno razkrivali osebnih podatkov, ki jih zbiramo. Če je javno razkritje potrebno, vas bomo obvestili o namenu javnega razkritja, vrsti razkritih podatkov in občutljivih podatkih, ki bi lahko bili vključeni, ter pridobili vaše izrecno soglasje.

+

Ker se naše poslovanje nenehno razvija, se lahko vključimo v združitve, prevzeme, prenose sredstev in druge transakcije, o ustreznih okoliščinah vas bomo obvestili v skladu z zakoni in predpisi ter z ne nižjimi standardi od tistih, ki jih zahteva ta Vodnik, da nadaljujemo z zaščito vaših osebnih podatkov ali zahtevamo od novega upravljavca, da nadaljuje z zaščito vaših osebnih podatkov.

+

Poleg tega lahko v skladu z ustreznimi zakoni in predpisi ter nacionalnimi standardi delimo, prenesemo in javno razkrijemo osebne podatke brez predhodnega soglasja posameznika, na katerega se osebni podatki nanašajo, v naslednjih okoliščinah:

+
    +
  • 1 Neposredno povezano z nacionalno varnostjo in varnostjo obrambe;
  • +
  • 2 Neposredno povezano z javno varnostjo, javnim zdravjem ali pomembnimi javnimi interesi;
  • +
  • 3 Neposredno povezano s kazensko preiskavo, pregonom, sojenjem in izvrševanjem sodb;
  • +
  • 4 Za zaščito življenja, premoženja in drugih pomembnih zakonitih pravic in interesov posameznika, na katerega se osebni podatki nanašajo, ali drugih posameznikov, vendar je težko pridobiti soglasje osebe;
  • +
  • 5 Osebni podatki, ki jih je javnosti razkril posameznik, na katerega se osebni podatki nanašajo;
  • +
  • 6 Zbiranje osebnih podatkov iz zakonito javno razkritih informacij, kot so legitimna poročila novic, razkritje vladnih informacij in drugi kanali.
  • +
+ +

6. Kako upravljate svoje osebne podatke

+

V skladu z ustreznimi zakoni, predpisi in standardi Kitajske ter običajnimi praksami drugih držav in regij vam zagotavljamo, da uveljavljate naslednje pravice do vaših osebnih podatkov:

+ +

1. Popravek vaših osebnih podatkov

+

Če ugotovite, da v vaših osebnih podatkih, ki jih obdelujemo, obstaja napaka, imate pravico popraviti ali posodobiti napačne ali nepopolne podatke. Če ne morete samostojno upravljati v centru računa, nam lahko pišete na saitong.voitrans@gmail.com Kontaktirajte nas

+ +

2. Izbris vaših osebnih podatkov

+

V naslednjih primerih lahko vložite zahtevo za izbris vaših osebnih podatkov:

+
    +
  • Če obdelujemo osebne podatke v nasprotju z zakoni in predpisi;
  • +
  • Če zbiramo in uporabljamo vaše osebne podatke brez vašega soglasja;
  • +
  • Če naša obdelava osebnih podatkov krši našo pogodbo z vami;
  • +
  • Če ne uporabljate več naših izdelkov ali storitev;
  • +
  • Če vam ne zagotavljamo več izdelkov ali storitev.
  • +
+

Kontaktirajte nas. Vašo zahtevo bomo obdelali na saitong.voitrans@gmail.com Kontaktirajte nas. Po prejemu vam bomo odgovorili v 30 delovnih dneh od prejema

+ +

3. Sprememba obsega vašega soglasja

+

Kontaktirate nas lahko po e-pošti saitong.voitrans@gmail.com Kontaktirajte nas. Na vašo zahtevo ne bomo več zbirali, uporabljali ali razkrivali vaših osebnih podatkov. Upoštevajte, da lahko preklic vašega soglasja ali izbris vaših osebnih podatkov vpliva na vašo uporabo nekaterih naših storitev.

+ +

4 Dostop do in kopiranje osebnih podatkov

+

V skladu z določbami ustreznih zakonov lahko po posredovanju vašega imei (serijska številka telefona) ali oaid ali Android ID ter drugih podatkov o računu zaprosite za dostop do vaših osebnih podatkov in njihovo kopiranje, po e-pošti nas lahko kontaktirate na 3514406195@qq.com.

+ +

5. V odgovor na vašo zgornjo zahtevo

+

Iz varnostnih razlogov boste morda morali predložiti pisno zahtevo ali kako drugače dokazati svojo identiteto. Preden obdelamo vašo zahtevo, vas bomo morda prosili, da potrdite svojo identiteto. Na vašo razumno zahtevo bomo pravočasno odgovorili in jo obravnavali. Lahko zavrnemo zahteve, ki so nepotrebno ponavljajoče se, zahtevajo preveč tehnologije (na primer razvoj novih sistemov ali temeljne spremembe obstoječih praks), predstavljajo tveganje za zakonite interese drugih ali so zelo nepraktične.

+

V naslednjih okoliščinah v skladu z zahtevami zakonov in predpisov ne bomo mogli odgovoriti na vašo zahtevo:

+
    +
  • Povezano z nacionalno varnostjo in varnostjo obrambe;
  • +
  • V zvezi s kazensko preiskavo, pregonom in sojenjem;
  • +
  • Obstajajo zadostni dokazi, da imate subjektivne zle namere ali zlorabljate pravice;
  • +
  • Odgovor na vašo zahtevo bi povzročil resno škodo zakonitim pravicam in interesom vas ali drugih posameznikov in organizacij.
  • +
+ +

6. Preklic računa

+

Uporabnik lahko izvede [preklic računa] v Aplikaciji. Koraki operacije:

+
    +
  1. Pojdite na stran [Moje]
  2. +
  3. Kliknite gumb [Nastavitve] zgoraj desno
  4. +
  5. Kliknite [Prekliči račun] za potrditev
  6. +
+

Po odjavi se podatki o uporabniškem računu izbrišejo

+ +

7. Opis dovoljenj aplikacije

+

Za zagotavljanje boljših izdelkov in storitev bomo pri uporabi programske opreme zaprosili za naslednja dovoljenja, ko vstopite na domačo stran ali uporabite funkcijo, bo zahtevana avtorizacija, če zavrnete, nekatere ustrezne funkcije ne bodo delovale normalno. Posebni nameni in opozorila glede dovoljenj so podrobno opisani v nadaljevanju:

+ +

1 Dovoljenja za lokacijo:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

prek WiFi ali mobilne bazne postaje za pridobitev informacij o zemljepisni širini in dolžini lokacije uporabnika

+

Ko uporabljate Voitrans, bomo na podlagi vaše geografske lokacije iskali vašo pripeto napravo Bluetooth. Hkrati bomo za zagotavljanje stabilnejših storitev, optimizacijo izdelkov in izboljšanje izkušnje delili zgornje informacije s tremi SDK-ji, kot sta Youmon in Autonavi, za pridobitev operativnih podatkov Voitrans in funkcionalnih storitev.

+

Način opozorila: Ob prvem zagonu aplikacije se prikaže poziv za dovoljenje, ki zahteva, da uporabnik potrdi sprejetje. Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

To dovoljenje je potrebno pri dostopu do aplikacije za izvajanje funkcij upravljanja aplikacije.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

3 Omrežna dovoljenja:

+

android.permission.INTERNET

+

Ko uporabljate Ta dovoljenja so potrebna za informacijske storitve Voitrans in storitve nadgradnje različic, za izboljšanje uporabniške izkušnje in optimizacijo zmogljivosti storitev pa bodo ta dovoljenja uporabljali tudi SDK-ji tretjih oseb, kot je Friends.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

4 Dovoljenja za pridobitev stanja omrežja:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Uporablja se za ugotavljanje, ali je trenutna omrežna povezava veljavna, ugotavljanje, ali je trenutno okolje 4G, in opozarjanje na spremembe omrežnega okolja, s čimer vpliva na nalaganje informacijske vsebine. To dovoljenje se zahteva pri uporabi Voitrans.

+

Spremembe stanja omrežja vplivajo na nalaganje in prenašanje podatkov. Zato bo dovoljenje za dostop do stanja omrežja deljeno s friends + in drugimi platformami.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

5 Dovoljenja za pridobitev seznama opravil:

+

android.permission.GET_TASKS

+

To dovoljenje se uporablja za pridobitev seznama aplikacij za funkcijo upravljanja programske opreme. Ko uporabljate funkcijo upravljanja programske opreme, je treba prebrati aplikacije, nameščene v mobilnem telefonu.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

6 Dovoljenje za pridobitev MAC naslova

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Ko uporabljate Voitrans, bo aplikacija potrebovala dovoljenje za pridobitev MAC naslova:

+

Ko aplikacija potrebuje poročati podatke o ciljnih konverzijah, platforme tretjih oseb, kot je Youmon +SDK, potrebujejo uporabo MAC.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

7 Dovoljenje za snemanje zvoka

+

android.permission.RECORD_AUDIO

+

Ko uporabljate funkcijo glasovnega vnosa Voitrans, je potrebno dovoljenje za snemanje zvoka, glasovni vnos pa se uporablja predvsem za prevajanje in druge povezane funkcije.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti, uporabniku se dinamično prikaže pojavno okno, ko je to potrebno.

+ +

8 Dovoljenje za pridobitev SSID WIFI

+

Ko se to dovoljenje uporablja, aplikacija bere dovoljenje SSID WIFI:

+

Obseg uporabe in namen: Ko aplikacija potrebuje storitve analize podatkov, platforme tretjih oseb, kot je +SDK, potrebujejo prebrati »dovoljenje WIFI SSID« naprave, da uporabnikom zagotovijo natančnejše in učinkovitejše funkcionalne storitve.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

9 Dovoljenje za dostop do Bluetooth

+

Ko se to dovoljenje uporablja, aplikacija bere dovoljenje Bluetooth:

+

Obseg uporabe in namen: Naprave Bluetooth za iskanje in konfiguracijo dodatkov, kot so slušalke Bluetooth, ure Bluetooth itd. Za lažje upravljanje s strani uporabnikov

+

Način opozorila: Ob prvem zagonu aplikacije se prikaže poziv za dovoljenje, ki zahteva, da uporabnik potrdi sprejetje. Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

10 Dovoljenje za pridobitev BSSID WiFi

+

Ko aplikacija potrebuje razlikovati in identificirati uporabnika za zagotavljanje funkcionalnih storitev in statistike podatkov, bo prebrala dovoljenje »WiFi BSSID« naprave za:

+

Obseg uporabe in namen: 1 Platforme tretjih oseb: kot so Youmeng SDK, Bugly SDK, Autonavi SDK

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

11 Dovoljenje za namestitev aplikacije

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Programska oprema bo uporabljala dovoljenje za namestitev aplikacije, ki se uporablja predvsem za omogočanje namestitve nove različice uporabnikom in izkušnje novih funkcij, ko je na voljo nova različica.

+

Način opozorila: Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

12 Dovoljenje za kamero

+

android.permission.CAMERA

+

Voitrans uporablja dovoljenja kamere za skeniranje QR kod in povezovanje naprav Bluetooth, kot so slušalke Bluetooth in ure.

+

Način opozorila: Ob prvem zagonu aplikacije se prikaže poziv za dovoljenje, ki zahteva, da uporabnik potrdi sprejetje. Opis v Uporabniški pogodbi in Politiki zasebnosti.

+ +

Posebna opomba:

+

1 Integracija aplikacije znotraj njihovega Allies SDK, Scott map SDK po soglasju uporabnika za dovoljenje, aplikacija v ozadju/ospredju za ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI in druge osebne podatke;

+

Opombe: Več informacij najdete v naslednjih vsebinah in dovoljenjih, povezanih s SDK [VIII. Dostop do seznama SDK-jev tretjih oseb]

+ +

8. Dostop do SDK-jev tretjih oseb

+

1 Za zagotovitev stabilnega delovanja in funkcionalne realizacije našega odjemalca, da boste lahko uporabljali in uživali več storitev in funkcij, bo naša aplikacija integrirana s kompleti orodij za razvoj programske opreme (SDK) ali drugimi podobnimi aplikacijami tretjih oseb, te tretje osebe bodo zbirale in obdelovale ustrezne informacije v skladu s svojimi politikami zasebnosti za normalno zagotavljanje funkcij in oglaševalskih storitev. V naslednjem razdelku se lahko seznanite s pravili tretjih oseb za zbiranje in obdelavo informacij. Izvedli bomo stroge varnostne teste razvojnih kompletov (SDK-jev) partnerjev za pridobivanje informacij, da bi zaščitili razumno uporabo in varnost vaših osebnih podatkov. Upoštevajte, da lahko SDK-ji tretjih oseb spremenijo vrste obdelave podatkov zaradi nadgradenj različic. Glejte politike zasebnosti, ki jih objavijo SDK-ji tretjih oseb. Podrobnosti najdete spodaj ali kliknite za ogled Seznama SDK-jev tretjih oseb.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Pridobljeni podatki: Številka naprave, IP naslov, podatki o programski opremi naprave, identifikacijska koda naprave (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, podatki o IMSI SIM kartice, IP, MAC naslov), identifikator naprave, regija, podatki o aplikacijah, povezanih z napravo, in drugi podatki dnevnika, povezani s storitvijo

+

Namen uporabe: Prijava in deljenje prek WeChat

+

Razvijalec: Shenzhen Tencent Computer Systems Company Limited

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Pridobljeni podatki: Ime aplikacije, različica aplikacije, znamka in model naprave, operacijski sistem, podatki o operaterju, ločljivost zaslona, podatki o senzorjih (vektor, pospeševanje, tlak, smer, geomagnetizem, žiroskop, temperatura, svetlobni senzor, NMEA signal), podatki o moči signala naprave

+

Namen uporabe: Navigacija z uporabo Amap

+

Razvijalec: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Pridobljeni podatki: Ime aplikacije, različica aplikacije, znamka in model naprave, operacijski sistem, omrežni podatki, moč signala naprave itd.

+

Namen uporabe: Prikaz in interakcija z zemljevidom

+

Razvijalec: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Pridobljeni podatki: Podatki o lokaciji (GPS, Wi-Fi, bazna postaja), podatki o napravi, omrežni podatki itd.

+

Namen uporabe: Zagotavljanje lokacijskih storitev

+

Razvijalec: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Pridobljeni podatki: Ime aplikacije, različica aplikacije, podatki o napravi, omrežni podatki itd.

+

Namen uporabe: Orodja za zemljevide in optimizacija upodabljanja

+

Razvijalec: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Pridobljeni podatki: Identifikatorji naprave, osnovni podatki o napravi, seznam nameščene programske opreme in omrežni podatki (podrobnosti najdete v uradni politiki zasebnosti)

+

Namen uporabe: Prijava v račun Alipay in klicanje plačil

+

Razvijalec: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Pridobljeni podatki: Različica SDK/API, platforma, časovni žig, identifikator aplikacije, različica aplikacije, proizvajalec naprave, različica OS, lokalizacija, časovni pas, stanje omrežja (Wi-Fi itd.), omrežni dnevniki, podatki o sesutjih in uporabi, IP naslov itd. (podrobnosti najdete v uradni politiki zasebnosti)

+

Namen uporabe: Spremljanje kakovosti aplikacije in storitev poročanja podatkov

+

Razvijalec: Shenzhen Tencent Computer Systems Company Limited

+

Način zbiranja: Samodejno zbiranje SDK

+

Povezava do politike zasebnosti: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Zaščita mladoletnikov

+

Uporabniki naših izdelkov in storitev lahko vključujejo mladoletnike, mlajše od 18 let, mladoletni uporabniki se morajo pred uporabo naših izdelkov posvetovati s svojimi starši ali skrbniki glede te Politike zasebnosti ter uporabljati naše storitve ali nam posredovati vaše podatke po pridobitvi soglasja in pod vodstvom svojih staršev ali skrbnikov. Skrbniki mladoletnikov, ki imajo vprašanja, nas lahko kontaktirajo prek kontaktnih podatkov v tej Politiki zasebnosti.

+

Če se ne strinjate z zbiranjem zgoraj navedenih podatkov s strani zgoraj navedenih ponudnikov storitev tretjih oseb, takoj prenehajte z uporabo Programske opreme. Med vašo uporabo Programske opreme bodo te tretje osebe zbirale in obdelovale ustrezne podatke v skladu s svojimi politikami zasebnosti za zagotavljanje nekaterih funkcij, oglaševanja in drugih storitev. Če pride do uhajanja podatkov zaradi zbiranja zgoraj navedenih podatkov s strani ustreznega ponudnika storitev tretje osebe, ustrezni ponudnik storitev tretje osebe nosi ustrezno pravno odgovornost.

+ +

10. Veljavnost in posodobitve Politike zasebnosti

+

1. Ta Politika zasebnosti je veljavna od datuma objave.

+

2. Ker se naše poslovanje razvija in spreminja, se lahko naša Politika zasebnosti spremeni. Pridržujemo si pravico, da kadar koli spremenimo našo politiko zasebnosti, zato jo redno preverjajte. Če spremenimo našo Politiko zasebnosti, bomo te posodobitve objavili na naši spletni strani, v aplikacijah in tam, kjer menimo, da je primerno, da boste obveščeni. Če se politika zasebnosti posodobi, začne veljati od datuma posodobitve. Vaša nadaljnja uporaba naših izdelkov ali storitev pomeni, da soglašate z našo spremenjeno Politiko zasebnosti.

+ +

11. Kako nas kontaktirati

+

Saitong Industries Inc je bila ustanovljena 22. novembra 2024, registrirani naslov: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Če želite izvedeti več o našem podjetju in platformi, nas lahko kontaktirate prek kontaktnih podatkov, navedenih v tej politiki (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/sl/user_agreement.html b/doc/sl/user_agreement.html new file mode 100644 index 000000000..e9de0f928 --- /dev/null +++ b/doc/sl/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Uporabniški protokol aplikacije Voitrans + + + +
+
Slovenščina
+ +

Uporabniški protokol aplikacije Voitrans

+ +

Ti pogoji uporabe vam pojasnjujejo, kako dostopati do aplikacije Voitrans in spletnih storitev (v nadaljevanju »Storitve«) ter kako jih uporabljati. Saitong Industries Inc. (v nadaljevanju »Saitong«) uporabnike opozarja, naj skrbno preberejo in v celoti razumejo to Uporabniško pogodbo (v nadaljevanju »Pogodba«). Uporabniki naj skrbno preberejo in v celoti razumejo pogoje te Pogodbe. Prosimo, preberite in izberite, ali to Pogodbo sprejmete ali ne. Vaša uporaba aplikacije Voitrans (v nadaljevanju »Aplikacija« ali »Programska oprema«) se bo štela kot sprejetje te Pogodbe in soglašate, da vas zavezujejo pogoji te Pogodbe. Če se s to Pogodbo ne strinjate, Aplikacije ne uporabljajte.

+

Saitong si pridržuje pravico do spremembe te Pogodbe, posodobljeni pogoji Pogodbe pa bodo objavljeni v tej Aplikaciji z veljavnostjo od datuma objave.

+ +

1. Splošna pravila

+

1.1 Ta Aplikacija je programska oprema, ki jo zagotavlja Saitong za povezovanje izdelkov slušalk, ki jih izdajata Saitong in njegova partnerska podjetja. Lastništvo in pravice upravljanja programske opreme ter povezanih storitev so v lasti Saitong.

+

1.2 Ta Pogodba je pogodba med vami (v nadaljevanju »Uporabnik«) in podjetjem ter njegovimi partnerji in operativnimi partnerji (v nadaljevanju »Partnerji«) glede uporabnikove uporabe Aplikacije in povezanih storitev.

+

1.3 Programska oprema in storitve vključujejo:

+

1.3.1 Zagotovljena programska oprema uporabnikom Voitrans ponuja povezavo in seznanjanje z Voitrans, upravljanje nastavitev funkcij ter druge programske storitve, odvisno od dejanskih programskih storitev, ki jih zagotavlja Aplikacija.

+

1.3.2 Posodobitve, nadgradnje in druge storitve programske opreme.

+ +

2. Obseg licence za programsko opremo

+

2.1 Uporabniku podeljujemo osebno, neprenosljivo, nepodlicenčno in neizključno licenco za Programsko opremo.

+

2.2 Uporabniki lahko namestijo, uporabljajo, prikazujejo in poganjajo programsko opremo na eni mobilni terminalski napravi za nekomercialne namene. Vendar uporabnik ne sme nameščati, uporabljati ali poganjati programske opreme v komercialne operativne namene, kopirati, spreminjati, prilagajati, povezovati ali poganjati programske opreme ali podatkov, sproščenih v pomnilnik katerekoli terminalske naprave med delovanjem programske opreme ali interakcijskih podatkov med odjemalcem in strežnikom med delovanjem programske opreme, niti ustvarjati izpeljanih del. To vključuje, vendar ni omejeno na, uporabo vtičnikov, dodatkov ali nepooblaščenih orodij/storitev tretjih oseb za dostop do Programske opreme in povezanih sistemov. Za komercialno prodajo, razmnoževanje in distribucijo, kot sta prednamestitev in združevanje programske opreme, je treba pridobiti pisno pooblastilo in dovoljenje.

+

2.3 Uporabnik ne sme namestiti Programske opreme na druge terminalske naprave brez izrecnega dovoljenja ustvarjalca, vključno, vendar ne izključno, s televizorji, digitalnimi sprejemniki, igralnimi konzolami in drugimi napravami.

+

2.4 Razen pravic, ki so izrecno odobrene s to Pogodbo, Uporabniku niso podeljene nobene druge pravice in Uporabnik mora za uporabo drugih pravic pridobiti pisno soglasje.

+ +

3. Nadgradnja programske opreme

+

3.1 Uporabnik mora izbrati različico programske opreme, primerno za nastavitev nameščene terminalske naprave. V nasprotnem primeru je za težave s programsko opremo, napravo ali škodo, povzročeno z različico programske opreme, ki ni primerna za vrsto naprave, odgovoren izključno uporabnik.

+

3.2 Z namenom izboljšanja uporabniške izkušnje in izboljšanja vsebine storitev ima Saitong pravico občasno zagotavljati nadomestne, spremenjene in nadgrajene različice programske opreme. Funkcija »Opozorilo o nadgradnji« je za uporabnike privzeto omogočena. Glede na različne različice programske opreme, ki jih uporabljajo uporabniki, Saitong uporabnikom ponuja možnost aktiviranja te funkcije. Po izdaji nove različice programske opreme Saitong ne zagotavlja nadaljnje razpoložljivosti stare različice programske opreme.

+ +

4. Specifikacija uporabe

+

4.1 Uporabniki lahko uporabljajo Programsko opremo in Storitve v skladu s to Pogodbo ob upoštevanju zakonov in te Pogodbe ter ne smejo izvajati naslednjih dejanj:

+

4.1.1 Brisati vseh informacij o avtorskih pravicah na Programski opremi in drugih kopijah ter spreminjati, brisati ali obiti tehničnih ukrepov, ki jih je Programska oprema vzpostavila za zaščito pravic intelektualne lastnine.

+

4.1.2 Izvajati obratni inženiring Programske opreme, kot sta razstavljanje, dekompiliranje ali drugi poskusi pridobitve izvorne kode Programske opreme.

+

4.1.3 S spreminjanjem ali ponarejanjem navodil in podatkov pri delovanju programske opreme dodajati, brisati ali spreminjati funkcije ali učinke delovanja programske opreme ali programsko opremo oziroma metode, namenjene zgornjim namenom, upravljati ali širiti javnosti, ne glede na to, ali so ta dejanja za komercialne namene.

+

4.1.4 Uporabljati programsko opremo za katero koli ravnanje, ki ogroža varnost omrežja, vključno, vendar ne izključno: uporabo nepooblaščenih podatkov ali dostopanje do nepooblaščenih strežnikov/računov; dostopanje do javnih omrežij ali drugih operacijskih sistemov brez dovoljenja in brisanje, spreminjanje ali dodajanje shranjenih informacij; nepooblaščeni poskusi sondiranja, skeniranja ali testiranja slabosti sistema ali omrežja programske opreme ali druga dejanja, ki ogrožajo varnost omrežja; poskusi motenja ali uničevanja normalnega delovanja programskega sistema ali spletnega mesta, namerno širjenje zlonamernih programov ali virusov in druga dejanja, ki motijo normalne omrežne informacijske storitve; ponarejanje imen TCP/IP paketov ali delnih imen.

+

4.1.6 Brez pisnega soglasja Podjetja uporabnik samovoljno izvaja naslednja dejanja s programsko opremo in informacijami v njej, vključno, vendar ne izključno: uporabo, oddajanje v najem, posojanje, kopiranje, spreminjanje, povezovanje, ponatis, kompiliranje, objavljanje, izdajanje, ustanavljanje zrcalnih strani, razvoj izpeljanih izdelkov, del, storitev, vtičnikov, dodatkov, združljivosti, medsebojne povezave itd. s pomočjo Programske opreme.

+

4.1.7 Uporabljati Programsko opremo za objavljanje, prenos, distribucijo in shranjevanje vsebin, ki kršijo vaše lokalne zakone.

+

4.1.8 Uporabljati programsko opremo za objavljanje, prenos, širjenje in shranjevanje vsebin, ki kršijo pravice intelektualne lastnine, poslovne skrivnosti in druge zakonite pravice drugih.

+

4.1.9 Uporabljati to programsko opremo za množično objavljanje, prenos in širjenje oglaševalskih informacij in neželene pošte.

+

4.1.10 Uporabljati Programsko opremo in druge Storitve na kakršen koli nezakonit način, za kakršen koli nezakonit namen ali na kakršen koli način, ki ni združljiv z licencirano uporabo te Pogodbe.

+

4.2 Specifikacija objavljanja informacij

+

4.2.1 Če uporabljate programsko opremo za objavljanje informacijskih vsebin (če obstajajo), morate zagotoviti, da imate pravice intelektualne lastnine nad informacijsko vsebino, ki ste jo naložili, ali ste pridobili zakonito pooblastilo, ter da nobeno vaše ravnanje pri uporabi programske opreme in storitev ne krši zakonitih pravic in interesov nobene tretje osebe.

+

4.2.2 Pri uporabi Programske opreme se uporabnik ne sme ukvarjati z naslednjimi dejavnostmi prek Programske opreme, vključno, vendar ne izključno:

+

4.2.2.1 Ustvarjanje, kopiranje, objavljanje, širjenje in shranjevanje vsebin, ki kršijo lokalne nacionalne zakone in predpise.

+

4.2.2.2 Objavljanje, prenos, širjenje in shranjevanje vsebin, ki kršijo zakonite pravice drugih, kot so pravice do ugleda, podobe, intelektualne lastnine in poslovnih skrivnosti.

+

4.2.2.3 Izmišljevanje dejstev, prikrivanje resnice z namenom zavajanja ali goljufanja drugih.

+

4.2.2.4 Objavljanje, prenos in širjenje oglaševalskih informacij in neželene pošte.

+

4.2.2.5 Izvajanje drugih dejanj, ki kršijo lokalne zakone in predpise.

+

4.2.3 Brez dovoljenja Podjetja ne smete izvajati nobenih komercialnih dejavnosti, kot sta oglaševanje in prodaja blaga, v Programski opremi.

+

4.3 Uporabnik razume in se strinja, da:

+

4.3.1 Saitong bo ugotovil, ali je uporabnik osumljen kršitve zgoraj navedenih specifikacij uporabe, in glede na rezultate ugotovitev začasno ustavil ali prekinil vašo licenco za uporabo ali sprejel druge omejitvene ukrepe, ki jih je mogoče sprejeti v skladu s to pogodbo.

+

4.3.2 Glede vsebine, ki jo uporabnik objavi pri uporabi licencirane programske opreme in ki je osumljena nezakonitosti ali kršenja zakonitih pravic drugih ali kršitve te Pogodbe, bo neposredno izbrisana.

+

4.3.3 Če kršitev zgornjih pravil uporabe s strani uporabnika povzroči škodo tretjim osebam, morate sami nositi pravno odgovornost v svojem imenu in zagotoviti, da podjetje ne utrpi izgub ali povečanih stroškov.

+

4.3.4 Če uporabnik krši ustrezne pravne predpise ali pogodbe in s tem povzroči izgube podjetju Saitong ali je podvržen zahtevkom tretjih oseb ali kaznovanju s strani upravnega organa, uporabnik povrne izgube in/ali stroške, ki so nastali podjetju Saitong, vključno z razumnimi odvetniškimi stroški, stroški preiskave in zbiranja dokazov.

+ +

5. Opis storitev tretjih oseb

+

5.1 Uporabnik razume in se strinja, da lahko programski sistem vsebuje storitve, ki jih zagotavljajo povezana podjetja ali tretje osebe, in da Podjetje v sistemu zagotavlja le ustrezne funkcionalne module za udobje uporabnikov ter zagotavlja dostop do storitev tretjih oseb.

+

5.2 Ne glede na to, ali so storitve tretjih oseb prednastavljene v storitvah programskega sistema ali jih uporabniki sami odprejo ali naročijo, uporabniki razumejo in se strinjajo, da Saitong ne daje nobene izrecne ali implicitne garancije zakonitosti in učinkovitosti ponudnikov storitev tretjih oseb ali uporabnikov ter zakonitosti, natančnosti, učinkovitosti in varnosti storitev tretjih oseb.

+

5.3 Podjetje ne nadzira, ne kontrolira in ne zagotavlja nobene garancije ali jamstva katerekoli vrste za storitve tretjih oseb ter ne prevzema nobene odgovornosti zanje.

+

5.4 Vsak spor ali nesoglasje med uporabnikom in ponudnikom storitev tretje osebe rešujeta Uporabnik in tretja oseba v skladu s poslovnimi postopki in poslovnimi normami ponudnika storitev tretje osebe, Podjetje pa ne prevzema nobene odgovornosti.

+ +

6. Politika zasebnosti in zaščita osebnih podatkov

+

6.1 Saitong se zavezuje k zaščiti zasebnosti uporabnikov v skladu s politiko zasebnosti, prosimo glejte: Voitrans Politika zasebnosti.

+ +

7. Odgovornost za kršitev

+

7.1 Saitong ima pravico presoditi, ali je ravnanje uporabnika v skladu z določbami te Pogodbe. Če meni, da je Uporabnik kršil ustrezne zakone in predpise ali določbe te Pogodbe in povezana pravila, ima Saitong glede na resnost kršitve uporabnika pravico izbrisati nezakonite informacije, omejiti, začasno ustaviti ali prekiniti uporabnikovo uporabo storitve Programske opreme, uveljavljati uporabnikovo pravno odgovornost in sprejeti druge ukrepe, ki jih Saitong šteje za ustrezne. Če nam nastane kakršna koli izguba (vključno, vendar ne izključno, s prejemom katerih koli zahtevkov tretjih oseb ali kazni katerega koli upravnega organa), bo Uporabnik nosil polno odgovornost.

+ +

8. Tveganja storitev in zavrnitve odgovornosti

+

8.1 Želimo zagotoviti storitveno podporo s trenutno tehnologijo. Saitong ne jamči, da bo storitev Programske opreme delovala brez prekinitev ali napak, da bodo odpravljene vse napake storitve Programske opreme ali da bo storitev Programske opreme izpolnila vse zahteve uporabnikov. Za posledice, ki iz tega izhajajo, Saitong ne prevzema nobene odgovornosti.

+

8.2 Za vse izgube, ki jih uporabnik utrpi zaradi tretjih oseb, kot so okvara komunikacijske linije, tehnične težave, omrežje, okvara računalniške terminalske opreme, nestabilnost sistema in drugi vzroki višje sile, se ne prevzema odgovornosti.

+

8.3 Saitong ne jamči za zakonitost, pristnost, natančnost in učinkovitost informacijske vsebine, pridobljene prek programske opreme (vključno, vendar ne izključno, z vsebino storitev tretjih oseb), in Saitong ne prevzema nobene odgovornosti za rezultate katerega koli ravnanja uporabnikov na podlagi poizvedb in ogledov.

+

8.4 Programska oprema je, tako kot večina internetne programske opreme, pod vplivom razlik v dejavnikih, vključno, vendar ne izključno, z razlogi na strani uporabnika, kakovostjo omrežnih storitev, družbenim okoljem in drugimi dejavniki, ter je lahko izpostavljena različnim varnostnim težavam, na primer drugi uporabljajo informacije uporabnika, kar vodi v nadlegovanje v resničnem življenju; druga programska oprema, ki so jo prenesli in namestili uporabniki, ali druga spletna mesta, ki so jih obiskali uporabniki, vsebujejo viruse, kot so »trojanski konji«, ki ogrožajo varnost informacij in podatkov terminalske opreme uporabnikov in posledično vplivajo na normalno uporabo programske opreme. Uporabniki bi morali okrepiti zavedanje o informacijski varnosti in zaščiti uporabniških podatkov ter posvetiti pozornost krepitvi zaščite gesel, da se izognejo izgubam in nadlegovanju.

+

8.5 Ko uporabniki uporabljajo Programsko opremo ali od Saitong zahtevajo zagotavljanje posebnih storitev, lahko Programska oprema kliče sisteme tretjih oseb ali programsko opremo tretjih oseb za podporo uporabnikovi uporabi ali dostopu, rezultate uporabe ali dostopa pa zagotavlja tretja oseba. Poleg upoštevanja ustreznih pravil te Pogodbe morajo uporabniki upoštevati tudi pogodbe in ustrezna pravila tretje osebe. Uporabniki morajo razumeti in se strinjati, da lahko tretje osebe pri uporabi storitev tretjih oseb berejo uporabniške podatke, ter da Saitong ne jamči za varnost, natančnost, učinkovitost in druga negotova tveganja rezultatov, doseženih prek sistemov tretjih oseb ali podpore programske opreme tretjih oseb; uporabniki naj izvajajo previdno presojo, Saitong pa ne prevzema nobene odgovornosti za morebitne spore in škodo, ki iz tega nastanejo.

+

8.6 Za zagotovitev avtonomije poslovnega razvoja in prilagoditev podjetja lahko podjetje kadar koli spremeni ali prekine storitev po razumnem obveščanju uporabnika.

+

8.7 Razen v primerih, ki jih izrecno določajo zakoni in predpisi, si bo Saitong po najboljših močeh prizadeval zagotoviti, da sta programska oprema ter vključena tehnologija in informacije varni, učinkoviti, natančni in zanesljivi, vendar uporabnik razume, da Saitong tega zaradi omejitev obstoječe tehnologije ne more zagotoviti.

+

8.8 Odškodnino za telesne poškodbe ali naključno in posredno gospodarsko škodo, povzročeno v povezavi s katero koli od naslednjih okoliščin, vključno, vendar ne izključno, z izgubo dobička, izgubo podatkov, odškodninami za prekinitev poslovanja ali drugimi poslovnimi škodami ali izgubami, nosi Uporabnik:

+

1) Uporaba ali nezmožnost uporabe licencirane programske opreme.

+

2) Nepooblaščena uporaba programske opreme ali sprememba uporabniških podatkov s strani tretjih oseb.

+

3) Stroški in izgube, nastale zaradi uporabnikovih dejanj s programsko opremo.

+

4) Napačno razumevanje programske opreme s strani uporabnika.

+

5) Kakršna koli druga izguba, povezana s programsko opremo, ki ni pripisljiva vzrokom na strani Saitong.

+

8.9 Uporabnik se strinja, da ima Podjetje pravico začasno ustaviti, prekiniti ali končati celotno storitev ali del storitve za uporabnika na podlagi zahtev sodnih, regulativnih in nadzornih organov ali lastnih poslovnih razlogov. Saitong za to ne prevzema nobene odgovornosti.

+

8.10 Uporabnik razume in se strinja, da bo Podjetje uporabilo poslovno razumna prizadevanja za zagotovitev varnosti shranjevanja podatkov v Programski opremi in Storitvah, vendar podjetje ne more zagotoviti popolne garancije, in Uporabnik razume, da Podjetje ni odgovorno za izbris ali neuspeh shranjevanja ali varnostnega kopiranja podatkov v Storitvi.

+

8.11 V najširšem obsegu, ki ga dovoljuje zakon, razvijalec ali dobavitelj ne odgovarja za nobeno neposredno, posredno, naključno, posebno ali posledično škodo, ki izhaja iz uporabe Aplikacije. Če ima uporabnik nadaljnje potrebe, naj se obrne na ustrezno bolnišnico za poglobljeno testiranje.

+ +

9. Izjava o intelektualni lastnini

+

9.1 Saitong je imetnik pravic intelektualne lastnine te programske opreme. Vse avtorske pravice, blagovne znamke, patenti, poslovne skrivnosti in druge pravice intelektualne lastnine programske opreme ter vsa informacijska vsebina, povezana s programsko opremo (vključno, vendar ne izključno, z besedilom, slikami, zvokom, videom, grafiko, oblikovanjem vmesnika, okvirjem postavitve, ustreznimi podatki ali elektronskimi dokumenti itd.), so zaščiteni z lokalnimi zakoni in predpisi ter ustreznimi mednarodnimi pogodbami.

+

9.2 Brez pisnega soglasja Podjetja Uporabnik ne sme izvajati, izkoriščati ali prenesti zgoraj navedenih pravic intelektualne lastnine za kakršen koli komercialni ali nekomercialni namen ali dovoliti nobeni tretji osebi, Podjetje pa si pridržuje pravico uveljavljati pravno odgovornost za zgoraj navedena dejanja.

+ +

10. Sprememba protokola

+

10.1 Saitong ima pravico po potrebi spremeniti pogoje te Pogodbe. Ko se pogoji Pogodbe spremenijo, bodo revidirani pogoji Pogodbe objavljeni na ustrezni strani. Če se s spremenjenimi vsebinami ne strinjate, naj uporabnik na lastno pobudo prekliče to storitev. Če Uporabnik nadaljuje z uporabo Storitev, se šteje, da sprejema spremembe pogojev Pogodbe.

+

10.2 Saitong si pridržuje pravico po potrebi spremeniti ali prilagoditi plačljive storitve, standarde zaračunavanja, načine zaračunavanja, pristojbine za storitve in pogoje storitev. Pri zagotavljanju storitev lahko zdaj ali v prihodnosti nekaterim uporabnikom nekaterih storitev zaračunavamo določene pristojbine. Če uporabniki zavrnejo plačilo takšnih pristojbin, ne morejo nadaljevati z uporabo ustreznih storitev po začetku zaračunavanja pristojbin.

+
+ + diff --git a/doc/sr/privacy_policy.html b/doc/sr/privacy_policy.html new file mode 100644 index 000000000..898880b87 --- /dev/null +++ b/doc/sr/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Politika privatnosti + + + + +
+

Voitrans Politika privatnosti

+

Poslednje ažuriranje: 27. maj 2025.

+

Datum stupanja na snagu: 27. maj 2025.

+ +

Dobrodošli u korišćenje Voitrans softvera i usluga

+

1. Voitrans je obezbeđen od strane Saitong Industries Inc. (u daljem tekstu „Kompanija"). Može pomoći korisnicima da ostvare upravljanje Bluetooth uređajima i drugim proizvodima. Razumemo važnost ličnih informacija za naše korisnike (u daljem tekstu „vi") i da je efikasna zaštita vaših ličnih informacija kamen temeljac zdravog i održivog razvoja našeg poslovanja. Hvala vam na korišćenju i poverenju u Voitrans proizvode ili usluge! U potpunosti smo svesni da ovo poverenje ne dolazi lako, pridržavamo se principa otvorenosti i transparentnosti, da vam izrazimo naša pravila za obradu vaših ličnih informacija, koristimo zakonite i legitimne načine i jasne i razumne svrhe za obradu vaših ličnih informacija. Posebna napomena: Obavezno pažljivo pročitajte i razumite ovu Politiku privatnosti pre korišćenja naših proizvoda ili usluga kako biste mogli da napravite odgovarajuće izbore.

+

2. Ova Politika privatnosti vam objašnjava kako prikupljamo, koristimo, čuvamo i delimo vaše lične informacije kada koristite Voitrans. Lične informacije se odnose na sve vrste informacija zabeleženih elektronskim ili drugim sredstvima koje mogu identifikovati određeno fizičko lice ili odražavati aktivnosti određenog fizičkog lica samostalno ili u kombinaciji sa drugim informacijama. Voitrans poštuje i štiti ličnu privatnost svih korisnika usluge. Osim ako nije drugačije navedeno u ovoj Politici privatnosti, Voitrans neće otkrivati ove informacije javnosti niti ih pružati trećim stranama bez vašeg prethodnog odobrenja.

+

3. Kada koristite proizvod ili uslugu treće strane putem proizvoda ili usluge App Marketplace, vaše lične informacije podležu politici privatnosti treće strane.

+

4. Voitrans Ova Politika privatnosti će se ažurirati s vremena na vreme. Pristankom na Voitrans Ugovor o korišćenju usluga i početkom korišćenja Voitrans-a, smatra se da ste se složili sa celom ovom Politikom privatnosti. Ako se ne slažete sa ovom Politikom privatnosti, molimo vas da ne koristite Voitrans softver i usluge.

+

5. U cilju analize i merenja efikasnosti relevantnih usluga, koristićemo i otkrivati vaše lične informacije u skladu sa odredbama ove Politike privatnosti.

+ +

Ova Politika privatnosti će vam pomoći da razumete sledeće:

+
    +
  • 1 Informacije koje prikupljamo
  • +
  • 2 Čuvanje informacija
  • +
  • 3 Bezbednost informacija
  • +
  • 4 Kako koristimo informacije koje prikupljamo
  • +
  • 5 Deljenje informacija
  • +
  • 6 Kako upravljate svojim ličnim informacijama
  • +
  • 7 Opis dozvola aplikacije
  • +
  • 8 Pristup SDK-ovima trećih strana
  • +
  • 9 Zaštita maloletnika
  • +
  • 10 Važenje i ažuriranje Politike privatnosti
  • +
  • 11 Kako nas kontaktirati
  • +
+ +

1. Informacije koje prikupljamo

+

1. Korišćenje Voitrans-a na početku: Počećemo da prikupljamo podatke o vašem korišćenju aplikacije

+

2. Voitrans može dobiti lične informacije o vama od trećih strana ili poslovnih partnera na zakonit način

+

3. U cilju pružanja boljih proizvoda i usluga, obezbeđivanja mrežne bezbednosti tokom korišćenja, održavanja normalnog rada proizvoda i optimizacije i poboljšanja, svrhe naših informacionih usluga, nakon što aktivno kliknete da se složite sa ovom politikom privatnosti, koristimo informacije koje pružamo. Tokom usluge, pored ličnih informacija neophodnih za obezbeđivanje normalnog rada osnovnih funkcija aplikacije u skladu sa nacionalnim zakonima i propisima, prikupljamo i druge lične informacije od vas:

+

3.1 U cilju identifikacije rizičnih korisnika, procene autentičnosti korisnika i sveobuhvatnog sprečavanja prevara, čitaćemo informacije o vašem uređaju svaki put kada otvorite softver, uključujući: (Model uređaja, MAC adresa uređaja, jedinstveni identifikator uređaja (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, itd.) MEID, serijski broj, SSID i BSSID WIFI), čitanje Bluetooth adrese, verzija operativnog sistema, naziv operativnog sistema, informacije o korisničkom nalogu za prijavu i lozinka;

+

3.2 Kada koristite naše proizvode i usluge, možemo prikupljati određene informacije putem mrežnih log informacija ili određenih programa i softvera, takve informacije mogu uključivati: detalje korišćenja proizvoda i usluga, kao što su vreme otvaranja vaše aplikacije, dužina korišćenja i adresa posećene stranice; Informacije o događajima na uređaju, kao što su padovi, aktivnost sistema itd., radi optimizacije vašeg uređaja i poboljšanja naših usluga;

+

3.3 Da bismo identifikovali aplikacije gde je oprema u opasnosti, pružamo bezbednije funkcionalne usluge. Stoga, moramo da dobijemo vašu listu aplikacija/instaliranih aplikacija u procesu kako bismo osigurali normalan rad proizvoda i zaštitili bezbednost uređaja.

+

3.4 U cilju analize korišćenja funkcija aplikacije od strane korisnika i utvrđivanja autentičnosti korisnika, moramo da vršimo statistiku podataka i prikupljamo gore navedene informacije o uređaju, uključujući MAC adresu uređaja i jedinstveni identifikator uređaja, kada je vaš uređaj u upotrebi.

+

3.5 Signal uređaja: mrežni status uređaja koji koristite, informacije o WIFI pristupnoj tački itd.

+

3.6 Informacije o lokaciji: Možemo koristiti GPS, WiFi ili druga tehnička sredstva za prikupljanje i obradu informacija o vašoj lokaciji za ažuriranje lokalnih informacija, pružanje usluga sadržaja itd.

+

Za više informacija, kliknite na „Lista prikupljanja ličnih informacija".

+ +

1. Za osetljivije lične informacije u gore navedenim informacijama, kao što su informacije o korisničkom uređaju (IMEI broj, status poziva i identifikacioni broj), GPS informacije o lokaciji, foto medijski sadržaj i prava pristupa fajlovima, dobićemo vašu saglasnost pre prikupljanja. Za neke neosetljive informacije, prikupljanje može biti podrazumevano i automatsko. Možete ograničiti naše prikupljanje relevantnih informacija ili korišćenje određenih dozvola sa vašeg mobilnog uređaja podešavanjem opcija podešavanja vašeg mobilnog uređaja. Kada ograničite naš pristup određenoj dozvoli, možda nećemo moći da nastavimo da vam pružamo odgovarajuće usluge i nećemo više obrađivati vaše odgovarajuće informacije.

+

2. Nećemo prikupljati vaš broj lične karte, lične biometrijske informacije, broj bankovnog računa, informacije o imovini, kreditne informacije, zdravstvene i fiziološke informacije i druge lične osetljive informacije.

+

3. O osetljivim dozvolama: U cilju pravilnog korišćenja funkcija aplikacije, proizvod treba da dobije sledeće dozvole kako bi pružio funkcionalne usluge povezane sa normalnim proizvodima.

+ +

1 Dobijanje dozvola za čitanje i pisanje skladišta

+

1 Kako se dobija: iskačući prozor, kada se dozvola dobije, korisnik će aktivno kliknuti na saglasnost i aplikacija će koristiti ovu dozvolu

+

2 Svrha i obim korišćenja: Koristi se za skeniranje keš fajlova resursa i sličica u sistemu, učitavanje muzičkih resursa i slika proizvoda. Prikazuje se na interfejsu aplikacije radi lakšeg pregleda i upravljanja od strane korisnika

+ +

2 Dobijanje dozvole za listu instaliranih aplikacija

+

1 Kako se dobija: iskačući prozor, kada se dozvola dobije, korisnik će aktivno kliknuti na saglasnost i aplikacija će koristiti ovu dozvolu

+

2 Svrha i obim korišćenja: Kada aplikacija treba da koristi usluge oglašavanja, platforma za oglašavanje treće strane, Youmon +SDK, treba da dobije „dozvolu za listu instaliranog softvera" uređaja kako bi se sprečilo slanje aplikacija koje korisnik već poseduje i poboljšalo korisničko iskustvo.

+ +

3 Dozvola za dobijanje informacija o statusu uređaja

+

Uključuje: (Model uređaja, MAC adresa uređaja, jedinstveni identifikator uređaja (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, itd.) MEID, serijski broj, SSID i BSSID WIFI, čitanje Bluetooth adrese), verzija operativnog sistema, naziv operativnog sistema itd.;

+

1 Kako se dobija: iskačući prozor, kada se dozvola dobije, korisnik će aktivno kliknuti na saglasnost i aplikacija će koristiti ovu dozvolu

+

2 Svrha i obim korišćenja: Kada koristite našu aplikaciju, u cilju analize korišćenja funkcija aplikacije od strane korisnika i procene autentičnosti korisnika, sinhronizujemo dozvolu sa SDK-ovima trećih strana, uključujući Autonavi SDK, Youmon +SDK itd.

+ +

4 Pristup informacijama o lokaciji

+

1 Kako se dobija: iskačući prozor, kada se dozvola dobije, korisnik će koristiti ovu dozvolu samo kada aktivno klikne na saglasnost sa aplikacijom.

+

2 Svrha i obim korišćenja: Kada aplikacija treba da koristi GPS, WiFi ili druge funkcije, proizvod treba da prikupi vašu lokaciju i informacije za pretragu Bluetooth uređaja na obližnjim lokacijama.

+

Napomena: Za više dozvola aplikacije, pogledajte ovaj dokument „Politika privatnosti" Odeljak 7 „Opis dozvola aplikacije"

+ +

2. Čuvanje informacija

+

1. Gde se informacije čuvaju

+

Lične informacije koje prikupljamo i generišemo u Narodnoj Republici Kini biće sačuvane na našim serverima i/ili serverima naših povezanih društava.

+

2. Čuvanje i obrada informacija

+

Čuvamo vaše lične informacije samo za period neophodan za postizanje svrhe ili onoliko dugo koliko to zahtevaju zakoni i propisi. Nakon što prestanete da koristite ovaj proizvod, odmah ćemo prestati da prikupljamo i obrađujemo vaše lične informacije i podatke aplikacije. Kada se gore navedeni period prekorači, obrisaćemo ili anonimizovati lične informacije koje ste nam pružili.

+

Pored neophodnih funkcija, Voitrans treba da aplicira za odgovarajuće sistemske dozvole. Serverska strana u oblaku ne čuva lične informacije korisnika, a SDK treće strane kojem se pristupa biće anonimizovan i deidentifikovan od strane pružaoca usluga (Amu Statistics SDK, Autonavi SDK), tako da korisnici ne mogu biti praćeni. Informacije sačuvane na telefonu korisnika biće automatski obrisane kada korisnik deinstalira Voitrans ili obriše keš.

+ +

3. Bezbednost informacija

+

1. Voitrans čuva i štiti vaše lične informacije koristeći bezbednosne mere i tehnologije u skladu sa industrijskim standardima, kao što su autentifikacija, enkripcija podataka, ograničen pristup data centru i druge bezbednosne mere kako bi se osiguralo da su vaše informacije bezbedne od otkrivanja, izmene i uništenja. Uprkos gore navedenim bezbednosnim merama, imajte na umu da nijedna bezbednosna mera ne može biti 100% bezbedna.

+

2. Kada koristite usluge koje pruža Voitrans, zaštitite svoje lične informacije. Ako otkrijete da su vaše lične informacije kompromitovane, odmah nas kontaktirajte kako bismo mogli da preduzmemo odgovarajuće mere.

+ +

4. Kako koristimo informacije koje prikupljamo

+

1. Prilikom implementacije poslovnih funkcija aplikacije, možemo koristiti vaše lične informacije kako bismo osigurali integritet i bezbednost proizvoda i usluga koje vam pružamo;

+

2. Razumećemo vaše navike korišćenja kroz prikupljene informacije, i uz pomoć analize podataka, identifikovaćemo prihvatljivost usluga, vaše navike korišćenja itd., u cilju testiranja i kreiranja novih proizvoda, funkcija i usluga, poboljšanja nivoa usluga i pomoći u poboljšanju postojećih usluga i razvoju novih usluga;

+

3. Možemo koristiti vaše lične informacije za ankete korisnika o proizvodima i uslugama, za slanje obaveštenja o proizvodima i uslugama i za komercijalnu promociju;

+

4. Možemo koristiti vaše informacije za internu analizu i istraživanja povezana sa aplikacijom;

+ +

5. Deljenje informacija

+

Trenutno nećemo aktivno deliti ili prenositi vaše lične informacije trećim stranama van kompanije. Ako dođe do drugog deljenja ili prenosa vaših ličnih informacija, direktno ćemo potvrditi ili potvrditi da je treća strana dobila vašu izričitu saglasnost za gore navedeno ponašanje.

+

Nećemo javno otkrivati lične informacije koje prikupljamo. Ako je neophodno javno ih otkriti, obavestićemo vas o svrsi javnog otkrivanja, vrsti otkrivenih informacija i osetljivim informacijama koje mogu biti uključene i dobiti vašu izričitu saglasnost.

+

Kako se naše poslovanje nastavlja da se razvija, možemo se angažovati u spajanjima, akvizicijama, transferima imovine i drugim transakcijama, i obavestićemo vas o relevantnim okolnostima, u skladu sa zakonima i propisima i ne manje od standarda zahtevanih ovim Vodičem za nastavak zaštite vaših ličnih informacija ili zahtev da novi kontrolor nastavi da štiti vaše lične informacije.

+

Pored toga, prema relevantnim zakonima i propisima i nacionalnim standardima, možemo deliti, prenositi i javno otkrivati lične informacije bez prethodnog ovlašćenja i saglasnosti subjekta ličnih informacija u sledećim okolnostima:

+
    +
  • 1 Direktno povezano sa nacionalnom bezbednošću i odbranom;
  • +
  • 2 Direktno povezano sa javnom bezbednošću, javnim zdravljem ili velikim javnim interesima;
  • +
  • 3 Direktno povezano sa krivičnom istragom, tužilaštvom, suđenjem i izvršenjem presuda;
  • +
  • 4 U cilju zaštite života, imovine i drugih velikih legitimnih prava i interesa subjekta ličnih podataka ili drugih pojedinaca, ali je teško dobiti saglasnost lica;
  • +
  • 5 Lične informacije koje je subjekt ličnih informacija javno objavio;
  • +
  • 6 Prikupljanje ličnih informacija iz zakonito javno objavljenih informacija, kao što su legitimni novinski izveštaji, javno objavljivanje informacija vlade i drugi kanali.
  • +
+ +

6. Kako upravljate svojim ličnim informacijama

+

U skladu sa relevantnim zakonima, propisima i standardima Kine, kao i uobičajenim praksama drugih zemalja i regiona, garantujemo da ostvarujete sledeća prava u vezi sa vašim ličnim informacijama:

+ +

1. Ispravite vaše lične informacije

+

Ako otkrijete grešku u vašim ličnim informacijama koje obrađujemo, imate pravo da ispravite ili ažurirate pogrešne ili nepotpune informacije. Ako ne možete samostalno da radite u centru naloga, možete poslati email na saitong.voitrans@gmail.com da nas kontaktirate

+ +

2. Obrišite vaše lične informacije

+

U sledećim slučajevima, možete nam uputiti zahtev za brisanje vaših ličnih informacija:

+
    +
  • Ako obrađujemo lične informacije kršeći zakone i propise;
  • +
  • Ako prikupljamo i koristimo vaše lične informacije bez vaše saglasnosti;
  • +
  • Ako naša obrada ličnih informacija krši naš ugovor sa vama;
  • +
  • Ako više ne koristite naše proizvode ili usluge;
  • +
  • Ako vam više ne pružamo proizvode ili usluge.
  • +
+

Kontaktirajte nas. Obradićemo vaš zahtev na saitong.voitrans@gmail.com. Poslaćemo vam odgovor u roku od 30 radnih dana od prijema

+ +

3. Promenite obim vaše saglasnosti

+

Možete nas kontaktirati putem emaila na saitong.voitrans@gmail.com. Na vaš zahtev, više nećemo prikupljati, koristiti ili otkrivati vaše lične informacije. Imajte na umu da povlačenje vaše saglasnosti ili brisanje vaših ličnih informacija može uticati na vaše korišćenje nekih naših usluga.

+ +

4 Pristup i kopiranje ličnih informacija

+

Možete, u skladu sa odredbama relevantnih zakona, pružiti svoj IMEI (serijski broj telefona) ili OAID ili Android ID nakon informacija o nalogu i drugih informacija, aplicirati kod nas za pristup i kopiranje vaših ličnih informacija, možete poslati email na 3514406195@qq.com da stupite u kontakt sa nama.

+ +

5. Kao odgovor na vaš gore navedeni zahtev

+

Iz bezbednosnih razloga, možda ćete morati da pružite pisani zahtev ili na drugi način dokažete svoj identitet. Možemo vas zamoliti da verifikujete svoj identitet pre obrade vašeg zahteva. Za vaš razuman zahtev, odgovorićemo i postupiti na vreme. Možemo odbiti zahteve koji su nepotrebno ponavljajući, zahtevaju previše tehnologije (na primer, razvoj novih sistema ili fundamentalne promene postojećih praksi), predstavljaju rizik za legitimne interese drugih ili su visoko nepraktični.

+

U sledećim okolnostima, prema zahtevima zakona i propisa, nećemo moći da odgovorimo na vaš zahtev:

+
    +
  • Povezano sa nacionalnom bezbednošću i odbranom;
  • +
  • U vezi sa krivičnom istragom, tužilaštvom i suđenjem;
  • +
  • Postoji dovoljno dokaza da imate subjektivnu zlonameru ili zloupotrebu prava;
  • +
  • Odgovaranje na vaš zahtev će naneti ozbiljnu štetu legitimnim pravima i interesima vas ili drugih pojedinaca i organizacija.
  • +
+ +

6. Otkazivanje naloga

+

Korisnik može izvršiti [otkazivanje naloga] operaciju u aplikaciji. Koraci:

+
    +
  1. Idite na stranicu [Moje]
  2. +
  3. Kliknite na dugme [Podešavanja] u gornjem desnom uglu
  4. +
  5. Kliknite na [Otkaži nalog] za potvrdu
  6. +
+

Nakon odjave, informacije o korisničkom nalogu se brišu

+ +

7. Opis dozvola aplikacije

+

U cilju pružanja boljih proizvoda i usluga, kada koristite softver, apliciraćemo za sledeća prava. Kada uđete na početnu stranicu ili koristite funkciju, zahtevaće se autorizacija. Ako odbijete, neke odgovarajuće funkcije neće moći da se koriste normalno. Specifične svrhe i podsetnici za dozvole su detaljno opisani u nastavku:

+ +

1 Dozvole za lokaciju:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

koristi WiFi ili mobilnu baznu stanicu za dobijanje informacija o geografskoj širini i dužini korisnika

+

Kada koristite Voitrans, tražićemo vaš priključeni Bluetooth uređaj na osnovu vaše geografske lokacije. Istovremeno, u cilju pružanja stabilnijih usluga, optimizacije proizvoda i poboljšanja iskustva, delićemo gore navedene informacije sa tri SDK-a, kao što su Youmon i Autonavi, da bismo dobili operativne podatke i funkcionalne usluge Voitrans-a.

+

Način podsetnika: Poruka koja ukazuje na dozvolu za pokretanje aplikacije prvi put se prikazuje, zahtevajući od korisnika da potvrdi prihvatanje. Korisnički ugovor i opis Politike privatnosti.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Ova dozvola je potrebna kada pristupite aplikaciji za obavljanje funkcija upravljanja aplikacijom.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

3 Mrežne dozvole:

+

android.permission.INTERNET

+

Kada koristite ove dozvole su potrebne za informacione usluge i usluge nadogradnje verzija Voitrans-a, a u cilju poboljšanja korisničkog iskustva i optimizacije mogućnosti usluga, SDK-ovi trećih strana kao što su Friends će takođe koristiti ove dozvole.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

4 Dozvole za dobijanje mrežnog statusa:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Koristi se za utvrđivanje da li je trenutna mrežna veza validna, određivanje da li je trenutno 4G okruženje i da li treba podsećati na promene mrežnog okruženja, čime se utiče na učitavanje informativnog sadržaja. Ova dozvola se aplicira kada koristite Voitrans.

+

Promene u statusu mreže utiču na otpremanje i učitavanje podataka. Stoga, dozvola za pristup statusu mreže biće podeljena sa prijateljima + i drugim platformama.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

5 Dozvole za dobijanje liste zadataka:

+

android.permission.GET_TASKS

+

Ova dozvola se koristi za dobijanje liste aplikacija za funkciju upravljanja softverom. Kada koristite funkciju upravljanja softverom, potrebno je čitanje aplikacija instaliranih na mobilnom telefonu.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

6 Dozvola za dobijanje MAC adrese

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Kada koristite Voitrans, aplikaciji će biti potrebne dozvole za MAC adresu:

+

Kada aplikacija treba da prijavi podatke o ciljnoj konverziji, platforme trećih strana kao što je Youmon +SDK treba da koriste MAC.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

7 Dozvola za snimanje audio zapisa

+

android.permission.RECORD_AUDIO

+

Kada koristite funkciju glasovnog unosa Voitrans-a, potrebno je koristiti dozvolu za snimanje audio zapisa, i uglavnom se koristi glasovni unos za prevod i druge povezane funkcije.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti, korisniku se dinamički prikazuje iskačući prozor kada je potrebno.

+ +

8 Dozvola za dobijanje SSID-a za WIFI

+

Kada se ova dozvola koristi, aplikacija čita SSID dozvolu za WIFI:

+

Obim korišćenja i svrha: Kada aplikacija treba da koristi usluge analize podataka, platforme trećih strana kao što je +SDK treba da čitaju „WIFI SSID dozvolu" uređaja kako bi korisnicima pružile tačnije i efikasnije funkcionalne usluge.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

9 Dobijanje Bluetooth pristupa

+

Kada se ova dozvola koristi, aplikacija čita Bluetooth dozvolu:

+

Obim korišćenja i svrha: Bluetooth uređaji za pretragu i konfigurisanje dodatne opreme, kao što su Bluetooth slušalice, Bluetooth satovi itd. Olakšava korisnicima upravljanje

+

Način podsetnika: Poruka koja ukazuje na dozvolu za pokretanje aplikacije prvi put se prikazuje, zahtevajući od korisnika da potvrdi prihvatanje. Korisnički ugovor i opis Politike privatnosti.

+ +

10 Dozvola za dobijanje BSSID-a za WiFi

+

Kada aplikacija treba da razlikuje i identifikuje korisnika za pružanje funkcionalnih usluga i statistike podataka, čitaće „WiFi BSSID" dozvolu uređaja za:

+

Obim korišćenja i svrha: 1 Platforme trećih strana: kao što su Youmeng SDK, Bugly SDK, Autonavi SDK

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

11 Dozvola za instalaciju aplikacije

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Softver će koristiti dozvolu za instalaciju aplikacije, koja se uglavnom koristi da bi se korisnicima omogućilo da instaliraju novu verziju i iskuse nove funkcije kada je dostupna nova verzija.

+

Način podsetnika: Korisnički ugovor i opis Politike privatnosti.

+ +

12 Dozvole za kameru

+

android.permission.CAMERA

+

Voitrans koristi dozvole za kameru za skeniranje QR kodova i povezivanje Bluetooth uređaja kao što su Bluetooth slušalice i satovi.

+

Način podsetnika: Poruka koja ukazuje na dozvolu za pokretanje aplikacije prvi put se prikazuje, zahtevajući od korisnika da potvrdi prihvatanje. Korisnički ugovor i opis Politike privatnosti.

+ +

Posebna napomena:

+

1 Integracija aplikacije unutar savezničkog SDK-a, Scott mapa SDK u saglasnosti korisnika da dozvoli nakon upotrebe, aplikacija u pozadini/prednjem planu za ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI i druge lične informacije;

+

Napomene: Više pogledajte sledeći sadržaj i dozvole povezane sa SDK-om [VIII. Pristup listi SDK-ova trećih strana]

+ +

8. Pristup SDK-ovima trećih strana

+

1 U cilju obezbeđivanja stabilnog rada i funkcionalne realizacije našeg klijenta, kako biste mogli da koristite i uživate u više usluga i funkcija, naša aplikacija će ugraditi komplet za razvoj softvera (SDK) ili druge slične aplikacije trećih strana, ove treće strane će prikupljati i obrađivati relevantne informacije u skladu sa sopstvenim politikama privatnosti, u cilju normalnog pružanja funkcija i usluga oglašavanja. Možete se upoznati sa pravilima prikupljanja i obrade informacija treće strane u sledećem odeljku. Izvršićemo stroge bezbednosne testove na razvojnim kompletima (SDK-ovima) za partnere za dobijanje informacija, u cilju zaštite razumne upotrebe i bezbednosti vaših ličnih informacija. Imajte na umu da SDK-ovi trećih strana mogu promeniti tipove obrade podataka zbog nadogradnje verzija. Molimo pogledajte politike privatnosti objavljene od strane SDK-ova trećih strana. Pogledajte detalje u nastavku ili kliknite da vidite listu SDK-ova trećih strana.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Dobijene informacije: Broj uređaja, IP adresa, informacije o softveru uređaja, identifikacioni kod uređaja (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM kartica IMSI informacije, IP, MAC adresa), identifikator uređaja, region, informacije o aplikacijama povezanim sa uređajem i druge log informacije povezane sa uslugom

+

Svrha korišćenja: WeChat prijava i deljenje

+

Programer: Shenzhen Tencent Computer Systems Company Limited

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Dobijene informacije: Naziv aplikacije, broj verzije aplikacije, brend i model uređaja, operativni sistem, informacije o operateru, rezolucija ekrana, informacije o senzorima (vektor, ubrzanje, pritisak, pravac, geomagnetni, žiroskop, temperatura, svetlosni senzor, NMEA signal), informacije o jačini signala uređaja

+

Svrha korišćenja: Navigacija korišćenjem Amap-a

+

Programer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Dobijene informacije: Naziv aplikacije, verzija aplikacije, brend i model uređaja, operativni sistem, mrežne informacije, jačina signala uređaja itd.

+

Svrha korišćenja: Prikaz mape i interakcija

+

Programer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Dobijene informacije: Informacije o lokaciji (GPS, Wi-Fi, bazne stanice), informacije o uređaju, mrežne informacije itd.

+

Svrha korišćenja: Pružanje usluga lokacije

+

Programer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Dobijene informacije: Naziv aplikacije, verzija aplikacije, informacije o uređaju, mrežne informacije itd.

+

Svrha korišćenja: Alati za mape i optimizacija renderovanja

+

Programer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Dobijene informacije: Identifikatori uređaja, osnovne informacije o uređaju, lista instaliranog softvera i mrežne informacije (pogledajte zvaničnu politiku privatnosti za detalje)

+

Svrha korišćenja: Alipay prijava na nalog i pozivanje plaćanja

+

Programer: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Dobijene informacije: SDK/API verzija, platforma, vremenski pečat, identifikator aplikacije, verzija aplikacije, proizvođač uređaja, verzija OS-a, lokalizacija, vremenska zona, mrežni status (Wi-Fi itd.), mrežni logovi, podaci o padovima i korišćenju, IP adresa itd. (pogledajte zvaničnu politiku privatnosti za detalje)

+

Svrha korišćenja: Praćenje kvaliteta aplikacije i usluga izveštavanja podataka

+

Programer: Shenzhen Tencent Computer Systems Company Limited

+

Metod prikupljanja: SDK samo-prikupljanje

+

Link na Politiku privatnosti: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Zaštita maloletnika

+

Korisnici naših proizvoda i usluga mogu uključivati maloletnike mlađe od 18 godina, maloletni korisnici treba da potraže savet svojih roditelja ili staratelja u vezi sa ovom Politikom privatnosti pre korišćenja naših proizvoda, i da koriste naše usluge ili pružaju nam svoje informacije nakon dobijanja saglasnosti i pod vođstvom svojih roditelja ili staratelja. Staratelji maloletnika koji imaju pitanja mogu nas kontaktirati putem kontakt podataka u ovoj Politici privatnosti.

+

Ako se ne slažete sa prikupljanjem gore navedenih informacija od strane gore navedenih pružalaca usluga trećih strana, odmah prestanite sa korišćenjem softvera. Tokom vašeg korišćenja softvera, ove treće strane će prikupljati i obrađivati relevantne informacije u skladu sa sopstvenim politikama privatnosti kako bi pružile neke funkcije, oglašavanje i druge usluge. Ako dođe do curenja informacija usled prikupljanja gore navedenih informacija od strane relevantnog pružaoca usluga treće strane, relevantni pružalac usluga treće strane snosiće odgovarajuću zakonsku odgovornost.

+ +

10. Važenje i ažuriranje Politike privatnosti

+

1. Ova Politika privatnosti je na snazi od datuma objavljivanja.

+

2. Kako se naše poslovanje razvija i menja, naša Politika privatnosti se može promeniti. Zadržavamo pravo da promenimo našu politiku privatnosti u bilo kom trenutku, pa vas molimo da redovno proveravate. Ako napravimo promene u našoj Politici privatnosti, objavićemo ta ažuriranja na našoj veb stranici, aplikacijama i gde smatramo prikladnim kako bismo vas informisali. Ako se politika privatnosti ažurira, stupiće na snagu od datuma ažuriranja. Vaše dalje korišćenje naših proizvoda ili usluga znači da se slažete sa našom promenjenom Politikom privatnosti.

+ +

11. Kako nas kontaktirati

+

Saitong Industries Inc osnovana 22. novembra 2024, registrovana adresa: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Ako želite da saznate više o našoj kompaniji i platformi, možete nas kontaktirati putem kontakt informacija navedenih u ovoj politici (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/sr/user_agreement.html b/doc/sr/user_agreement.html new file mode 100644 index 000000000..e4975e0a7 --- /dev/null +++ b/doc/sr/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans korisnički ugovor + + + +
+
Srpski
+ +

Voitrans korisnički ugovor

+ +

Ovi Uslovi korišćenja vam govore kako da pristupite i koristite Voitrans aplikaciju i onlajn usluge („Usluge"). Saitong Industries Inc. (u daljem tekstu „Saitong") ovim podseća korisnike da pažljivo pročitaju i u potpunosti razumeju ovaj Korisnički ugovor (u daljem tekstu „Ugovor"). Korisnici treba pažljivo da pročitaju i u potpunosti razumeju odredbe ovog Ugovora. Molimo vas da pažljivo pročitate i izaberete da li prihvatate ili ne prihvatate ovaj Ugovor. Vaše korišćenje Voitrans APP-a (u daljem tekstu „aplikacija" ili „softver") smatraće se prihvatanjem ovog Ugovora i saglasni ste da budete obavezani njegovim odredbama. Ako se ne slažete sa ovim Ugovorom, nemojte koristiti aplikaciju.

+

Saitong zadržava pravo da izmeni ovaj Ugovor, a ažurirane odredbe Ugovora biće objavljene u ovoj aplikaciji, sa dejstvom od datuma objavljivanja.

+ +

1. Opšta pravila

+

1.1 Ova aplikacija je softver koji Saitong obezbeđuje za povezivanje sa proizvodima slušalica koje izdaju Saitong i njegove partnerske kompanije. Vlasništvo i operativna prava softvera i povezanih usluga su u potpunosti u vlasništvu kompanije Saitong.

+

1.2 Ovaj Ugovor je ugovor između vas (u daljem tekstu „Korisnik") i kompanije i njenih partnera i operativnih partnera (u daljem tekstu „Partneri") u vezi sa korišćenjem aplikacije i povezanih usluga od strane korisnika.

+

1.3 Softver i usluge uključuju:

+

1.3.1 Softver pruža korisnicima Voitrans-a povezivanje i uparivanje sa Voitrans-om, upravljanje podešavanjima funkcija i druge softverske usluge, u zavisnosti od stvarnih softverskih usluga koje aplikacija pruža.

+

1.3.2 Ažuriranja, nadogradnje i druge usluge softvera.

+ +

2. Obim softverske licence

+

2.1 Mi dodeljujemo korisniku ličnu, neprenosivu, bez prava na podlicenciranje i neekskluzivnu licencu za softver.

+

2.2 Korisnici mogu da instaliraju, koriste, prikazuju i pokreću softver na jednom mobilnom terminalnom uređaju u nekomercijalne svrhe. Međutim, korisnik ne sme da instalira, koristi ili pokreće softver u komercijalne svrhe, kopira, menja, modifikuje, povezuje ili pokreće softver ili podatke objavljene u memoriji bilo kog terminalnog uređaja tokom rada softvera ili podatke o interakciji između klijenta i servera tokom rada softvera, niti da kreira bilo kakve derivativne proizvode. Ovo uključuje, ali nije ograničeno na, korišćenje dodataka, priključaka ili neovlašćenih alata/usluga trećih strana za pristup softveru i povezanim sistemima. Za komercijalnu prodaju, reprodukciju i distribuciju, kao što su prethodna instalacija softvera i pakovanje, mora se dobiti pisano ovlašćenje i dozvola.

+

2.3 Korisnik ne sme da instalira softver na druge terminalne uređaje bez izričite dozvole kreatora, uključujući ali ne ograničavajući se na televizore, digitalne set-top boksove, konzole za igre i druge uređaje.

+

2.4 Osim kako je izričito ovlašćeno ovim Ugovorom, korisniku se ne dodeljuju nikakva druga prava, a korisnik mora da dobije pisanu saglasnost za korišćenje drugih prava.

+ +

3. Nadogradnja softvera

+

3.1 Korisnik mora da izabere verziju softvera pogodnu za podešavanje instaliranog terminala. U suprotnom, problemi sa softverom, problemi sa uređajem ili oštećenja uzrokovana bilo kojom verzijom softvera koja nije pogodna za tip uređaja biće isključivo odgovornost korisnika.

+

3.2 U cilju poboljšanja korisničkog iskustva i unapređenja sadržaja usluga, Saitong ima pravo da vam s vremena na vreme obezbedi zamenske, modifikovane i nadograđene verzije softvera. Funkcija „Podsetnik za nadogradnju" je podrazumevano omogućena za korisnike. Nakon objavljivanja nove verzije softvera, Saitong ne garantuje dalju dostupnost stare verzije softvera.

+ +

4. Specifikacija korišćenja

+

4.1 Korisnici mogu koristiti softver i usluge u skladu sa ovim Ugovorom pod uslovom poštovanja zakona i ovog Ugovora, a korisnici ne smeju da vrše sledeće radnje:

+

4.1.1 Brisanje svih informacija o autorskim pravima na softveru i drugim kopijama, i modifikovanje, brisanje ili zaobilaženje tehničkih mera koje je softver uspostavio za zaštitu prava intelektualne svojine.

+

4.1.2 Obrnuti inženjering softvera, kao što su disasembliranje, dekompajliranje ili drugi pokušaji dobijanja izvornog koda softvera.

+

4.1.3 Modifikovanjem ili falsifikovanjem instrukcija i podataka u radu softvera, dodavanjem, brisanjem ili promenom funkcije ili efekata rada softvera, ili softverom ili metodama koji se koriste u gore navedene svrhe za rad ili širenje javnosti, bez obzira da li su ove radnje u komercijalne svrhe.

+

4.1.4 Korišćenje softvera za bilo kakvo ponašanje koje ugrožava bezbednost mreže, uključujući ali ne ograničavajući se na: korišćenje neovlašćenih podataka ili pristup neovlašćenim serverima/nalozima; pristup javnim mrežama ili drugim operativnim sistemima bez dozvole i brisanje, modifikovanje ili dodavanje sačuvanih informacija; neovlašćeni pokušaji ispitivanja, skeniranja ili testiranja slabosti sistema ili mreže softvera ili druge radnje koje potkopavaju bezbednost mreže; pokušaji ometanja ili uništavanja normalnog rada softverskog sistema ili veb sajta, namerno širenje zlonamernih programa ili virusa i druge radnje koje remete normalne usluge mrežnih informacija; falsifikovanje TCP/IP imena paketa ili delova imena.

+

4.1.6 Bez pisane saglasnosti kompanije, korisnik samovoljno vrši sledeće radnje na softveru i informacijama u njemu, uključujući ali ne ograničavajući se na: korišćenje, iznajmljivanje, pozajmljivanje, kopiranje, modifikovanje, povezivanje, preštampavanje, kompajliranje, objavljivanje, postavljanje, uspostavljanje mirror sajtova, razvoj derivativnih proizvoda, dela, usluga, dodataka, kompatibilnosti, međupovezivanja itd., uz pomoć softvera.

+

4.1.7 Korišćenje softvera za objavljivanje, slanje, distribuciju i čuvanje sadržaja koji krši vaše lokalne zakone.

+

4.1.8 Korišćenje softvera za objavljivanje, slanje, širenje i čuvanje sadržaja koji krši prava intelektualne svojine, poslovne tajne i druga legitimna prava drugih.

+

4.1.9 Korišćenje ovog softvera za masovno objavljivanje, slanje i širenje reklamnih informacija i neželjenih poruka.

+

4.1.10 Korišćenje softvera i drugih usluga na bilo koji nezakonit način, u bilo koju nezakonitu svrhu ili na bilo koji način koji nije u skladu sa licenciranim korišćenjem ovog Ugovora.

+

4.2 Specifikacija objavljivanja informacija

+

4.2.1 Ako koristite softver za objavljivanje informativnog sadržaja (ako postoji), trebalo bi da garantujete da posedujete prava intelektualne svojine na informativni sadržaj koji ste otpremili ili da ste dobili zakonsko ovlašćenje, i da nijedna vaša radnja korišćenja softvera i usluga ne krši legitimna prava i interese bilo koje treće strane.

+

4.2.2 Prilikom korišćenja softvera, korisnik ne sme da koristi softver za sledeće aktivnosti, uključujući ali ne ograničavajući se na:

+

4.2.2.1 Kreiranje, kopiranje, objavljivanje, širenje i čuvanje sadržaja koji krši lokalne nacionalne zakone i propise.

+

4.2.2.2 Objavljivanje, slanje, širenje i čuvanje sadržaja koji krši zakonska prava drugih, kao što su ugled, portret, prava intelektualne svojine i poslovne tajne.

+

4.2.2.3 Izmišljanje činjenica, skrivanje istine u cilju dovođenja u zabludu ili obmanjivanja drugih.

+

4.2.2.4 Objavljivanje, slanje i širenje reklamnih informacija i neželjenih poruka.

+

4.2.2.5 Učestvovanje u drugim radnjama koje krše lokalne zakone i propise.

+

4.2.3 Ne smete da obavljate nikakve komercijalne aktivnosti kao što su reklamiranje i prodaja robe u softveru bez dozvole kompanije.

+

4.3 Korisnik razume i saglasan je da:

+

4.3.1 Saitong će utvrditi da li se korisnik sumnja da krši gore navedene specifikacije korišćenja, i prema rezultatima utvrđivanja, suspendovati ili ukinuti vašu licencu za korišćenje ili preduzeti druge restriktivne mere koje se mogu preduzeti u skladu sa ovim Ugovorom.

+

4.3.2 Informacije objavljene korišćenjem licenciranog softvera za koje se sumnja da su nezakonite ili da krše zakonska prava drugih ili da krše ovaj Ugovor biće direktno obrisane.

+

4.3.3 Ako kršenje gore navedenih pravila korišćenja od strane korisnika nanese štetu trećim stranama, morate da snosite zakonsku odgovornost samostalno u svoje ime i treba da osigurate da kompanija bude oslobođena gubitaka ili povećanih troškova.

+

4.3.4 Ako korisnik prekrši relevantne zakonske odredbe ili ugovore, uzrokujući gubitke za Saitong, ili je podložan zahtevima trećih strana, ili je kažnjen od strane administrativnog organa, korisnik treba da nadoknadi gubitak i/ili troškove nastale za Saitong, uključujući razumne advokatske naknade, troškove istrage i prikupljanja dokaza.

+ +

5. Opis usluga trećih strana

+

5.1 Korisnik razume i saglasan je da softverski sistem može sadržati usluge koje pružaju povezana društva kompanije ili treće strane, i da kompanija samo obezbeđuje relevantne funkcionalne module u sistemu za pogodnost korisnika i pruža pristup uslugama trećih strana.

+

5.2 Bez obzira da li su usluge trećih strana unapred podešene u uslugama softverskog sistema, ili su ih korisnici sami otvorili ili naručili, korisnici razumeju i saglasni su da Saitong ne daje nikakve izričite ili podrazumevane garancije ili jemstva za zakonitost i delotvornost pružalaca usluga trećih strana ili korisnika, kao i za zakonitost, tačnost, delotvornost i bezbednost usluga trećih strana.

+

5.3 Kompanija ne nadzire, ne kontroliše niti pruža bilo kakvu garanciju ili jemstvo bilo koje vrste za, niti preuzima bilo kakvu odgovornost za, usluge trećih strana.

+

5.4 Svaki spor ili neslaganje između korisnika i pružaoca usluga treće strane rešavaće korisnik i treća strana u skladu sa poslovnim procesom i poslovnim normama pružaoca usluga treće strane, a kompanija ne snosi nikakvu odgovornost.

+ +

6. Politika privatnosti i zaštita ličnih podataka

+

6.1 Saitong je posvećen zaštiti privatnosti korisnika u skladu sa politikom privatnosti, molimo pogledajte: Voitrans Politika privatnosti.

+ +

7. Odgovornost za kršenje ugovora

+

7.1 Saitong ima pravo da proceni da li je ponašanje korisnika u skladu sa odredbama ovog Ugovora. Ako se smatra da je korisnik prekršio relevantne zakone i propise ili odredbe ovog Ugovora i povezanih pravila, u zavisnosti od težine kršenja korisnika, Saitong ima pravo da obriše nezakonite informacije, ograniči, suspenduje, ukine korišćenje softverske usluge od strane korisnika, pokrene zakonsku odgovornost korisnika i preduzme druge mere koje Saitong smatra prikladnim. Ako pretrpimo bilo kakav gubitak (uključujući ali ne ograničavajući se na primanje zahteva trećih strana ili kazni od bilo kog administrativnog odeljenja), korisnik snosi punu odgovornost.

+ +

8. Rizici usluge i odricanje od odgovornosti

+

8.1 Želimo da pružimo podršku uslugama sa trenutnom tehnologijom. Saitong ne garantuje da će softverska usluga raditi bez prekida ili grešaka, da će svi nedostaci softverske usluge biti ispravljeni ili da će softverska usluga ispuniti sve zahteve korisnika. Saitong ne preuzima nikakvu odgovornost za nastale posledice.

+

8.2 Svi gubici koje korisnik pretrpi usled trećih strana kao što su kvar komunikacione linije, tehnički problemi, mrežni, računarski i terminalni kvar opreme, nestabilnost sistema i drugi uzroci više sile neće biti predmet odgovornosti.

+

8.3 Saitong ne garantuje zakonitost, autentičnost, tačnost i delotvornost informativnog sadržaja dobijenog putem softvera (uključujući ali ne ograničavajući se na sadržaj usluga trećih strana), i Saitong ne preuzima nikakvu odgovornost za rezultate bilo kakvog ponašanja korisnika na osnovu upita i pregleda.

+

8.4 Softver, kao i većina internet softvera, podleže razlikama u faktorima uključujući ali ne ograničavajući se na razloge korisnika, kvalitet mrežne usluge, društveno okruženje i druge faktore, i može biti izložen raznim bezbednosnim problemima, kao što je korišćenje korisničkih informacija od strane drugih, što dovodi do uznemiravanja u stvarnom životu; drugi softver koji korisnici preuzimaju i instaliraju ili drugi veb sajtovi koje korisnici posećuju sadrže viruse poput „trojanskih konja", koji prete bezbednosti informacija i podataka terminalnog uređaja korisnika, što zatim utiče na normalno korišćenje softvera. Korisnici treba da pojačaju svest o bezbednosti informacija i zaštiti korisničkih podataka i obrate pažnju na jačanje zaštite lozinkom kako bi izbegli gubitke i uznemiravanje.

+

8.5 Kada korisnici koriste softver ili zahtevaju od Saitonga da pruži specifične usluge, softver može pozvati sisteme ili softver trećih strana za podršku korišćenja ili pristupa korisnika, a rezultate korišćenja ili pristupa obezbeđuje treća strana. Pored poštovanja relevantnih pravila ovog Ugovora, korisnici takođe treba da poštuju ugovore i relevantna pravila treće strane. Korisnici moraju da razumeju i prihvate da, prilikom korišćenja usluga trećih strana, treće strane mogu čitati korisničke podatke, i Saitong ne garantuje bezbednost, tačnost, delotvornost i druge neizvesne rizike rezultata postignutih podrškom sistema ili softvera trećih strana, korisnici treba da budu oprezni u proceni, a Saitong ne preuzima nikakvu odgovornost za bilo kakve sporove i štete nastale usled toga.

+

8.6 U cilju garantovanja autonomije poslovnog razvoja i prilagođavanja kompanije, kompanija može izmeniti ili prekinuti uslugu u bilo kom trenutku nakon obaveštavanja korisnika na razuman način.

+

8.7 Osim kako je izričito predviđeno zakonima i propisima, Saitong će uložiti najveće napore da obezbedi da softver i uključena tehnologija i informacije budu bezbedni, efikasni, tačni i pouzdani, ali ograničeni postojećom tehnologijom, korisnik razume da Saitong to ne može garantovati.

+

8.8 Naknadu za lične povrede ili slučajnu i indirektnu ekonomsku štetu uzrokovanu ili u vezi sa bilo kojom od sledećih okolnosti, uključujući ali ne ograničavajući se na gubitak profita, gubitak podataka, odštetu za prekid poslovanja ili drugu poslovnu štetu ili gubitke, snosi korisnik:

+

1) Korišćenje ili nemogućnost korišćenja licenciranog softvera.

+

2) Neovlašćeno korišćenje softvera ili izmena korisničkih podataka od strane trećih strana.

+

3) Troškovi i gubici nastali radnjama korisnika sa softverom.

+

4) Pogrešna shvatanja korisnika o softveru.

+

5) Bilo koji drugi gubitak povezan sa softverom koji se ne može pripisati uzrocima kompanije Saitong.

+

8.9 Korisnik se slaže da kompanija ima pravo da suspenduje, prekine ili ukine celokupnu ili deo usluge korisniku na osnovu zahteva sudskih, regulatornih i nadzornih organa ili sopstvenih poslovnih razloga. Saitong ne prihvata nikakvu odgovornost za ovo.

+

8.10 Korisnik razume i saglasan je da će kompanija koristiti komercijalno razumne napore da obezbedi bezbednost skladištenja podataka u softveru i uslugama, ali kompanija ne može da pruži potpunu garanciju, i korisnik razume da kompanija nije odgovorna za brisanje ili čuvanje ili neuspeh rezervne kopije podataka u usluzi.

+

8.11 U najvećoj meri dozvoljenoj zakonom, programer ili dobavljač neće biti odgovoran za bilo kakvu direktnu, indirektnu, slučajnu, posebnu ili posledičnu štetu nastalu korišćenjem aplikacije. Ako korisnik ima dodatne potrebe, molimo posetite redovnu bolnicu radi detaljnog testiranja.

+ +

9. Izjava o intelektualnoj svojini

+

9.1 Saitong je nosilac prava intelektualne svojine ovog softvera. Sva autorska prava, žigovi, patenti, poslovne tajne i druga prava intelektualne svojine softvera, kao i sav informativni sadržaj povezan sa softverom (uključujući ali ne ograničavajući se na tekst, slike, audio, video, grafiku, dizajn interfejsa, okvir rasporeda, relevantne podatke ili elektronska dokumenta itd.) zaštićeni su lokalnim zakonima i propisima i odgovarajućim međunarodnim ugovorima.

+

9.2 Bez pisane saglasnosti kompanije, korisnik ne sme da implementira, koristi ili prenese gore navedena prava intelektualne svojine u bilo koje komercijalne ili nekomercijalne svrhe, niti da dozvoli bilo kojoj trećoj strani, a kompanija zadržava pravo da pokrene zakonsku odgovornost za gore navedene radnje.

+ +

10. Izmena ugovora

+

10.1 Saitong ima pravo da izmeni odredbe ovog Ugovora kada je to potrebno. Kada se odredbe Ugovora promene, revidirane odredbe Ugovora biće objavljene na relevantnoj stranici. Ako se ne slažete sa promenjenim sadržajem, korisnik treba da preuzme inicijativu da otkaže ovu uslugu. Ako korisnik nastavi da koristi usluge, smatra se da prihvata promene u odredbama Ugovora.

+

10.2 Saitong zadržava pravo da po potrebi izmeni ili promeni plaćene usluge, standarde naplaćivanja, načine naplaćivanja, naknade za usluge i uslove pružanja usluga. Prilikom pružanja usluga, možemo naplatiti određene naknade korisnicima nekih usluga sada ili u budućnosti. Ako korisnici odbiju da plate takve naknade, ne mogu nastaviti da koriste relevantne usluge nakon početka naplaćivanja.

+
+ + diff --git a/doc/sv/privacy_policy.html b/doc/sv/privacy_policy.html new file mode 100644 index 000000000..f4151cd79 --- /dev/null +++ b/doc/sv/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Integritetspolicy + + + + +
+

Voitrans Integritetspolicy

+

Senast uppdaterad: 27 maj 2025

+

Ikraftträdandedatum: 27 maj 2025

+ +

Välkommen att använda Voitrans programvara och tjänster

+

1. Voitrans tillhandahålls av Saitong Industries Inc. (nedan kallat "Företaget"). Det kan hjälpa användare att hantera Bluetooth-enheter och andra produkter. Vi förstår vikten av personlig information för våra användare (nedan kallade "du") och att ett effektivt skydd av din personliga information är grunden för en hälsosam och hållbar utveckling av vår verksamhet. Tack för din användning och ditt förtroende för Voitrans produkter eller tjänster! Vi är fullt medvetna om att detta förtroende inte kommer lätt, vi håller fast vid principen om öppenhet och transparens, för att uttrycka för dig våra regler för behandling av din personliga information, vi använder lagliga och legitima metoder och tydliga och rimliga syften för att behandla din personliga information. Särskilt meddelande: Var noga med att läsa och förstå denna Integritetspolicy noggrant innan du använder våra produkter eller tjänster så att du kan göra lämpliga val.

+

2. Denna Integritetspolicy förklarar för dig hur vi samlar in, använder, lagrar och delar din personliga information när du använder Voitrans. Personlig information avser alla typer av information som registreras elektroniskt eller på annat sätt och som kan identifiera en specifik fysisk person eller återspegla aktiviteterna hos en specifik fysisk person ensam eller i kombination med annan information. Voitrans respekterar och skyddar den personliga integriteten för alla användare av tjänsten. Förutom vad som anges i denna Integritetspolicy kommer Voitrans inte att avslöja denna information för allmänheten eller tillhandahålla den till tredje part utan ditt förhandstillstånd.

+

3. När du använder en tredje parts produkt eller tjänst genom en App Marketplace-produkt eller -tjänst ska din personliga information omfattas av den tredje partens integritetspolicy.

+

4. Voitrans denna Integritetspolicy kommer att uppdateras från tid till annan. Genom att godkänna Voitrans tjänsteanvändningsavtal och börja använda Voitrans anses du ha godkänt hela denna Integritetspolicy. Om du inte godkänner denna Integritetspolicy, vänligen använd inte Voitrans programvara och tjänster.

+

5. För att analysera och mäta effektiviteten av relevanta tjänster kommer vi att använda och avslöja din personliga information i enlighet med bestämmelserna i denna Integritetspolicy.

+ +

Denna Integritetspolicy hjälper dig att förstå följande:

+
    +
  • 1 Den information vi samlar in
  • +
  • 2 Lagring av information
  • +
  • 3 Informationssäkerhet
  • +
  • 4 Hur vi använder den information vi samlar in
  • +
  • 5 Informationsdelning
  • +
  • 6 Hur du hanterar din personliga information
  • +
  • 7 Beskrivning av applikationsbehörigheter
  • +
  • 8 Åtkomst till tredjeparts-SDK:er
  • +
  • 9 Skydd av minderåriga
  • +
  • 10 Giltig och uppdaterad Integritetspolicy
  • +
  • 11 Hur du kontaktar oss
  • +
+ +

1. Den information vi samlar in

+

1. Använda Voitrans i början Vi börjar samla in data om din användning av applikationen

+

2. Voitrans kan erhålla personlig information om dig från tredje part eller affärspartners genom lagliga medel

+

3. För att ge dig bättre produkter och tjänster, ge dig nätverkssäkerhet under användningen, upprätthålla normal drift av produkter och optimera och förbättra, syftet med våra informationstjänster, efter att du aktivt klickat för att godkänna denna integritetspolicy, använd den information vi tillhandahåller. Under tjänsten, förutom den personliga information som är nödvändig för att säkerställa normal drift av Appens grundläggande funktioner i enlighet med nationella lagar och förordningar, kommer vi att samla in annan personlig information från dig:

+

3.1 För att identifiera riskfyllda användare, bedöma användares äkthet och förhindra fusk på ett heltäckande sätt, kommer vi att läsa din enhetsinformation varje gång du öppnar programvaran, inklusive: (Enhetsmodell, enhetens MAC-adress, enhetens unika identifierare (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serienummer, SSID och BSSID för WIFI), läsa Bluetooth-adress, operativsystemversion, operativsystemnamn, användarens inloggningskonto och lösenordsinformation;

+

3.2 När du använder våra produkter och tjänster kan vi samla in viss information genom nätverkslogginformation eller vissa program och programvara, sådan information kan inkludera: detaljer om användningen av produkter och tjänster, som öppningstiden för din applikation, användningslängden och adressen till den besökta sidan; Enhetshändelseinformation, såsom krascher, systemaktivitet etc., för att optimera din enhet och förbättra våra tjänster;

+

3.3 För att identifiera applikationer där utrustning löper risk, tillhandahålla säkrare funktionella tjänster. Därför behöver vi få din applikations-/applikationsinstallationslista under processen för att säkerställa normal drift av produkten och skydda enhetens säkerhet.

+

3.4 För att analysera användningen av applikationsfunktioner av användare och avgöra användares äkthet behöver vi genomföra datastatistik och samla in ovan nämnda enhetsinformation, inklusive enhetens MAC-adress och enhetens unika identifierare, när din enhet används.

+

3.5 Enhetssignal: nätverksstatusen för enheten du använder, WIFI-åtkomstpunktsinformation etc.

+

3.6 Platsinformation: Vi kan använda GPS, WiFi eller andra tekniska medel för att samla in och bearbeta information om din plats för att uppdatera lokal information, tillhandahålla innehållstjänster etc.

+

För mer information, klicka på "Lista över insamling av personlig information".

+ +

1. För den mer känsliga personliga informationen i ovan nämnda information, såsom användarenhetsinformation (IMEI-nummer, samtalsstatus och identifikationsnummer), GPS-platsinformation, fotomediainnehåll och filåtkomsträttigheter, kommer vi att inhämta ditt samtycke innan insamlingen. För viss icke-känslig information kan insamlingen vara standard och automatisk. Du kan begränsa vår insamling av relevant information eller användning av vissa behörigheter från din mobila enhet genom att justera inställningsalternativet för din mobila enhet. När du begränsar vår åtkomst till en viss behörighet kanske vi inte kan fortsätta att tillhandahålla dig motsvarande tjänster, och inte längre behandla din motsvarande information.

+

2. Vi kommer inte att samla in ditt ID-kortnummer, personlig biometrisk information, bankkontonummer, egendomsinformation, kreditinformation, hälso- och fysiologisk information och annan personlig känslig information.

+

3. Om känsliga behörigheter: För att korrekt använda applikationsfunktionerna behöver produkten erhålla följande behörigheter för att tillhandahålla funktionella tjänster relaterade till normala produkter.

+ +

1 Erhålla läs- och skrivbehörigheter för lagring

+

1 Hur man erhåller: popup-meddelande, när behörigheten erhålls kommer användaren att aktivt klicka på godkänna så att applikationen använder denna behörighet

+

2 Syfte och användningsomfång: Används för att skanna resurscachefiler och miniatyrbilder i systemet, ladda musikresurser och produktbilder. Det visas i App-gränssnittet för att underlätta för användare att visa och hantera

+ +

2 Erhålla behörighet till applikationsinstallationslistan

+

1 Hur man erhåller: popup-meddelande, när behörigheten erhålls kommer användaren att aktivt klicka på godkänna så att applikationen använder denna behörighet

+

2 Syfte och användningsomfång: När applikationen behöver använda reklamtjänster behöver tredjepartsreklamplattformen, Youmon +SDK, erhålla enhetens "behörighet för appinstallationslista" för att förhindra att användaren får applikationer som användaren redan äger och förbättra användarupplevelsen.

+ +

3 Behörigheten att erhålla enhetsstatusinformation

+

Inkluderar: (Enhetsmodell, enhetens MAC-adress, enhetens unika identifierare (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serienummer, SSID och BSSID för WIFI, läsa Bluetooth-adress), operativsystemversion, operativsystemnamn etc.;

+

1 Hur man erhåller: popup-meddelande, när behörigheten erhålls kommer användaren att aktivt klicka på godkänna så att applikationen använder denna behörighet

+

2 Syfte och användningsomfång: När du använder vår applikation, för att analysera användarens användning av applikationsfunktioner och bedöma användarens äkthet, kommer vi att synkronisera behörigheten till tredjeparts-SDK:er, inklusive Autonavi SDK, Youmon +SDK etc.

+ +

4 Åtkomst till platsinformation

+

1 Hur man erhåller: popup-meddelanden, när behörigheten erhålls kommer användaren att använda denna behörighet först när hen aktivt klickar på godkänna i applikationen.

+

2 Syfte och användningsomfång: När applikationen behöver använda GPS, WiFi eller andra funktioner behöver produkten samla in din plats och information för att söka efter Bluetooth-enheter i närliggande platser.

+

Obs: För fler applikationsbehörigheter, se detta dokument "Integritetspolicy" Avsnitt 7 "Beskrivning av applikationsbehörigheter"

+ +

2. Lagring av information

+

1. Var informationen lagras

+

Den personliga information vi samlar in och genererar i Folkrepubliken Kina kommer att lagras på våra servrar och/eller våra dotterbolags servrar.

+

2. Informationslagring och -bearbetning

+

Vi lagrar din personliga information endast under den period som är nödvändig för att uppnå syftet eller så länge som krävs av lag och förordning. Efter att du slutar använda denna produkt kommer vi omedelbart att sluta samla in och behandla din personliga information och applikationsdata. När ovan nämnda period överskrids kommer vi att radera eller anonymisera den personliga information du har tillhandahållit oss.

+

Förutom de nödvändiga funktionerna behöver Voitrans ansöka om motsvarande systembehörigheter. Servern i molnet lagrar inte användarens personliga information, och det åtkomna tredjeparts-SDK:et kommer att anonymiseras och avidentifieras av tjänsteleverantören (Amu Statistics SDK, Autonavi SDK), så att användare inte kan spåras. Information som lagras på användarens telefon raderas automatiskt när användaren avinstallerar Voitrans eller rensar cachen.

+ +

3. Informationssäkerhet

+

1. Voitrans lagrar och skyddar din personliga information med branschstandard säkerhetsåtgärder och tekniker, såsom autentisering, datakryptering, begränsad åtkomst till datacenter och andra säkerhetsåtgärder för att säkerställa att din information är skyddad mot avslöjande, ändring och förstörelse. Trots ovannämnda säkerhetsåtgärder, observera att ingen säkerhetsåtgärd kan vara 100% säker.

+

2. När du använder de tjänster som tillhandahålls av Voitrans, vänligen skydda din personliga information. Om du upptäcker att din personliga information har komprometterats, vänligen kontakta oss omedelbart så att vi kan vidta lämpliga åtgärder.

+ +

4. Hur vi använder den information vi samlar in

+

1. Vid implementering av applikationens affärsfunktioner kan vi använda din personliga information för att säkerställa integriteten och säkerheten hos de produkter och tjänster vi tillhandahåller dig;

+

2. Vi kommer att förstå dina användningsvanor genom den insamlade informationen och med hjälp av dataanalys identifiera tjänsternas acceptabilitet, dina användningsvanor etc., för att testa och skapa nya produkter, funktioner och tjänster, förbättra servicenivån och hjälpa oss att förbättra befintliga tjänster och utveckla nya tjänster;

+

3. Vi kan använda din personliga information för kundundersökningar om produkterna och tjänsterna, för att skicka meddelanden om produkterna och tjänsterna och för kommersiell marknadsföring;

+

4. Vi kan använda din information för intern analys och forskning relaterad till applikationen;

+ +

5. Informationsdelning

+

För närvarande kommer vi inte att aktivt dela eller överföra din personliga information till tredje part utanför företaget. Om det sker annan delning eller överföring av din personliga information kommer vi direkt eller bekräfta att den tredje parten har erhållit ditt uttryckliga samtycke till ovan nämnda beteende.

+

Vi kommer inte att offentligt avslöja den personliga information vi samlar in. Om det är nödvändigt att offentligt avslöja den, kommer vi att informera dig om syftet med det offentliga avslöjandet, typen av information som avslöjas och den känsliga information som kan vara involverad, och inhämta ditt uttryckliga samtycke.

+

I takt med att vår verksamhet fortsätter att utvecklas kan vi delta i sammanslagningar, förvärv, tillgångsöverföringar och andra transaktioner, och vi kommer att informera dig om de relevanta omständigheterna, i enlighet med lagar och förordningar och inte lägre än de standarder som krävs av denna Guide för att fortsätta skydda din personliga information eller kräva att en ny styrenhet fortsätter att skydda din personliga information.

+

Dessutom, enligt relevanta lagar och förordningar och nationella standarder, kan vi dela, överföra och offentligt avslöja personlig information utan förhandsgodkännande och samtycke från den personliga informationens registrerade under följande omständigheter:

+
    +
  • 1 Direkt relaterat till nationell säkerhet och försvarsäkerhet;
  • +
  • 2 Direkt relaterat till allmän säkerhet, folkhälsa eller stora offentliga intressen;
  • +
  • 3 Direkt relaterat till brottsutredning, åtal, rättegång och verkställande av domar;
  • +
  • 4 För att skydda den personliga dataregistrerades eller andra individers liv, egendom och andra stora legitima rättigheter och intressen, men det är svårt att erhålla personens samtycke;
  • +
  • 5 Personlig information som avslöjats för allmänheten av den personliga informationens registrerade;
  • +
  • 6 Insamling av personlig information från lagligt offentligt avslöjad information, såsom legitima nyhetsrapporter, offentliggörande av myndighetsinformation och andra kanaler.
  • +
+ +

6. Hur du hanterar din personliga information

+

I enlighet med relevanta lagar, förordningar och standarder i Kina, samt vanlig praxis i andra länder och regioner, garanterar vi att du utövar följande rättigheter avseende din personliga information:

+ +

1. Korrigera din personliga information

+

Om du upptäcker att det finns ett fel i din personliga information som behandlats av oss, har du rätt att korrigera eller uppdatera den felaktiga eller ofullständiga informationen. Om du inte kan agera självständigt i kontocentret kan du skicka e-post till saitong.voitrans@gmail.com Kontakta oss

+ +

2. Radera din personliga information

+

I följande fall kan du begära att vi raderar din personliga information:

+
    +
  • Om vi behandlar personlig information i strid med lagar och förordningar;
  • +
  • Om vi samlar in och använder din personliga information utan ditt samtycke;
  • +
  • Om vår behandling av personlig information bryter mot vårt avtal med dig;
  • +
  • Om du inte längre använder våra produkter eller tjänster;
  • +
  • Om vi inte längre tillhandahåller dig produkter eller tjänster.
  • +
+

Kontakta oss. Vi behandlar din begäran inom saitong.voitrans@gmail.com Kontakta oss. Vi skickar den till dig efter mottagning 30 arbetsdagars mottagning

+ +

3. Ändra omfattningen av ditt samtycke

+

Du kan kontakta oss via e-post saitong.voitrans@gmail.com Kontakta oss. På din begäran kommer vi inte längre att samla in, använda eller avslöja din personliga information. Observera att ditt återkallande av samtycke eller radering av din personliga information kan påverka din användning av några av våra tjänster.

+ +

4 Åtkomst till och kopiering av personlig information

+

Du kan, i enlighet med bestämmelserna i relevanta lagar, tillhandahålla ditt imei (telefons serienummer) eller oaid Eller Android ID Efter kontoinformationen och annan information kan du ansöka till oss om åtkomst till och kopiering av din personliga information, du kan skicka e-post till 3514406195@qq.com Kontakta oss.

+ +

5. Som svar på din ovan nämnda begäran

+

Av säkerhetsskäl kan du behöva lämna in en skriftlig begäran eller på annat sätt bevisa din identitet. Vi kan be dig att verifiera din identitet innan vi behandlar din begäran. För din rimliga begäran kommer vi att svara och hantera den i tid. Vi kan avvisa begäranden som är onödigt repetitiva, kräver för mycket teknik (till exempel utveckling av nya system eller grundläggande förändringar av befintlig praxis), utgör en risk för andras legitima intressen eller är mycket opraktiska.

+

Under följande omständigheter kommer vi, enligt kraven i lagar och förordningar, inte att kunna svara på din begäran:

+
    +
  • Relaterat till nationell säkerhet och försvarssäkerhet;
  • +
  • I samband med brottsutredning, åtal och rättegång;
  • +
  • Det finns tillräckliga bevis för att du har subjektiv illvilja eller missbruk av rättigheter;
  • +
  • Att svara på din begäran kommer att orsaka allvarlig skada på de legitima rättigheterna och intressena för dig eller andra individer och organisationer.
  • +
+ +

6. Kontoavslutning

+

Användare kan utföra [kontoavslutning] i APP:en. Operationssteg:

+
    +
  1. Gå till sidan [Min]
  2. +
  3. Klicka på knappen [Inställningar] uppe till höger
  4. +
  5. Klicka på [Avsluta konto] för att bekräfta
  6. +
+

Efter att du har loggat ut rensas informationen om användarkontot

+ +

7. Beskrivning av applikationsbehörigheter

+

För att tillhandahålla bättre produkter och tjänster, när du använder programvaran, kommer vi att ansöka om följande behörigheter. När du går in på startsidan eller använder funktionen kommer auktorisering att begäras. Om du nekar kommer vissa av de motsvarande funktionerna inte att kunna användas normalt. De specifika syftena och påminnelserna för behörigheter beskrivs i detalj nedan:

+ +

1 Platsbehörigheter:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

via WiFi eller mobilbasstation för att erhålla användarens latitud- och longitudplatsinformation

+

När du använder Voitrans kommer vi att söka efter din anslutna Bluetooth-enhet baserat på din geografiska plats. Samtidigt, för att tillhandahålla stabilare tjänster, optimera produkter och förbättra upplevelsen, kommer vi att dela ovan nämnda information med tre SDK:er, som Youmon och Autonavi, för att erhålla Voitrans driftsdata och funktionella tjänster.

+

Påminnelseläge: Ett meddelande som anger behörigheten att starta applikationen för första gången visas, som kräver att användaren bekräftar godkännande. Användaravtal och Integritetspolicybeskrivning.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Denna behörighet krävs när du öppnar en applikation för att utföra applikationshanteringsfunktioner.

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning.

+ +

3 Nätverksbehörigheter:

+

android.permission.INTERNET

+

När du använder dessa behörigheter krävs de för Voitrans informationstjänster och versionsuppgraderingstjänster, och för att förbättra användarupplevelsen och optimera tjänstekapaciteten kommer tredjeparts-SDK:er som Friends också att använda dessa behörigheter.

+

Påminnelseläge: Användaravtal och Integritetspolicybeskrivning.

+ +

4 Erhålla nätverksstatusbehörigheter:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Används för att erhålla om den aktuella nätverksanslutningen är giltig, avgöra om den aktuella 4G-miljön är, och om nätverksmiljöändringar ska meddelas, vilket påverkar laddningen av informationsinnehåll. Denna behörighet ansöks om när du använder Voitrans.

+

Förändringar i nätverkets status påverkar uppladdning och laddning av data. Därför kommer åtkomst till nätverksstatusbehörighet att delas med friends + och andra plattformar.

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning.

+ +

5 Erhålla behörigheter för uppgiftslista:

+

android.permission.GET_TASKS

+

Denna behörighet används för att erhålla applikationslistan för programvaruhanteringsfunktionen. När du använder programvaruhanteringsfunktionen behöver du läsa de applikationer som är installerade på mobiltelefonen.

+

Påminnelseläge: Användaravtal och Integritetspolicybeskrivning.

+ +

6 Erhålla MAC-adressbehörighet

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

När du använder Voitrans kommer applikationen att behöva erhålla MAC-adressbehörigheter:

+

När en applikation behöver rapportera målkonverteringsdata behöver tredjepartsplattformar som Youmon +SDK använda MAC.

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning.

+ +

7 Erhålla behörighet att spela in ljud

+

android.permission.RECORD_AUDIO

+

När du använder röstinmatningsfunktionen i Voitrans behöver du använda behörigheten att spela in ljud, och använder huvudsakligen röstinmatning för översättning och andra relaterade funktioner.

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning, användaren får dynamiskt popup-ruta vid behov.

+ +

8 Erhålla SSID-behörighet för WIFI

+

När denna behörighet används läser appen SSID-behörigheten för WIFI:

+

Användningsomfång och syfte: När applikationen behöver använda dataanalystjänster behöver tredjepartsplattformar som +SDK läsa enhetens "WIFI SSID-behörighet" för att ge användare mer exakta och effektiva funktionella tjänster.

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning.

+ +

9 Erhålla Bluetooth-åtkomst

+

När denna behörighet används läser appen Bluetooth-behörigheten:

+

Användningsomfång och syfte: Bluetooth-enheter för sökning och konfiguration av tillbehör, som Bluetooth-headset, Bluetooth-klockor etc. Enkelt för användare att hantera

+

Påminnelsemetod: Ett meddelande som anger behörigheten att starta applikationen för första gången visas, som kräver att användaren bekräftar godkännande. Användaravtal och Integritetspolicybeskrivning.

+ +

10 Erhålla BSSID-behörigheten för WiFi

+

När applikationen behöver särskilja och identifiera användaren för att tillhandahålla funktionella tjänster och datastatistik, kommer den att läsa enhetens "WiFi BSSID"-behörighet för:

+

Användningsomfång och syfte: 1 Tredjepartsplattformar: som Youmeng SDK, Bugly SDK, Autonavi SDK

+

Påminnelsemetod: Användaravtal och Integritetspolicybeskrivning.

+ +

11 Erhålla applikationsinstallationsbehörigheten

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Programvaran kommer att använda applikationsinstallationsbehörigheten, som huvudsakligen används för att låta användare installera en ny version och uppleva nya funktioner när det finns en ny version.

+

Påminnelseläge: Användaravtal och Integritetspolicybeskrivning.

+ +

12 Erhålla behörigheter för kameran

+

android.permission.CAMERA

+

Voitrans använder kamerabehörigheter för att skanna QR-koder och binda Bluetooth-enheter som Bluetooth-headset och klockor.

+

Påminnelsemetod: Ett meddelande som anger behörigheten att starta applikationen för första gången visas, som kräver att användaren bekräftar godkännande. Användaravtal och Integritetspolicybeskrivning.

+ +

Särskild anmärkning:

+

1 Applikationsintegration inom deras Allies SDK, Scott map SDK efter att användaren samtyckt till att tillåta användning, applikation i bakgrund/förgrund för ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI och annan personlig information;

+

Anmärkning: Mer Se följande SDK-relaterade innehåll och behörigheter [VIII. Åtkomst till tredjeparts SDK-lista]

+ +

8. Åtkomst till tredjeparts-SDK:er

+

1 För att säkerställa stabil drift och funktionsimplementering av vår klient, så att du kan använda och njuta av fler tjänster och funktioner, kommer vår applikation att vara inbäddad i programvaruverktygutvecklingspaket (SDK) eller andra liknande applikationer från tredje part, dessa tredje parter kommer att samla in och behandla relevant information i enlighet med sina egna integritetspolicyer, för att normalt tillhandahålla funktioner och reklamtjänster. Du kan lära dig om informationsinsamlings- och behandlingsreglerna för tredje part i följande avsnitt. Vi kommer att genomföra strikta säkerhetstester på utvecklingspaket (SDK:er) för partners att erhålla information, för att skydda rimlig användning och säkerhet för din personliga information. Observera att tredjeparts-SDK:er kan ändra databehandlingstyperna på grund av sina versionsuppgraderingar. Se de integritetspolicyer som publicerats av tredjeparts-SDK:er. Se detaljerna nedan eller klicka för att visa Tredjeparts SDK-listan.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Erhållen information: Enhetsnummer, IP-adress, enhetsprogramvaruinformation, enhetsidentifieringskod (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM-kort IMSI-information, IP, MAC-adress), enhetsidentifierare, region, enhetsrelaterad applikationsinformation och annan tjänsterelaterad logginformation

+

Användningssyfte: WeChat-inloggning och delning

+

Utvecklare: Shenzhen Tencent Computer Systems Company Limited

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Erhållen information: Applikationsnamn, applikationsversion, enhetsmärke och modell, operativsystem, operatörsinformation, skärmupplösning, sensorinformation (vektor, acceleration, tryck, riktning, geomagnetisk, gyroskop, temperatur, ljussensor, NMEA-signal), enhetens signalstyrkeinformation

+

Användningssyfte: Navigation med Amap

+

Utvecklare: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Erhållen information: Applikationsnamn, applikationsversion, enhetsmärke och modell, operativsystem, nätverksinformation, enhetens signalstyrka etc.

+

Användningssyfte: Kartvisning och interaktion

+

Utvecklare: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Erhållen information: Platsinformation (GPS, Wi-Fi, basstation), enhetsinformation, nätverksinformation etc.

+

Användningssyfte: Tillhandahålla platstjänster

+

Utvecklare: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Erhållen information: Applikationsnamn, applikationsversion, enhetsinformation, nätverksinformation etc.

+

Användningssyfte: Kartverktyg och renderingsoptimering

+

Utvecklare: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Erhållen information: Enhetsidentifierare, grundläggande enhetsinformation, installerad programvarulista och nätverksinformation (se officiell integritetspolicy för detaljer)

+

Användningssyfte: Alipay-kontoinloggning och betalningsanrop

+

Utvecklare: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Erhållen information: SDK/API-version, plattform, tidsstämpel, appidentifierare, appversion, enhetstillverkare, OS-version, lokalt format, tidszon, nätverksstatus (Wi-Fi etc.), nätverksloggar, krasch- och användningsdata, IP-adress etc. (se officiell integritetspolicy för detaljer)

+

Användningssyfte: Appkvalitetsövervakning och datarapporteringstjänst

+

Utvecklare: Shenzhen Tencent Computer Systems Company Limited

+

Insamlingsmetod: SDK-egen insamling

+

Länk till integritetspolicy: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Skydd av minderåriga

+

Användare av våra produkter och tjänster kan inkludera minderåriga under 18 år. Minderåriga användare bör söka råd från sina föräldrar eller vårdnadshavare angående denna Integritetspolicy innan de använder våra produkter, och använda våra tjänster eller tillhandahålla din information till oss efter att ha erhållit samtycke från och under vägledning av sina föräldrar eller vårdnadshavare. Vårdnadshavare för minderåriga som har frågor kan kontakta oss via kontaktuppgifterna i denna Integritetspolicy.

+

Om du inte samtycker till insamlingen av ovan nämnda information av ovan nämnda tredjepartstjänsteleverantörer, vänligen sluta använda Programvaran omedelbart. Under din användning av Programvaran kommer dessa tredje parter att samla in och behandla relevant information i enlighet med sina egna integritetspolicyer för att tillhandahålla vissa funktioner, reklam och andra tjänster. Om informationen läcker ut på grund av insamlingen av ovan nämnda information av den relevanta tredjepartstjänsteleverantören ska den relevanta tredjepartstjänsteleverantören bära motsvarande juridiskt ansvar.

+ +

10. Giltig och uppdaterad Integritetspolicy

+

1. Denna Integritetspolicy gäller från publiceringsdatumet.

+

2. I takt med att vår verksamhet utvecklas och förändras kan vår Integritetspolicy ändras. Vi förbehåller oss rätten att ändra vår integritetspolicy när som helst, så kontrollera gärna ofta. Om vi gör ändringar i vår Integritetspolicy kommer vi att publicera dessa uppdateringar på vår webbplats, i appar och där vi anser det lämpligt för att hålla dig informerad. Om integritetspolicyn uppdateras träder den i kraft från uppdateringsdatumet. Din fortsatta användning av våra produkter eller tjänster innebär att du godkänner vår ändrade Integritetspolicy.

+ +

11. Hur du kontaktar oss

+

Saitong Industries Inc grundades den 22 november 2024, registrerad adress: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Om du vill veta mer om vårt företag och vår plattform kan du kontakta oss via den kontaktinformation som anges i denna policy (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/sv/user_agreement.html b/doc/sv/user_agreement.html new file mode 100644 index 000000000..66e4ef230 --- /dev/null +++ b/doc/sv/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans Användaravtal + + + +
+
Svenska
+ +

Voitrans Användaravtal

+ +

Dessa användarvillkor beskriver hur du får tillgång till och använder Voitrans-applikationen och onlinetjänster ("Tjänsterna"). Saitong Industries Inc. (nedan kallat "Saitong") uppmanar härmed användare att noggrant läsa och fullt ut förstå detta Användaravtal (nedan kallat "Avtalet"). Användare bör noggrant läsa och fullt ut förstå villkoren i detta Avtal. Vänligen läs noggrant och välj att acceptera eller inte acceptera detta Avtal. Din användning av Voitrans APP (nedan kallat "Appen" eller "Programvaran") kommer att betraktas som ett godkännande av detta Avtal och du samtycker till att vara bunden av villkoren i detta Avtal. Om du inte samtycker till detta Avtal, använd inte Appen.

+

Saitong förbehåller sig rätten att ändra detta Avtal, och de uppdaterade villkoren i Avtalet kommer att publiceras i denna APP, med verkan från publiceringsdatumet.

+ +

1. Allmänna regler

+

1.1 Denna APP är programvaran som tillhandahålls av Saitong för att ansluta headsetprodukter som släppts av Saitong och dess partnerföretag. Äganderätten och driftsrättigheterna för programvaran och relaterade tjänster tillhör helt Saitong.

+

1.2 Detta Avtal är ett avtal mellan dig (nedan kallad "Användaren") och företaget och dess partners och samarbetspartners (nedan kallade "Partners") angående användarens användning av Appen och relaterade tjänster.

+

1.3 Programvaran och tjänsterna inkluderar:

+

1.3.1 Den tillhandahållna programvaran erbjuder Voitrans-användare anslutning och bindning av Voitrans, funktionsinställningshantering och andra programvarutjänster, beroende på de faktiska programvarutjänster som tillhandahålls av Appen.

+

1.3.2 Uppdateringar, uppgraderingar och andra tjänster för programvaran.

+ +

2. Omfattning av programvarulicens

+

2.1 Vi beviljar användaren en personlig, icke-överlåtbar, icke-underlicensierbar och icke-exklusiv licens till Programvaran.

+

2.2 Användare kan installera, använda, visa och köra programvaran på en enskild mobil terminalenhet för icke-kommersiella ändamål. Användaren får dock inte installera, använda eller köra programvaran för kommersiella ändamål, kopiera, ändra, modifiera, ansluta eller köra programvaran eller de data som lagras i minnet på någon terminalenhet under programvarans drift eller interaktionsdata mellan klienten och servern under programvarans drift, eller skapa några härledda verk. Detta inkluderar, men är inte begränsat till, användning av insticksprogram, tillägg eller obehöriga tredjepartsverktyg/tjänster för att få tillgång till Programvaran och relaterade system. För kommersiell försäljning, reproduktion och distribution, såsom programvaruförinstallation och paketering, måste skriftligt tillstånd och godkännande erhållas från Saitong.

+

2.3 Användaren får inte installera Programvaran på andra terminalenheter utan uttryckligt tillstånd från Saitong, inklusive men inte begränsat till TV-apparater, digitala digitalboxar, spelkonsoler och andra enheter.

+

2.4 Förutom vad som uttryckligen godkänts av detta Avtal beviljas inga andra rättigheter till Användaren, och Användaren ska erhålla skriftligt samtycke för att använda andra rättigheter.

+ +

3. Programvaruuppgradering

+

3.1 Användaren måste välja den programvaruversion som är lämplig för den installerade terminalens konfiguration. I annat fall ska eventuella programvaruproblem, enhetsproblem eller skador orsakade av en programvaruversion som inte är lämplig för enhetstypen vara användarens eget ansvar.

+

3.2 För att förbättra användarupplevelsen och förbättra tjänsteinnehållet har Saitong rätt att från tid till annan tillhandahålla ersättnings-, ändrings- och uppgraderingsversioner av programvaran. Funktionen "Uppgraderingspåminnelse" är aktiverad som standard för användare. Beroende på de olika programvaruversionerna som används av användare ger Saitong användare möjlighet att aktivera denna funktion. Efter lanseringen av en ny version av programvaran garanterar Saitong inte fortsatt tillgänglighet av den gamla versionen av programvaran.

+ +

4. Användningsspecifikation

+

4.1 Användare får använda Programvaran och Tjänsterna i enlighet med detta Avtal under förutsättning att de följer lagen och detta Avtal, och användare ska inte utföra följande handlingar:

+

4.1.1 Radera all upphovsrättsinformation på Programvaran och andra kopior, och modifiera, radera eller kringgå de tekniska åtgärder som Programvaran har inrättat för att skydda immateriella rättigheter.

+

4.1.2 Omvända utveckling av Programvaran, såsom disassemblering, dekompilering eller andra försök att erhålla Programvarans källkod.

+

4.1.3 Genom att modifiera eller förfalska instruktioner och data i programvarans drift, lägga till, radera eller ändra programvarans funktion eller driftseffekt, eller programvara eller metoder som ska användas för ovan nämnda ändamål för att driva eller sprida till allmänheten, oavsett om dessa handlingar sker i kommersiella syften.

+

4.1.4 Använda programvaran för beteende som äventyrar nätverkssäkerheten, inklusive men inte begränsat till: använda obehörig data eller komma åt obehöriga servrar/konton; komma åt offentliga nätverk eller andra operativsystem utan tillstånd och radera, ändra eller lägga till lagrad information; obehöriga försök att sondera, skanna eller testa svagheterna i programvarans system eller nätverk eller andra handlingar som undergräver nätverkssäkerheten; försök att störa eller förstöra den normala driften av programvarusystemet eller webbplatsen, avsiktligt sprida skadliga program eller virus och andra handlingar som stör normala nätverksinformationstjänster; förfalskning av TCP/IP-paketnamn eller delar av namn.

+

4.1.6 Utan skriftligt samtycke från Företaget utför användaren godtyckligt följande handlingar med programvaran och informationen i den, inklusive men inte begränsat till: använda, hyra ut, låna ut, kopiera, modifiera, länka, trycka om, kompilera, publicera, utge, upprätta spegelsajter, utveckla härledda produkter, verk, tjänster, insticksprogram, tillägg, kompatibilitet, sammankoppling etc., med hjälp av Programvaran.

+

4.1.7 Använda Programvaran för att publicera, överföra, distribuera och lagra innehåll som bryter mot dina lokala lagar.

+

4.1.8 Använda programvaran för att publicera, överföra, sprida och lagra innehåll som gör intrång i andras immateriella rättigheter, affärshemligheter och andra legitima rättigheter.

+

4.1.9 Använda denna programvara för att publicera, överföra och sprida reklaminformation och skräpinformation i stora mängder.

+

4.1.10 Använda Programvaran och andra Tjänster på något olagligt sätt, för något olagligt ändamål eller på något sätt som inte överensstämmer med den licensierade användningen av detta Avtal.

+

4.2 Specifikation för informationspublicering

+

4.2.1 Om du använder programvaran för att publicera informationsinnehåll (om tillämpligt) bör du garantera att du äger de immateriella rättigheterna till det informationsinnehåll som du har laddat upp eller har erhållit lagligt tillstånd, och att inget av ditt beteende vid användning av programvaran och tjänsterna gör intrång i de legitima rättigheterna och intressena hos någon tredje part.

+

4.2.2 Vid användning av Programvaran ska användaren inte använda Programvaran för att delta i följande aktiviteter, inklusive men inte begränsat till:

+

4.2.2.1 Skapa, kopiera, publicera, sprida och lagra innehåll som bryter mot lokala nationella lagar och förordningar.

+

4.2.2.2 Publicera, överföra, sprida och lagra innehåll som gör intrång i andras lagliga rättigheter såsom rykte, porträtt, immateriella rättigheter och affärshemligheter.

+

4.2.2.3 Fabricera fakta, dölja sanningen för att vilseleda eller lura andra.

+

4.2.2.4 Publicera, överföra och sprida reklaminformation och skräpinformation.

+

4.2.2.5 Delta i andra handlingar som bryter mot lokala lagar och förordningar.

+

4.2.3 Du får inte bedriva några kommersiella aktiviteter såsom reklam och försäljning av varor i Programvaran utan tillstånd från Företaget.

+

4.3 Användaren förstår och samtycker till att:

+

4.3.1 Saitong kommer att avgöra om användaren misstänks bryta mot ovan nämnda användningsspecifikationer, och baserat på resultaten av bedömningen tillfälligt upphäva eller avsluta din licens att använda eller vidta andra restriktiva åtgärder som kan vidtas i enlighet med detta avtal.

+

4.3.2 För användarens användning av den licensierade programvaran som publicerats misstänkt olaglig eller misstänkt intrång i andras lagliga rättigheter eller brott mot detta Avtal, kommer informationen att raderas direkt.

+

4.3.3 Om användarens brott mot ovan nämnda användningsregler orsakar skada för tredje part, måste du bära juridiskt ansvar självständigt i ditt eget namn, och du bör säkerställa att Saitong befrias från förluster eller ökade kostnader.

+

4.3.4 Om användaren bryter mot relevanta lagbestämmelser eller avtal, vilket orsakar förluster för Saitong, eller utsätts för krav från tredje part, eller bestraffas av administrativ myndighet, ska användaren kompensera de förluster och/eller utgifter som orsakats Saitong, inklusive rimliga advokatkostnader, utrednings- och bevissamlingskostnader.

+ +

5. Beskrivning av tredjepartstjänster

+

5.1 Användaren förstår och samtycker till att programvarusystemet kan innehålla tjänster som tillhandahålls av Företagets dotterbolag eller tredje parter, och att Företaget endast tillhandahåller relevanta funktionsmoduler i systemet för användarnas bekvämlighet och ger tillgång till tredjepartstjänster.

+

5.2 Oavsett om tredjepartstjänsterna är förinställda i programvarusystemets tjänster, eller öppnas eller beställs av användarna själva, förstår och samtycker användarna till att Saitong inte lämnar någon uttrycklig eller underförstådd garanti för lagligheten och effektiviteten hos tredjepartstjänsteleverantörerna eller användarna, samt lagligheten, noggrannheten, effektiviteten och säkerheten hos tredjepartstjänsterna.

+

5.3 Företaget övervakar, kontrollerar eller tillhandahåller inte någon garanti av något slag för, eller tar något ansvar för, tredjepartstjänster.

+

5.4 Alla tvister eller meningsskiljaktigheter mellan användaren och tredjepartstjänsteleverantören ska lösas av Användaren och tredje parten i enlighet med tredjepartstjänsteleverantörens affärsprocess och affärsnormer, och företaget ska inte ta något ansvar.

+ +

6. Integritetspolicy och skydd av personuppgifter

+

6.1 Saitong åtar sig att skydda användarnas integritet i enlighet med integritetspolicyn, vänligen se: Voitrans Integritetspolicy.

+ +

7. Ansvar för avtalsbrott

+

7.1 Saitong har rätt att bedöma om användarens beteende överensstämmer med bestämmelserna i detta Avtal. Om det anses att Användaren har brutit mot relevanta lagar och förordningar eller bestämmelserna i detta Avtal och relaterade regler, har Saitong, beroende på allvarlighetsgraden av användarens överträdelse, rätt att radera den olagliga informationen, begränsa, tillfälligt upphäva, avsluta användarens användning av Programvarutjänsten, ställa användaren till juridiskt ansvar och vidta andra åtgärder som Saitong anser lämpliga. Om vi lider någon förlust (inklusive men inte begränsat till mottagande av krav från tredje part eller påföljder från någon administrativ myndighet), ska Användaren vara fullt ansvarig.

+ +

8. Tjänsterisker och ansvarsfriskrivningar

+

8.1 Vi vill tillhandahålla servicestöd med nuvarande teknik. Saitong garanterar inte att Programvarutjänsten kommer att fungera utan avbrott eller fel, att alla brister i Programvarutjänsten kommer att korrigeras, eller att Programvarutjänsten kommer att uppfylla alla användares krav. Saitong tar inget ansvar för de resulterande konsekvenserna.

+

8.2 Alla förluster som användaren lider på grund av tredje parter såsom kommunikationslinjefel, tekniska problem, nätverk, dator terminalutrustningsfel, systeminstabilitet och andra orsaker av force majeure ska inte hållas ansvariga.

+

8.3 Saitong garanterar inte lagligheten, äktheten, noggrannheten och effektiviteten hos det informationsinnehåll som erhållits genom programvaran (inklusive men inte begränsat till tredjepartstjänsteinnehåll), och Saitong tar inget ansvar för resultaten av något beteende som användare har baserat på förfrågan och visning.

+

8.4 Programvaran, liksom de flesta internetprogramvaror, påverkas av skillnader i faktorer inklusive men inte begränsat till användarorsaker, nätverkstjänstkvalitet, social miljö och andra faktorer, och kan utsättas för olika säkerhetsproblem, såsom att andra använder användarinformation, vilket resulterar i trakasserier i verkliga livet; annan programvara som laddats ner och installerats av användare eller andra webbplatser som besökts av användare innehåller virus som "trojanska hästar", som hotar säkerheten för användarnas terminalutrustningsinformation och data, och sedan påverkar den normala användningen av programvaran. Användare bör stärka medvetenheten om informationssäkerhet och skydd av användardata, och vara uppmärksamma på att förstärka lösenordsskyddet för att undvika förlust och trakasserier.

+

8.5 När användare använder Programvaran eller kräver att Saitong tillhandahåller specifika tjänster kan Programvaran anropa tredjepartssystem eller tredjepartsprogramvara för att stödja användarnas användning eller åtkomst, och resultaten av användning eller åtkomst tillhandahålls av tredje parten. Förutom att följa de relevanta reglerna i detta Avtal ska användare också följa avtal och relaterade regler från tredje parten. Användare måste förstå och samtycka till att, vid användning av tredjepartstjänster, tredje parter kan läsa användardata, och Saitong garanterar inte säkerheten, noggrannheten, effektiviteten och andra osäkra risker med de resultat som uppnås genom tredjepartssystem eller tredjepartsprogramvarustöd, användare bör utöva noggrann bedömning, och Saitong tar inget ansvar för tvister och skador som orsakas av detta.

+

8.6 För att garantera företagets självständighet i affärsutveckling och anpassning kan företaget ändra eller avbryta tjänsten när som helst efter att ha meddelat användaren på ett rimligt sätt.

+

8.7 Om inte annat uttryckligen föreskrivs i lagar och förordningar kommer Saitong att göra sitt bästa för att säkerställa att programvaran och den teknik och information som ingår är säker, effektiv, korrekt och tillförlitlig, men begränsad av befintlig teknik förstår användaren att Saitong inte kan garantera detta.

+

8.8 Ersättning för personskada eller tillfällig och indirekt ekonomisk skada orsakad av eller i samband med någon av följande omständigheter, inklusive men inte begränsat till utebliven vinst, förlust av data, skadestånd för affärsavbrott eller andra affärsskador eller förluster, ska bäras av Användaren:

+

1) Användning eller oförmåga att använda den licensierade programvaran.

+

2) Obehörig användning av programvaran eller ändring av användardata av tredje part.

+

3) Utgifter och förluster som uppstår genom användarens handlingar med programvaran.

+

4) Användarens missuppfattningar om programvaran.

+

5) Alla andra förluster relaterade till programvaran som inte är hänförliga till orsaker från Saitong.

+

8.9 Användaren samtycker till att Företaget har rätt att tillfälligt upphäva, avbryta eller avsluta alla eller delar av Tjänsten till användaren baserat på krav från rättsliga, regulatoriska och tillsynsmyndigheter eller av egna affärsskäl. Saitong tar inget ansvar för detta.

+

8.10 Användaren förstår och samtycker till att Företaget kommer att använda kommersiellt rimliga ansträngningar för att säkerställa säkerheten vid datalagring i Programvaran och Tjänsterna, men företaget kan inte ge en fullständig garanti, och Användaren förstår att Företaget inte ansvarar för radering eller lagrings- eller säkerhetskopieringsfel av data i Tjänsten.

+

8.11 I den utsträckning som tillåts enligt lag ska Utvecklaren eller Leverantören inte vara ansvarig för några direkta, indirekta, tillfälliga, speciella eller följdskador som uppstår genom användningen av Applikationen. Om användaren har ytterligare behov, vänligen uppsök ett legitimt sjukhus för djupgående testning.

+ +

9. Uttalande om immateriella rättigheter

+

9.1 Saitong är innehavare av de immateriella rättigheterna till denna programvara. Alla upphovsrätter, varumärken, patent, affärshemligheter och andra immateriella rättigheter för programvaran, samt allt informationsinnehåll relaterat till programvaran (inklusive men inte begränsat till text, bilder, ljud, video, grafik, gränssnittsdesign, layoutramar, relevant data eller elektroniska dokument, etc.) skyddas av lokala lagar och förordningar och motsvarande internationella fördrag.

+

9.2 Utan skriftligt samtycke från Företaget ska Användaren inte implementera, utnyttja eller överföra ovan nämnda immateriella rättigheter för något kommersiellt eller icke-kommersiellt ändamål, eller tillåta någon tredje part, och Företaget förbehåller sig rätten att ställa krav på juridiskt ansvar för ovan nämnda handlingar.

+ +

10. Ändring av avtal

+

10.1 Saitong har rätt att ändra villkoren i detta Avtal vid behov. När villkoren i Avtalet ändras kommer de reviderade villkoren i Avtalet att publiceras på den relevanta sidan. Om du inte samtycker till det ändrade innehållet bör användaren ta initiativ till att avbryta denna tjänst. Om Användaren fortsätter att använda Tjänsterna anses det att denne accepterar ändringarna i Avtalets villkor.

+

10.2 Saitong förbehåller sig rätten att vid behov ändra eller ändra de betaltjänster, debiteringsstandarder, debiteringsmetoder, serviceavgifter och tjänstevillkor som tillhandahålls. Vid tillhandahållande av tjänster kan vi ta ut vissa avgifter av användare av vissa tjänster nu eller i framtiden. Om användare vägrar att betala sådana avgifter kan de inte fortsätta att använda de relevanta tjänsterna efter att avgifterna börjat tillämpas.

+
+ + diff --git a/doc/th/privacy_policy.html b/doc/th/privacy_policy.html new file mode 100644 index 000000000..4d70ad6f0 --- /dev/null +++ b/doc/th/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + นโยบายความเป็นส่วนตัวของ Voitrans + + + + +
+

นโยบายความเป็นส่วนตัวของ Voitrans

+

อัปเดตล่าสุด: 27 พฤษภาคม 2025

+

วันที่มีผลบังคับใช้: 27 พฤษภาคม 2025

+ +

ยินดีต้อนรับสู่การใช้งานซอฟต์แวร์และบริการ Voitrans

+

1. Voitrans ให้บริการโดย Saitong Industries Inc. (ต่อไปนี้เรียกว่า “บริษัท”) ซึ่งช่วยให้ผู้ใช้สามารถจัดการอุปกรณ์บลูทูธและผลิตภัณฑ์อื่น ๆ ได้ เราเข้าใจถึงความสำคัญของข้อมูลส่วนบุคคลต่อผู้ใช้ของเรา (ต่อไปนี้เรียกว่า “คุณ”) และการคุ้มครองข้อมูลส่วนบุคคลอย่างมีประสิทธิภาพคือรากฐานของการพัฒนาธุรกิจอย่างมั่นคงและยั่งยืน ขอบคุณที่เลือกใช้และไว้วางใจผลิตภัณฑ์หรือบริการของ Voitrans เราตระหนักดีว่าความไว้วางใจนี้ได้มายาก เราจึงยึดหลักความเปิดเผยและความโปร่งใส เพื่ออธิบายกฎเกณฑ์ในการประมวลผลข้อมูลส่วนบุคคลของคุณ และใช้วิธีการที่ชอบด้วยกฎหมายและมีวัตถุประสงค์ที่ชัดเจนและสมเหตุสมผลในการประมวลผลข้อมูลส่วนบุคคล หมายเหตุสำคัญ: โปรดอ่านและทำความเข้าใจนโยบายความเป็นส่วนตัวฉบับนี้อย่างละเอียดก่อนใช้ผลิตภัณฑ์หรือบริการของเรา เพื่อให้คุณสามารถตัดสินใจได้อย่างเหมาะสม

+

2. นโยบายความเป็นส่วนตัวฉบับนี้อธิบายวิธีที่เราเก็บรวบรวม ใช้ จัดเก็บ และแบ่งปันข้อมูลส่วนบุคคลของคุณเมื่อคุณใช้ Voitrans “ข้อมูลส่วนบุคคล” หมายถึงข้อมูลทุกประเภทที่บันทึกด้วยวิธีทางอิเล็กทรอนิกส์หรือวิธีอื่นใด ซึ่งสามารถระบุตัวบุคคลธรรมดาได้ หรือสะท้อนกิจกรรมของบุคคลธรรมดาได้ ไม่ว่าจะโดยลำพังหรือเมื่อรวมกับข้อมูลอื่น Voitrans เคารพและคุ้มครองความเป็นส่วนตัวของผู้ใช้บริการทุกคน เว้นแต่มีข้อกำหนดไว้เป็นอย่างอื่นในนโยบายนี้ เราจะไม่เปิดเผยข้อมูลดังกล่าวต่อสาธารณะหรือให้แก่บุคคลที่สามโดยไม่ได้รับอนุญาตจากคุณล่วงหน้า

+

3. เมื่อคุณใช้ผลิตภัณฑ์หรือบริการของบุคคลที่สามผ่านผลิตภัณฑ์หรือบริการของ App Marketplace ข้อมูลส่วนบุคคลของคุณจะอยู่ภายใต้นโยบายความเป็นส่วนตัวของบุคคลที่สามนั้น

+

4. นโยบายความเป็นส่วนตัวของ Voitrans อาจมีการปรับปรุงเป็นครั้งคราว เมื่อคุณยอมรับข้อตกลงการใช้งานบริการของ Voitrans และเริ่มใช้งาน Voitrans จะถือว่าคุณยอมรับนโยบายความเป็นส่วนตัวฉบับนี้ทั้งหมด หากคุณไม่ยอมรับนโยบายนี้ โปรดอย่าใช้ซอฟต์แวร์และบริการของ Voitrans

+

5. เพื่อวิเคราะห์และประเมินประสิทธิภาพของบริการที่เกี่ยวข้อง เราอาจใช้และเปิดเผยข้อมูลส่วนบุคคลของคุณตามที่ระบุไว้ในนโยบายความเป็นส่วนตัวฉบับนี้

+ +

นโยบายความเป็นส่วนตัวฉบับนี้จะช่วยให้คุณเข้าใจสิ่งต่อไปนี้:

+
    +
  • 1 ข้อมูลที่เราเก็บรวบรวม
  • +
  • 2 การจัดเก็บข้อมูล
  • +
  • 3 ความปลอดภัยของข้อมูล
  • +
  • 4 เราใช้ข้อมูลที่เก็บรวบรวมอย่างไร
  • +
  • 5 การแบ่งปันข้อมูล
  • +
  • 6 คุณจัดการข้อมูลส่วนบุคคลของคุณได้อย่างไร
  • +
  • 7 คำอธิบายสิทธิ์ของแอป
  • +
  • 8 การเข้าถึง SDK ของบุคคลที่สาม
  • +
  • 9 การคุ้มครองผู้เยาว์
  • +
  • 10 ผลใช้บังคับและการอัปเดตนโยบายความเป็นส่วนตัว
  • +
  • 11 วิธีติดต่อเรา
  • +
+ +

1. ข้อมูลที่เราเก็บรวบรวม

+

1. เมื่อคุณเริ่มใช้ Voitrans เราจะเริ่มเก็บรวบรวมข้อมูลเกี่ยวกับการใช้งานแอปของคุณ

+

2. Voitrans อาจได้รับข้อมูลส่วนบุคคลเกี่ยวกับคุณจากบุคคลที่สามหรือพันธมิตรทางธุรกิจผ่านช่องทางที่ชอบด้วยกฎหมาย

+

3. เพื่อมอบผลิตภัณฑ์และบริการที่ดียิ่งขึ้น ให้ความปลอดภัยทางเครือข่ายระหว่างการใช้งาน รักษาการทำงานตามปกติของผลิตภัณฑ์ และปรับปรุงให้เหมาะสม ภายหลังจากที่คุณคลิกยอมรับนโยบายความเป็นส่วนตัวนี้ เราอาจเก็บรวบรวมข้อมูลส่วนบุคคลอื่นเพิ่มเติมจากคุณ นอกเหนือจากข้อมูลส่วนบุคคลที่จำเป็นเพื่อให้ฟังก์ชันพื้นฐานของแอปทำงานได้ตามกฎหมายและข้อกำหนดที่เกี่ยวข้อง ดังนี้:

+

3.1 เพื่อระบุผู้ใช้ที่มีความเสี่ยง ประเมินความถูกต้องของผู้ใช้ และป้องกันการทุจริตอย่างรอบด้าน เราจะอ่านข้อมูลอุปกรณ์ของคุณทุกครั้งที่คุณเปิดซอฟต์แวร์ ซึ่งรวมถึง: (รุ่นอุปกรณ์ ที่อยู่ MAC ของอุปกรณ์ ตัวระบุเฉพาะของอุปกรณ์ (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID เป็นต้น) MEID หมายเลขซีเรียล SSID และ BSSID ของ Wi‑Fi) การอ่านที่อยู่บลูทูธ เวอร์ชันระบบปฏิบัติการ ชื่อระบบปฏิบัติการ ข้อมูลบัญชีเข้าสู่ระบบและรหัสผ่านของผู้ใช้

+

3.2 เมื่อคุณใช้ผลิตภัณฑ์และบริการของเรา เราอาจเก็บรวบรวมข้อมูลบางประเภทผ่านบันทึกเครือข่ายหรือโปรแกรม/ซอฟต์แวร์บางอย่าง ข้อมูลดังกล่าวอาจรวมถึง: รายละเอียดการใช้งานผลิตภัณฑ์และบริการ เช่น เวลาเปิดแอป ระยะเวลาการใช้งาน และที่อยู่ของหน้าที่เข้าชม; ข้อมูลเหตุการณ์ของอุปกรณ์ เช่น การแครช กิจกรรมของระบบ เป็นต้น เพื่อเพิ่มประสิทธิภาพอุปกรณ์ของคุณและปรับปรุงบริการของเรา

+

3.3 เพื่อระบุแอปที่ทำให้อุปกรณ์มีความเสี่ยง และให้บริการด้านความปลอดภัยที่มากขึ้น เราจึงจำเป็นต้องได้รับ “รายการแอป/รายการแอปที่ติดตั้ง” เพื่อให้ผลิตภัณฑ์ทำงานได้ตามปกติและคุ้มครองความปลอดภัยของอุปกรณ์

+

3.4 เพื่อวิเคราะห์การใช้งานฟังก์ชันของแอปและประเมินความถูกต้องของผู้ใช้ เราจำเป็นต้องทำสถิติข้อมูล และจะเก็บรวบรวมข้อมูลอุปกรณ์ข้างต้น รวมถึงที่อยู่ MAC ของอุปกรณ์และตัวระบุเฉพาะของอุปกรณ์ ระหว่างที่อุปกรณ์ของคุณกำลังใช้งาน

+

3.5 สัญญาณอุปกรณ์: สถานะเครือข่ายของอุปกรณ์ที่คุณใช้ ข้อมูลจุดเชื่อมต่อ Wi‑Fi เป็นต้น

+

3.6 ข้อมูลตำแหน่งที่ตั้ง: เราอาจใช้ GPS, Wi‑Fi หรือวิธีทางเทคนิคอื่น ๆ เพื่อเก็บรวบรวมและประมวลผลข้อมูลตำแหน่งที่ตั้งของคุณสำหรับการอัปเดตข้อมูลท้องถิ่น การให้บริการเนื้อหา เป็นต้น

+

สำหรับข้อมูลเพิ่มเติม โปรดคลิก “รายการการเก็บรวบรวมข้อมูลส่วนบุคคล”

+ +

1. สำหรับข้อมูลส่วนบุคคลที่มีความอ่อนไหวมากขึ้นตามรายการข้างต้น เช่น ข้อมูลอุปกรณ์ของผู้ใช้ (หมายเลข IMEI สถานะการโทร และหมายเลขระบุตัวตน) ข้อมูลตำแหน่งจาก GPS เนื้อหาสื่อรูปภาพ และสิทธิ์การเข้าถึงไฟล์ เราจะขอความยินยอมจากคุณก่อนการเก็บรวบรวม สำหรับข้อมูลที่ไม่อ่อนไหวบางประเภท การเก็บรวบรวมอาจเป็นค่าเริ่มต้นและเป็นอัตโนมัติ คุณสามารถจำกัดการเก็บรวบรวมข้อมูลที่เกี่ยวข้องหรือการใช้สิทธิ์บางอย่างได้ผ่านการตั้งค่าบนอุปกรณ์มือถือของคุณ เมื่อคุณจำกัดการเข้าถึงสิทธิ์บางอย่าง เราอาจไม่สามารถให้บริการที่เกี่ยวข้องแก่คุณต่อไปได้ และจะไม่ประมวลผลข้อมูลที่เกี่ยวข้องของคุณอีก

+

2. เราจะไม่เก็บรวบรวมหมายเลขบัตรประชาชน ข้อมูลชีวภาพส่วนบุคคล หมายเลขบัญชีธนาคาร ข้อมูลทรัพย์สิน ข้อมูลเครดิต ข้อมูลสุขภาพและสรีรวิทยา และข้อมูลส่วนบุคคลที่มีความอ่อนไหวอื่น ๆ ของคุณ

+

3. เกี่ยวกับสิทธิ์ที่มีความอ่อนไหว: เพื่อให้ใช้งานฟังก์ชันของแอปได้อย่างถูกต้อง ผลิตภัณฑ์จำเป็นต้องขอสิทธิ์ต่อไปนี้เพื่อให้บริการฟังก์ชันที่เกี่ยวข้องกับการทำงานตามปกติของผลิตภัณฑ์

+ +

1 ขอรับสิทธิ์อ่านและเขียนที่เก็บข้อมูล

+

1 วิธีการได้รับ: แสดงหน้าต่างป๊อปอัป เมื่อขอสิทธิ์ ผู้ใช้จะกด “ยอมรับ” ด้วยตนเอง จากนั้นแอปจะใช้สิทธิ์นี้

+

2 วัตถุประสงค์และขอบเขตการใช้งาน: ใช้สแกนไฟล์แคชทรัพยากรและภาพย่อในระบบ โหลดทรัพยากรเพลงและรูปภาพของผลิตภัณฑ์ และแสดงในหน้าแอปเพื่อให้ผู้ใช้ดูและใช้งานได้สะดวก

+ +

2 ขอรับสิทธิ์เข้าถึงรายการแอปที่ติดตั้ง

+

1 วิธีการได้รับ: แสดงหน้าต่างป๊อปอัป เมื่อขอสิทธิ์ ผู้ใช้จะกด “ยอมรับ” ด้วยตนเอง จากนั้นแอปจะใช้สิทธิ์นี้

+

2 วัตถุประสงค์และขอบเขตการใช้งาน: เมื่อแอปจำเป็นต้องใช้บริการส่งเสริมการโฆษณา แพลตฟอร์มโฆษณาบุคคลที่สาม (Youmon +SDK) จำเป็นต้องได้รับ “สิทธิ์เข้าถึงรายการแอปที่ติดตั้ง” ของอุปกรณ์ เพื่อหลีกเลี่ยงการแนะนำแอปที่ผู้ใช้มีอยู่แล้วและยกระดับประสบการณ์ผู้ใช้

+ +

3 สิทธิ์ในการเข้าถึงข้อมูลสถานะอุปกรณ์

+

Includes: (Device model, device MAC address, device unique identifier (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, etc.) MEID, serial number, SSID and BSSID of WIFI, read Bluetooth address), operating system version, operating system name, etc.;

+

1 วิธีการได้รับ: แสดงหน้าต่างป๊อปอัป เมื่อขอสิทธิ์ ผู้ใช้จะกด “ยอมรับ” ด้วยตนเอง จากนั้นแอปจะใช้สิทธิ์นี้

+

2 วัตถุประสงค์และขอบเขตการใช้งาน: ระหว่างการใช้งานแอปของเรา เพื่อวิเคราะห์การใช้งานฟังก์ชันและประเมินความถูกต้องของผู้ใช้ เราอาจส่งต่อสิทธิ์ดังกล่าวให้กับ SDK ของบุคคลที่สาม รวมถึง Autonavi SDK, Youmon +SDK เป็นต้น

+ +

4 การเข้าถึงข้อมูลตำแหน่งที่ตั้ง

+

1 วิธีการได้รับ: แสดงหน้าต่างป๊อปอัป เมื่อขอสิทธิ์ ผู้ใช้จะใช้สิทธิ์นี้ก็ต่อเมื่อกด “ยอมรับ” ด้วยตนเอง

+

2 วัตถุประสงค์และขอบเขตการใช้งาน: เมื่อแอปจำเป็นต้องใช้ GPS, Wi‑Fi หรือฟังก์ชันอื่น ๆ ผลิตภัณฑ์จำเป็นต้องเก็บรวบรวมตำแหน่งและข้อมูลของคุณเพื่อค้นหาอุปกรณ์บลูทูธที่อยู่ใกล้เคียง

+

หมายเหตุ: สำหรับสิทธิ์อื่น ๆ ของแอป โปรดดูเอกสาร “นโยบายความเป็นส่วนตัว” ส่วนที่ 7 “คำอธิบายสิทธิ์ของแอป”

+ +

2. การจัดเก็บข้อมูล

+

1. สถานที่จัดเก็บข้อมูล

+

ข้อมูลส่วนบุคคลที่เราเก็บรวบรวมและสร้างขึ้นภายในสาธารณรัฐประชาชนจีนจะถูกจัดเก็บไว้บนเซิร์ฟเวอร์ของเราและ/หรือของบริษัทในเครือ

+

2. การจัดเก็บและการประมวลผลข้อมูล

+

เราจะจัดเก็บข้อมูลส่วนบุคคลของคุณเฉพาะในระยะเวลาที่จำเป็นต่อการบรรลุวัตถุประสงค์ หรือเท่าที่กฎหมายและข้อบังคับกำหนด หลังจากที่คุณหยุดใช้ผลิตภัณฑ์นี้ เราจะหยุดเก็บรวบรวมและประมวลผลข้อมูลส่วนบุคคลและข้อมูลของแอปของคุณทันที เมื่อพ้นระยะเวลาดังกล่าว เราจะลบหรือทำให้ข้อมูลส่วนบุคคลที่คุณให้ไว้เป็นข้อมูลนิรนาม

+

นอกเหนือจากฟังก์ชันที่จำเป็น Voitrans จำเป็นต้องขอสิทธิ์ของระบบที่เกี่ยวข้อง ฝั่งเซิร์ฟเวอร์ของคลาวด์จะไม่จัดเก็บข้อมูลส่วนบุคคลของผู้ใช้ และ SDK ของบุคคลที่สามที่เราเข้าถึงจะถูกทำให้เป็นข้อมูลนิรนามและลบตัวระบุโดยผู้ให้บริการ (Amu Statistics SDK, Autonavi SDK) ทำให้ไม่สามารถติดตามผู้ใช้ได้ ข้อมูลที่เก็บไว้บนโทรศัพท์ของผู้ใช้จะถูกลบโดยอัตโนมัติเมื่อผู้ใช้ถอนการติดตั้ง Voitrans หรือเคลียร์แคช

+ +

3. ความปลอดภัยของข้อมูล

+

1. Voitrans จัดเก็บและคุ้มครองข้อมูลส่วนบุคคลของคุณด้วยมาตรการและเทคโนโลยีความปลอดภัยตามมาตรฐานอุตสาหกรรม เช่น การยืนยันตัวตน การเข้ารหัสข้อมูล การจำกัดการเข้าถึงศูนย์ข้อมูล และมาตรการอื่น ๆ เพื่อให้ข้อมูลของคุณปลอดภัยจากการเปิดเผย การแก้ไขเปลี่ยนแปลง หรือการทำลาย ทั้งนี้ โปรดทราบว่าไม่มีมาตรการใดที่สามารถรับประกันความปลอดภัยได้ 100%

+

2. ระหว่างที่คุณใช้บริการของ Voitrans โปรดปกป้องข้อมูลส่วนบุคคลของคุณ หากคุณพบว่าข้อมูลส่วนบุคคลของคุณอาจถูกละเมิด โปรดติดต่อเราทันทีเพื่อให้เราดำเนินมาตรการที่เหมาะสม

+ +

4. เราใช้ข้อมูลที่เก็บรวบรวมอย่างไร

+

1. ระหว่างการให้บริการและดำเนินฟังก์ชันทางธุรกิจของแอป เราอาจใช้ข้อมูลส่วนบุคคลของคุณเพื่อให้มั่นใจถึงความครบถ้วนและความปลอดภัยของผลิตภัณฑ์และบริการที่มอบให้แก่คุณ

+

2. เราจะทำความเข้าใจพฤติกรรมการใช้งานของคุณจากข้อมูลที่เก็บรวบรวม และด้วยการวิเคราะห์ข้อมูลเพื่อประเมินการยอมรับบริการ นิสัยการใช้งาน เป็นต้น เพื่อทดสอบและสร้างผลิตภัณฑ์/ฟังก์ชัน/บริการใหม่ ปรับปรุงระดับการให้บริการ และช่วยให้เราปรับปรุงบริการเดิมและพัฒนาบริการใหม่

+

3. เราอาจใช้ข้อมูลส่วนบุคคลของคุณสำหรับการสำรวจความคิดเห็นลูกค้าเกี่ยวกับผลิตภัณฑ์และบริการ การส่งประกาศเกี่ยวกับผลิตภัณฑ์และบริการ และการส่งเสริมการขายเชิงพาณิชย์

+

4. เราอาจใช้ข้อมูลของคุณสำหรับการวิเคราะห์ภายในและการวิจัยที่เกี่ยวข้องกับแอป

+ +

5. การแบ่งปันข้อมูล

+

ในปัจจุบัน เราจะไม่แบ่งปันหรือโอนข้อมูลส่วนบุคคลของคุณให้แก่บุคคลที่สามภายนอกบริษัทโดยเชิงรุก หากจำเป็นต้องมีการแบ่งปันหรือโอนข้อมูลส่วนบุคคลของคุณ เราจะขอความยินยอมโดยชัดแจ้งจากคุณ หรือยืนยันว่าบุคคลที่สามได้รับความยินยอมโดยชัดแจ้งจากคุณสำหรับการกระทำดังกล่าว

+

เราจะไม่เปิดเผยข้อมูลส่วนบุคคลที่เราเก็บรวบรวมต่อสาธารณะ หากจำเป็นต้องเปิดเผยต่อสาธารณะ เราจะแจ้งวัตถุประสงค์ของการเปิดเผย ประเภทของข้อมูลที่เปิดเผย และข้อมูลอ่อนไหวที่อาจเกี่ยวข้อง และขอความยินยอมโดยชัดแจ้งจากคุณ

+

เมื่อธุรกิจของเราพัฒนาอย่างต่อเนื่อง เราอาจมีการควบรวมกิจการ การเข้าซื้อกิจการ การโอนทรัพย์สิน หรือธุรกรรมอื่น ๆ เราจะแจ้งสถานการณ์ที่เกี่ยวข้องให้คุณทราบ และตามกฎหมายและข้อบังคับ โดยไม่ต่ำกว่ามาตรฐานที่กำหนดไว้ในแนวทางนี้ เพื่อคุ้มครองข้อมูลส่วนบุคคลของคุณอย่างต่อเนื่อง หรือกำหนดให้ผู้ควบคุมข้อมูลรายใหม่คุ้มครองข้อมูลส่วนบุคคลของคุณต่อไป

+

นอกจากนี้ ตามกฎหมาย ข้อบังคับ และมาตรฐานแห่งชาติที่เกี่ยวข้อง เราอาจแบ่งปัน โอน หรือเปิดเผยข้อมูลส่วนบุคคลต่อสาธารณะได้โดยไม่ต้องได้รับอนุญาตและความยินยอมล่วงหน้าจากเจ้าของข้อมูลส่วนบุคคล ในกรณีดังต่อไปนี้:

+
    +
  • 1 เกี่ยวข้องโดยตรงกับความมั่นคงของชาติและความมั่นคงด้านการป้องกันประเทศ
  • +
  • 2 เกี่ยวข้องโดยตรงกับความปลอดภัยสาธารณะ สาธารณสุข หรือประโยชน์สาธารณะสำคัญ
  • +
  • 3 เกี่ยวข้องโดยตรงกับการสืบสวนคดีอาญา การดำเนินคดี การพิจารณาคดี และการบังคับคดีตามคำพิพากษา
  • +
  • 4 เพื่อคุ้มครองชีวิต ทรัพย์สิน และสิทธิประโยชน์อันชอบธรรมที่สำคัญอื่น ๆ ของเจ้าของข้อมูลหรือบุคคลอื่น แต่ยากต่อการขอความยินยอม
  • +
  • 5 ข้อมูลส่วนบุคคลที่เจ้าของข้อมูลเปิดเผยต่อสาธารณะด้วยตนเอง
  • +
  • 6 เก็บรวบรวมข้อมูลส่วนบุคคลจากข้อมูลที่เปิดเผยต่อสาธารณะโดยชอบด้วยกฎหมาย เช่น รายงานข่าวที่ชอบด้วยกฎหมาย การเปิดเผยข้อมูลของหน่วยงานรัฐ และช่องทางอื่น ๆ
  • +
+ +

6. คุณจัดการข้อมูลส่วนบุคคลของคุณได้อย่างไร

+

ตามกฎหมาย ข้อบังคับ และมาตรฐานที่เกี่ยวข้องของจีน ตลอดจนแนวปฏิบัติทั่วไปของประเทศและภูมิภาคอื่น ๆ เรารับประกันว่าคุณสามารถใช้สิทธิ์ต่อไปนี้เกี่ยวกับข้อมูลส่วนบุคคลของคุณได้:

+ +

1. แก้ไขข้อมูลส่วนบุคคลของคุณ

+

หากคุณพบว่าข้อมูลส่วนบุคคลของคุณที่เราประมวลผลมีข้อผิดพลาด คุณมีสิทธิ์แก้ไขหรืออัปเดตข้อมูลที่ไม่ถูกต้องหรือไม่สมบูรณ์ หากคุณไม่สามารถดำเนินการได้ด้วยตนเองในศูนย์บัญชี คุณสามารถติดต่อเราทางอีเมล saitong.voitrans@gmail.com

+ +

2. ลบข้อมูลส่วนบุคคลของคุณ

+

ในกรณีต่อไปนี้ คุณสามารถร้องขอให้เราลบข้อมูลส่วนบุคคลของคุณได้:

+
    +
  • หากเราประมวลผลข้อมูลส่วนบุคคลโดยฝ่าฝืนกฎหมายและข้อบังคับ
  • +
  • หากเราเก็บรวบรวมและใช้ข้อมูลส่วนบุคคลของคุณโดยไม่ได้รับความยินยอม
  • +
  • หากการประมวลผลข้อมูลส่วนบุคคลของเราฝ่าฝืนข้อตกลงกับคุณ
  • +
  • หากคุณไม่ได้ใช้ผลิตภัณฑ์หรือบริการของเราอีกต่อไป
  • +
  • หากเราไม่ได้ให้ผลิตภัณฑ์หรือบริการแก่คุณอีกต่อไป
  • +
+

โปรดติดต่อเราได้ที่ saitong.voitrans@gmail.com เราจะดำเนินการตามคำขอของคุณ และส่งผลการดำเนินการให้คุณภายใน 30 วันทำการนับจากวันที่ได้รับคำขอ

+ +

3. เปลี่ยนแปลงขอบเขตความยินยอมของคุณ

+

คุณสามารถติดต่อเราได้ทางอีเมล saitong.voitrans@gmail.com ตามคำขอของคุณ เราจะไม่เก็บรวบรวม ใช้ หรือเปิดเผยข้อมูลส่วนบุคคลของคุณอีก โปรดทราบว่าการถอนความยินยอมหรือการลบข้อมูลส่วนบุคคลของคุณอาจส่งผลต่อการใช้งานบริการบางอย่างของเรา

+ +

4 เข้าถึงและคัดลอกข้อมูลส่วนบุคคล

+

คุณสามารถตามบทบัญญัติกฎหมายที่เกี่ยวข้อง โดยให้ imei (หมายเลขซีเรียลของโทรศัพท์) หรือ oaid หรือ Android ID พร้อมข้อมูลบัญชีและข้อมูลอื่น ๆ เพื่อยื่นขอเข้าถึงและคัดลอกข้อมูลส่วนบุคคลของคุณได้ คุณสามารถติดต่อเราได้ทางอีเมล 3514406195@qq.com

+ +

5 การตอบสนองต่อคำขอข้างต้นของคุณ

+

เพื่อความปลอดภัย คุณอาจต้องยื่นคำขอเป็นลายลักษณ์อักษรหรือแสดงหลักฐานยืนยันตัวตนในรูปแบบอื่น เราอาจขอให้คุณยืนยันตัวตนก่อนดำเนินการตามคำขอ สำหรับคำขอที่สมเหตุสมผล เราจะตอบกลับและดำเนินการอย่างทันท่วงที เราอาจปฏิเสธคำขอที่ซ้ำซ้อนโดยไม่จำเป็น ต้องใช้ทรัพยากรทางเทคนิคมากเกินไป (เช่น การพัฒนาระบบใหม่หรือการเปลี่ยนแปลงแนวปฏิบัติเดิมอย่างมีนัยสำคัญ) มีความเสี่ยงต่อสิทธิประโยชน์อันชอบธรรมของผู้อื่น หรือไม่สามารถดำเนินการได้จริง

+

ในกรณีต่อไปนี้ ตามข้อกำหนดของกฎหมายและข้อบังคับ เราอาจไม่สามารถตอบสนองคำขอของคุณได้:

+
    +
  • เกี่ยวข้องกับความมั่นคงของชาติและความมั่นคงด้านการป้องกันประเทศ
  • +
  • เกี่ยวข้องกับการสืบสวนคดีอาญา การดำเนินคดี และการพิจารณาคดี
  • +
  • มีหลักฐานเพียงพอว่าคุณมีเจตนาร้ายหรือใช้สิทธิ์ในทางที่ผิด
  • +
  • การตอบสนองคำขอของคุณจะก่อให้เกิดความเสียหายอย่างร้ายแรงต่อสิทธิและผลประโยชน์อันชอบธรรมของคุณหรือบุคคล/องค์กรอื่น
  • +
+ +

6. การยกเลิกบัญชี

+

ผู้ใช้สามารถดำเนินการ [ยกเลิกบัญชี] ภายในแอปได้ ขั้นตอนการดำเนินการ:

+
    +
  1. ไปที่หน้า [ฉัน]
  2. +
  3. แตะปุ่ม [การตั้งค่า] มุมขวาบน
  4. +
  5. แตะ [ยกเลิกบัญชี] เพื่อยืนยัน
  6. +
+

หลังจากคุณยกเลิกบัญชี ข้อมูลเกี่ยวกับบัญชีผู้ใช้จะถูกล้าง

+ +

7. คำอธิบายสิทธิ์ของแอป

+

เพื่อให้บริการผลิตภัณฑ์และบริการที่ดียิ่งขึ้น เมื่อคุณใช้ซอฟต์แวร์ เราอาจขอสิทธิ์ต่อไปนี้ โดยเมื่อคุณเข้าสู่หน้าหลักหรือใช้งานฟังก์ชัน แอปจะขออนุญาต หากคุณปฏิเสธ ฟังก์ชันบางอย่างที่เกี่ยวข้องอาจไม่สามารถใช้งานได้ตามปกติ วัตถุประสงค์และการแจ้งเตือนของสิทธิ์ต่าง ๆ มีรายละเอียดดังนี้:

+ +

1 สิทธิ์ตำแหน่งที่ตั้ง:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

ใช้ Wi‑Fi หรือสถานีฐานเครือข่ายมือถือเพื่อรับข้อมูลตำแหน่งละติจูดและลองจิจูดของผู้ใช้

+

เมื่อคุณใช้ Voitrans เราจะค้นหาอุปกรณ์บลูทูธที่เชื่อมต่อของคุณตามตำแหน่งทางภูมิศาสตร์ของคุณ ในขณะเดียวกัน เพื่อให้บริการมีความเสถียรมากขึ้น ปรับปรุงผลิตภัณฑ์ และยกระดับประสบการณ์ เราอาจแบ่งปันข้อมูลข้างต้นกับ SDK ของบุคคลที่สาม เช่น Youmon และ Autonavi เพื่อรับข้อมูลการทำงานของ Voitrans และให้บริการฟังก์ชัน

+

รูปแบบการแจ้งเตือน: แสดงหน้าต่างขอสิทธิ์เมื่อเริ่มใช้งานแอปครั้งแรก ให้ผู้ใช้ยืนยันการยอมรับ โดยมีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

สิทธิ์นี้จำเป็นเมื่อคุณเข้าถึงแอปเพื่อใช้งานฟังก์ชันการจัดการแอป

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

3 สิทธิ์เครือข่าย:

+

android.permission.INTERNET

+

เมื่อคุณใช้งาน สิทธิ์เหล่านี้จำเป็นสำหรับบริการข้อมูลและบริการอัปเกรดเวอร์ชันของ Voitrans และเพื่อปรับปรุงประสบการณ์ผู้ใช้และเพิ่มประสิทธิภาพความสามารถของบริการ SDK ของบุคคลที่สามบางรายจะใช้สิทธิ์เหล่านี้ด้วย

+

รูปแบบการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

4 สิทธิ์เข้าถึงสถานะเครือข่าย:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

ใช้เพื่อตรวจสอบว่าการเชื่อมต่อเครือข่ายปัจจุบันใช้งานได้หรือไม่ ประเมินสภาพแวดล้อมเครือข่าย (เช่น 4G) และแจ้งเตือนเมื่อสภาพแวดล้อมเครือข่ายเปลี่ยนแปลง ซึ่งอาจส่งผลต่อการโหลดเนื้อหาข้อมูล ระบบจะขอสิทธิ์นี้เมื่อคุณใช้ Voitrans

+

การเปลี่ยนแปลงสถานะเครือข่ายส่งผลต่อการอัปโหลดและการโหลดข้อมูล ดังนั้น สิทธิ์เข้าถึงสถานะเครือข่ายอาจถูกใช้งานร่วมกับแพลตฟอร์มของบุคคลที่สาม

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

5 สิทธิ์เข้าถึงรายการงาน (Task List):

+

android.permission.GET_TASKS

+

สิทธิ์นี้ใช้เพื่อรับรายการแอปสำหรับฟังก์ชันการจัดการซอฟต์แวร์ เมื่อคุณใช้ฟังก์ชันดังกล่าว จำเป็นต้องอ่านรายการแอปที่ติดตั้งบนโทรศัพท์มือถือ

+

รูปแบบการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

6 สิทธิ์เข้าถึงที่อยู่ MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

เมื่อคุณใช้ Voitrans แอปอาจจำเป็นต้องขอสิทธิ์เข้าถึงที่อยู่ MAC:

+

เมื่อแอปต้องรายงานข้อมูลการแปลงเป้าหมาย แพลตฟอร์มบุคคลที่สาม เช่น Youmon +SDK อาจจำเป็นต้องใช้ MAC

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

7 สิทธิ์บันทึกเสียง

+

android.permission.RECORD_AUDIO

+

เมื่อคุณใช้ฟังก์ชันป้อนข้อมูลด้วยเสียงของ Voitrans จำเป็นต้องใช้สิทธิ์บันทึกเสียง โดยใช้เพื่อการแปลและฟังก์ชันที่เกี่ยวข้องอื่น ๆ

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว และจะแสดงหน้าต่างป๊อปอัปแบบไดนามิกเมื่อมีความจำเป็น

+ +

8 สิทธิ์เข้าถึง SSID ของ Wi‑Fi

+

เมื่อใช้สิทธิ์นี้ แอปจะอ่าน SSID ของ Wi‑Fi:

+

ขอบเขตและวัตถุประสงค์: เมื่อแอปต้องใช้บริการวิเคราะห์ข้อมูล แพลตฟอร์มบุคคลที่สามบางรายจำเป็นต้องอ่าน “สิทธิ์ SSID ของ Wi‑Fi” ของอุปกรณ์ เพื่อให้บริการฟังก์ชันที่แม่นยำและมีประสิทธิภาพยิ่งขึ้นแก่ผู้ใช้

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

9 การเข้าถึงบลูทูธ

+

เมื่อใช้สิทธิ์นี้ แอปจะอ่านสิทธิ์บลูทูธ:

+

ขอบเขตและวัตถุประสงค์: ใช้ค้นหาและตั้งค่าอุปกรณ์เสริมบลูทูธ เช่น หูฟังบลูทูธ นาฬิกาบลูทูธ เป็นต้น เพื่อให้ผู้ใช้จัดการได้สะดวก

+

วิธีการแจ้งเตือน: แสดงหน้าต่างขอสิทธิ์เมื่อเริ่มใช้งานแอปครั้งแรก ให้ผู้ใช้ยืนยันการยอมรับ โดยมีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

10 สิทธิ์เข้าถึง BSSID ของ Wi‑Fi

+

เมื่อแอปต้องแยกแยะและระบุตัวผู้ใช้เพื่อให้บริการฟังก์ชันและทำสถิติข้อมูล แอปจะอ่าน “Wi‑Fi BSSID” ของอุปกรณ์เพื่อ:

+

ขอบเขตและวัตถุประสงค์: 1) แพลตฟอร์มบุคคลที่สาม เช่น Youmeng SDK, Bugly SDK, Autonavi SDK

+

วิธีการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

11 สิทธิ์ติดตั้งแอป

+

android.permission.REQUEST_INSTALL_PACKAGES

+

ซอฟต์แวร์จะใช้สิทธิ์ติดตั้งแอป โดยหลักเพื่อให้ผู้ใช้สามารถติดตั้งเวอร์ชันใหม่และทดลองฟังก์ชันใหม่เมื่อมีการอัปเดต

+

รูปแบบการแจ้งเตือน: มีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

12 สิทธิ์กล้อง

+

android.permission.CAMERA

+

Voitrans ใช้สิทธิ์กล้องเพื่อสแกนคิวอาร์โค้ด และผูกอุปกรณ์บลูทูธ เช่น หูฟังบลูทูธและนาฬิกา

+

วิธีการแจ้งเตือน: แสดงหน้าต่างขอสิทธิ์เมื่อเริ่มใช้งานแอปครั้งแรก ให้ผู้ใช้ยืนยันการยอมรับ โดยมีคำอธิบายในข้อตกลงผู้ใช้และนโยบายความเป็นส่วนตัว

+ +

หมายเหตุพิเศษ:

+

1 แอปมีการฝัง SDK ของบุคคลที่สามบางรายการ หลังจากผู้ใช้ยินยอมให้ใช้งาน แอปอาจเก็บรวบรวมข้อมูลส่วนบุคคลบางประเภทในเบื้องหลัง/เบื้องหน้า เช่น ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI เป็นต้น

+

หมายเหตุ: รายละเอียดเพิ่มเติม โปรดดูเนื้อหาและสิทธิ์ที่เกี่ยวข้องกับ SDK ด้านล่าง [VIII. รายการการเข้าถึง SDK ของบุคคลที่สาม]

+ +

8. การเข้าถึง SDK ของบุคคลที่สาม

+

1 เพื่อให้มั่นใจถึงการทำงานที่เสถียรและการทำงานของฟังก์ชันของไคลเอนต์ของเรา เพื่อให้คุณสามารถใช้และเพลิดเพลินกับบริการและฟังก์ชันเพิ่มเติม แอปของเราอาจฝังชุดพัฒนาเครื่องมือซอฟต์แวร์ (SDK) หรือแอป/ส่วนประกอบที่คล้ายกันของบุคคลที่สาม บุคคลที่สามเหล่านี้จะเก็บรวบรวมและประมวลผลข้อมูลที่เกี่ยวข้องตามนโยบายความเป็นส่วนตัวของตนเอง เพื่อให้สามารถให้บริการฟังก์ชันและบริการโฆษณาได้ตามปกติ คุณสามารถดูรายละเอียดกฎการเก็บรวบรวมและประมวลผลข้อมูลของบุคคลที่สามได้ในส่วนต่อไปนี้ เราจะดำเนินการทดสอบความปลอดภัยอย่างเข้มงวดต่อ SDK ของพันธมิตรที่เข้าถึงข้อมูล เพื่อคุ้มครองการใช้งานอย่างเหมาะสมและความปลอดภัยของข้อมูลส่วนบุคคลของคุณ โปรดทราบว่า SDK ของบุคคลที่สามอาจเปลี่ยนประเภทการประมวลผลข้อมูลตามการอัปเกรดเวอร์ชัน โปรดอ้างอิงนโยบายความเป็นส่วนตัวที่เผยแพร่โดย SDK ของบุคคลที่สาม ดูรายละเอียดด้านล่างหรือคลิกเพื่อดู “รายการ SDK ของบุคคลที่สาม”

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

ข้อมูลที่ได้รับ: หมายเลขอุปกรณ์ ที่อยู่ IP ข้อมูลซอฟต์แวร์ของอุปกรณ์ รหัสระบุอุปกรณ์ (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, ข้อมูล IMSI ของซิมการ์ด, IP, ที่อยู่ MAC) ตัวระบุอุปกรณ์ ภูมิภาค ข้อมูลแอปที่เกี่ยวข้องกับอุปกรณ์ และข้อมูลบันทึกที่เกี่ยวข้องกับบริการอื่น ๆ

+

วัตถุประสงค์ในการใช้งาน: เข้าสู่ระบบและแชร์ผ่าน WeChat

+

ผู้พัฒนา: Shenzhen Tencent Computer Systems Company Limited

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

ข้อมูลที่ได้รับ: ชื่อแอป เวอร์ชันแอป ยี่ห้อและรุ่นอุปกรณ์ ระบบปฏิบัติการ ข้อมูลผู้ให้บริการเครือข่าย ความละเอียดหน้าจอ ข้อมูลเซ็นเซอร์ (เวกเตอร์ ความเร่ง ความดัน ทิศทาง สนามแม่เหล็ก ไจโรสโคป อุณหภูมิ เซ็นเซอร์แสง สัญญาณ NMEA) ข้อมูลความแรงสัญญาณของอุปกรณ์

+

วัตถุประสงค์ในการใช้งาน: นำทางด้วย Amap

+

ผู้พัฒนา: Beijing Gaode Tuqiang Technology Co., Ltd.

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

ข้อมูลที่ได้รับ: ชื่อแอป เวอร์ชันแอป ยี่ห้อและรุ่นอุปกรณ์ ระบบปฏิบัติการ ข้อมูลเครือข่าย ข้อมูลความแรงสัญญาณของอุปกรณ์ เป็นต้น

+

วัตถุประสงค์ในการใช้งาน: แสดงแผนที่และการโต้ตอบ

+

ผู้พัฒนา: Beijing Gaode Tuqiang Technology Co., Ltd.

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

ข้อมูลที่ได้รับ: ข้อมูลตำแหน่งที่ตั้ง (GPS, Wi‑Fi, สถานีฐาน) ข้อมูลอุปกรณ์ ข้อมูลเครือข่าย เป็นต้น

+

วัตถุประสงค์ในการใช้งาน: ให้บริการตำแหน่งที่ตั้ง

+

ผู้พัฒนา: Beijing Gaode Tuqiang Technology Co., Ltd.

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

ข้อมูลที่ได้รับ: ชื่อแอป เวอร์ชันแอป ข้อมูลอุปกรณ์ ข้อมูลเครือข่าย เป็นต้น

+

วัตถุประสงค์ในการใช้งาน: เครื่องมือแผนที่และการปรับปรุงการเรนเดอร์

+

ผู้พัฒนา: Beijing Gaode Tuqiang Technology Co., Ltd.

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

ข้อมูลที่ได้รับ: ตัวระบุอุปกรณ์ ข้อมูลอุปกรณ์พื้นฐาน รายการซอฟต์แวร์ที่ติดตั้ง และข้อมูลเครือข่าย (ดูรายละเอียดเพิ่มเติมในนโยบายความเป็นส่วนตัวอย่างเป็นทางการ)

+

วัตถุประสงค์ในการใช้งาน: เข้าสู่ระบบบัญชี Alipay และเรียกใช้งานการชำระเงิน

+

ผู้พัฒนา: Alipay (Hangzhou) Information Technology Co., Ltd.

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

ข้อมูลที่ได้รับ: เวอร์ชัน SDK/API แพลตฟอร์ม เวลาประทับ (timestamp) ตัวระบุแอป เวอร์ชันแอป ผู้ผลิตอุปกรณ์ เวอร์ชันระบบปฏิบัติการ ภาษา/ภูมิภาค โซนเวลา สถานะเครือข่าย (Wi‑Fi เป็นต้น) บันทึกเครือข่าย ข้อมูลการแครชและการใช้งาน ที่อยู่ IP เป็นต้น (ดูรายละเอียดเพิ่มเติมในนโยบายความเป็นส่วนตัวอย่างเป็นทางการ)

+

วัตถุประสงค์ในการใช้งาน: ตรวจสอบคุณภาพแอปและบริการรายงานข้อมูล

+

ผู้พัฒนา: Shenzhen Tencent Computer Systems Company Limited

+

วิธีการเก็บรวบรวม: เก็บรวบรวมโดย SDK

+

ลิงก์นโยบายความเป็นส่วนตัว: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. การคุ้มครองผู้เยาว์

+

ผู้ใช้ผลิตภัณฑ์และบริการของเราอาจรวมถึงผู้เยาว์ที่มีอายุต่ำกว่า 18 ปี ผู้เยาว์ควรขอคำแนะนำจากบิดามารดาหรือผู้ปกครองเกี่ยวกับนโยบายความเป็นส่วนตัวฉบับนี้ก่อนใช้ผลิตภัณฑ์ของเรา และควรใช้บริการหรือให้ข้อมูลแก่เราหลังจากได้รับความยินยอมและอยู่ภายใต้การกำกับดูแลของบิดามารดาหรือผู้ปกครอง ผู้ปกครองของผู้เยาว์ที่มีคำถามสามารถติดต่อเราได้ตามข้อมูลการติดต่อในนโยบายนี้

+

หากคุณไม่ยินยอมให้ผู้ให้บริการบุคคลที่สามข้างต้นเก็บรวบรวมข้อมูลดังกล่าว โปรดหยุดใช้ซอฟต์แวร์ทันที ระหว่างที่คุณใช้ซอฟต์แวร์ บุคคลที่สามเหล่านี้จะเก็บรวบรวมและประมวลผลข้อมูลที่เกี่ยวข้องตามนโยบายความเป็นส่วนตัวของตนเองเพื่อให้บริการฟังก์ชัน โฆษณา และบริการอื่น ๆ หากข้อมูลรั่วไหลอันเนื่องมาจากการเก็บรวบรวมข้อมูลโดยผู้ให้บริการบุคคลที่สามที่เกี่ยวข้อง ผู้ให้บริการบุคคลที่สามนั้นจะรับผิดชอบตามกฎหมายที่เกี่ยวข้อง

+ +

10. ผลใช้บังคับและการอัปเดตนโยบายความเป็นส่วนตัว

+

1. นโยบายความเป็นส่วนตัวฉบับนี้มีผลใช้บังคับตั้งแต่วันที่เผยแพร่

+

2. เมื่อธุรกิจของเราพัฒนาและเปลี่ยนแปลง นโยบายความเป็นส่วนตัวของเราอาจเปลี่ยนแปลงได้ เราขอสงวนสิทธิ์ในการแก้ไขนโยบายความเป็นส่วนตัวได้ตลอดเวลา โปรดตรวจสอบเป็นระยะ หากเรามีการเปลี่ยนแปลงนโยบายความเป็นส่วนตัว เราจะประกาศการอัปเดตบนเว็บไซต์ แอป และช่องทางที่เห็นว่าเหมาะสมเพื่อให้คุณรับทราบ หากนโยบายความเป็นส่วนตัวได้รับการอัปเดต จะมีผลตั้งแต่วันที่อัปเดต การที่คุณยังคงใช้ผลิตภัณฑ์หรือบริการของเรา หมายความว่าคุณยอมรับนโยบายความเป็นส่วนตัวที่แก้ไขแล้ว

+ +

11. วิธีติดต่อเรา

+

Saitong Industries Inc ก่อตั้งเมื่อวันที่ 22 พฤศจิกายน 2024 ที่อยู่จดทะเบียน: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA หากคุณต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับบริษัทและแพลตฟอร์มของเรา คุณสามารถติดต่อเราได้ผ่านข้อมูลการติดต่อที่ระบุไว้ในนโยบายนี้ (saitong.voitrans@gmail.com)

+
+ + + diff --git a/doc/th/user_agreement.html b/doc/th/user_agreement.html new file mode 100644 index 000000000..4c66bb43e --- /dev/null +++ b/doc/th/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + โปรโตคอลผู้ใช้แอปพลิเคชัน Voitrans + + + +
+
ภาษาไทย
+ +

โปรโตคอลผู้ใช้แอปพลิเคชัน Voitrans

+ +

ข้อกำหนดและเงื่อนไขการใช้งานเหล่านี้จะบอกวิธีการเข้าถึงและใช้งานแอปพลิเคชัน Voitrans และบริการออนไลน์ ("บริการ") Saitong Industries Inc. (ต่อไปนี้เรียกว่า "Saitong") ขอเตือนผู้ใช้ให้อ่านอย่างรอบคอบและเข้าใจข้อตกลงผู้ใช้นี้อย่างครบถ้วน (ต่อไปนี้เรียกว่า "ข้อตกลง") ผู้ใช้ควรอ่านอย่างรอบคอบและเข้าใจข้อกำหนดของข้อตกลงนี้อย่างครบถ้วน กรุณาอ่านอย่างรอบคอบและเลือกที่จะยอมรับหรือไม่ยอมรับข้อตกลงนี้ การใช้งาน APP Voitrans ของคุณ (ต่อไปนี้เรียกว่า "แอป" หรือ "ซอฟต์แวร์") จะถือว่าเป็นการยอมรับข้อตกลงนี้ และคุณตกลงที่จะผูกพันตามข้อกำหนดของข้อตกลงนี้ หากคุณไม่เห็นด้วยกับข้อตกลงนี้ กรุณาอย่าใช้แอป

+

Saitong ขอสงวนสิทธิ์ในการแก้ไขข้อตกลงนี้ และข้อกำหนดที่อัปเดตของข้อตกลงจะถูกเผยแพร่ใน APP นี้ มีผลบังคับใช้ตั้งแต่วันที่เผยแพร่

+ +

1. กฎทั่วไป

+

1.1 APP นี้เป็นซอฟต์แวร์ที่จัดทำโดย Saitong สำหรับการเชื่อมต่อผลิตภัณฑ์หูฟังที่ออกโดย Saitong และบริษัทพันธมิตร ความเป็นเจ้าของและสิทธิ์ในการดำเนินงานของซอฟต์แวร์และบริการที่เกี่ยวข้องเป็นของ Saitong ทั้งหมด

+

1.2 ข้อตกลงนี้เป็นข้อตกลงระหว่างคุณ (ต่อไปนี้เรียกว่า "ผู้ใช้") และบริษัทรวมถึงพันธมิตรและพันธมิตรดำเนินงาน (ต่อไปนี้เรียกว่า "พันธมิตร") เกี่ยวกับการใช้ APP และบริการที่เกี่ยวข้องของผู้ใช้

+

1.3 ซอฟต์แวร์และบริการประกอบด้วย:

+

1.3.1 ซอฟต์แวร์ที่จัดทำให้บริการผู้ใช้ Voitrans ด้วยการเชื่อมต่อและการผูก Voitrans การจัดการการตั้งค่าฟังก์ชันและบริการซอฟต์แวร์อื่น ๆ ขึ้นอยู่กับบริการซอฟต์แวร์จริงที่จัดทำโดย APP

+

1.3.2 การอัปเดต การอัปเกรด และบริการอื่น ๆ ของซอฟต์แวร์

+ +

2. ขอบเขตของใบอนุญาตซอฟต์แวร์

+

2.1 เราให้ผู้ใช้ได้รับใบอนุญาตส่วนบุคคล ไม่สามารถโอนได้ ไม่สามารถให้ใบอนุญาตช่วงได้ และไม่ผูกขาดสำหรับซอฟต์แวร์

+

2.2 ผู้ใช้สามารถติดตั้ง ใช้งาน แสดงผล และเรียกใช้ซอฟต์แวร์บนอุปกรณ์ปลายทางเคลื่อนที่เครื่องเดียวเพื่อวัตถุประสงค์ที่ไม่ใช่เชิงพาณิชย์ อย่างไรก็ตาม ผู้ใช้ไม่ควรติดตั้ง ใช้ หรือเรียกใช้ซอฟต์แวร์เพื่อวัตถุประสงค์ในการดำเนินการเชิงพาณิชย์ คัดลอก เปลี่ยนแปลง แก้ไข เชื่อมต่อ หรือเรียกใช้ซอฟต์แวร์หรือข้อมูลที่ปล่อยลงในหน่วยความจำของอุปกรณ์ปลายทางใดๆ ระหว่างการทำงานของซอฟต์แวร์ หรือข้อมูลการโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ระหว่างการทำงานของซอฟต์แวร์ หรือสร้างงานสร้างสรรค์ที่ดัดแปลงใดๆ ซึ่งรวมถึงแต่ไม่จำกัดเพียงการใช้ปลั๊กอิน ส่วนเสริม หรือเครื่องมือ/บริการของบุคคลที่สามที่ไม่ได้รับอนุญาตเพื่อเข้าถึงซอฟต์แวร์และระบบที่เกี่ยวข้อง สำหรับการขาย การทำซ้ำ และการจัดจำหน่ายเชิงพาณิชย์ เช่น การติดตั้งล่วงหน้าและการรวมซอฟต์แวร์ จะต้องได้รับการอนุญาตและอนุมัติเป็นลายลักษณ์อักษร

+

2.3 ผู้ใช้ไม่ควรติดตั้งซอฟต์แวร์บนอุปกรณ์ปลายทางอื่น ๆ โดยไม่ได้รับอนุญาตอย่างชัดแจ้งจากผู้สร้าง รวมถึงแต่ไม่จำกัดเพียงทีวี กล่องรับสัญญาณดิจิทัล คอนโซลเกม และอุปกรณ์อื่น ๆ

+

2.4 ยกเว้นที่ได้รับอนุญาตอย่างชัดแจ้งจากข้อตกลงนี้ ไม่มีสิทธิ์อื่นใดที่ให้แก่ผู้ใช้ และผู้ใช้จะต้องได้รับความยินยอมเป็นลายลักษณ์อักษรเพื่อใช้สิทธิ์อื่น ๆ

+ +

3. การอัปเกรดซอฟต์แวร์

+

3.1 ผู้ใช้ต้องเลือกเวอร์ชันซอฟต์แวร์ที่เหมาะสมกับการตั้งค่าของอุปกรณ์ปลายทางที่ติดตั้ง มิฉะนั้น ปัญหาซอฟต์แวร์ ปัญหาอุปกรณ์ หรือความเสียหายที่เกิดจากเวอร์ชันซอฟต์แวร์ที่ไม่เหมาะสมกับประเภทอุปกรณ์จะเป็นความรับผิดชอบของผู้ใช้แต่เพียงผู้เดียว

+

3.2 เพื่อปรับปรุงประสบการณ์ผู้ใช้และปรับปรุงเนื้อหาบริการ Saitong มีสิทธิ์ที่จะให้เวอร์ชันทดแทน การแก้ไข และการอัปเกรดของซอฟต์แวร์เป็นครั้งคราว ฟังก์ชัน "แจ้งเตือนการอัปเกรด" ถูกเปิดใช้งานสำหรับผู้ใช้โดยค่าเริ่มต้น ขึ้นอยู่กับเวอร์ชันซอฟต์แวร์ที่แตกต่างกันที่ใช้โดยผู้ใช้ Saitong ให้ทางเลือกแก่ผู้ใช้ในการเปิดใช้งานฟังก์ชันนี้ หลังจากการเปิดตัวซอฟต์แวร์เวอร์ชันใหม่ Saitong ไม่รับประกันความพร้อมใช้งานอย่างต่อเนื่องของซอฟต์แวร์เวอร์ชันเก่า

+ +

4. ข้อกำหนดการใช้งาน

+

4.1 ผู้ใช้สามารถใช้ซอฟต์แวร์และบริการตามข้อตกลงนี้ภายใต้เงื่อนไขการปฏิบัติตามกฎหมายและข้อตกลงนี้ และผู้ใช้ไม่ควรดำเนินการต่อไปนี้:

+

4.1.1 ลบข้อมูลลิขสิทธิ์ทั้งหมดบนซอฟต์แวร์และสำเนาอื่น ๆ และแก้ไข ลบ หรือหลีกเลี่ยงมาตรการทางเทคนิคที่ซอฟต์แวร์ตั้งไว้เพื่อปกป้องสิทธิ์ในทรัพย์สินทางปัญญา

+

4.1.2 วิศวกรรมย้อนกลับซอฟต์แวร์ เช่น การถอดแยก การถอดรหัส หรือความพยายามอื่น ๆ ในการรับซอร์สโค้ดของซอฟต์แวร์

+

4.1.3 โดยการแก้ไขหรือปลอมแปลงคำสั่งและข้อมูลในการทำงานของซอฟต์แวร์ การเพิ่ม ลบ หรือเปลี่ยนแปลงฟังก์ชันหรือผลการทำงานของซอฟต์แวร์ หรือซอฟต์แวร์หรือวิธีการที่จะใช้เพื่อวัตถุประสงค์ข้างต้นเพื่อดำเนินงานหรือเผยแพร่ต่อสาธารณะ โดยไม่คำนึงว่าการกระทำเหล่านี้เพื่อวัตถุประสงค์ทางการค้าหรือไม่

+

4.1.4 ใช้ซอฟต์แวร์สำหรับพฤติกรรมใด ๆ ที่เป็นอันตรายต่อความปลอดภัยของเครือข่าย รวมถึงแต่ไม่จำกัดเพียง: ใช้ข้อมูลที่ไม่ได้รับอนุญาตหรือเข้าถึงเซิร์ฟเวอร์/บัญชีที่ไม่ได้รับอนุญาต; เข้าถึงเครือข่ายสาธารณะหรือระบบปฏิบัติการอื่นโดยไม่ได้รับอนุญาตและลบ แก้ไข หรือเพิ่มข้อมูลที่จัดเก็บ; ความพยายามที่ไม่ได้รับอนุญาตในการตรวจสอบ สแกน หรือทดสอบจุดอ่อนของระบบหรือเครือข่ายของซอฟต์แวร์หรือการกระทำอื่น ๆ ที่ทำลายความปลอดภัยของเครือข่าย; ความพยายามที่จะรบกวนหรือทำลายการทำงานปกติของระบบซอฟต์แวร์หรือเว็บไซต์ แพร่กระจายโปรแกรมที่เป็นอันตรายหรือไวรัสโดยเจตนา และการกระทำอื่น ๆ ที่ขัดขวางบริการข้อมูลเครือข่ายปกติ; ปลอมแปลงชื่อแพ็คเก็ต TCP/IP หรือชื่อบางส่วน

+

4.1.6 โดยไม่ได้รับความยินยอมเป็นลายลักษณ์อักษรจากบริษัท ผู้ใช้ดำเนินการต่อไปนี้ตามอำเภอใจกับซอฟต์แวร์และข้อมูลในนั้น รวมถึงแต่ไม่จำกัดเพียง: ใช้ เช่า ให้ยืม คัดลอก แก้ไข เชื่อมโยง พิมพ์ซ้ำ รวบรวม เผยแพร่ จัดจำหน่าย สร้างเว็บไซต์กระจก พัฒนาผลิตภัณฑ์อนุพันธ์ งาน บริการ ปลั๊กอิน ส่วนเสริม ความเข้ากันได้ การเชื่อมต่อ ฯลฯ ด้วยความช่วยเหลือของซอฟต์แวร์

+

4.1.7 ใช้ซอฟต์แวร์เพื่อเผยแพร่ ส่ง แจกจ่าย และจัดเก็บเนื้อหาที่ละเมิดกฎหมายท้องถิ่นของคุณ

+

4.1.8 ใช้ซอฟต์แวร์เพื่อเผยแพร่ ส่ง แพร่กระจาย และจัดเก็บเนื้อหาที่ละเมิดสิทธิ์ในทรัพย์สินทางปัญญา ความลับทางการค้า และสิทธิ์ที่ถูกต้องตามกฎหมายอื่น ๆ ของผู้อื่น

+

4.1.9 ใช้ซอฟต์แวร์นี้เพื่อเผยแพร่ ส่ง และแพร่กระจายข้อมูลโฆษณาและข้อมูลขยะเป็นจำนวนมาก

+

4.1.10 ใช้ซอฟต์แวร์และบริการอื่น ๆ ในลักษณะที่ผิดกฎหมาย เพื่อวัตถุประสงค์ที่ผิดกฎหมาย หรือในลักษณะที่ไม่สอดคล้องกับการใช้งานที่ได้รับอนุญาตของข้อตกลงนี้

+

4.2 ข้อกำหนดการเผยแพร่ข้อมูล

+

4.2.1 หากคุณใช้ซอฟต์แวร์เพื่อเผยแพร่เนื้อหาข้อมูล (ถ้ามี) คุณควรรับประกันว่าคุณเป็นเจ้าของสิทธิ์ในทรัพย์สินทางปัญญาของเนื้อหาข้อมูลที่คุณอัปโหลดหรือได้รับการอนุญาตทางกฎหมาย และพฤติกรรมใด ๆ ของคุณในการใช้ซอฟต์แวร์และบริการไม่ละเมิดสิทธิ์และผลประโยชน์ที่ถูกต้องตามกฎหมายของบุคคลที่สามใด ๆ

+

4.2.2 เมื่อใช้ซอฟต์แวร์ ผู้ใช้ไม่ควรใช้ซอฟต์แวร์เพื่อทำกิจกรรมต่อไปนี้ รวมถึงแต่ไม่จำกัดเพียง:

+

4.2.2.1 สร้าง คัดลอก เผยแพร่ แพร่กระจาย และจัดเก็บเนื้อหาที่ละเมิดกฎหมายและระเบียบข้อบังคับของชาติท้องถิ่น

+

4.2.2.2 เผยแพร่ ส่ง แพร่กระจาย และจัดเก็บเนื้อหาที่ละเมิดสิทธิ์ทางกฎหมายของผู้อื่น เช่น ชื่อเสียง ภาพเหมือน ทรัพย์สินทางปัญญา และความลับทางการค้า

+

4.2.2.3 กุเรื่อง ปิดบังความจริงเพื่อชี้นำผิดหรือหลอกลวงผู้อื่น

+

4.2.2.4 เผยแพร่ ส่ง และแพร่กระจายข้อมูลโฆษณาและข้อมูลขยะ

+

4.2.2.5 ดำเนินการกระทำอื่น ๆ ที่ละเมิดกฎหมายและระเบียบข้อบังคับท้องถิ่น

+

4.2.3 คุณไม่สามารถดำเนินกิจกรรมเชิงพาณิชย์ใด ๆ เช่น การโฆษณาและการขายสินค้าในซอฟต์แวร์โดยไม่ได้รับอนุญาตจากบริษัท

+

4.3 ผู้ใช้เข้าใจและยอมรับว่า:

+

4.3.1 Saitong จะพิจารณาว่าผู้ใช้ถูกสงสัยว่าละเมิดข้อกำหนดการใช้งานข้างต้นหรือไม่ และตามผลการพิจารณา จะระงับหรือยุติใบอนุญาตการใช้งานของคุณหรือใช้มาตรการจำกัดอื่น ๆ ที่สามารถดำเนินการได้ตามข้อตกลงนี้

+

4.3.2 สำหรับการใช้ซอฟต์แวร์ที่ได้รับอนุญาตโดยผู้ใช้ที่เผยแพร่เนื้อหาที่สงสัยว่าผิดกฎหมายหรือสงสัยว่าละเมิดสิทธิ์ทางกฎหมายของผู้อื่นหรือละเมิดข้อตกลงนี้ ข้อมูลจะถูกลบโดยตรง

+

4.3.3 หากการละเมิดกฎการใช้งานข้างต้นของผู้ใช้ก่อให้เกิดความเสียหายแก่บุคคลที่สาม คุณจำเป็นต้องรับผิดชอบทางกฎหมายอย่างเป็นอิสระในนามของตนเอง และคุณควรตรวจสอบให้แน่ใจว่าบริษัทปลอดจากการสูญเสียหรือต้นทุนที่เพิ่มขึ้น

+

4.3.4 หากผู้ใช้ละเมิดข้อกำหนดทางกฎหมายหรือข้อตกลงที่เกี่ยวข้อง ทำให้ Saitong ได้รับความเสียหาย หรือถูกเรียกร้องจากบุคคลที่สาม หรือถูกลงโทษโดยหน่วยงานบริหาร ผู้ใช้จะต้องชดเชยความเสียหายและ/หรือค่าใช้จ่ายที่เกิดขึ้นกับ Saitong รวมถึงค่าทนายความที่สมเหตุสมผล ค่าสืบสวนและค่ารวบรวมหลักฐาน

+ +

5. คำอธิบายบริการของบุคคลที่สาม

+

5.1 ผู้ใช้เข้าใจและยอมรับว่าระบบซอฟต์แวร์อาจมีบริการที่จัดทำโดยบริษัทในเครือหรือบุคคลที่สาม และบริษัทจัดทำเฉพาะโมดูลฟังก์ชันที่เกี่ยวข้องในระบบเพื่อความสะดวกของผู้ใช้และให้การเข้าถึงบริการของบุคคลที่สาม

+

5.2 ไม่ว่าบริการของบุคคลที่สามจะถูกตั้งค่าไว้ล่วงหน้าในบริการระบบซอฟต์แวร์ หรือถูกเปิดหรือสั่งโดยผู้ใช้เอง ผู้ใช้เข้าใจและยอมรับว่า Saitong ไม่ให้การรับประกันหรือค้ำประกันอย่างชัดแจ้งหรือโดยนัยใด ๆ เกี่ยวกับความถูกต้องตามกฎหมายและประสิทธิผลของผู้ให้บริการบุคคลที่สามหรือผู้ใช้ รวมถึงความถูกต้องตามกฎหมาย ความแม่นยำ ประสิทธิผล และความปลอดภัยของบริการบุคคลที่สาม

+

5.3 บริษัทไม่กำกับดูแล ควบคุม หรือให้การรับประกันหรือค้ำประกันใด ๆ สำหรับ หรือรับผิดชอบใด ๆ ต่อบริการของบุคคลที่สาม

+

5.4 ข้อพิพาทหรือข้อขัดแย้งใด ๆ ระหว่างผู้ใช้และผู้ให้บริการบุคคลที่สามจะได้รับการแก้ไขโดยผู้ใช้และบุคคลที่สามตามกระบวนการทางธุรกิจและมาตรฐานทางธุรกิจของผู้ให้บริการบุคคลที่สาม และบริษัทจะไม่รับผิดชอบใด ๆ

+ +

6. นโยบายความเป็นส่วนตัวและการคุ้มครองข้อมูลส่วนบุคคล

+

6.1 Saitong มุ่งมั่นที่จะปกป้องความเป็นส่วนตัวของผู้ใช้ตามนโยบายความเป็นส่วนตัว กรุณาดู: นโยบายความเป็นส่วนตัวของแอปพลิเคชัน Voitrans

+ +

7. ความรับผิดสำหรับการละเมิด

+

7.1 Saitong มีสิทธิ์ที่จะตัดสินว่าพฤติกรรมของผู้ใช้เป็นไปตามข้อกำหนดของข้อตกลงนี้หรือไม่ หากเชื่อว่าผู้ใช้ได้ละเมิดกฎหมายและระเบียบข้อบังคับที่เกี่ยวข้องหรือข้อกำหนดของข้อตกลงนี้และกฎที่เกี่ยวข้อง ตามความรุนแรงของการละเมิดของผู้ใช้ Saitong มีสิทธิ์ลบข้อมูลที่ผิดกฎหมาย จำกัด ระงับ ยุติการใช้บริการซอฟต์แวร์ของผู้ใช้ ดำเนินคดีทางกฎหมายกับผู้ใช้ และใช้มาตรการอื่น ๆ ที่ Saitong เห็นว่าเหมาะสม หากเราได้รับความเสียหายใด ๆ (รวมถึงแต่ไม่จำกัดเพียงการได้รับการเรียกร้องจากบุคคลที่สามหรือบทลงโทษจากหน่วยงานบริหารใด ๆ) ผู้ใช้จะต้องรับผิดอย่างเต็มที่

+ +

8. ความเสี่ยงของบริการและข้อจำกัดความรับผิดชอบ

+

8.1 เราต้องการให้การสนับสนุนบริการด้วยเทคโนโลยีปัจจุบัน Saitong ไม่รับประกันว่าบริการซอฟต์แวร์จะทำงานโดยไม่มีการหยุดชะงักหรือข้อผิดพลาด ว่าข้อบกพร่องทั้งหมดของบริการซอฟต์แวร์จะได้รับการแก้ไข หรือว่าบริการซอฟต์แวร์จะตอบสนองความต้องการทั้งหมดของผู้ใช้ สำหรับผลที่ตามมา Saitong ไม่รับผิดชอบใด ๆ

+

8.2 ความเสียหายทั้งหมดที่ผู้ใช้ได้รับเนื่องจากบุคคลที่สาม เช่น ความล้มเหลวของสายสื่อสาร ปัญหาทางเทคนิค ความล้มเหลวของเครือข่าย อุปกรณ์ปลายทางคอมพิวเตอร์ ความไม่เสถียรของระบบ และสาเหตุเหตุสุดวิสัยอื่น ๆ จะไม่ต้องรับผิด

+

8.3 Saitong ไม่รับประกันความถูกต้องตามกฎหมาย ความเป็นจริง ความแม่นยำ และประสิทธิผลของเนื้อหาข้อมูลที่ได้รับผ่านซอฟต์แวร์ (รวมถึงแต่ไม่จำกัดเพียงเนื้อหาบริการของบุคคลที่สาม) และ Saitong ไม่รับผิดชอบต่อผลลัพธ์ของพฤติกรรมใด ๆ ที่ผู้ใช้ดำเนินการบนพื้นฐานของการสอบถามและการดู

+

8.4 ซอฟต์แวร์ เช่นเดียวกับซอฟต์แวร์อินเทอร์เน็ตส่วนใหญ่ ได้รับผลกระทบจากความแตกต่างในปัจจัยต่าง ๆ รวมถึงแต่ไม่จำกัดเพียงเหตุผลของผู้ใช้ คุณภาพบริการเครือข่าย สภาพแวดล้อมทางสังคม และปัจจัยอื่น ๆ และอาจประสบปัญหาความปลอดภัยต่าง ๆ เช่น ผู้อื่นใช้ข้อมูลผู้ใช้ ส่งผลให้เกิดการรบกวนในชีวิตจริง; ซอฟต์แวร์อื่นที่ดาวน์โหลดและติดตั้งโดยผู้ใช้หรือเว็บไซต์อื่นที่ผู้ใช้เข้าชมมีไวรัส เช่น "โทรจันฮอร์ส" ซึ่งคุกคามความปลอดภัยของข้อมูลและข้อมูลอุปกรณ์ปลายทางของผู้ใช้ และส่งผลกระทบต่อการใช้งานซอฟต์แวร์ตามปกติ ผู้ใช้ควรเสริมสร้างความตระหนักเรื่องความปลอดภัยของข้อมูลและการปกป้องข้อมูลผู้ใช้ และให้ความสำคัญกับการเสริมสร้างการปกป้องรหัสผ่านเพื่อหลีกเลี่ยงการสูญเสียและการรบกวน

+

8.5 เมื่อผู้ใช้ใช้ซอฟต์แวร์หรือต้องการให้ Saitong จัดหาบริการเฉพาะ ซอฟต์แวร์อาจเรียกใช้ระบบของบุคคลที่สามหรือซอฟต์แวร์ของบุคคลที่สามเพื่อสนับสนุนการใช้งานหรือการเข้าถึงของผู้ใช้ และผลลัพธ์ของการใช้งานหรือการเข้าถึงจัดทำโดยบุคคลที่สาม นอกเหนือจากการปฏิบัติตามกฎที่เกี่ยวข้องของข้อตกลงนี้ ผู้ใช้ยังต้องปฏิบัติตามข้อตกลงและกฎที่เกี่ยวข้องของบุคคลที่สามด้วย ผู้ใช้ต้องเข้าใจและยอมรับว่า เมื่อใช้บริการของบุคคลที่สาม บุคคลที่สามอาจอ่านข้อมูลผู้ใช้ และ Saitong ไม่รับประกันความปลอดภัย ความแม่นยำ ประสิทธิผล และความเสี่ยงที่ไม่แน่นอนอื่น ๆ ของผลลัพธ์ที่ได้รับผ่านระบบของบุคคลที่สามหรือการสนับสนุนซอฟต์แวร์ของบุคคลที่สาม ผู้ใช้ควรใช้วิจารณญาณอย่างรอบคอบ และ Saitong ไม่รับผิดชอบต่อข้อพิพาทและความเสียหายใด ๆ ที่เกิดจากเรื่องนี้

+

8.6 เพื่อรับประกันความเป็นอิสระในการพัฒนาธุรกิจและการปรับตัวของบริษัท บริษัทอาจแก้ไขหรือหยุดบริการได้ตลอดเวลาหลังจากใช้วิธีที่สมเหตุสมผลในการแจ้งผู้ใช้

+

8.7 ยกเว้นตามที่กฎหมายและระเบียบข้อบังคับกำหนดไว้อย่างชัดแจ้ง Saitong จะพยายามอย่างดีที่สุดเพื่อให้แน่ใจว่าซอฟต์แวร์และเทคโนโลยีและข้อมูลที่เกี่ยวข้องมีความปลอดภัย มีประสิทธิภาพ แม่นยำ และเชื่อถือได้ แต่เนื่องจากข้อจำกัดของเทคโนโลยีที่มีอยู่ ผู้ใช้เข้าใจว่า Saitong ไม่สามารถรับประกันสิ่งนี้ได้

+

8.8 การชดเชยสำหรับการบาดเจ็บส่วนบุคคลหรือความเสียหายทางเศรษฐกิจที่เกิดขึ้นโดยบังเอิญและทางอ้อมที่เกิดจากหรือเกี่ยวข้องกับสถานการณ์ต่อไปนี้ รวมถึงแต่ไม่จำกัดเพียงการสูญเสียกำไร การสูญเสียข้อมูล ค่าเสียหายจากการหยุดชะงักทางธุรกิจหรือความเสียหายหรือการสูญเสียทางธุรกิจอื่น ๆ จะเป็นความรับผิดชอบของผู้ใช้:

+

1) การใช้หรือไม่สามารถใช้ซอฟต์แวร์ที่ได้รับอนุญาต

+

2) การใช้ซอฟต์แวร์โดยไม่ได้รับอนุญาตหรือการเปลี่ยนแปลงข้อมูลผู้ใช้โดยบุคคลที่สาม

+

3) ค่าใช้จ่ายและความเสียหายที่เกิดจากการกระทำของผู้ใช้กับซอฟต์แวร์

+

4) ความเข้าใจผิดของผู้ใช้เกี่ยวกับซอฟต์แวร์

+

5) ความเสียหายอื่น ๆ ที่เกี่ยวข้องกับซอฟต์แวร์ที่ไม่ได้เกิดจากสาเหตุของ Saitong

+

8.9 ผู้ใช้ยอมรับว่าบริษัทมีสิทธิ์ที่จะระงับ หยุดชะงัก หรือยุติบริการทั้งหมดหรือบางส่วนแก่ผู้ใช้ตามข้อกำหนดของหน่วยงานตุลาการ กำกับดูแล และหน่วยงานกำกับดูแล หรือเหตุผลทางธุรกิจของตนเอง Saitong ไม่รับผิดชอบสำหรับเรื่องนี้

+

8.10 ผู้ใช้เข้าใจและยอมรับว่าบริษัทจะใช้ความพยายามอย่างสมเหตุสมผลในเชิงพาณิชย์เพื่อรับรองความปลอดภัยของการจัดเก็บข้อมูลในซอฟต์แวร์และบริการ แต่บริษัทไม่สามารถให้การรับประกันที่สมบูรณ์ได้ และผู้ใช้เข้าใจว่าบริษัทไม่รับผิดชอบต่อการลบหรือการจัดเก็บหรือความล้มเหลวในการสำรองข้อมูลในบริการ

+

8.11 ตามขอบเขตสูงสุดที่กฎหมายอนุญาต ผู้พัฒนาหรือผู้จัดจำหน่ายจะไม่รับผิดชอบต่อความเสียหายทางตรง ทางอ้อม โดยบังเอิญ พิเศษ หรือเป็นผลสืบเนื่องใด ๆ ที่เกิดจากการใช้แอปพลิเคชัน หากผู้ใช้มีความต้องการเพิ่มเติม กรุณาไปที่โรงพยาบาลปกติเพื่อการทดสอบเชิงลึก

+ +

9. การประกาศทรัพย์สินทางปัญญา

+

9.1 Saitong เป็นผู้ถือสิทธิ์ในทรัพย์สินทางปัญญาของซอฟต์แวร์นี้ ลิขสิทธิ์ เครื่องหมายการค้า สิทธิบัตร ความลับทางการค้า และสิทธิ์ในทรัพย์สินทางปัญญาอื่น ๆ ทั้งหมดของซอฟต์แวร์ ตลอดจนเนื้อหาข้อมูลทั้งหมดที่เกี่ยวข้องกับซอฟต์แวร์ (รวมถึงแต่ไม่จำกัดเพียงข้อความ รูปภาพ เสียง วิดีโอ กราฟิก การออกแบบอินเทอร์เฟซ เฟรมเลย์เอาต์ ข้อมูลที่เกี่ยวข้อง หรือเอกสารอิเล็กทรอนิกส์ ฯลฯ) ได้รับการคุ้มครองโดยกฎหมายและระเบียบข้อบังคับท้องถิ่นและสนธิสัญญาระหว่างประเทศที่เกี่ยวข้อง

+

9.2 โดยไม่ได้รับความยินยอมเป็นลายลักษณ์อักษรจากบริษัท ผู้ใช้ไม่ควรดำเนินการ ใช้ หรือโอนสิทธิ์ในทรัพย์สินทางปัญญาข้างต้นเพื่อวัตถุประสงค์ทางการค้าหรือไม่ใช่ทางการค้าใด ๆ หรืออนุญาตให้บุคคลที่สามใด ๆ และบริษัทขอสงวนสิทธิ์ในการดำเนินคดีทางกฎหมายสำหรับการกระทำข้างต้น

+ +

10. การเปลี่ยนแปลงโปรโตคอล

+

10.1 Saitong มีสิทธิ์แก้ไขข้อกำหนดของข้อตกลงนี้เมื่อจำเป็น เมื่อข้อกำหนดของข้อตกลงมีการเปลี่ยนแปลง ข้อกำหนดที่แก้ไขของข้อตกลงจะถูกเผยแพร่บนหน้าที่เกี่ยวข้อง หากคุณไม่เห็นด้วยกับเนื้อหาที่เปลี่ยนแปลง ผู้ใช้ควรริเริ่มยกเลิกบริการนี้ หากผู้ใช้ยังคงใช้บริการต่อไป จะถือว่ายอมรับการเปลี่ยนแปลงในข้อกำหนดของข้อตกลง

+

10.2 Saitong ขอสงวนสิทธิ์ในการแก้ไขหรือเปลี่ยนแปลงบริการชำระเงิน มาตรฐานการเรียกเก็บเงิน วิธีการเรียกเก็บเงิน ค่าธรรมเนียมบริการ และข้อกำหนดบริการที่จัดทำตามความจำเป็น เมื่อให้บริการ เราอาจเรียกเก็บค่าธรรมเนียมบางอย่างจากผู้ใช้บริการบางส่วนในปัจจุบันหรือในอนาคต หากผู้ใช้ปฏิเสธที่จะชำระค่าธรรมเนียมดังกล่าว พวกเขาจะไม่สามารถใช้บริการที่เกี่ยวข้องต่อไปได้หลังจากเริ่มเรียกเก็บค่าธรรมเนียม

+
+ + diff --git a/doc/tl/privacy_policy.html b/doc/tl/privacy_policy.html new file mode 100644 index 000000000..0f43d73b0 --- /dev/null +++ b/doc/tl/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Patakaran sa Privacy + + + + +
+

Voitrans Patakaran sa Privacy

+

Huling Na-update: Mayo 27, 2025

+

Petsa ng Pagkakabisa: Mayo 27, 2025

+ +

Maligayang pagdating sa paggamit ng Voitrans Software at mga Serbisyo

+

1. Ang Voitrans ay ibinigay ng Saitong Industries Inc. (mula rito ay tinutukoy bilang "ang Kumpanya"). Maaari itong makatulong sa mga gumagamit na makamit ang pamamahala ng mga Bluetooth device at iba pang mga produkto. Nauunawaan namin ang kahalagahan ng personal na impormasyon sa aming mga gumagamit (mula rito ay tinutukoy bilang "ikaw") at na ang epektibong proteksyon ng iyong personal na impormasyon ay ang pundasyon ng malusog at napapanatiling pag-unlad ng aming negosyo. Salamat sa iyong paggamit at pagtiwala sa mga produkto o serbisyo ng Voitrans! Lubos naming nalalaman na ang tiwala na ito ay hindi madaling makamit, sumusunod kami sa prinsipyo ng pagiging bukas at transparent, upang ipahayag sa iyo ang aming mga patakaran sa pagproseso ng iyong personal na impormasyon, gumagamit kami ng legal at lehitimong paraan at malinaw at makatuwirang layunin upang iproseso ang iyong personal na impormasyon. Espesyal na paalala: Mangyaring tiyaking basahin at maunawaan nang mabuti ang Patakaran sa Privacy na ito bago gamitin ang aming mga produkto o serbisyo upang makagawa ka ng naaangkop na mga pagpili.

+

2. Ang Patakaran sa Privacy na ito ay nagpapaliwanag sa iyo kung paano namin kinokolekta, ginagamit, iniimbak at ibinabahagi ang iyong personal na impormasyon kapag gumagamit ka ng Voitrans. Ang personal na impormasyon ay tumutukoy sa lahat ng uri ng impormasyon na naitala sa pamamagitan ng elektronikong o iba pang paraan na maaaring tumukoy sa isang tiyak na natural na tao o sumasalamin sa mga aktibidad ng isang tiyak na natural na tao nang nag-iisa o kasabay ng ibang impormasyon. Ang Voitrans ay gumagalang at nagpoprotekta ng personal na privacy ng lahat ng gumagamit ng serbisyo. Maliban kung iba ang itinatadhana ng Patakaran sa Privacy na ito, ang Voitrans ay hindi magbubunyag ng impormasyong ito sa publiko o magbibigay nito sa mga third party nang walang iyong naunang pahintulot.

+

3. Kapag gumagamit ka ng produkto o serbisyo ng third party sa pamamagitan ng produkto o serbisyo ng App Marketplace, ang iyong personal na impormasyon ay sasailalim sa patakaran sa privacy ng third party.

+

4. Voitrans Ang Patakaran sa Privacy na ito ay ia-update paminsan-minsan. Sa pamamagitan ng pagsang-ayon sa Kasunduan sa Paggamit ng Serbisyo ng Voitrans at pagsisimulang gamitin ang Voitrans, ikaw ay ituturing na sumang-ayon sa lahat ng Patakaran sa Privacy na ito. Kung hindi ka sumasang-ayon sa Patakaran sa Privacy na ito, mangyaring huwag gamitin ang Voitrans Software at mga Serbisyo.

+

5. Upang masuri at masukat ang pagiging epektibo ng mga kaugnay na serbisyo, gagamitin at ibubunyag namin ang iyong personal na impormasyon alinsunod sa mga probisyon ng Patakaran sa Privacy na ito.

+ +

Ang Patakaran sa Privacy na ito ay makakatulong sa iyo na maunawaan ang mga sumusunod:

+
    +
  • 1 Ang impormasyong kinokolekta namin
  • +
  • 2 Pag-iimbak ng impormasyon
  • +
  • 3 Seguridad ng impormasyon
  • +
  • 4 Paano namin ginagamit ang impormasyong kinokolekta namin
  • +
  • 5 Pagbabahagi ng impormasyon
  • +
  • 6 Paano mo pinamamahalaan ang iyong personal na impormasyon
  • +
  • 7 Paglalarawan ng mga pahintulot ng aplikasyon
  • +
  • 8 Pag-access sa mga third-party SDK
  • +
  • 9 Proteksyon ng mga menor de edad
  • +
  • 10 Pagkakabisa at pag-update ng Patakaran sa Privacy
  • +
  • 11 Paano makipag-ugnayan sa amin
  • +
+ +

1. Ang impormasyong kinokolekta namin

+

1. Gamitin ang Voitrans Sa simula Magsisimula kaming mangolekta ng data tungkol sa iyong paggamit ng application

+

2. Ang Voitrans ay maaaring makakuha ng personal na impormasyon tungkol sa iyo mula sa mga third party o mga kasosyo sa negosyo sa pamamagitan ng mga lehitimong paraan

+

3. Upang mabigyan ka ng mas magagandang produkto at serbisyo, bigyan ka ng seguridad ng network sa panahon ng paggamit, mapanatili ang normal na operasyon ng mga produkto at ma-optimize at mapahusay, ang layunin ng aming mga serbisyo ng impormasyon, pagkatapos mong aktibong i-click ang sumang-ayon sa patakaran sa privacy na ito, gamitin ang impormasyong ibinibigay namin. Sa panahon ng serbisyo, bukod sa personal na impormasyong kinakailangan upang matiyak ang normal na operasyon ng mga pangunahing function ng App alinsunod sa mga pambansang batas at regulasyon, mangongolekta kami ng iba pang personal na impormasyon mula sa iyo:

+

3.1 Upang matukoy ang mga gumagamit na may panganib, hatulan ang pagiging tunay ng mga gumagamit at maiwasan ang pandaraya sa isang komprehensibong paraan, babasahin namin ang iyong impormasyon ng device sa tuwing bubuksan mo ang software, kabilang ang: (Modelo ng device, MAC address ng device, natatanging identifier ng device (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, atbp.) MEID, serial number, SSID at BSSID ng WIFI), basahin ang Bluetooth address, bersyon ng operating system, pangalan ng operating system, login account at password na impormasyon ng gumagamit;

+

3.2 Kapag gumagamit ka ng aming mga produkto at serbisyo, maaari kaming mangolekta ng ilang impormasyon sa pamamagitan ng impormasyon sa network log o ilang programa at software, ang naturang impormasyon ay maaaring kabilangan ng: mga detalye ng paggamit ng mga produkto at serbisyo, tulad ng oras ng pagbukas ng iyong application, ang haba ng paggamit, at ang address ng pahina na binisita; impormasyon ng pangyayari ng device, tulad ng mga pag-crash, aktibidad ng sistema, atbp., upang i-optimize ang iyong device at mapahusay ang aming mga serbisyo;

+

3.3 Upang matukoy ang mga application kung saan ang kagamitan ay nasa panganib, magbigay ng mas ligtas na mga functional service. Samakatuwid, kailangan naming makuha ang iyong application/listahan ng naka-install na application sa proseso upang matiyak ang normal na operasyon ng produkto at protektahan ang seguridad ng device.

+

3.4 Upang masuri ang paggamit ng mga function ng application ng mga gumagamit at matukoy ang pagiging tunay ng mga gumagamit, kailangan naming magsagawa ng mga istatistika ng data, at kolektahin ang nabanggit na impormasyon ng device, kabilang ang MAC address ng device at natatanging identifier ng device, kapag ang iyong device ay ginagamit.

+

3.5 Signal ng device: ang kalagayan ng network ng device na ginagamit mo, impormasyon ng WIFI access point, atbp.

+

3.6 Impormasyon ng Lokasyon: Maaari kaming gumamit ng GPS, WiFi o iba pang mga teknikal na paraan upang mangolekta at magproseso ng impormasyon tungkol sa iyong lokasyon para sa pag-update ng lokal na impormasyon, pagbibigay ng mga serbisyo ng nilalaman, atbp.

+

Para sa higit pang impormasyon, mangyaring i-click ang "Listahan ng Koleksyon ng Personal na Impormasyon".

+ +

1. Para sa mas sensitibong personal na impormasyon sa nabanggit na impormasyon, tulad ng impormasyon ng device ng gumagamit (IMEI number, kalagayan ng tawag at identification number), impormasyon ng lokasyon ng GPS, nilalaman ng media ng larawan at mga karapatan sa pag-access ng file, kukuha kami ng iyong pahintulot bago mangolekta. Para sa ilang hindi sensitibong impormasyon, ang koleksyon ay maaaring maging default at awtomatiko. Maaari mong limitahan ang aming koleksyon ng kaugnay na impormasyon o paggamit ng ilang mga pahintulot mula sa iyong mobile device sa pamamagitan ng pagsasaayos ng opsyon ng Settings para sa iyong mobile device. Kapag nilimitahan mo ang aming pag-access sa isang partikular na pahintulot, maaaring hindi namin maipagpatuloy na ibigay sa iyo ang kaukulang serbisyo, at hindi na namin ipoproseso ang iyong kaukulang impormasyon.

+

2. Hindi namin kokolektahin ang iyong ID card number, personal na biometric na impormasyon, numero ng bank account, impormasyon ng ari-arian, impormasyon ng kredito, impormasyon ng kalusugan at pisikal at iba pang personal na sensitibong impormasyon.

+

3. Tungkol sa sensitibong mga pahintulot: Upang magamit nang maayos ang mga function ng application, kailangang makuha ng produkto ang mga sumusunod na pahintulot upang maibigay ang mga functional service na kaugnay ng normal na mga produkto.

+ +

1 Kumuha ng mga pahintulot sa pagbasa at pagsulat ng storage

+

1 Paano makukuha: pop-up na prompt, kapag nakuha na ang pahintulot, aktibong i-click ng gumagamit ang sumang-ayon at gagamitin ng application ang pahintulot na ito

+

2 Layunin at saklaw ng paggamit: Ginagamit ito upang i-scan ang mga resource cache file at thumbnail sa sistema, i-load ang mga music resource at larawan ng produkto. Ipinapakita ito sa interface ng App upang mapadali ang pagtingin at pag-operate ng mga gumagamit

+ +

2 Kumuha ng pahintulot sa listahan ng naka-install na application

+

1 Paano makukuha: pop-up na prompt, kapag nakuha na ang pahintulot, aktibong i-click ng gumagamit ang sumang-ayon at gagamitin ng application ang pahintulot na ito

+

2 Layunin at saklaw ng paggamit: Kapag kailangan ng application na gumamit ng mga serbisyo ng advertising promotion, ang third-party advertising platform, Youmon +SDK, ay kailangang makuha ang "pahintulot sa listahan ng naka-install na app software" ng device upang maiwasan ang pagpapadala ng application na mayroon na ang gumagamit at mapahusay ang karanasan ng gumagamit.

+ +

3 Ang pahintulot na kumuha ng impormasyon ng kalagayan ng device

+

Kabilang ang: (Modelo ng device, MAC address ng device, natatanging identifier ng device (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, atbp.) MEID, serial number, SSID at BSSID ng WIFI, basahin ang Bluetooth address), bersyon ng operating system, pangalan ng operating system, atbp.;

+

1 Paano makukuha: pop-up na prompt, kapag nakuha na ang pahintulot, aktibong i-click ng gumagamit ang sumang-ayon at gagamitin ng application ang pahintulot na ito

+

2 Layunin at Saklaw ng paggamit: Kapag gumagamit ng aming application, upang masuri ang paggamit ng gumagamit sa mga function ng application at hatulan ang pagiging tunay ng gumagamit, isi-synchronize namin ang pahintulot sa mga third-party SDK, kabilang ang Autonavi SDK, Youmon +SDK, atbp.

+ +

4 Pag-access sa impormasyon ng lokasyon

+

1 Paano makukuha: pop-up na mga prompt, kapag nakuha na ang pahintulot, gagamitin ng gumagamit ang pahintulot na ito lamang kapag aktibong sumang-ayon sa application.

+

2 Layunin at Saklaw ng paggamit: Kapag kailangan ng application na gumamit ng GPS, WiFi o iba pang mga function, kailangang kolektahin ng produkto ang iyong lokasyon at impormasyon upang maghanap ng mga Bluetooth device sa mga kalapit na lokasyon.

+

Paalala: Para sa higit pang mga pahintulot ng application, tingnan ang dokumentong ito "Patakaran sa Privacy" Seksyon 7 "Paglalarawan ng Pahintulot ng Application"

+ +

2. Pag-iimbak ng impormasyon

+

1. Kung saan iniimbak ang impormasyon

+

Ang personal na impormasyon na kinokolekta at nalilikha namin sa People's Republic of China ay iimbak sa aming mga server at/o sa mga server ng aming mga kaanib.

+

2. Pag-iimbak at pagproseso ng impormasyon

+

Iniimbak namin ang iyong personal na impormasyon lamang sa panahon na kinakailangan upang makamit ang layunin o hangga't kinakailangan ng batas at regulasyon. Pagkatapos mong itigil ang paggamit ng produktong ito, agad naming ihihinto ang pagkolekta at pagproseso ng iyong personal na impormasyon at data ng application. Kapag lumampas sa nabanggit na panahon, buburahin o ianonimize namin ang personal na impormasyong ibinigay mo sa amin.

+

Bukod sa mga kinakailangang function, kailangang mag-apply ng Voitrans para sa kaukulang mga pahintulot ng sistema. Ang server side ng cloud ay hindi nag-iimbak ng personal na impormasyon ng gumagamit, at ang third-party SDK na na-access ay ia-anonymize at ide-identify ng service provider (Amu Statistics SDK, Autonavi SDK), kaya hindi maaaring subaybayan ang mga gumagamit. Ang impormasyong nakaimbak sa telepono ng gumagamit ay awtomatikong mabubura kapag ni-uninstall ng gumagamit ang Voitrans o ni-clear ang cache.

+ +

3. Seguridad ng impormasyon

+

1. Iniimbak at pinoprotektahan ng Voitrans ang iyong personal na impormasyon gamit ang mga pamantayan ng industriya sa seguridad at mga teknolohiya, tulad ng authentication, data encryption, restricted data center access at iba pang mga hakbang sa seguridad upang matiyak na ang iyong impormasyon ay ligtas mula sa pagbubunyag, pagbabago at pagkasira. Sa kabila ng nabanggit na mga hakbang sa seguridad, mangyaring tandaan na walang hakbang sa seguridad na maaaring maging 100% ligtas.

+

2. Kapag gumagamit ng mga serbisyong ibinigay ng Voitrans, mangyaring protektahan ang iyong personal na impormasyon. Kung natuklasan mo na ang iyong personal na impormasyon ay nakompromiso, mangyaring makipag-ugnayan sa amin kaagad upang makagawa kami ng naaangkop na mga hakbang.

+ +

4. Paano namin ginagamit ang impormasyong kinokolekta namin

+

1. Kapag nag-iimplement ng mga function ng negosyo ng application, maaari naming gamitin ang iyong personal na impormasyon upang matiyak ang integridad at seguridad ng mga produkto at serbisyong ibinibigay namin sa iyo;

+

2. Mauunawaan namin ang iyong mga gawi sa paggamit sa pamamagitan ng nakolektang impormasyon, at sa tulong ng data analysis, tutukuyin ang pagtanggap ng mga serbisyo, ang iyong mga gawi sa paggamit, atbp., upang subukan at lumikha ng mga bagong produkto, function at serbisyo, mapahusay ang antas ng serbisyo, at tulungan kami na pahusayin ang mga umiiral na serbisyo at bumuo ng mga bagong serbisyo;

+

3. Maaari naming gamitin ang iyong personal na impormasyon para sa mga survey ng customer tungkol sa mga produkto at serbisyo, para sa pagpapadala ng mga abiso tungkol sa mga produkto at serbisyo, at para sa komersyal na promosyon;

+

4. Maaari naming gamitin ang iyong impormasyon para sa panloob na pagsusuri at pananaliksik na may kaugnayan sa application;

+ +

5. Pagbabahagi ng impormasyon

+

Sa kasalukuyan, hindi namin aktibong ibabahagi o ililipat ang iyong personal na impormasyon sa mga third party sa labas ng kumpanya, kung may iba pang pagbabahagi o paglilipat ng iyong personal na impormasyon, gagawin namin ito nang direkta o kumpirmahin na ang third party ay nakakuha ng iyong malinaw na pahintulot sa nabanggit na aksyon.

+

Hindi namin ibubunyag sa publiko ang personal na impormasyong kinokolekta namin. Kung kinakailangang ibunyag sa publiko, ipapaalam namin sa iyo ang layunin ng pagbubunyag sa publiko, ang uri ng impormasyong ibubunyag at ang sensitibong impormasyon na maaaring kasangkot, at kukuha ng iyong malinaw na pahintulot.

+

Habang patuloy na umuunlad ang aming negosyo, maaari kaming sumali sa mga merger, acquisition, asset transfer at iba pang mga transaksyon, at ipapaalam namin sa iyo ang mga kaugnay na pangyayari, alinsunod sa mga batas at regulasyon at hindi bababa sa mga pamantayang kinakailangan ng Gabay na ito upang patuloy na protektahan ang iyong personal na impormasyon o hilingin sa isang bagong controller na patuloy na protektahan ang iyong personal na impormasyon.

+

Bukod pa rito, alinsunod sa mga kaugnay na batas at regulasyon at mga pambansang pamantayan, maaari naming ibahagi, ilipat at ibunyag sa publiko ang personal na impormasyon nang walang naunang awtorisasyon at pahintulot ng may-ari ng personal na impormasyon sa mga sumusunod na pangyayari:

+
    +
  • 1 Direktang may kaugnayan sa pambansang seguridad at seguridad ng pambansang depensa;
  • +
  • 2 Direktang may kaugnayan sa kaligtasan ng publiko, kalusugan ng publiko o mga pangunahing interes ng publiko;
  • +
  • 3 Direktang may kaugnayan sa criminal investigation, prosecution, trial at execution ng mga hatol;
  • +
  • 4 Upang protektahan ang buhay, ari-arian at iba pang mga pangunahing lehitimong karapatan at interes ng may-ari ng personal na data o iba pang mga indibidwal, ngunit mahirap makuha ang pahintulot ng tao;
  • +
  • 5 Personal na impormasyong ibinahagi sa publiko ng may-ari ng personal na impormasyon;
  • +
  • 6 Pagkolekta ng personal na impormasyon mula sa legal na pampublikong impormasyon, tulad ng lehitimong mga ulat sa balita, pagbubunyag ng impormasyon ng gobyerno at iba pang mga channel.
  • +
+ +

6. Paano mo pinamamahalaan ang iyong personal na impormasyon

+

Alinsunod sa mga kaugnay na batas, regulasyon at pamantayan ng Tsina, pati na rin ang mga karaniwang gawi ng iba pang mga bansa at rehiyon, ginagarantiya namin na ginagamit mo ang mga sumusunod na karapatan sa iyong personal na impormasyon:

+ +

1. Itama ang iyong personal na impormasyon

+

Kung natuklasan mo na may pagkakamali sa iyong personal na impormasyon na pinoproseso namin, may karapatan kang itama o i-update ang mali o hindi kumpletong impormasyon. Kung hindi ka makapag-operate nang mag-isa sa account center, maaari kang mag-email sa saitong.voitrans@gmail.com Makipag-ugnayan sa amin

+ +

2. Burahin ang iyong personal na impormasyon

+

Sa mga sumusunod na kaso, maaari kang humiling sa amin na burahin ang iyong personal na impormasyon:

+
    +
  • Kung pinoproseso namin ang personal na impormasyon na lumalabag sa mga batas at regulasyon;
  • +
  • Kung kinokolekta at ginagamit namin ang iyong personal na impormasyon nang walang iyong pahintulot;
  • +
  • Kung ang aming pagproseso ng personal na impormasyon ay lumalabag sa aming kasunduan sa iyo;
  • +
  • Kung hindi ka na gumagamit ng aming mga produkto o serbisyo;
  • +
  • Kung hindi na namin ibinibigay sa iyo ang mga produkto o serbisyo.
  • +
+

Makipag-ugnayan sa amin. Ipoproseso namin ang iyong kahilingan sa saitong.voitrans@gmail.com Makipag-ugnayan sa amin. Ipapadala namin sa iyo pagkatapos matanggap 30 araw ng trabaho mula sa pagtanggap

+ +

3. Baguhin ang saklaw ng iyong pahintulot

+

Maaari kang makipag-ugnayan sa amin sa pamamagitan ng email sa saitong.voitrans@gmail.com Makipag-ugnayan sa amin. Sa iyong kahilingan, hindi na namin kokolektahin, gagamitin o ibubunyag ang iyong personal na impormasyon. Mangyaring tandaan na ang pag-withdraw ng iyong pahintulot o pagbura ng iyong personal na impormasyon ay maaaring makaapekto sa iyong paggamit ng ilan sa aming mga serbisyo.

+ +

4 Pag-access at pagkopya ng personal na impormasyon

+

Maaari kang, alinsunod sa mga probisyon ng mga kaugnay na batas, magbigay ng iyong imei (phone serial number) o oaid o Android ID impormasyon ng account at iba pang impormasyon, maaari kang mag-apply sa amin para sa pag-access at pagkopya ng iyong personal na impormasyon, maaari kang mag-email sa 3514406195@qq.com Makipag-ugnayan sa amin.

+ +

5. Bilang tugon sa iyong nabanggit na kahilingan

+

Para sa mga layuning panseguridad, maaaring kailanganin mong magbigay ng nakasulat na kahilingan o kaya ay patunayan ang iyong pagkakakilanlan. Maaari naming hilingin sa iyo na i-verify ang iyong pagkakakilanlan bago iproseso ang iyong kahilingan. Para sa iyong makatwirang kahilingan, tutugon kami at haharapin ito sa napapanahong paraan. Maaari naming tanggihan ang mga kahilingan na hindi kinakailangang paulit-ulit, nangangailangan ng labis na teknolohiya (halimbawa, ang pagbuo ng mga bagong sistema o mga pangunahing pagbabago sa mga kasalukuyang gawi), naglalagay sa panganib ng mga lehitimong interes ng iba, o lubhang hindi praktikal.

+

Sa mga sumusunod na pangyayari, alinsunod sa mga kinakailangan ng mga batas at regulasyon, hindi namin matutugunan ang iyong kahilingan:

+
    +
  • Kaugnay ng pambansang seguridad at seguridad ng pambansang depensa;
  • +
  • Kaugnay ng criminal investigation, prosecution at trial;
  • +
  • May sapat na ebidensya na ikaw ay may subjective malice o pang-aabuso ng mga karapatan;
  • +
  • Ang pagtugon sa iyong kahilingan ay magdudulot ng malubhang pinsala sa mga lehitimong karapatan at interes mo o ng iba pang mga indibidwal at organisasyon.
  • +
+ +

6. Pagkansela ng account

+

Maaaring isagawa ng Gumagamit ang [pagkansela ng account] na operasyon sa APP. Mga hakbang sa operasyon:

+
    +
  1. Pumunta sa pahina ng [Akin]
  2. +
  3. I-click ang button na [Settings] sa kanang itaas
  4. +
  5. I-click ang [Kanselahin ang account] upang kumpirmahin
  6. +
+

Pagkatapos mag-log out, ang impormasyon tungkol sa user account ay mabubura

+ +

7. Paglalarawan ng mga pahintulot ng application

+

Upang makapagbigay ng mas magagandang produkto at serbisyo, kapag gumagamit ka ng software, mag-a-apply kami para sa mga sumusunod na karapatan, kapag pumasok ka sa home page o gumamit ng function ay hihingi ng awtorisasyon, kung tatanggi ka, ang ilan sa mga kaukulang function ay hindi magagamit nang normal. Ang mga tiyak na layunin at paalala ng mga pahintulot ay inilarawan nang detalyado sa ibaba:

+ +

1 Mga karapatan sa lokasyon:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

sa pamamagitan ng WiFi o mobile base station upang makuha ang latitude at longitude na impormasyon ng lokasyon ng gumagamit

+

Kapag gumagamit ka ng Voitrans, hahanapin namin ang iyong nakakabit na Bluetooth device batay sa iyong geographical na lokasyon. Kasabay nito, upang makapagbigay ng mas matatag na serbisyo, ma-optimize ang mga produkto at mapahusay ang karanasan, ibabahagi namin ang nabanggit na impormasyon sa tatlong SDK, tulad ng Youmon at Autonavi, upang makuha ang operating data at functional service ng Voitrans.

+

Paraan ng paalala: Isang prompt na nagpapakita ng pahintulot na simulan ang application sa unang pagkakataon ay ipinapakita, na nangangailangan sa gumagamit na kumpirmahin ang pagtanggap. Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Ang pahintulot na ito ay kinakailangan kapag nag-a-access ng application upang maisagawa ang mga function ng pamamahala ng application.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

3 Mga pahintulot sa network:

+

android.permission.INTERNET

+

Kapag gumagamit ka ng Ang mga pahintulot na ito ay kinakailangan para sa mga serbisyo ng impormasyon at mga serbisyo ng pag-upgrade ng bersyon ng Voitrans, at upang mapahusay ang karanasan ng gumagamit at ma-optimize ang mga kakayahan ng serbisyo, ang mga third-party SDK tulad ng Friends ay gagamit din ng mga pahintulot na ito.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

4 Kumuha ng mga pahintulot sa kalagayan ng network:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Ginagamit ito upang makuha kung ang kasalukuyang koneksyon sa network ay may-bisa, matukoy kung ang kasalukuyang 4G na kapaligiran ay, at kung dapat ipaalala ang mga pagbabago sa kapaligiran ng network, na nakakaapekto sa paglo-load ng nilalaman ng impormasyon. Ang pahintulot na ito ay inaapply kapag gumagamit ka ng Voitrans.

+

Ang mga pagbabago sa kalagayan ng network ay nakakaapekto sa pag-upload at paglo-load ng data. Samakatuwid, ang access sa pahintulot ng kalagayan ng network ay ibabahagi sa friends + at iba pang mga platform.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

5 Kumuha ng mga pahintulot sa listahan ng gawain:

+

android.permission.GET_TASKS

+

Ang pahintulot na ito ay ginagamit upang makuha ang listahan ng application para sa function ng pamamahala ng software. Kapag ginagamit mo ang function ng pamamahala ng software, kailangan mong basahin ang mga application na naka-install sa mobile phone.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

6 Kumuha ng pahintulot sa MAC address

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Kapag gumagamit ka ng Voitrans, kakailanganin ng application na kumuha ng mga pahintulot sa MAC address:

+

Kapag kailangan ng application na mag-report ng target conversion data, ang mga third-party platform tulad ng Youmon +SDK ay kailangang gumamit ng MAC.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

7 Kumuha ng pahintulot na mag-record ng audio

+

android.permission.RECORD_AUDIO

+

Kapag gumagamit ka ng function ng voice input ng Voitrans, kailangan mong gamitin ang pahintulot na mag-record ng audio, at pangunahing ginagamit ang voice input para sa pagsasalin at iba pang mga kaugnay na function.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy, ang gumagamit ay dynamically nagpo-pop ng box kapag kinakailangan.

+ +

8 Kumuha ng pahintulot sa SSID para sa WIFI

+

Kapag ang pahintulot na ito ay ginagamit, ang app ay nagbabasa ng pahintulot sa SSID para sa WIFI:

+

Saklaw ng paggamit at layunin: Kapag kailangan ng application na gumamit ng mga serbisyo ng data analysis, ang mga third-party platform tulad ng +SDK ay kailangang basahin ang "pahintulot sa WIFI SSID" ng device upang maibigay sa mga gumagamit ang mas tumpak at epektibong functional service.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

9 Kumuha ng Bluetooth access

+

Kapag ang pahintulot na ito ay ginagamit, ang app ay nagbabasa ng pahintulot sa Bluetooth:

+

Saklaw ng paggamit at layunin: Mga Bluetooth device para sa paghahanap at pagko-configure ng mga accessory, tulad ng mga Bluetooth headset, Bluetooth watch, atbp. Madali para sa mga gumagamit na pamahalaan

+

Paraan ng paalala: Isang prompt na nagpapakita ng pahintulot na simulan ang application sa unang pagkakataon ay ipinapakita, na nangangailangan sa gumagamit na kumpirmahin ang pagtanggap. Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

10 Kumuha ng pahintulot sa BSSID para sa WiFi

+

Kapag kailangan ng application na makilala at matukoy ang gumagamit upang maibigay ang mga functional service at istatistika ng data, babasahin nito ang pahintulot sa "WiFi BSSID" ng device para sa:

+

Saklaw ng paggamit at layunin: 1 Mga third-party platform: tulad ng Youmeng SDK, Bugly SDK, Autonavi SDK

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

11 Kumuha ng pahintulot sa pag-install ng application

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Gagamitin ng software ang pahintulot sa pag-install ng application, na pangunahing ginagamit upang payagan ang mga gumagamit na mag-install ng bagong bersyon at maranasan ang mga bagong function kapag may bagong bersyon.

+

Paraan ng paalala: Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

12 Kumuha ng mga pahintulot para sa camera

+

android.permission.CAMERA

+

Gumagamit ang Voitrans ng mga pahintulot sa camera upang mag-scan ng mga QR code at mag-bind ng mga Bluetooth device tulad ng Bluetooth headset at watch.

+

Paraan ng paalala: Isang prompt na nagpapakita ng pahintulot na simulan ang application sa unang pagkakataon ay ipinapakita, na nangangailangan sa gumagamit na kumpirmahin ang pagtanggap. Paglalarawan ng Kasunduan ng Gumagamit at Patakaran sa Privacy.

+ +

Espesyal na paalala:

+

1 Ang application ay nag-i-integrate sa loob ng kanilang Allies SDK, Scott map SDK sa pahintulot ng gumagamit pagkatapos ng paggamit, ang application sa background/foreground para sa ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI at iba pang personal na impormasyon;

+

Mga paalala: Higit pa Mangyaring tingnan ang sumusunod na nilalaman at mga pahintulot na may kaugnayan sa SDK [VIII. Listahan ng pag-access sa mga third-party SDK]

+ +

8. Pag-access sa mga third-party SDK

+

1 Upang matiyak ang matatag na operasyon at pagkakamit ng function ng aming client, upang magamit at mag-enjoy ka ng mas maraming serbisyo at function, ang aming application ay mag-e-embed ng software tool development kit (SDK) o iba pang katulad na application ng mga third party, ang mga third party na ito ay mangongolekta at magpoproseso ng kaugnay na impormasyon alinsunod sa kanilang sariling mga patakaran sa privacy, upang normal na maibigay ang mga function at mga serbisyo sa advertising. Maaari mong malaman ang mga patakaran ng third party sa pagkolekta at pagproseso ng impormasyon sa sumusunod na seksyon. Magsasagawa kami ng mahigpit na mga pagsusuri sa seguridad sa mga development kit (SDK) para sa mga partner na kumukuha ng impormasyon, upang maprotektahan ang makatwirang paggamit at seguridad ng iyong personal na impormasyon. Mangyaring tandaan na ang mga third-party SDK ay maaaring magbago ng mga uri ng pagproseso ng data dahil sa kanilang mga pag-upgrade ng bersyon. Mangyaring sumangguni sa mga patakaran sa privacy na inilathala ng mga third-party SDK. Tingnan ang mga detalye sa ibaba o i-click upang tingnan ang Listahan ng Third Party SDK.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Nakuhang Impormasyon: Numero ng device, IP address, impormasyon ng software ng device, identification code ng device (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, impormasyon ng SIM card IMSI, IP, MAC address), identifier ng device, rehiyon, impormasyon ng application na may kaugnayan sa device, at iba pang impormasyon ng log na may kaugnayan sa serbisyo

+

Layunin ng Paggamit: WeChat login at pagbabahagi

+

Developer: Shenzhen Tencent Computer Systems Company Limited

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Nakuhang Impormasyon: Pangalan ng application, numero ng bersyon ng application, brand at modelo ng device, operating system, impormasyon ng carrier, resolusyon ng screen, impormasyon ng sensor (vector, acceleration, pressure, direction, geomagnetic, gyroscope, temperature, light sensor, NMEA signal), impormasyon ng lakas ng signal ng device

+

Layunin ng Paggamit: Pag-navigate gamit ang Amap

+

Developer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Nakuhang Impormasyon: Pangalan ng application, bersyon ng application, brand at modelo ng device, operating system, impormasyon ng network, lakas ng signal ng device, atbp.

+

Layunin ng Paggamit: Pagpapakita ng mapa at interaksyon

+

Developer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Nakuhang Impormasyon: Impormasyon ng lokasyon (GPS, Wi-Fi, base station), impormasyon ng device, impormasyon ng network, atbp.

+

Layunin ng Paggamit: Pagbibigay ng mga serbisyo ng lokasyon

+

Developer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Nakuhang Impormasyon: Pangalan ng application, bersyon ng application, impormasyon ng device, impormasyon ng network, atbp.

+

Layunin ng Paggamit: Mga tool sa mapa at optimization ng rendering

+

Developer: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Nakuhang Impormasyon: Mga identifier ng device, pangunahing impormasyon ng device, listahan ng naka-install na software, at impormasyon ng network (tingnan ang opisyal na patakaran sa privacy para sa mga detalye)

+

Layunin ng Paggamit: Alipay account login at pag-invoke ng pagbabayad

+

Developer: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Nakuhang Impormasyon: Bersyon ng SDK/API, platform, timestamp, identifier ng app, bersyon ng app, manufacturer ng device, bersyon ng OS, locale, timezone, kalagayan ng network (Wi-Fi, atbp.), network log, data ng crash at paggamit, IP address, atbp. (tingnan ang opisyal na patakaran sa privacy para sa mga detalye)

+

Layunin ng Paggamit: Serbisyo ng pagsubaybay sa kalidad ng app at pag-report ng data

+

Developer: Shenzhen Tencent Computer Systems Company Limited

+

Paraan ng Pagkolekta: SDK self-collection

+

Link ng Patakaran sa Privacy: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Proteksyon ng mga menor de edad

+

Ang mga gumagamit ng aming mga produkto at serbisyo ay maaaring kabilangan ng mga menor de edad na wala pang 18 taong gulang, ang mga menor de edad na gumagamit ay dapat humingi ng payo ng kanilang mga magulang o tagapag-alaga tungkol sa Patakaran sa Privacy na ito bago gamitin ang aming mga produkto, at gamitin ang aming mga serbisyo o ibigay ang iyong impormasyon sa amin pagkatapos makuha ang pahintulot ng at sa ilalim ng patnubay ng kanilang mga magulang o tagapag-alaga. Ang mga tagapag-alaga ng mga menor de edad na may mga katanungan ay maaaring makipag-ugnayan sa amin sa pamamagitan ng mga detalye ng pakikipag-ugnayan sa Patakaran sa Privacy na ito.

+

Kung hindi ka sumasang-ayon sa pagkolekta ng nabanggit na impormasyon ng mga nabanggit na third-party service provider, mangyaring itigil kaagad ang paggamit ng Software. Sa panahon ng iyong paggamit ng Software, ang mga third party na ito ay mangongolekta at magpoproseso ng kaugnay na impormasyon alinsunod sa kanilang sariling mga patakaran sa privacy upang maibigay ang ilang mga function, advertising at iba pang mga serbisyo. Kung ang impormasyon ay nabunyag dahil sa pagkolekta ng nabanggit na impormasyon ng kaugnay na third-party service provider, ang kaugnay na third-party service provider ang mananagot sa kaukulang legal na responsibilidad.

+ +

10. Pagkakabisa at pag-update ng Patakaran sa Privacy

+

1. Ang Patakaran sa Privacy na ito ay magkakabisa mula sa petsa ng paglalathala.

+

2. Habang umuunlad at nagbabago ang aming negosyo, maaaring magbago ang aming Patakaran sa Privacy. Inilalaan namin ang karapatan na baguhin ang aming patakaran sa privacy sa anumang oras, kaya mangyaring suriin nang madalas. Kung gumawa kami ng mga pagbabago sa aming Patakaran sa Privacy, ipo-post namin ang mga update na ito sa aming website, mga app, at kung saan namin itinuturing na naaangkop upang panatilihin kang may kaalaman. Kung ang patakaran sa privacy ay na-update, magkakabisa ito mula sa petsa ng pag-update. Ang iyong patuloy na paggamit ng aming mga produkto o serbisyo ay nangangahulugan na sumasang-ayon ka sa aming binagong Patakaran sa Privacy.

+ +

11. Paano makipag-ugnayan sa amin

+

Ang Saitong Industries Inc ay itinatag noong Nobyembre 22, 2024, rehistradong address: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Kung gusto mong malaman ang higit pa tungkol sa aming kumpanya at platform, maaari kang makipag-ugnayan sa amin sa pamamagitan ng impormasyon sa pakikipag-ugnayan na ibinigay sa patakarang ito (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/tl/user_agreement.html b/doc/tl/user_agreement.html new file mode 100644 index 000000000..30994aeb5 --- /dev/null +++ b/doc/tl/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Kasunduan ng Gumagamit ng Aplikasyon ng Voitrans + + + +
+
Filipino
+ +

Kasunduan ng Gumagamit ng Aplikasyon ng Voitrans

+ +

Ang mga Tuntunin at Kundisyon ng Paggamit na ito ay nagsasabi sa iyo kung paano ma-access at gamitin ang Voitrans Application at mga online na serbisyo (ang "mga Serbisyo"). Ang Saitong Industries Inc. (mula rito ay tinutukoy bilang "Saitong") ay nagpapaalala sa mga gumagamit na maingat na basahin at lubos na maunawaan ang Kasunduan ng Gumagamit na ito (mula rito ay tinutukoy bilang "Kasunduan"). Ang mga gumagamit ay dapat maingat na basahin at lubos na maunawaan ang mga tuntunin ng Kasunduang ito. Mangyaring basahing mabuti at piliin kung tatanggapin o hindi tatanggapin ang Kasunduang ito. Ang iyong paggamit ng Voitrans APP (mula rito ay tinutukoy bilang "ang APP" o "ang Software") ay ituturing na pagtanggap ng Kasunduang ito at sumasang-ayon ka na sumailalim sa mga tuntunin ng Kasunduang ito. Kung hindi ka sumasang-ayon sa Kasunduang ito, huwag gamitin ang APP.

+

Inilalaan ng Saitong ang karapatan na baguhin ang Kasunduang ito, at ang mga na-update na tuntunin ng Kasunduan ay ilalathala sa APP na ito, na magkakabisa mula sa petsa ng paglalathala.

+ +

1. Mga pangkalahatang tuntunin

+

1.1 Ang APP na ito ay software na ibinigay ng Saitong para sa pagkonekta ng mga produktong headset na inilabas ng Saitong at ng mga kasosyong kumpanya nito. Ang pagmamay-ari at mga karapatan sa operasyon ng software at mga kaugnay na serbisyo ay pagmamay-ari ng Saitong.

+

1.2 Ang Kasunduang ito ay isang kasunduan sa pagitan mo (mula rito ay tinutukoy bilang "Gumagamit") at ng kumpanya at ng mga kasosyo nito at mga kasosyo sa operasyon (mula rito ay tinutukoy bilang "mga Kasosyo") tungkol sa paggamit ng Gumagamit ng APP at mga kaugnay na serbisyo.

+

1.3 Ang Software at mga serbisyo ay kinabibilangan ng:

+

1.3.1 Ang ibinigay na software ay nagbibigay sa mga gumagamit ng Voitrans ng koneksyon at pag-bind ng Voitrans, pamamahala ng setting ng function at iba pang mga serbisyo ng software, alinsunod sa aktwal na mga serbisyo ng software na ibinigay ng APP.

+

1.3.2 Mga update, upgrade at iba pang mga serbisyo ng software.

+ +

2. Saklaw ng lisensya ng software

+

2.1 Nagbibigay kami sa gumagamit ng personal, hindi maililipat, hindi maaaring i-sublicense, at hindi eksklusibong lisensya sa Software.

+

2.2 Ang mga gumagamit ay maaaring mag-install, gumamit, magpakita at magpatakbo ng software sa isang solong mobile terminal device para sa mga hindi pangkalakal na layunin. Gayunpaman, hindi dapat i-install, gamitin o patakbuhin ng gumagamit ang software para sa mga layuning pangkalakal na operasyon, kopyahin, baguhin, i-modify, ikonekta o patakbuhin ang software o ang data na inilabas sa memorya ng anumang terminal device habang tumatakbo ang software o ang data ng interaksyon sa pagitan ng kliyente at ng server habang tumatakbo ang software, o lumikha ng anumang mga derivative na gawa. Kabilang dito, ngunit hindi limitado sa, ang paggamit ng mga plugin, extension, o hindi awtorisadong mga kasangkapan/serbisyo ng third-party upang ma-access ang Software at mga kaugnay na sistema. Para sa komersyal na pagbebenta, pagkopya at pamamahagi, tulad ng pag-pre-install at pag-bundle ng software, kinakailangan ang nakasulat na awtorisasyon at pahintulot.

+

2.3 Hindi dapat i-install ng Gumagamit ang Software sa ibang mga terminal device nang walang malinaw na pahintulot ng tagapaglikha, kabilang ngunit hindi limitado sa mga TV, digital set-top box, game console at iba pang mga device.

+

2.4 Maliban sa malinaw na awtorisado ng Kasunduang ito, walang ibang karapatan ang ibinibigay sa Gumagamit, at ang Gumagamit ay dapat makakuha ng nakasulat na pahintulot upang gamitin ang ibang mga karapatan.

+ +

3. Pag-upgrade ng software

+

3.1 Ang gumagamit ay dapat pumili ng bersyon ng software na angkop para sa setup ng naka-install na terminal. Kung hindi, ang mga problema sa software, mga problema sa device o pinsala na dulot ng anumang bersyon ng software na hindi angkop para sa uri ng device ay magiging tanging responsibilidad ng gumagamit.

+

3.2 Upang mapabuti ang karanasan ng gumagamit at mapahusay ang nilalaman ng serbisyo, may karapatan ang Saitong na magbigay sa iyo ng mga kapalit, pagbabago at upgrade na bersyon ng software paminsan-minsan. Ang function na "Paalala sa Pag-upgrade" ay naka-enable bilang default para sa mga gumagamit. Depende sa iba't ibang bersyon ng software na ginagamit ng mga gumagamit, nagbibigay ang Saitong sa mga gumagamit ng opsyon na i-activate ang function na ito. Pagkatapos ilabas ang bagong bersyon ng software, hindi ginagarantiya ng Saitong ang patuloy na pagkakaroon ng lumang bersyon ng software.

+ +

4. Mga tuntunin ng paggamit

+

4.1 Ang mga gumagamit ay maaaring gumamit ng Software at mga Serbisyo alinsunod sa Kasunduang ito sa ilalim ng premisa ng pagsunod sa batas at sa Kasunduang ito, at ang mga gumagamit ay hindi dapat gawin ang mga sumusunod na aksyon:

+

4.1.1 Burahin ang lahat ng impormasyon ng copyright sa Software at iba pang mga kopya, at baguhin, burahin o iwasan ang mga teknikal na hakbang na itinakda ng Software upang protektahan ang mga karapatan sa intelektwal na pag-aari.

+

4.1.2 Reverse engineering ng Software, tulad ng disassembly, decompilation, o iba pang mga pagtatangka na makuha ang source code ng Software.

+

4.1.3 Sa pamamagitan ng pagbabago o palsipikasyon ng mga tagubilin at data sa operasyon ng software, pagdaragdag, pagbura o pagbabago ng function o epekto ng operasyon ng software, o software o mga pamamaraan na gagamitin para sa mga nabanggit na layunin upang patakbuhin o ipamahagi sa publiko, hindi alintana kung ang mga aksyong ito ay para sa mga komersyal na layunin.

+

4.1.4 Gamitin ang software para sa anumang pag-uugali na naglalagay sa panganib ng seguridad ng network, kabilang ngunit hindi limitado sa: paggamit ng hindi awtorisadong data o pag-access sa mga hindi awtorisadong server/account; pag-access sa mga pampublikong network o iba pang operating system nang walang pahintulot at pagbura, pagbabago o pagdaragdag ng naka-store na impormasyon; hindi awtorisadong mga pagtatangka na suriin, i-scan, o subukan ang mga kahinaan ng sistema o network ng software o iba pang mga aksyon na sumisira sa seguridad ng network; mga pagtatangka na makagambala o sirain ang normal na operasyon ng software system o website, sadyang pagkalat ng mga malisyosong programa o virus, at iba pang mga aksyon na nakakagambala sa normal na serbisyo ng impormasyon ng network; pagpalsipika ng mga pangalan o bahagyang pangalan ng TCP/IP packet.

+

4.1.6 Nang walang nakasulat na pahintulot ng Kumpanya, ang gumagamit ay arbitraryong nagsasagawa ng mga sumusunod na aksyon sa software at sa impormasyon dito, kabilang ngunit hindi limitado sa: paggamit, pag-upa, pagpapahiram, pagkopya, pagbabago, pag-link, muling paglilimbag, pag-compile, paglalathala, paglalabas, pagtatayo ng mga mirror site, pagbuo ng mga derivative na produkto, gawa, serbisyo, plugin, extension, compatibility, interconnection, atbp., sa tulong ng Software.

+

4.1.7 Gamitin ang Software upang mag-publish, magpadala, mamahagi, at mag-imbak ng nilalaman na lumalabag sa iyong mga lokal na batas.

+

4.1.8 Gamitin ang software upang mag-publish, magpadala, magpalaganap, at mag-imbak ng nilalaman na lumalabag sa mga karapatan sa intelektwal na pag-aari, mga lihim sa kalakalan, at iba pang lehitimong karapatan ng iba.

+

4.1.9 Gamitin ang software na ito upang mag-publish, magpadala at magpalaganap ng impormasyon sa advertising at junk na impormasyon nang maramihan.

+

4.1.10 Gamitin ang Software at iba pang mga Serbisyo sa anumang labag sa batas na paraan, para sa anumang labag sa batas na layunin, o sa anumang paraan na hindi naaayon sa lisensyadong paggamit ng Kasunduang ito.

+

4.2 Tuntunin ng paglalathala ng impormasyon

+

4.2.1 Kung gumagamit ka ng software upang mag-publish ng nilalaman ng impormasyon (kung mayroon), dapat mong garantiyahin na pagmamay-ari mo ang mga karapatan sa intelektwal na pag-aari ng nilalaman ng impormasyon na na-upload mo o nakakuha ka ng legal na awtorisasyon, at anumang pag-uugali mo sa paggamit ng software at mga serbisyo ay hindi lumalabag sa mga lehitimong karapatan at interes ng anumang third party.

+

4.2.2 Kapag gumagamit ng Software, ang gumagamit ay hindi dapat gumamit ng Software upang makisali sa mga sumusunod na aktibidad, kabilang ngunit hindi limitado sa:

+

4.2.2.1 Lumikha, kumopya, mag-publish, magpalaganap, at mag-imbak ng nilalaman na lumalabag sa mga lokal na pambansang batas at regulasyon.

+

4.2.2.2 Mag-publish, magpadala, magpalaganap, at mag-imbak ng nilalaman na lumalabag sa mga legal na karapatan ng iba tulad ng reputasyon, larawan, intelektwal na pag-aari, at mga lihim sa kalakalan.

+

4.2.2.3 Gumawa-gawa ng mga katotohanan, itago ang katotohanan upang malinlang o mandaya ng iba.

+

4.2.2.4 Mag-publish, magpadala at magpalaganap ng impormasyon sa advertising at junk na impormasyon.

+

4.2.2.5 Makisali sa iba pang mga aksyon na lumalabag sa mga lokal na batas at regulasyon.

+

4.2.3 Hindi ka maaaring magsagawa ng anumang komersyal na aktibidad tulad ng advertising at pagbebenta ng mga kalakal sa Software nang walang pahintulot ng Kumpanya.

+

4.3 Nauunawaan at sumasang-ayon ang Gumagamit na:

+

4.3.1 Tutukuyin ng Saitong kung ang gumagamit ay pinaghihinalaang lumabag sa mga nabanggit na tuntunin ng paggamit, at ayon sa mga resulta ng pagtukoy, isuspinde o wakasan ang iyong lisensya o gumawa ng iba pang mga hakbang na paghihigpit na maaaring gawin alinsunod sa kasunduang ito.

+

4.3.2 Para sa impormasyong inilathala ng gumagamit gamit ang lisensyadong software na pinaghihinalaang labag sa batas o pinaghihinalaang lumalabag sa mga legal na karapatan ng iba o paglabag sa Kasunduang ito, ang impormasyon ay direktang tatanggalin.

+

4.3.3 Kung ang paglabag ng gumagamit sa mga nabanggit na tuntunin ng paggamit ay nagdulot ng pinsala sa mga third party, kailangan mong personal na managot sa ilalim ng batas sa iyong sariling pangalan, at dapat mong tiyakin na ang kumpanya ay ligtas sa mga pagkalugi o dagdag na gastos.

+

4.3.4 Kung ang gumagamit ay lumabag sa mga nauugnay na probisyon ng batas o kasunduan, na nagdulot ng pagkalugi sa Saitong, o napailalim sa mga paghahabol ng third party, o pinarusahan ng administratibong awtoridad, ang gumagamit ay magbabayad ng mga pagkalugi at/o gastos na dulot ng Saitong, kabilang ang makatwirang bayad sa abogado, mga gastos sa imbestigasyon at pagkolekta ng ebidensya.

+ +

5. Paglalarawan ng serbisyo ng third-party

+

5.1 Nauunawaan at sumasang-ayon ang gumagamit na ang software system ay maaaring maglaman ng mga serbisyong ibinigay ng mga kaanib ng Kumpanya o mga third party, at ang Kumpanya ay nagbibigay lamang ng mga nauugnay na functional module sa sistema para sa kaginhawaan ng mga gumagamit at nagbibigay ng access sa mga serbisyo ng third-party.

+

5.2 Kung ang mga serbisyo ng third-party ay naka-preset sa mga serbisyo ng software system, o binuksan o in-order ng mga gumagamit mismo, nauunawaan at sumasang-ayon ang mga gumagamit na ang Saitong ay hindi nagbibigay ng anumang malinaw o ipinahiwatig na garantiya tungkol sa legalidad at pagiging epektibo ng mga third-party service provider o mga gumagamit, pati na rin ang legalidad, katumpakan, pagiging epektibo at seguridad ng mga serbisyo ng third-party.

+

5.3 Ang kumpanya ay hindi nangangasiwa, kumokontrol o nagbibigay ng anumang warranty o garantiya ng anumang uri para sa, o inaako ang anumang pananagutan para sa, mga serbisyo ng third-party.

+

5.4 Anumang hindi pagkakasundo o pagtatalo sa pagitan ng gumagamit at ng third-party service provider ay malulutas ng Gumagamit at ng third party alinsunod sa proseso ng negosyo at mga pamantayan ng negosyo ng third-party service provider, at ang kumpanya ay hindi mananagot.

+ +

6. Patakaran sa Privacy at Proteksyon ng Personal na Impormasyon

+

6.1 Ang Saitong ay nakatuon sa pagprotekta ng privacy ng mga gumagamit alinsunod sa patakaran sa privacy, mangyaring tingnan: Patakaran sa Privacy ng Voitrans.

+ +

7. Pananagutan sa paglabag sa kasunduan

+

7.1 May karapatan ang Saitong na hatulan kung ang pag-uugali ng gumagamit ay sumusunod sa mga probisyon ng Kasunduang ito. Kung pinaniniwalaan na ang Gumagamit ay lumabag sa mga nauugnay na batas at regulasyon o sa mga probisyon ng Kasunduang ito at mga kaugnay na tuntunin, ayon sa kalubhaan ng paglabag ng gumagamit, may karapatan ang Saitong na burahin ang labag sa batas na impormasyon, higpitan, isuspinde, wakasan ang paggamit ng gumagamit ng serbisyo ng Software, habulin ang legal na pananagutan ng gumagamit at gumawa ng iba pang mga hakbang na itinuturing ng Saitong na naaangkop. Kung kami ay magkaroon ng anumang pagkalugi (kabilang ngunit hindi limitado sa pagtanggap ng anumang paghahabol ng third party o parusa mula sa anumang administratibong departamento), ang Gumagamit ay mananagot nang lubusan.

+ +

8. Mga panganib sa serbisyo at disclaimer

+

8.1 Nais naming magbigay ng suporta sa serbisyo gamit ang kasalukuyang teknolohiya. Hindi ginagarantiya ng Saitong na ang Serbisyo ng Software ay gagana nang walang pagkaantala o pagkakamali, na ang lahat ng mga depekto ng Serbisyo ng Software ay aayusin, o na ang Serbisyo ng Software ay matutugunan ang lahat ng mga kinakailangan ng mga gumagamit. Para sa mga nagreresultang kahihinatnan, ang Saitong ay hindi mananagot.

+

8.2 Ang lahat ng mga pagkalugi na natamo ng gumagamit dahil sa mga third party tulad ng pagkabigo ng linya ng komunikasyon, mga teknikal na problema, network, pagkabigo ng kagamitan ng computer terminal, kawalang-katatagan ng sistema at iba pang mga kadahilanan ng force majeure ay hindi dapat managot.

+

8.3 Hindi ginagarantiya ng Saitong ang legalidad, pagiging tunay, katumpakan at pagiging epektibo ng nilalaman ng impormasyon na nakuha sa pamamagitan ng software (kabilang ngunit hindi limitado sa nilalaman ng serbisyo ng third-party), at hindi mananagot ang Saitong para sa mga resulta ng anumang pag-uugali na ginawa ng mga gumagamit batay sa query at pagtingin.

+

8.4 Ang software, tulad ng karamihan ng Internet software, ay naaapektuhan ng mga pagkakaiba sa mga salik kabilang ngunit hindi limitado sa mga dahilan ng gumagamit, kalidad ng serbisyo ng network, kapaligiran ng lipunan at iba pang mga salik, at maaaring sumailalim sa iba't ibang mga problema sa seguridad, tulad ng paggamit ng iba ng impormasyon ng gumagamit, na nagreresulta sa pang-aabala sa tunay na buhay; iba pang software na na-download at na-install ng mga gumagamit o iba pang mga website na binisita ng mga gumagamit ay naglalaman ng mga virus tulad ng "Trojan horse", na nagbabanta sa seguridad ng impormasyon at data ng terminal equipment ng mga gumagamit, at pagkatapos ay naaapektuhan ang normal na paggamit ng software. Dapat palakasin ng mga gumagamit ang kamalayan sa seguridad ng impormasyon at proteksyon ng data ng gumagamit, at bigyang-pansin ang pagpapalakas ng proteksyon ng password upang maiwasan ang pagkawala at pang-aabala.

+

8.5 Kapag ginagamit ng mga gumagamit ang Software o nangangailangan ang Saitong na magbigay ng mga tiyak na serbisyo, maaaring tumawag ang Software sa mga sistema ng third-party o software ng third-party upang suportahan ang paggamit o pag-access ng mga gumagamit, at ang mga resulta ng paggamit o pag-access ay ibinibigay ng third party. Bukod sa pagsunod sa mga nauugnay na tuntunin ng Kasunduang ito, ang mga gumagamit ay dapat ding sumunod sa mga kasunduan at nauugnay na tuntunin ng third party. Dapat maunawaan at sumang-ayon ang mga gumagamit na, kapag gumagamit ng mga serbisyo ng third-party, ang mga third party ay maaaring basahin ang data ng gumagamit, at hindi ginagarantiya ng Saitong ang kaligtasan, katumpakan, pagiging epektibo at iba pang mga hindi tiyak na panganib ng mga resulta na nakamit sa pamamagitan ng mga sistema ng third-party o suporta ng software ng third-party, ang mga gumagamit ay dapat mag-ehersisyo ng maingat na paghatol, at hindi mananagot ang Saitong para sa anumang mga hindi pagkakasundo at pinsala na dulot nito.

+

8.6 Upang magarantiya ang awtonomiya ng pagpapaunlad ng negosyo at pagsasaayos ng kumpanya, maaaring baguhin o gambalain ng kumpanya ang serbisyo sa anumang oras pagkatapos kumuha ng makatwirang paraan upang ipaalam sa gumagamit.

+

8.7 Maliban sa malinaw na itinatadhana ng mga batas at regulasyon, ang Saitong ay gagawa ng lahat ng pagsisikap upang matiyak na ang software at ang teknolohiya at impormasyong kasangkot ay ligtas, epektibo, tumpak at maaasahan, ngunit limitado ng umiiral na teknolohiya, nauunawaan ng gumagamit na hindi ito magagarantiya ng Saitong.

+

8.8 Ang kabayaran para sa personal na pinsala o insidental at hindi direktang pinsalang pang-ekonomiya na dulot ng o kaugnay ng alinman sa mga sumusunod na pangyayari, kabilang ngunit hindi limitado sa pagkawala ng kita, pagkawala ng data, mga pinsala para sa pagkaantala ng negosyo o iba pang mga pinsala o pagkalugi sa negosyo, ay sasagutin ng Gumagamit:

+

1) Paggamit o kawalan ng kakayahang gumamit ng lisensyadong software.

+

2) Hindi awtorisadong paggamit ng software o pagbabago ng data ng gumagamit ng mga third party.

+

3) Mga gastos at pagkalugi na natamo ng mga aksyon ng gumagamit sa software.

+

4) Mga maling pang-unawa ng gumagamit tungkol sa software.

+

5) Anumang iba pang pagkalugi na may kaugnayan sa software na hindi maiuugnay sa mga kadahilanan ng Saitong.

+

8.9 Sumasang-ayon ang Gumagamit na may karapatan ang Kumpanya na isuspinde, gambalain o wakasan ang lahat o bahagi ng Serbisyo sa gumagamit batay sa mga kinakailangan ng mga hudisyal, regulatoryo at pangangasiwang awtoridad o sa sarili nitong mga dahilan sa negosyo. Hindi tumatanggap ng pananagutan ang Saitong para dito.

+

8.10 Nauunawaan at sumasang-ayon ang Gumagamit na gagamitin ng Kumpanya ang mga komersyal na makatwirang pagsisikap upang matiyak ang seguridad ng pag-iimbak ng data sa Software at mga Serbisyo, ngunit hindi makapagbibigay ang kumpanya ng kumpletong garantiya, at nauunawaan ng Gumagamit na hindi mananagot ang Kumpanya para sa pagbura o pag-iimbak o kabiguan ng pag-backup ng data sa Serbisyo.

+

8.11 Sa pinakamataas na lawak na pinapayagan ng batas, ang Developer o Supplier ay hindi mananagot para sa anumang direkta, hindi direkta, insidental, espesyal o konsekwensiyal na pinsala na nagmumula sa paggamit ng Aplikasyon. Kung ang gumagamit ay may karagdagang pangangailangan, mangyaring pumunta sa isang regular na ospital para sa malalimang pagsusuri.

+ +

9. Pahayag ng intelektwal na pag-aari

+

9.1 Ang Saitong ang may-ari ng mga karapatan sa intelektwal na pag-aari ng software na ito. Lahat ng mga Copyright, trademark, patent, lihim sa kalakalan at iba pang mga karapatan sa intelektwal na pag-aari ng software, pati na rin ang lahat ng nilalaman ng impormasyon na may kaugnayan sa software (kabilang ngunit hindi limitado sa teksto, mga larawan, audio, video, graphics, disenyo ng interface, layout frame, nauugnay na data o mga elektronikong dokumento, atbp.) ay protektado ng mga lokal na batas at regulasyon at mga kaukulang internasyonal na kasunduan.

+

9.2 Nang walang nakasulat na pahintulot ng Kumpanya, ang Gumagamit ay hindi dapat mag-implement, gamitin o ilipat ang mga nabanggit na karapatan sa intelektwal na pag-aari para sa anumang komersyal o hindi komersyal na layunin, o payagan ang anumang third party, at inilalaan ng Kumpanya ang karapatan na habulin ang legal na pananagutan para sa mga nabanggit na aksyon.

+ +

10. Pagbabago ng kasunduan

+

10.1 May karapatan ang Saitong na baguhin ang mga tuntunin ng Kasunduang ito kung kinakailangan. Kapag nabago na ang mga tuntunin ng Kasunduan, ang mga binagong tuntunin ng Kasunduan ay ilalathala sa nauugnay na pahina. Kung hindi ka sumasang-ayon sa nabagong nilalaman, ang gumagamit ay dapat kusang-loob na kanselahin ang serbisyong ito. Kung patuloy na gagamitin ng Gumagamit ang mga Serbisyo, ituturing na tinanggap niya ang mga pagbabago sa mga tuntunin ng Kasunduan.

+

10.2 Inilalaan ng Saitong ang karapatan na baguhin o palitan ang mga bayad na serbisyo, mga pamantayan sa singil, mga paraan ng pagsingil, mga bayad sa serbisyo at mga tuntunin ng serbisyo na ibinigay kung kinakailangan. Kapag nagbibigay ng mga serbisyo, maaari kaming maningil ng ilang bayad sa mga gumagamit ng ilang serbisyo ngayon o sa hinaharap. Kung tumanggi ang mga gumagamit na magbayad ng mga naturang bayad, hindi sila maaaring magpatuloy sa paggamit ng mga nauugnay na serbisyo pagkatapos magsimula ang mga singil.

+
+ + diff --git a/doc/tr/privacy_policy.html b/doc/tr/privacy_policy.html new file mode 100644 index 000000000..62666857d --- /dev/null +++ b/doc/tr/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans Gizlilik Politikası + + + + +
+

Voitrans Gizlilik Politikası

+

Son Güncelleme: 27 Mayıs 2025

+

Yürürlük Tarihi: 27 Mayıs 2025

+ +

Voitrans Yazılım ve Hizmetlerini kullandığınız için hoş geldiniz

+

1. Voitrans, Saitong Industries Inc. (bundan böyle "Şirket" olarak anılacaktır) tarafından sağlanmaktadır. Kullanıcıların Bluetooth cihazları ve diğer ürün yönetimini gerçekleştirmesine yardımcı olabilir. Kişisel bilgilerin kullanıcılarımız (bundan böyle "siz" olarak anılacaktır) için önemini ve kişisel bilgilerinizin etkin bir şekilde korunmasının işimizin sağlıklı ve sürdürülebilir gelişiminin temel taşı olduğunu anlıyoruz. Voitrans ürünlerini veya hizmetlerini kullandığınız ve güvendiğiniz için teşekkür ederiz! Bu güvenin kolay elde edilmediğinin tamamen farkındayız, açıklık ve şeffaflık ilkesine bağlıyız, kişisel bilgilerinizi işleme kurallarımızı size ifade etmek için yasal ve meşru yollar ile açık ve makul amaçlar kullanarak kişisel bilgilerinizi işliyoruz. Özel not: Uygun seçimler yapabilmeniz için lütfen ürünlerimizi veya hizmetlerimizi kullanmadan önce bu Gizlilik Politikasını dikkatle okuduğunuzdan ve anladığınızdan emin olun.

+

2. Bu Gizlilik Politikası, Voitrans'ı kullanırken kişisel bilgilerinizi nasıl topladığımızı, kullandığımızı, sakladığımızı ve paylaştığımızı açıklar. Kişisel bilgiler, belirli bir gerçek kişiyi tanımlayabilen veya belirli bir gerçek kişinin faaliyetlerini tek başına veya diğer bilgilerle birlikte yansıtabilen, elektronik veya diğer yollarla kaydedilen her türlü bilgiyi ifade eder. Voitrans, hizmetin tüm kullanıcılarının kişisel gizliliğine saygı duyar ve korur. Bu Gizlilik Politikasında aksi belirtilmedikçe, Voitrans önceden izniniz olmadan bu bilgileri kamuoyuna açıklamayacak veya üçüncü taraflara sağlamayacaktır.

+

3. Bir Uygulama Mağazası ürünü veya hizmeti aracılığıyla üçüncü bir tarafın ürününü veya hizmetini kullandığınızda, kişisel bilgileriniz üçüncü tarafın gizlilik politikasına tabi olacaktır.

+

4. Voitrans Bu Gizlilik Politikası zaman zaman güncellenecektir. Voitrans Hizmet Kullanım Sözleşmesini kabul ederek ve Voitrans'ı kullanmaya başlayarak, bu Gizlilik Politikasının tamamını kabul etmiş sayılırsınız. Bu Gizlilik Politikasını kabul etmiyorsanız, lütfen Voitrans Yazılım ve Hizmetlerini kullanmayın.

+

5. İlgili hizmetlerin etkinliğini analiz etmek ve ölçmek amacıyla, kişisel bilgilerinizi bu Gizlilik Politikasının hükümlerine uygun olarak kullanacak ve açıklayacağız.

+ +

Bu Gizlilik Politikası aşağıdakileri anlamanıza yardımcı olacaktır:

+
    +
  • 1 Topladığımız bilgiler
  • +
  • 2 Bilgilerin saklanması
  • +
  • 3 Bilgi güvenliği
  • +
  • 4 Topladığımız bilgileri nasıl kullanıyoruz
  • +
  • 5 Bilgi paylaşımı
  • +
  • 6 Kişisel bilgilerinizi nasıl yönetirsiniz
  • +
  • 7 Uygulama izin açıklaması
  • +
  • 8 Üçüncü taraf SDK'lara erişim
  • +
  • 9 Küçüklerin korunması
  • +
  • 10 Gizlilik Politikasının yürürlüğe girmesi ve güncellenmesi
  • +
  • 11 Bizimle nasıl iletişime geçilir
  • +
+ +

1. Topladığımız bilgiler

+

1. Voitrans'ı kullanmaya başladığınızda uygulamayı kullanımınız hakkında veri toplamaya başlayacağız

+

2. Voitrans, üçüncü taraflardan veya iş ortaklarından yasal yollarla hakkınızda kişisel bilgiler edinebilir

+

3. Size daha iyi ürün ve hizmetler sunmak, kullanım sırasında ağ güvenliği sağlamak, ürünlerin normal çalışmasını sürdürmek ve optimizasyon ile iyileştirme yapmak, bilgi hizmetlerimizin amacı doğrultusunda, bu gizlilik politikasını aktif olarak kabul ettiğinizi tıkladıktan sonra sunduğumuz bilgileri kullanın. Hizmet süresince, Ulusal yasa ve yönetmeliklere uygun olarak Uygulamanın temel işlevlerinin normal çalışmasını sağlamak için gerekli kişisel bilgilere ek olarak, sizden diğer kişisel bilgileri toplayacağız:

+

3.1 Riskli kullanıcıları tanımlamak, kullanıcıların gerçekliğini yargılamak ve dolandırıcılığı kapsamlı bir şekilde önlemek amacıyla, yazılımı her açtığınızda cihaz bilgilerinizi okuyacağız, bunlar arasında: (Cihaz modeli, cihaz MAC adresi, cihaz benzersiz tanımlayıcısı (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, vb.) MEID, seri numarası, WIFI'nin SSID ve BSSID'si), Bluetooth adresi, işletim sistemi sürümü, işletim sistemi adı, kullanıcı giriş hesabı ve şifre bilgileri;

+

3.2 Ürünlerimizi ve hizmetlerimizi kullandığınızda, ağ günlük bilgileri veya belirli programlar ve yazılımlar aracılığıyla belirli bilgiler toplayabiliriz, bu bilgiler şunları içerebilir: ürün ve hizmetlerin kullanım ayrıntıları, örneğin uygulamanızın açılma zamanı, kullanım süresi ve ziyaret edilen sayfanın adresi; cihazınızı optimize etmek ve hizmetlerimizi iyileştirmek için çökmeler, sistem etkinliği vb. gibi cihaz olay bilgileri;

+

3.3 Ekipmanın risk altında olduğu uygulamaları belirlemek ve daha güvenli işlevsel hizmetler sunmak için. Bu nedenle, ürünün normal çalışmasını sağlamak ve cihazın güvenliğini korumak için süreç içinde uygulama/uygulama yükleme listenizi almamız gerekmektedir.

+

3.4 Uygulama işlevlerinin kullanıcılar tarafından kullanımını analiz etmek ve kullanıcıların gerçekliğini belirlemek amacıyla, veri istatistikleri yapmamız ve cihazınız kullanımdayken cihaz MAC adresi ve cihaz benzersiz tanımlayıcısı dahil yukarıdaki cihaz bilgilerini toplamamız gerekmektedir.

+

3.5 Cihaz sinyali: kullandığınız cihazın ağ durumu, WIFI erişim noktası bilgileri vb.

+

3.6 Konum Bilgileri: Yerel bilgilerin güncellenmesi, içerik hizmetlerinin sağlanması vb. amaçlarla konumunuz hakkındaki bilgileri toplamak ve işlemek için GPS, WiFi veya diğer teknik araçları kullanabiliriz.

+

Daha fazla bilgi için lütfen "Kişisel Bilgi Toplama Listesi"ne tıklayın.

+ +

1. Yukarıdaki bilgilerdeki kullanıcı cihaz bilgileri (IMEI numarası, arama durumu ve kimlik numarası), GPS konum bilgileri, fotoğraf medya içeriği ve dosya erişim hakları gibi daha hassas kişisel bilgiler için, toplama öncesinde onayınızı alacağız. Bazı hassas olmayan bilgiler için toplama varsayılan ve otomatik olabilir. Mobil cihazınızın Ayarlar seçeneğini ayarlayarak ilgili bilgileri toplamamızı veya belirli izinleri kullanmamızı kısıtlayabilirsiniz. Belirli bir izne erişimimizi kısıtladığınızda, ilgili hizmetleri size sunmaya devam edemeyebiliriz ve ilgili bilgilerinizi artık işlemeyeceğiz.

+

2. Kimlik kartı numaranızı, kişisel biyometrik bilgilerinizi, banka hesap numaranızı, mülk bilgilerinizi, kredi bilgilerinizi, sağlık ve fizyolojik bilgilerinizi ve diğer kişisel hassas bilgilerinizi toplamayacağız.

+

3. Hassas izinler hakkında: Uygulama işlevlerini düzgün şekilde kullanabilmek için, ürünün normal ürünlerle ilgili işlevsel hizmetler sağlamak amacıyla aşağıdaki izinleri alması gerekmektedir.

+ +

1 Depolama okuma ve yazma izinlerini alın

+

1 Nasıl alınır: açılır pencere istemi, izin alındığında kullanıcı aktif olarak kabul et'e tıklayacak ve uygulama bu izni kullanacaktır

+

2 Kullanım amacı ve kapsamı: Sistemdeki kaynak önbellek dosyalarını ve küçük resimleri taramak, müzik kaynaklarını ve ürün resimlerini yüklemek için kullanılır. Kullanıcıların görüntülemesini ve işlem yapmasını kolaylaştırmak için Uygulama arayüzünde görüntülenir

+ +

2 Uygulama yükleme listesi iznini alın

+

1 Nasıl alınır: açılır pencere istemi, izin alındığında kullanıcı aktif olarak kabul et'e tıklayacak ve uygulama bu izni kullanacaktır

+

2 Kullanım amacı ve kapsamı: Uygulama reklam tanıtım hizmetlerini kullanması gerektiğinde, üçüncü taraf reklam platformu Youmon +SDK'nın, kullanıcının zaten sahip olduğu uygulamayı göndermesini önlemek ve kullanıcı deneyimini iyileştirmek için cihazın "uygulama yazılım yükleme listesi iznini" alması gerekmektedir.

+ +

3 Cihaz durum bilgisi alma izni

+

İçerir: (Cihaz modeli, cihaz MAC adresi, cihaz benzersiz tanımlayıcısı (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, vb.) MEID, seri numarası, WIFI'nin SSID ve BSSID'si, Bluetooth adresi), işletim sistemi sürümü, işletim sistemi adı vb.;

+

1 Nasıl alınır: açılır pencere istemi, izin alındığında kullanıcı aktif olarak kabul et'e tıklayacak ve uygulama bu izni kullanacaktır

+

2 Kullanım Amacı ve Kapsamı: Uygulamamızı kullanırken, kullanıcının uygulama işlevlerini kullanımını analiz etmek ve kullanıcının gerçekliğini yargılamak amacıyla, izni Autonavi SDK, Youmon +SDK vb. dahil üçüncü taraf SDK'larla senkronize edeceğiz.

+ +

4 Konum bilgilerine erişim

+

1 Nasıl alınır: açılır pencere istemleri, izin alındığında kullanıcı yalnızca uygulamayı aktif olarak kabul ettiğinde bu izni kullanacaktır.

+

2 Kullanım Amacı ve Kapsamı: Uygulama GPS, WiFi veya diğer işlevleri kullanması gerektiğinde, ürünün yakındaki konumlardaki Bluetooth cihazlarını aramak için konumunuzu ve bilgilerinizi toplaması gerekmektedir.

+

Not: Daha fazla uygulama izni için bu belgenin "Gizlilik Politikası" Bölüm 7 "Uygulama İzin Açıklaması"na bakın

+ +

2. Bilgilerin saklanması

+

1. Bilgilerin saklandığı yer

+

Çin Halk Cumhuriyeti'nde topladığımız ve oluşturduğumuz kişisel bilgiler sunucularımızda ve/veya bağlı kuruluşlarımızın sunucularında saklanacaktır.

+

2. Bilgi saklama ve işleme

+

Kişisel bilgilerinizi yalnızca amacı gerçekleştirmek için gerekli olan süre boyunca veya yasa ve yönetmeliklerin gerektirdiği süre boyunca saklarız. Bu ürünü kullanmayı bıraktıktan sonra, kişisel bilgilerinizi ve uygulama verilerinizi toplamayı ve işlemeyi derhal durduracağız. Yukarıdaki süre aşıldığında, bize sağladığınız kişisel bilgileri sileceğiz veya anonimleştireceğiz.

+

Gerekli işlevlere ek olarak, Voitrans'ın ilgili sistem izinlerine başvurması gerekmektedir. Bulutun sunucu tarafı kullanıcı kişisel bilgilerini saklamaz ve erişilen üçüncü taraf SDK'lar hizmet sağlayıcı (Amu İstatistik SDK, Autonavi SDK) tarafından anonimleştirilecek ve kimliği gizlenecektir, böylece kullanıcılar takip edilemez. Kullanıcının telefonunda saklanan bilgiler, kullanıcı Voitrans'ı kaldırdığında veya önbelleği temizlediğinde otomatik olarak silinecektir.

+ +

3. Bilgi güvenliği

+

1. Voitrans, kişisel bilgilerinizi endüstri standardı güvenlik önlemleri ve teknolojileri kullanarak saklar ve korur; kimlik doğrulama, veri şifreleme, kısıtlı veri merkezi erişimi ve diğer güvenlik önlemleri gibi önlemlerle bilgilerinizin ifşa, değişiklik ve imhadan güvende olmasını sağlar. Yukarıda belirtilen güvenlik önlemlerine rağmen, lütfen hiçbir güvenlik önleminin %100 güvenli olamayacağını unutmayın.

+

2. Voitrans tarafından sağlanan hizmetleri kullanırken lütfen kişisel bilgilerinizi koruyun. Kişisel bilgilerinizin ele geçirildiğini tespit ederseniz, uygun önlemleri alabilmemiz için lütfen derhal bizimle iletişime geçin.

+ +

4. Topladığımız bilgileri nasıl kullanıyoruz

+

1. Uygulama iş işlevlerini uygularken, size sunduğumuz ürün ve hizmetlerin bütünlüğünü ve güvenliğini sağlamak için kişisel bilgilerinizi kullanabiliriz;

+

2. Toplanan bilgiler aracılığıyla kullanım alışkanlıklarınızı anlayacağız ve veri analizi yardımıyla hizmetlerin kabul edilebilirliğini, kullanım alışkanlıklarınızı vb. belirleyeceğiz; böylece yeni ürünler, özellikler ve hizmetler test edip oluşturabilir, hizmet seviyesini iyileştirebilir, mevcut hizmetleri geliştirmemize ve yeni hizmetler geliştirmemize yardımcı olabiliriz;

+

3. Ürünler ve hizmetler hakkında müşteri anketleri yapmak, ürünler ve hizmetler hakkında bildirimler göndermek ve ticari tanıtım için kişisel bilgilerinizi kullanabiliriz;

+

4. Bilgilerinizi uygulamayla ilgili iç analiz ve araştırma için kullanabiliriz;

+ +

5. Bilgi paylaşımı

+

Şu anda, kişisel bilgilerinizi şirket dışındaki üçüncü taraflarla aktif olarak paylaşmayacağız veya aktarmayacağız; kişisel bilgilerinizin başka bir paylaşımı veya aktarımı varsa, doğrudan veya üçüncü tarafın yukarıdaki davranış için açık onayınızı aldığını doğrulayarak yapacağız.

+

Topladığımız kişisel bilgileri kamuya açıklamayacağız. Kamuya açıklama yapılması gerekiyorsa, sizi kamuya açıklamanın amacı, açıklanan bilgi türü ve ilgili olabilecek hassas bilgiler hakkında bilgilendireceğiz ve açık onayınızı alacağız.

+

İşlerimiz gelişmeye devam ettikçe, birleşme, devralma, varlık transferleri ve diğer işlemler yapabiliriz ve sizi ilgili koşullar hakkında yasa ve yönetmeliklere uygun olarak bilgilendireceğiz ve kişisel bilgilerinizi korumaya devam etmek için bu Kılavuz'un gerektirdiği standartlardan daha düşük olmayan standartları uygulayacağız veya yeni bir kontrolörün kişisel bilgilerinizi korumaya devam etmesini talep edeceğiz.

+

Ayrıca, ilgili yasa ve yönetmelikler ile ulusal standartlara göre, aşağıdaki durumlarda kişisel bilgi sahibinin önceden yetkilendirmesi ve onayı olmaksızın kişisel bilgileri paylaşabilir, aktarabilir ve kamuya açıklayabiliriz:

+
    +
  • 1 Doğrudan ulusal güvenlik ve ulusal savunma güvenliği ile ilgili;
  • +
  • 2 Doğrudan kamu güvenliği, halk sağlığı veya büyük kamu çıkarları ile ilgili;
  • +
  • 3 Doğrudan cezai soruşturma, kovuşturma, yargılama ve kararların infazı ile ilgili;
  • +
  • 4 Kişisel veri sahibinin veya diğer bireylerin yaşamını, mülkünü ve diğer önemli meşru hak ve çıkarlarını korumak amacıyla, ancak kişinin rızasını almanın zor olduğu durumlar;
  • +
  • 5 Kişisel bilgi sahibi tarafından kamuya açıklanan kişisel bilgiler;
  • +
  • 6 Yasal olarak kamuya açık bilgilerden kişisel bilgi toplama, örneğin meşru haber raporları, hükümet bilgi açıklamaları ve diğer kanallar.
  • +
+ +

6. Kişisel bilgilerinizi nasıl yönetirsiniz

+

Çin'in ilgili yasa, yönetmelik ve standartlarına ve diğer ülke ve bölgelerin yaygın uygulamalarına uygun olarak, kişisel bilgileriniz üzerinde aşağıdaki hakları kullanmanızı garanti ediyoruz:

+ +

1. Kişisel bilgilerinizi düzeltin

+

Tarafımızca işlenen kişisel bilgilerinizde bir hata olduğunu tespit ederseniz, yanlış veya eksik bilgileri düzeltme veya güncelleme hakkına sahipsiniz. Hesap merkezinde bağımsız olarak işlem yapamıyorsanız, saitong.voitrans@gmail.com adresine e-posta gönderebilirsiniz Bize ulaşın

+ +

2. Kişisel bilgilerinizi silin

+

Aşağıdaki durumlarda, kişisel bilgilerinizi silmemiz için bize talepte bulunabilirsiniz:

+
    +
  • Kişisel bilgileri yasa ve yönetmeliklere aykırı olarak işliyorsak;
  • +
  • Kişisel bilgilerinizi rızanız olmadan toplayıp kullanıyorsak;
  • +
  • Kişisel bilgileri işlememiz sizinle yaptığımız anlaşmayı ihlal ediyorsa;
  • +
  • Ürünlerimizi veya hizmetlerimizi artık kullanmıyorsanız;
  • +
  • Size artık ürün veya hizmet sağlamıyorsak.
  • +
+

Bize ulaşın. Talebinizi saitong.voitrans@gmail.com adresinden işleme alacağız Bize ulaşın. Aldıktan sonra size göndereceğiz 30 iş günü içinde

+ +

3. Onayınızın kapsamını değiştirin

+

saitong.voitrans@gmail.com adresine e-posta göndererek bizimle iletişime geçebilirsiniz Bize ulaşın. Talebiniz üzerine, kişisel bilgilerinizi artık toplamayacak, kullanmayacak veya açıklamayacağız. Lütfen onayınızı geri çekmenizin veya kişisel bilgilerinizi silmenizin bazı hizmetlerimizi kullanmanızı etkileyebileceğini unutmayın.

+ +

4 Kişisel bilgilere erişim ve kopyalama

+

İlgili yasaların hükümlerine uygun olarak, imei (telefon seri numarası) veya oaid veya Android ID hesap bilgilerinizi ve diğer bilgilerinizi sağlayarak, kişisel bilgilerinize erişim ve kopya için bize başvurabilirsiniz, 3514406195@qq.com adresine e-posta gönderebilirsiniz Bizimle iletişime geçin.

+ +

5. Yukarıdaki talebinize yanıt olarak

+

Güvenlik amacıyla, yazılı bir talep sunmanız veya kimliğinizi başka bir şekilde kanıtlamanız gerekebilir. Talebinizi işleme almadan önce kimliğinizi doğrulamanızı isteyebiliriz. Makul talebiniz için zamanında yanıt vereceğiz ve ilgileneceğiz. Gereksiz yere tekrarlayan, çok fazla teknoloji gerektiren (örneğin, yeni sistemlerin geliştirilmesi veya mevcut uygulamalarda köklü değişiklikler), başkalarının meşru çıkarlarını riske atan veya son derece pratik olmayan talepleri reddedebiliriz.

+

Aşağıdaki durumlarda, yasa ve yönetmeliklerin gereksinimleri doğrultusunda, talebinize yanıt veremeyeceğiz:

+
    +
  • Ulusal güvenlik ve ulusal savunma güvenliği ile ilgili;
  • +
  • Cezai soruşturma, kovuşturma ve yargılama ile bağlantılı;
  • +
  • Öznel kötü niyet veya hak ihlali yaptığınıza dair yeterli kanıt bulunan;
  • +
  • Talebinize yanıt vermek, sizin veya diğer bireylerin ve kuruluşların meşru hak ve çıkarlarına ciddi zarar verecekse.
  • +
+ +

6. Hesap iptali

+

Kullanıcı APP üzerinde [hesap iptali] işlemini gerçekleştirebilir. İşlem adımları:

+
    +
  1. [Benim] sayfasına gidin
  2. +
  3. Sağ üstteki [Ayarlar] düğmesine tıklayın
  4. +
  5. Onaylamak için [Hesabı İptal Et]'e tıklayın
  6. +
+

Oturumu kapattıktan sonra, kullanıcı hesabıyla ilgili bilgiler silinir

+ +

7. Uygulama izin açıklaması

+

Daha iyi ürün ve hizmetler sunmak için, yazılımı kullandığınızda aşağıdaki hakları talep edeceğiz; ana sayfaya girdiğinizde veya işlevi kullandığınızda yetkilendirme istenecektir; reddederseniz, ilgili işlevlerin bir kısmı normal şekilde kullanılamayacaktır. İzinlerin özel amaçları ve hatırlatmaları aşağıda ayrıntılı olarak açıklanmıştır:

+ +

1 Konum hakları:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

WiFi veya mobil baz istasyonu aracılığıyla kullanıcının enlem ve boylam konum bilgilerini elde etme

+

Voitrans'ı kullanırken, coğrafi konumunuza göre yakınlığınızdaki Bluetooth cihazını arayacağız. Aynı zamanda, daha istikrarlı hizmetler sunmak, ürünleri optimize etmek ve deneyimi iyileştirmek için yukarıdaki bilgileri Voitrans çalışma verileri ve işlevsel hizmetler elde etmek amacıyla Youmon ve Autonavi gibi üç SDK ile paylaşacağız.

+

Hatırlatma modu: İlk kez uygulama başlatma iznini gösteren bir istem görüntülenir ve kullanıcının kabul ettiğini onaylaması gerekir. Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Uygulama yönetimi işlevlerini gerçekleştirmek için bir uygulamaya eriştiğinizde bu izin gereklidir.

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

3 Ağ izinleri:

+

android.permission.INTERNET

+

Voitrans'ın bilgi hizmetleri ve sürüm yükseltme hizmetleri için bu izinler gereklidir ve kullanıcı deneyimini iyileştirmek ve hizmet yeteneklerini optimize etmek amacıyla Friends gibi üçüncü taraf SDK'lar da bu izinleri kullanacaktır.

+

Hatırlatma modu: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

4 Ağ durumu izinlerini alın:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Mevcut ağ bağlantısının geçerli olup olmadığını belirlemek, mevcut 4G ortamının olup olmadığını tespit etmek ve ağ ortamı değişikliklerini hatırlatıp hatırlatmamak için kullanılır, bu da bilgi içeriğinin yüklenmesini etkiler. Bu izin Voitrans'ı kullandığınızda talep edilir.

+

Ağ durumundaki değişiklikler verilerin yüklenmesini ve indirilmesini etkiler. Bu nedenle, ağ durumuna erişim izni friends + ve diğer platformlarla paylaşılacaktır.

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

5 Görev listesi izinlerini alın:

+

android.permission.GET_TASKS

+

Bu izin, yazılım yönetimi işlevi için uygulama listesini elde etmek amacıyla kullanılır. Yazılım yönetimi işlevini kullandığınızda, cep telefonuna yüklü uygulamaları okumanız gerekir.

+

Hatırlatma modu: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

6 MAC adresi iznini alın

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Voitrans'ı kullandığınızda, uygulamanın MAC adresi izinlerini alması gerekecektir:

+

Bir uygulama hedef dönüşüm verilerini raporlaması gerektiğinde, Youmon +SDK gibi üçüncü taraf platformlarının MAC kullanması gerekmektedir.

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

7 Ses kaydetme iznini alın

+

android.permission.RECORD_AUDIO

+

Voitrans'ın sesli giriş işlevini kullandığınızda, ses kaydetme iznini kullanmanız gerekir ve esas olarak çeviri ve diğer ilgili işlevler için sesli girişi kullanır.

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması, gerektiğinde kullanıcı dinamik olarak kutu açar.

+ +

8 WIFI için SSID iznini alın

+

Bu izin kullanıldığında, uygulama WIFI için SSID iznini okur:

+

Kullanım kapsamı ve amacı: Uygulama veri analizi hizmetlerini kullanması gerektiğinde, +SDK gibi üçüncü taraf platformlarının kullanıcılara daha doğru ve etkili işlevsel hizmetler sunmak için cihazın "WIFI SSID iznini" okuması gerekmektedir.

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

9 Bluetooth erişimi alın

+

Bu izin kullanıldığında, uygulama Bluetooth iznini okur:

+

Kullanım kapsamı ve amacı: Bluetooth kulaklıklar, Bluetooth saatler vb. gibi aksesuarları aramak ve yapılandırmak için Bluetooth cihazları. Kullanıcıların yönetimini kolaylaştırır

+

Hatırlatma modu: İlk kez uygulama başlatma iznini gösteren bir istem görüntülenir ve kullanıcının kabul ettiğini onaylaması gerekir. Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

10 WiFi için BSSID iznini alın

+

Uygulama, işlevsel hizmetler ve veri istatistikleri sağlamak amacıyla kullanıcıyı ayırt etmesi ve tanımlaması gerektiğinde, cihazın "WiFi BSSID" iznini okuyacaktır:

+

Kullanım kapsamı ve amacı: 1 Üçüncü taraf platformları: Youmeng SDK, Bugly SDK, Autonavi SDK gibi

+

Hatırlatma yöntemi: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

11 Uygulama yükleme iznini alın

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Yazılım, esas olarak yeni bir sürüm olduğunda kullanıcıların yeni bir sürüm yüklemesine ve yeni özellikler deneyimlemesine izin vermek için kullanılan uygulama yükleme iznini kullanacaktır.

+

Hatırlatma modu: Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

12 Kamera izinlerini alın

+

android.permission.CAMERA

+

Voitrans, QR kodlarını taramak ve Bluetooth kulaklıklar ve saatler gibi Bluetooth cihazlarını bağlamak için kamera izinlerini kullanır.

+

Hatırlatma yöntemi: İlk kez uygulama başlatma iznini gösteren bir istem görüntülenir ve kullanıcının kabul ettiğini onaylaması gerekir. Kullanıcı Sözleşmesi ve Gizlilik Politikası açıklaması.

+ +

Özel not:

+

1 Uygulama, kendi içinde Allies SDK, Scott harita SDK'sını entegre eder; kullanıcı izin verdikten sonra, uygulama arka planda/ön planda ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI ve diğer kişisel bilgileri toplar;

+

Notlar: Daha fazlası için lütfen aşağıdaki SDK ile ilgili içerik ve izinlere bakın [VIII. Üçüncü taraf SDK'lara erişim listesi]

+ +

8. Üçüncü taraf SDK'lara erişim

+

1 İstemcimizin istikrarlı çalışmasını ve işlevsel gerçekleşmesini sağlamak için, daha fazla hizmet ve işlev kullanabilmeniz ve bunlardan yararlanabilmeniz amacıyla, uygulamamız üçüncü tarafların yazılım araç geliştirme kitlerini (SDK) veya diğer benzer uygulamalarını yerleştirecektir; bu üçüncü taraflar, işlevleri ve reklam hizmetlerini normal şekilde sağlamak için kendi gizlilik politikalarına uygun olarak ilgili bilgileri toplayacak ve işleyecektir. Aşağıdaki bölümde üçüncü tarafın bilgi toplama ve işleme kurallarını öğrenebilirsiniz. Kişisel bilgilerinizin makul kullanımını ve güvenliğini korumak amacıyla ortaklarımızın bilgi edinmesi için geliştirme kitlerinde (SDK'lar) sıkı güvenlik testleri yapacağız. Lütfen üçüncü taraf SDK'larının sürüm yükseltmeleri nedeniyle veri işleme türlerini değiştirebileceğini unutmayın. Lütfen üçüncü taraf SDK'lar tarafından yayınlanan gizlilik politikalarına bakın. Ayrıntılar için aşağıya bakın veya Üçüncü Taraf SDK Listesini görüntülemek için tıklayın.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Elde Edilen Bilgiler: Cihaz numarası, IP adresi, cihaz yazılım bilgileri, cihaz tanımlama kodu (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, SIM kart IMSI bilgileri, IP, MAC adresi), cihaz tanımlayıcısı, bölge, cihazla ilgili uygulama bilgileri ve diğer hizmetle ilgili günlük bilgileri

+

Kullanım Amacı: WeChat girişi ve paylaşımı

+

Geliştirici: Shenzhen Tencent Computer Systems Company Limited

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Elde Edilen Bilgiler: Uygulama adı, uygulama sürüm numarası, cihaz markası ve modeli, işletim sistemi, operatör bilgileri, ekran çözünürlüğü, sensör bilgileri (vektör, ivme, basınç, yön, jeomanyetik, jiroskop, sıcaklık, ışık sensörü, NMEA sinyali), cihaz sinyal gücü bilgileri

+

Kullanım Amacı: Amap ile navigasyon

+

Geliştirici: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Elde Edilen Bilgiler: Uygulama adı, uygulama sürümü, cihaz markası ve modeli, işletim sistemi, ağ bilgileri, cihaz sinyal gücü vb.

+

Kullanım Amacı: Harita görüntüleme ve etkileşim

+

Geliştirici: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Elde Edilen Bilgiler: Konum bilgileri (GPS, Wi-Fi, baz istasyonu), cihaz bilgileri, ağ bilgileri vb.

+

Kullanım Amacı: Konum hizmetleri sağlama

+

Geliştirici: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Elde Edilen Bilgiler: Uygulama adı, uygulama sürümü, cihaz bilgileri, ağ bilgileri vb.

+

Kullanım Amacı: Harita araçları ve görüntüleme optimizasyonu

+

Geliştirici: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Elde Edilen Bilgiler: Cihaz tanımlayıcıları, temel cihaz bilgileri, yüklü yazılım listesi ve ağ bilgileri (ayrıntılar için resmi gizlilik politikasına bakın)

+

Kullanım Amacı: Alipay hesap girişi ve ödeme başlatma

+

Geliştirici: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Elde Edilen Bilgiler: SDK/API sürümü, platform, zaman damgası, uygulama tanımlayıcısı, uygulama sürümü, cihaz üreticisi, işletim sistemi sürümü, yerel ayar, saat dilimi, ağ durumu (Wi-Fi vb.), ağ günlükleri, çökme ve kullanım verileri, IP adresi vb. (ayrıntılar için resmi gizlilik politikasına bakın)

+

Kullanım Amacı: Uygulama kalite izleme ve veri raporlama hizmeti

+

Geliştirici: Shenzhen Tencent Computer Systems Company Limited

+

Toplama Yöntemi: SDK kendi kendine toplama

+

Gizlilik Politikası Bağlantısı: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Küçüklerin korunması

+

Ürünlerimizin ve hizmetlerimizin kullanıcıları 18 yaşın altındaki küçükleri içerebilir; küçük kullanıcılar ürünlerimizi kullanmadan önce bu Gizlilik Politikası hakkında ebeveynlerinin veya vasilerinin tavsiyesini almalı ve ebeveynlerinin veya vasilerinin onayını aldıktan ve rehberliğinde hizmetlerimizi kullanmalı veya bilgilerinizi bize sağlamalıdır. Soruları olan küçüklerin vasileri bu Gizlilik Politikasındaki iletişim bilgileri aracılığıyla bizimle iletişime geçebilir.

+

Yukarıdaki üçüncü taraf hizmet sağlayıcıları tarafından yukarıda belirtilen bilgilerin toplanmasına katılmıyorsanız, lütfen Yazılımı derhal kullanmayı bırakın. Yazılımı kullanımınız sırasında, bu üçüncü taraflar bazı işlevler, reklamlar ve diğer hizmetleri sağlamak için kendi gizlilik politikalarına uygun olarak ilgili bilgileri toplayacak ve işleyecektir. İlgili üçüncü taraf hizmet sağlayıcı tarafından yukarıda belirtilen bilgilerin toplanması nedeniyle bilgi sızıntısı olursa, ilgili üçüncü taraf hizmet sağlayıcı ilgili yasal sorumluluğu üstlenecektir.

+ +

10. Gizlilik Politikasının yürürlüğe girmesi ve güncellenmesi

+

1. Bu Gizlilik Politikası yayın tarihinden itibaren geçerlidir.

+

2. İşlerimiz gelişip değiştikçe, Gizlilik Politikamız değişebilir. Gizlilik politikamızı herhangi bir zamanda değiştirme hakkımızı saklı tutarız, bu nedenle lütfen sık sık kontrol edin. Gizlilik Politikamızda değişiklik yaparsak, bu güncellemeleri web sitemizde, uygulamalarımızda ve bilgilendirilmenizi sağlamak için uygun gördüğümüz yerlerde yayınlayacağız. Gizlilik politikası güncellenirse, güncelleme tarihinden itibaren geçerli olacaktır. Ürünlerimizi veya hizmetlerimizi kullanmaya devam etmeniz, değişen Gizlilik Politikamızı kabul ettiğiniz anlamına gelir.

+ +

11. Bizimle nasıl iletişime geçilir

+

Saitong Industries Inc 22 Kasım 2024 tarihinde kurulmuş olup, kayıtlı adresi: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, ABD. Şirketimiz ve platformumuz hakkında daha fazla bilgi edinmek istiyorsanız, bu politikada belirtilen iletişim bilgileri aracılığıyla bizimle iletişime geçebilirsiniz (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/tr/user_agreement.html b/doc/tr/user_agreement.html new file mode 100644 index 000000000..116985148 --- /dev/null +++ b/doc/tr/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans Uygulama Kullanıcı Sözleşmesi + + + +
+
Türkçe
+ +

Voitrans Uygulama Kullanıcı Sözleşmesi

+ +

Bu Kullanım Şartları ve Koşulları, Voitrans Uygulaması ve çevrimiçi hizmetlere ("Hizmetler") nasıl erişeceğinizi ve bunları nasıl kullanacağınızı açıklar. Saitong Industries Inc. (bundan böyle "Saitong" olarak anılacaktır) kullanıcıları bu Kullanıcı Sözleşmesini (bundan böyle "Sözleşme" olarak anılacaktır) dikkatlice okumaya ve tam olarak anlamaya davet eder. Kullanıcılar bu Sözleşme'nin şartlarını dikkatlice okumalı ve tam olarak anlamalıdır. Lütfen dikkatlice okuyun ve bu Sözleşmeyi kabul edip etmemeyi seçin. Voitrans uygulamasını (bundan böyle "Uygulama" veya "Yazılım" olarak anılacaktır) kullanmanız bu Sözleşmeyi kabul ettiğiniz ve bu Sözleşme'nin şartlarına bağlı olmayı kabul ettiğiniz anlamına gelecektir. Bu Sözleşmeyi kabul etmiyorsanız, Uygulamayı kullanmayın.

+

Saitong bu Sözleşmeyi değiştirme hakkını saklı tutar ve Sözleşme'nin güncellenmiş şartları bu Uygulamada yayımlanacak ve yayın tarihinden itibaren geçerli olacaktır.

+ +

1. Genel kurallar

+

1.1 Bu Uygulama, Saitong tarafından Saitong ve iş ortağı şirketlerinin piyasaya sürdüğü kulaklık ürünlerini bağlamak için sağlanan yazılımdır. Yazılımın ve ilgili hizmetlerin mülkiyet ve işletme hakları tamamen Saitong'a aittir.

+

1.2 Bu Sözleşme, siz (bundan böyle "Kullanıcı" olarak anılacaktır) ile şirket ve ortakları ve işletme ortakları (bundan böyle "Ortaklar" olarak anılacaktır) arasında Kullanıcının Uygulamayı ve ilgili hizmetleri kullanmasına ilişkin bir sözleşmedir.

+

1.3 Yazılım ve hizmetler şunları içerir:

+

1.3.1 Sağlanan yazılım, Voitrans kullanıcılarına Voitrans bağlantısı ve eşleştirme, işlev ayar yönetimi ve diğer yazılım hizmetlerini sunar; Uygulama tarafından sağlanan gerçek yazılım hizmetlerine tabidir.

+

1.3.2 Yazılımın güncellemeleri, yükseltmeleri ve diğer hizmetleri.

+ +

2. Yazılım lisans kapsamı

+

2.1 Kullanıcıya Yazılım için kişisel, devredilemez, alt lisanslanamaz ve münhasır olmayan bir lisans veriyoruz.

+

2.2 Kullanıcılar yazılımı ticari olmayan amaçlarla tek bir mobil terminal cihazına kurabilir, kullanabilir, görüntüleyebilir ve çalıştırabilir. Ancak, kullanıcı ticari işletme amaçları için yazılımı kuramaz, kullanamaz veya çalıştıramaz; yazılımın çalışması sırasında herhangi bir terminal cihazının belleğine bırakılan yazılımı veya verileri ya da yazılımın çalışması sırasında istemci ile sunucu arasındaki etkileşim verilerini kopyalayamaz, değiştiremez, bağlayamaz veya çalıştıramaz ya da herhangi bir türev çalışma oluşturamaz. Bu, yazılıma ve ilgili sistemlere erişmek için eklentilerin, uzantıların veya yetkisiz üçüncü taraf araçlarının/hizmetlerinin kullanımını içerir ancak bunlarla sınırlı değildir. Yazılım ön yükleme ve paketleme gibi ticari satış, çoğaltma ve dağıtım için yazılı yetki ve izin alınması gerekmektedir.

+

2.3 Kullanıcı, oluşturucunun açık izni olmadan Yazılımı televizyonlar, dijital set üstü kutular, oyun konsolları ve diğer cihazlar dahil ancak bunlarla sınırlı olmamak üzere diğer terminal cihazlarına kuramaz.

+

2.4 Bu Sözleşme tarafından açıkça yetkilendirilenler dışında, Kullanıcıya başka hiçbir hak verilmez ve Kullanıcı diğer hakları kullanmak için yazılı onay almalıdır.

+ +

3. Yazılım yükseltme

+

3.1 Kullanıcı, kurulu terminalin yapılandırmasına uygun yazılım sürümünü seçmelidir. Aksi takdirde, cihaz türüne uygun olmayan herhangi bir yazılım sürümünden kaynaklanan yazılım sorunları, cihaz sorunları veya hasarlar yalnızca kullanıcının sorumluluğunda olacaktır.

+

3.2 Kullanıcı deneyimini iyileştirmek ve hizmet içeriğini geliştirmek amacıyla Saitong, zaman zaman yazılımın yedek, değiştirilmiş ve yükseltilmiş sürümlerini sağlama hakkına sahiptir. "Yükseltme hatırlatması" işlevi kullanıcılar için varsayılan olarak etkinleştirilmiştir. Kullanıcıların kullandığı farklı yazılım sürümlerine bağlı olarak Saitong, kullanıcılara bu işlevi etkinleştirme seçeneği sunar. Yazılımın yeni bir sürümü yayınlandıktan sonra Saitong, yazılımın eski sürümünün sürekli kullanılabilirliğini garanti etmez.

+ +

4. Kullanım kuralları

+

4.1 Kullanıcılar, yasalara ve bu Sözleşmeye uyma koşuluyla bu Sözleşme kapsamında Yazılımı ve Hizmetleri kullanabilir ve kullanıcılar aşağıdaki eylemleri gerçekleştirmemelidir:

+

4.1.1 Yazılım ve diğer kopyalar üzerindeki tüm telif hakkı bilgilerini silmek ve Yazılımın fikri mülkiyet haklarını korumak için oluşturulan teknik önlemleri değiştirmek, silmek veya atlatmak.

+

4.1.2 Yazılımı tersine mühendislik yapmak, örneğin ayrıştırma, kod çözme veya Yazılımın kaynak kodunu elde etmeye yönelik diğer girişimler.

+

4.1.3 Yazılımın çalışmasındaki talimatları ve verileri değiştirmek veya tahrif etmek suretiyle yazılımın işlevini veya çalışma etkisini artırmak, silmek veya değiştirmek ya da yukarıdaki amaçlar için kullanılacak yazılım veya yöntemleri ticari amaçlı olsun ya da olmasın çalıştırmak veya halka yaymak.

+

4.1.4 Yazılımı ağ güvenliğini tehlikeye atan herhangi bir davranış için kullanmak, bunlar arasında şunlar bulunur ancak bunlarla sınırlı değildir: yetkisiz verileri kullanmak veya yetkisiz sunuculara/hesaplara erişmek; izinsiz olarak genel ağlara veya diğer işletim sistemlerine erişmek ve depolanan bilgileri silmek, değiştirmek veya eklemek; yazılımın sisteminin veya ağının zayıf noktalarını araştırmak, taramak veya test etmek için yetkisiz girişimlerde bulunmak veya ağ güvenliğini zayıflatan diğer eylemler; yazılım sisteminin veya web sitesinin normal çalışmasına müdahale etmeye veya bozmaya çalışmak, kötü amaçlı programları veya virüsleri kasıtlı olarak yaymak ve normal ağ bilgi hizmetlerini bozan diğer eylemler; TCP/IP paket adlarını veya kısmi adlarını taklit etmek.

+

4.1.6 Şirketin yazılı onayı olmadan, kullanıcı yazılım ve içindeki bilgiler üzerinde aşağıdaki eylemleri keyfi olarak gerçekleştirir, bunlar arasında şunlar bulunur ancak bunlarla sınırlı değildir: Yazılım yardımıyla kullanma, kiralama, ödünç verme, kopyalama, değiştirme, bağlama, yeniden basma, derleme, yayınlama, yayımlama, ayna siteler oluşturma, türev ürünler, eserler, hizmetler, eklentiler, uzantılar, uyumluluk, ara bağlantı vb. geliştirme.

+

4.1.7 Yazılımı yerel yasaları ihlal eden içerik yayınlamak, iletmek, dağıtmak ve depolamak için kullanmak.

+

4.1.8 Yazılımı başkalarının fikri mülkiyet haklarını, ticari sırlarını ve diğer meşru haklarını ihlal eden içerik yayınlamak, iletmek, yaymak ve depolamak için kullanmak.

+

4.1.9 Bu yazılımı toplu olarak reklam bilgileri ve gereksiz bilgiler yayınlamak, iletmek ve yaymak için kullanmak.

+

4.1.10 Yazılımı ve diğer Hizmetleri herhangi bir yasadışı şekilde, herhangi bir yasadışı amaçla veya bu Sözleşme'nin lisanslı kullanımıyla tutarsız herhangi bir şekilde kullanmak.

+

4.2 Bilgi yayınlama kuralları

+

4.2.1 Bilgi içeriği yayınlamak için yazılımı kullanıyorsanız (varsa), yüklediğiniz bilgi içeriğinin fikri mülkiyet haklarına sahip olduğunuzu veya yasal yetki aldığınızı garanti etmelisiniz ve yazılımı ve hizmetleri kullanarak gerçekleştirdiğiniz herhangi bir davranış herhangi bir üçüncü tarafın meşru hak ve çıkarlarını ihlal etmez.

+

4.2.2 Yazılımı kullanırken, kullanıcı aşağıdaki faaliyetlerde bulunmak için Yazılımı kullanmamalıdır, bunlar arasında şunlar bulunur ancak bunlarla sınırlı değildir:

+

4.2.2.1 Yerel ulusal yasa ve yönetmelikleri ihlal eden içerik oluşturmak, kopyalamak, yayınlamak, yaymak ve depolamak.

+

4.2.2.2 İtibar, portre, fikri mülkiyet ve ticari sırlar gibi başkalarının yasal haklarını ihlal eden içerik yayınlamak, iletmek, yaymak ve depolamak.

+

4.2.2.3 Başkalarını yanıltmak veya aldatmak amacıyla gerçekleri uydurmak, gerçeği gizlemek.

+

4.2.2.4 Reklam bilgileri ve gereksiz bilgiler yayınlamak, iletmek ve yaymak.

+

4.2.2.5 Yerel yasa ve yönetmeliklere aykırı diğer eylemlerde bulunmak.

+

4.2.3 Şirketin izni olmadan Yazılımda reklam ve mal satışı gibi herhangi bir ticari faaliyet yürütemezsiniz.

+

4.3 Kullanıcı aşağıdakileri anlar ve kabul eder:

+

4.3.1 Saitong, kullanıcının yukarıdaki kullanım kurallarını ihlal edip etmediğini belirleyecek ve belirleme sonuçlarına göre lisansınızı askıya alabilir veya sonlandırabilir ya da bu sözleşmeye uygun olarak alınabilecek diğer kısıtlayıcı önlemleri uygulayabilir.

+

4.3.2 Kullanıcının lisanslı yazılımı kullanarak yayınladığı, yasadışı olduğu veya başkalarının yasal haklarını ihlal ettiği ya da bu Sözleşmeyi ihlal ettiği şüphelenilen bilgiler doğrudan silinecektir.

+

4.3.3 Kullanıcının yukarıdaki kullanım kurallarını ihlal etmesi üçüncü taraflara zarar verirse, kendi adınıza bağımsız olarak yasal sorumluluk üstlenmeniz gerekir ve fikrin kayıp veya artan maliyetlerden muaf olmasını sağlamalısınız.

+

4.3.4 Kullanıcının ilgili yasal hükümleri veya sözleşmeleri ihlal ederek Saitong'un zarara uğramasına veya üçüncü taraf taleplerine maruz kalmasına veya idari makam tarafından cezalandırılmasına neden olması halinde, kullanıcı makul avukat ücretleri, soruşturma ve delil toplama maliyetleri dahil olmak üzere Saitong'un uğradığı zararı ve/veya masrafları tazmin edecektir.

+ +

5. Üçüncü taraf hizmet açıklaması

+

5.1 Kullanıcı, yazılım sisteminin Şirketin bağlı kuruluşları veya üçüncü taraflar tarafından sağlanan hizmetleri içerebileceğini ve Şirketin yalnızca kullanıcıların kolaylığı için sistemde ilgili işlevsel modüller sağladığını ve üçüncü taraf hizmetlerine erişim sunduğunu anlar ve kabul eder.

+

5.2 Üçüncü taraf hizmetlerinin yazılım sistem hizmetlerinde önceden ayarlanmış olması veya kullanıcılar tarafından açılmış veya sipariş edilmiş olması fark etmeksizin, kullanıcılar Saitong'un üçüncü taraf hizmet sağlayıcılarının veya kullanıcıların yasallığı ve etkinliği ile üçüncü taraf hizmetlerinin yasallığı, doğruluğu, etkinliği ve güvenliği hakkında herhangi bir açık veya zımni garanti vermediğini anlar ve kabul eder.

+

5.3 Şirket, üçüncü taraf hizmetlerini denetlemez, kontrol etmez veya herhangi bir garanti ya da teminat sağlamaz veya herhangi bir sorumluluk üstlenmez.

+

5.4 Kullanıcı ile üçüncü taraf hizmet sağlayıcı arasındaki herhangi bir anlaşmazlık veya ihtilaf, Kullanıcı ve üçüncü taraf tarafından üçüncü taraf hizmet sağlayıcının iş süreçleri ve iş normlarına uygun olarak çözülecek olup şirket herhangi bir sorumluluk üstlenmez.

+ +

6. Gizlilik Politikası ve Kişisel Bilgilerin Korunması

+

6.1 Saitong, gizlilik politikasına uygun olarak kullanıcıların gizliliğini korumayı taahhüt eder, lütfen bakınız: Voitrans Gizlilik Politikası.

+ +

7. Sözleşme ihlali sorumluluğu

+

7.1 Saitong, kullanıcının davranışının bu Sözleşme hükümlerine uygun olup olmadığını değerlendirme hakkına sahiptir. Kullanıcının ilgili yasa ve yönetmelikleri veya bu Sözleşme ve ilgili kuralların hükümlerini ihlal ettiğine inanılması halinde, kullanıcının ihlalinin ciddiyetine göre Saitong, yasadışı bilgileri silme, kullanıcının Yazılım hizmetini kullanmasını kısıtlama, askıya alma, sonlandırma, kullanıcının yasal sorumluluğunu takip etme ve Saitong'un uygun gördüğü diğer önlemleri alma hakkına sahiptir. Herhangi bir zarara uğramamız halinde (herhangi bir üçüncü taraf talebinin alınması veya herhangi bir idari departman tarafından cezalandırılması dahil ancak bunlarla sınırlı olmamak üzere), Kullanıcı tam olarak sorumlu olacaktır.

+ +

8. Hizmet riskleri ve sorumluluk reddi

+

8.1 Mevcut teknolojiyle hizmet desteği sağlamak istiyoruz. Saitong, Yazılım Hizmetinin kesintisiz veya hatasız çalışacağını, Yazılım Hizmetinin tüm kusurlarının düzeltileceğini veya Yazılım Hizmetinin kullanıcıların tüm gereksinimlerini karşılayacağını garanti etmez. Ortaya çıkan sonuçlardan Saitong herhangi bir sorumluluk üstlenmez.

+

8.2 İletişim hattı arızası, teknik sorunlar, ağ, bilgisayar terminal ekipman arızası, sistem kararsızlığı ve diğer mücbir sebepler gibi üçüncü taraflardan kaynaklanan tüm kayıplardan kullanıcı sorumlu tutulmayacaktır.

+

8.3 Saitong, yazılım aracılığıyla elde edilen bilgi içeriğinin (üçüncü taraf hizmet içeriği dahil ancak bununla sınırlı olmamak üzere) yasallığını, doğruluğunu, kesinliğini ve etkinliğini garanti etmez ve Saitong, kullanıcıların sorgu ve görüntülemeye dayalı olarak yaptığı herhangi bir davranışın sonuçlarından sorumluluk üstlenmez.

+

8.4 Yazılım, çoğu İnternet yazılımı gibi, kullanıcı nedenleri, ağ hizmet kalitesi, sosyal çevre ve diğer faktörler dahil ancak bunlarla sınırlı olmayan farklılıklardan etkilenir ve çeşitli güvenlik sorunlarına maruz kalabilir; örneğin başkalarının kullanıcı bilgilerini kullanması gerçek hayatta rahatsızlığa neden olabilir; kullanıcıların indirip yüklediği diğer yazılımlar veya ziyaret ettikleri web siteleri "Truva atı" gibi virüsler içerebilir ve bu virüsler kullanıcıların terminal cihaz bilgilerinin ve verilerinin güvenliğini tehdit ederek yazılımın normal kullanımını etkileyebilir. Kullanıcılar bilgi güvenliği ve kullanıcı veri koruma bilincini güçlendirmeli ve kayıp ve rahatsızlıktan kaçınmak için şifre korumasını güçlendirmeye dikkat etmelidir.

+

8.5 Kullanıcılar Yazılımı kullandığında veya Saitong'dan belirli hizmetler talep ettiğinde, Yazılım kullanıcıların kullanımını veya erişimini desteklemek için üçüncü taraf sistemlerini veya üçüncü taraf yazılımlarını çağırabilir ve kullanım veya erişim sonuçları üçüncü taraf tarafından sağlanır. Bu Sözleşme'nin ilgili kurallarına uymanın yanı sıra, kullanıcılar üçüncü tarafın sözleşmelerine ve ilgili kurallarına da uymalıdır. Kullanıcılar, üçüncü taraf hizmetlerini kullanırken üçüncü tarafların kullanıcı verilerini okuyabileceğini anlamalı ve kabul etmelidir; Saitong, üçüncü taraf sistemleri veya üçüncü taraf yazılım desteği aracılığıyla elde edilen sonuçların güvenliğini, doğruluğunu, etkinliğini ve diğer belirsiz riskleri garanti etmez; kullanıcılar dikkatli bir şekilde karar vermelidir ve Saitong bundan kaynaklanan herhangi bir anlaşmazlık ve zarardan sorumluluk üstlenmez.

+

8.6 Şirketin iş geliştirme ve uyarlama özerkliğini garanti etmek amacıyla şirket, kullanıcıyı makul bir şekilde bilgilendirdikten sonra herhangi bir zamanda hizmeti değiştirebilir veya kesintiye uğratabilir.

+

8.7 Yasa ve yönetmeliklerin açıkça öngördüğü durumlar dışında Saitong, yazılımın ve ilgili teknoloji ile bilgilerin güvenli, etkili, doğru ve güvenilir olmasını sağlamak için elinden gelenin en iyisini yapacaktır; ancak mevcut teknoloji ile sınırlı olarak kullanıcı, Saitong'un bunu garanti edemeyeceğini anlar.

+

8.8 Aşağıdaki durumlardan herhangi birinden kaynaklanan veya bunlarla bağlantılı kişisel yaralanma veya arızi ve dolaylı ekonomik zararlar, kar kaybı, veri kaybı, iş kesintisi zararları veya diğer ticari zararlar veya kayıplar dahil ancak bunlarla sınırlı olmamak üzere, Kullanıcı tarafından karşılanacaktır:

+

1) Lisanslı yazılımın kullanılması veya kullanılamaması.

+

2) Üçüncü tarafların yazılımı yetkisiz olarak kullanması veya kullanıcı verilerini değiştirmesi.

+

3) Kullanıcının yazılımla gerçekleştirdiği eylemlerden kaynaklanan masraflar ve kayıplar.

+

4) Kullanıcının yazılım hakkındaki yanlış anlayışları.

+

5) Saitong'a atfedilemeyecek nedenlerle yazılımla ilgili diğer herhangi bir kayıp.

+

8.9 Kullanıcı, Şirketin yargı, düzenleme ve denetim makamlarının gereksinimleri veya kendi ticari nedenleri doğrultusunda kullanıcıya yönelik Hizmetin tamamını veya bir kısmını askıya alma, kesintiye uğratma veya sonlandırma hakkına sahip olduğunu kabul eder. Saitong bunun için herhangi bir sorumluluk kabul etmez.

+

8.10 Kullanıcı, Şirketin Yazılım ve Hizmetlerdeki veri depolama güvenliğini sağlamak için ticari olarak makul çabalarını kullanacağını anlar ve kabul eder; ancak şirket tam bir garanti sağlayamaz ve Kullanıcı, Şirketin Hizmetteki verilerin silinmesi veya depolanması ya da yedekleme başarısızlığından sorumlu olmadığını anlar.

+

8.11 Yasaların izin verdiği azami ölçüde, Geliştirici veya Tedarikçi, Uygulamanın kullanımından kaynaklanan herhangi bir doğrudan, dolaylı, arızi, özel veya sonuç niteliğinde zararlardan sorumlu olmayacaktır. Kullanıcının daha fazla ihtiyacı varsa, lütfen kapsamlı test için düzenli bir hastaneye gidin.

+ +

9. Fikri mülkiyet beyanı

+

9.1 Saitong bu yazılımın fikri mülkiyet hakkı sahibidir. Yazılımın tüm telif hakları, ticari markaları, patentleri, ticari sırları ve diğer fikri mülkiyet hakları ile yazılımla ilgili tüm bilgi içerikleri (metin, resimler, ses, video, grafikler, arayüz tasarımı, düzen çerçevesi, ilgili veriler veya elektronik belgeler vb. dahil ancak bunlarla sınırlı olmamak üzere) yerel yasalar ve yönetmelikler ile ilgili uluslararası anlaşmalar tarafından korunmaktadır.

+

9.2 Şirketin yazılı onayı olmadan, Kullanıcı yukarıdaki fikri mülkiyet haklarını herhangi bir ticari veya ticari olmayan amaçla uygulamayacak, kullanmayacak veya devretmeyecek ya da herhangi bir üçüncü tarafa izin vermeyecektir ve Şirket yukarıdaki eylemler için yasal sorumluluk takip etme hakkını saklı tutar.

+ +

10. Sözleşme değişikliği

+

10.1 Saitong, gerekli olduğunda bu Sözleşme'nin şartlarını değiştirme hakkına sahiptir. Sözleşme şartları değiştirildiğinde, revize edilmiş Sözleşme şartları ilgili sayfada yayınlanacaktır. Değiştirilen içeriği kabul etmiyorsanız, kullanıcı bu hizmeti kendi inisiyatifiyle iptal etmelidir. Kullanıcının Hizmetleri kullanmaya devam etmesi, Sözleşme şartlarındaki değişiklikleri kabul ettiği anlamına gelir.

+

10.2 Saitong, gerektiğinde sağlanan ücretli hizmetleri, ücret standartlarını, ücretlendirme yöntemlerini, hizmet ücretlerini ve hizmet şartlarını değiştirme veya değişiklik yapma hakkını saklı tutar. Hizmet sunarken, şu anda veya gelecekte bazı hizmetlerin kullanıcılarından belirli ücretler talep edebiliriz. Kullanıcılar bu ücretleri ödemeyi reddederse, ücretlerin başlamasından sonra ilgili hizmetleri kullanmaya devam edemezler.

+
+ + diff --git a/doc/uk/privacy_policy.html b/doc/uk/privacy_policy.html new file mode 100644 index 000000000..66d793fba --- /dev/null +++ b/doc/uk/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Політика конфіденційності Voitrans + + + + +
+

Політика конфіденційності Voitrans

+

Останнє оновлення: 27 травня 2025

+

Дата набуття чинності: 27 травня 2025

+ +

Ласкаво просимо до використання програмного забезпечення та послуг Voitrans

+

1. Voitrans надається компанією Saitong Industries Inc. (далі — «Компанія»). Може допомогти користувачам управляти пристроями Bluetooth та іншими продуктами. Ми розуміємо важливість персональної інформації для наших користувачів (далі — «ви») і що ефективний захист вашої персональної інформації є основою здорового та сталого розвитку нашого бізнесу. Дякуємо за використання та довіру до продуктів або послуг Voitrans! Ми повністю усвідомлюємо, що ця довіра дається нелегко, ми дотримуємося принципу відкритості та прозорості, щоб викласти вам наші правила обробки вашої персональної інформації, ми використовуємо законні та легітимні способи та чіткі та обґрунтовані цілі для обробки вашої персональної інформації. Особливе зауваження: Будь ласка, обов'язково уважно прочитайте та зрозумійте цю Політику конфіденційності перед використанням наших продуктів або послуг, щоб ви могли зробити відповідний вибір.

+

2. Ця Політика конфіденційності пояснює вам, як ми збираємо, використовуємо, зберігаємо та ділимося вашою персональною інформацією, коли ви використовуєте Voitrans. Персональна інформація — це всі види інформації, записаної електронними або іншими засобами, що може ідентифікувати конкретну фізичну особу або відображати діяльність конкретної фізичної особи окремо або в поєднанні з іншою інформацією. Voitrans поважає та захищає особисту конфіденційність усіх користувачів послуги. За винятком випадків, передбачених цією Політикою конфіденційності, Voitrans не розкриватиме цю інформацію громадськості та не надаватиме її третім особам без вашого попереднього дозволу.

+

3. Коли ви використовуєте продукт або послугу третьої сторони через продукт або послугу App Marketplace, ваша персональна інформація підпадає під дію політики конфіденційності третьої сторони.

+

4. Ця Політика конфіденційності Voitrans оновлюватиметься час від часу. Погоджуючись з Угодою про використання послуг Voitrans та починаючи використовувати Voitrans, ви вважаєтеся такими, що погодилися з усією цією Політикою конфіденційності. Якщо ви не погоджуєтесь з цією Політикою конфіденційності, будь ласка, не використовуйте програмне забезпечення та послуги Voitrans.

+

5. З метою аналізу та вимірювання ефективності відповідних послуг ми будемо використовувати та розкривати вашу персональну інформацію відповідно до положень цієї Політики конфіденційності.

+ +

Ця Політика конфіденційності допоможе вам зрозуміти наступне:

+
    +
  • 1 Інформація, яку ми збираємо
  • +
  • 2 Зберігання інформації
  • +
  • 3 Безпека інформації
  • +
  • 4 Як ми використовуємо зібрану інформацію
  • +
  • 5 Обмін інформацією
  • +
  • 6 Як ви управляєте своєю персональною інформацією
  • +
  • 7 Опис дозволів додатку
  • +
  • 8 Доступ до сторонніх SDK
  • +
  • 9 Захист неповнолітніх
  • +
  • 10 Чинна та оновлена Політика конфіденційності
  • +
  • 11 Як зв'язатися з нами
  • +
+ +

1. Інформація, яку ми збираємо

+

1. Коли ви починаєте використовувати Voitrans, ми почнемо збирати дані про використання вами додатку

+

2. Voitrans може отримувати персональну інформацію про вас від третіх осіб або ділових партнерів законними засобами

+

3. Для того, щоб надати вам кращі продукти та послуги, забезпечити мережеву безпеку під час використання, підтримувати нормальну роботу продуктів та оптимізувати та покращувати мету наших інформаційних послуг, після того як ви активно натиснете, щоб погодитися з цією політикою конфіденційності, використовуйте інформацію, яку ми надаємо. Під час обслуговування, крім персональної інформації, необхідної для забезпечення нормальної роботи основних функцій Додатку відповідно до національних законів та нормативних актів, ми будемо збирати від вас іншу персональну інформацію:

+

3.1 Для ідентифікації ризикових користувачів, оцінки автентичності користувачів та всебічного запобігання шахрайству, ми будемо зчитувати інформацію вашого пристрою кожного разу, коли ви відкриваєте програмне забезпечення, включаючи: (Модель пристрою, MAC-адреса пристрою, унікальний ідентифікатор пристрою (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID тощо) MEID, серійний номер, SSID та BSSID WIFI), зчитування Bluetooth-адреси, версія операційної системи, назва операційної системи, обліковий запис входу користувача та інформація про пароль;

+

3.2 Коли ви використовуєте наші продукти та послуги, ми можемо збирати певну інформацію через інформацію мережевого журналу або певні програми та програмне забезпечення, ця інформація може включати: деталі використання продуктів та послуг, такі як час відкриття вашого додатку, тривалість використання та адреса відвіданої сторінки; Інформація про події пристрою, такі як збої, системна активність тощо, для оптимізації вашого пристрою та покращення наших послуг;

+

3.3 Для ідентифікації додатків, де обладнання піддається ризику, надання більш безпечних функціональних послуг. Тому нам потрібно отримати ваш список додатків/встановлених програм у процесі забезпечення нормальної роботи продукту та захисту безпеки пристрою.

+

3.4 Для аналізу використання функцій додатку користувачами та визначення автентичності користувачів нам потрібно проводити статистику даних та збирати вищезазначену інформацію про пристрій, включаючи MAC-адресу пристрою та унікальний ідентифікатор пристрою, коли ваш пристрій використовується.

+

3.5 Сигнал пристрою: стан мережі пристрою, який ви використовуєте, інформація про точку доступу WIFI тощо.

+

3.6 Інформація про місцезнаходження: Ми можемо використовувати GPS, WiFi або інші технічні засоби для збору та обробки інформації про ваше місцезнаходження для оновлення місцевої інформації, надання контентних послуг тощо.

+

Для отримання додаткової інформації натисніть «Список збору персональної інформації».

+ +

1. Для більш чутливої персональної інформації у вищезазначеній інформації, такої як інформація про пристрій користувача (номер IMEI, стан виклику та ідентифікаційний номер), інформація про місцезнаходження GPS, фото-медіа контент та права доступу до файлів, ми отримаємо вашу згоду перед збором. Для деякої нечутливої інформації збір може бути за замовчуванням та автоматичним. Ви можете обмежити наш збір відповідної інформації або використання певних дозволів з вашого мобільного пристрою, налаштувавши параметри для мобільного пристрою. Коли ви обмежуєте наш доступ до певного дозволу, ми можемо не мати можливості продовжувати надавати вам відповідні послуги та більше не обробляти вашу відповідну інформацію.

+

2. Ми не будемо збирати ваш номер посвідчення особи, персональну біометричну інформацію, номер банківського рахунку, інформацію про майно, кредитну інформацію, інформацію про здоров'я та фізіологічну інформацію та іншу чутливу персональну інформацію.

+

3. Про чутливі дозволи: Для належного використання функцій додатку продукт повинен отримати наступні дозволи для надання функціональних послуг, пов'язаних з нормальними продуктами.

+ +

1 Отримання дозволів на читання та запис сховища

+

1 Як отримати: спливаюче повідомлення, коли дозвіл отримано, користувач активно натисне погодитися, і додаток використовуватиме цей дозвіл

+

2 Мета та сфера використання: Використовується для сканування файлів кешу ресурсів та мініатюр у системі, завантаження музичних ресурсів та зображень продуктів. Відображається в інтерфейсі Додатку для зручності перегляду та роботи користувачів

+ +

2 Отримання дозволу на список встановлених додатків

+

1 Як отримати: спливаюче повідомлення, коли дозвіл отримано, користувач активно натисне погодитися, і додаток використовуватиме цей дозвіл

+

2 Мета та сфера використання: Коли додатку потрібно використовувати рекламні послуги, стороння рекламна платформа, Youmon +SDK, потребує отримання «дозволу на список встановленого програмного забезпечення» пристрою, щоб запобігти надсиланню користувачу додатків, якими він вже володіє, та покращити досвід користувача.

+ +

3 Дозвіл на отримання інформації про стан пристрою

+

Включає: (Модель пристрою, MAC-адреса пристрою, унікальний ідентифікатор пристрою (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID тощо) MEID, серійний номер, SSID та BSSID WIFI, зчитування Bluetooth-адреси), версія операційної системи, назва операційної системи тощо;

+

1 Як отримати: спливаюче повідомлення, коли дозвіл отримано, користувач активно натисне погодитися, і додаток використовуватиме цей дозвіл

+

2 Мета та сфера використання: При використанні нашого додатку, для аналізу використання функцій додатку користувачем та оцінки автентичності користувача, ми синхронізуємо дозвіл зі сторонніми SDK, включаючи Autonavi SDK, Youmon +SDK тощо.

+ +

4 Доступ до інформації про місцезнаходження

+

1 Як отримати: спливаючі повідомлення, коли дозвіл отримано, користувач використовуватиме цей дозвіл лише після активного натискання погодитися в додатку.

+

2 Мета та сфера використання: Коли додатку потрібно використовувати GPS, WiFi або інші функції, продукт повинен збирати ваше місцезнаходження та інформацію для пошуку Bluetooth-пристроїв поблизу.

+

Примітка: Для отримання додаткових дозволів додатку дивіться цей документ «Політика конфіденційності» Розділ 7 «Опис дозволів додатку»

+ +

2. Зберігання інформації

+

1. Де зберігається інформація

+

Персональна інформація, яку ми збираємо та генеруємо в Китайській Народній Республіці, зберігатиметься на наших серверах та/або серверах наших афілійованих компаній.

+

2. Зберігання та обробка інформації

+

Ми зберігаємо вашу персональну інформацію лише протягом періоду, необхідного для досягнення мети, або стільки, скільки вимагається законом та нормативними актами. Після того, як ви припините використовувати цей продукт, ми негайно припинимо збір та обробку вашої персональної інформації та даних додатку. Коли вищезазначений період минає, ми видалимо або анонімізуємо персональну інформацію, яку ви нам надали.

+

Крім необхідних функцій, Voitrans потребує подання заявки на відповідні системні дозволи. Серверна частина хмари не зберігає персональну інформацію користувачів, а сторонні SDK, до яких здійснюється доступ, будуть анонімізовані та деідентифіковані постачальником послуг (Amu Statistics SDK, Autonavi SDK), тому користувачів неможливо відстежити. Інформація, збережена на телефоні користувача, буде автоматично видалена, коли користувач видалить Voitrans або очистить кеш.

+ +

3. Безпека інформації

+

1. Voitrans зберігає та захищає вашу персональну інформацію, використовуючи стандартні галузеві заходи та технології безпеки, такі як аутентифікація, шифрування даних, обмежений доступ до центру обробки даних та інші заходи безпеки для забезпечення того, що ваша інформація захищена від розголошення, зміни та знищення. Незважаючи на вищезазначені заходи безпеки, зверніть увагу, що жоден захід безпеки не може бути на 100% безпечним.

+

2. Коли ви використовуєте послуги, надані Voitrans, будь ласка, захищайте свою персональну інформацію. Якщо ви виявите, що ваша персональна інформація була скомпрометована, будь ласка, негайно зв'яжіться з нами, щоб ми могли вжити відповідних заходів.

+ +

4. Як ми використовуємо зібрану інформацію

+

1. При реалізації бізнес-функцій додатку ми можемо використовувати вашу персональну інформацію для забезпечення цілісності та безпеки продуктів та послуг, які ми вам надаємо;

+

2. Ми зрозуміємо ваші звички використання через зібрану інформацію та, за допомогою аналізу даних, визначимо прийнятність послуг, ваші звички використання тощо, щоб тестувати та створювати нові продукти, функції та послуги, покращувати рівень послуг та допомагати нам покращувати існуючі послуги та розробляти нові послуги;

+

3. Ми можемо використовувати вашу персональну інформацію для опитувань клієнтів щодо продуктів та послуг, для надсилання повідомлень про продукти та послуги та для комерційного просування;

+

4. Ми можемо використовувати вашу інформацію для внутрішнього аналізу та досліджень, пов'язаних з додатком;

+ +

5. Обмін інформацією

+

Наразі ми не будемо активно ділитися або передавати вашу персональну інформацію третім особам поза компанією; якщо є інший обмін або передача вашої персональної інформації, ми безпосередньо або підтвердимо, що третя сторона отримала вашу явну згоду на вищезазначені дії.

+

Ми не будемо публічно розкривати зібрану персональну інформацію. Якщо необхідно її публічно розкрити, ми повідомимо вас про мету публічного розкриття, тип розкритої інформації та чутливу інформацію, яка може бути залучена, та отримаємо вашу явну згоду.

+

У міру розвитку нашого бізнесу ми можемо здійснювати злиття, поглинання, передачу активів та інші операції, і ми повідомимо вас про відповідні обставини відповідно до законів та нормативних актів та за стандартами не нижчими, ніж ті, що вимагаються цим Посібником, для продовження захисту вашої персональної інформації або вимагатимемо від нового контролера продовжувати захищати вашу персональну інформацію.

+

Крім того, відповідно до відповідних законів та нормативних актів та національних стандартів, ми можемо ділитися, передавати та публічно розкривати персональну інформацію без попереднього дозволу та згоди суб'єкта персональної інформації за наступних обставин:

+
    +
  • 1 Безпосередньо пов'язані з національною безпекою та обороною;
  • +
  • 2 Безпосередньо пов'язані з громадською безпекою, охороною здоров'я або великими суспільними інтересами;
  • +
  • 3 Безпосередньо пов'язані з кримінальним розслідуванням, переслідуванням, судовим розглядом та виконанням вироків;
  • +
  • 4 Для захисту життя, майна та інших основних законних прав та інтересів суб'єкта персональних даних або інших осіб, але важко отримати згоду особи;
  • +
  • 5 Персональна інформація, розкрита громадськості суб'єктом персональної інформації;
  • +
  • 6 Збір персональної інформації з юридично публічно розкритої інформації, такої як законні новинні репортажі, розкриття урядової інформації та інші канали.
  • +
+ +

6. Як ви управляєте своєю персональною інформацією

+

Відповідно до відповідних законів, нормативних актів та стандартів Китаю, а також загальноприйнятих практик інших країн та регіонів, ми гарантуємо, що ви здійснюєте наступні права щодо вашої персональної інформації:

+ +

1. Виправлення вашої персональної інформації

+

Якщо ви виявите, що у вашій персональній інформації, яку ми обробляємо, є помилка, ви маєте право виправити або оновити помилкову або неповну інформацію. Якщо ви не можете діяти самостійно в центрі облікового запису, ви можете надіслати електронний лист на saitong.voitrans@gmail.com щоб зв'язатися з нами

+ +

2. Видалення вашої персональної інформації

+

У наступних випадках ви можете подати нам запит на видалення вашої персональної інформації:

+
    +
  • Якщо ми обробляємо персональну інформацію з порушенням законів та нормативних актів;
  • +
  • Якщо ми збираємо та використовуємо вашу персональну інформацію без вашої згоди;
  • +
  • Якщо наша обробка персональної інформації порушує нашу угоду з вами;
  • +
  • Якщо ви більше не використовуєте наші продукти або послуги;
  • +
  • Якщо ми більше не надаємо вам продукти або послуги.
  • +
+

Зв'яжіться з нами. Ми обробимо ваш запит за адресою saitong.voitrans@gmail.com Зв'яжіться з нами. Ми надішлемо вам відповідь протягом 30 робочих днів з моменту отримання

+ +

3. Зміна обсягу вашої згоди

+

Ви можете зв'язатися з нами електронною поштою за адресою saitong.voitrans@gmail.com Зв'яжіться з нами. На ваш запит ми більше не будемо збирати, використовувати або розкривати вашу персональну інформацію. Зверніть увагу, що відкликання вашої згоди або видалення вашої персональної інформації може вплинути на використання вами деяких наших послуг.

+ +

4 Доступ та копіювання персональної інформації

+

Ви можете, відповідно до положень відповідних законів, надати свій imei (серійний номер телефону) або oaid або Android ID після інформації облікового запису та іншої інформації, ви можете подати нам заявку на доступ та копіювання вашої персональної інформації, ви можете надіслати електронний лист на 3514406195@qq.com щоб зв'язатися з нами.

+ +

5. У відповідь на ваш вищезазначений запит

+

З міркувань безпеки вам може знадобитися надати письмовий запит або іншим чином підтвердити свою особу. Ми можемо попросити вас підтвердити свою особу перед обробкою вашого запиту. На ваш обґрунтований запит ми відповімо та опрацюємо його своєчасно. Ми можемо відхилити запити, які є зайво повторюваними, вимагають забагато технологій (наприклад, розробка нових систем або фундаментальні зміни існуючих практик), становлять ризик для законних інтересів інших або є вкрай непрактичними.

+

За наступних обставин, відповідно до вимог законів та нормативних актів, ми не зможемо відповісти на ваш запит:

+
    +
  • Пов'язано з національною безпекою та обороною;
  • +
  • Пов'язано з кримінальним розслідуванням, переслідуванням та судовим розглядом;
  • +
  • Є достатні докази того, що ви маєте суб'єктивний злий намір або зловживаєте правами;
  • +
  • Відповідь на ваш запит завдасть серйозної шкоди законним правам та інтересам вашим або інших осіб та організацій.
  • +
+ +

6. Видалення облікового запису

+

Користувач може виконати операцію [видалення облікового запису] в Додатку. Кроки операції:

+
    +
  1. Перейдіть на сторінку [Мій профіль]
  2. +
  3. Натисніть кнопку [Налаштування] у верхньому правому куті
  4. +
  5. Натисніть [Видалити обліковий запис] для підтвердження
  6. +
+

Після виходу інформація про обліковий запис користувача очищається

+ +

7. Опис дозволів додатку

+

Для надання кращих продуктів та послуг, коли ви використовуєте програмне забезпечення, ми будемо запитувати наступні права; коли ви входите на головну сторінку або використовуєте функцію, буде запитана авторизація; якщо ви відмовите, деякі відповідні функції не зможуть використовуватися нормально. Конкретні цілі та нагадування щодо дозволів детально описані нижче:

+ +

1 Права на визначення місцезнаходження:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

через WiFi або мобільну базову станцію для отримання інформації про широту та довготу місцезнаходження користувача

+

Коли ви використовуєте Voitrans, ми будемо шукати ваш прикріплений Bluetooth-пристрій на основі вашого географічного розташування. Водночас, для надання більш стабільних послуг, оптимізації продуктів та покращення досвіду, ми будемо ділитися вищезазначеною інформацією з трьома SDK, такими як Youmon та Autonavi, для отримання операційних даних Voitrans та функціональних послуг.

+

Режим нагадування: При першому запуску додатку відображається підказка, що вказує на дозвіл, з проханням підтвердити прийняття. Опис Угоди користувача та Політики конфіденційності.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Цей дозвіл необхідний при доступі до додатку для виконання функцій управління додатком.

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

3 Мережеві дозволи:

+

android.permission.INTERNET

+

Коли ви використовуєте інформаційні послуги та послуги оновлення версій Voitrans, ці дозволи необхідні, і для покращення досвіду користувача та оптимізації можливостей обслуговування, сторонні SDK, такі як Friends, також використовуватимуть ці дозволи.

+

Режим нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

4 Отримання дозволів на стан мережі:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Використовується для визначення того, чи є поточне мережеве з'єднання дійсним, визначення, чи є поточне середовище 4G активним, та чи нагадувати про зміни мережевого середовища, що впливає на завантаження інформаційного контенту. Цей дозвіл запитується при використанні Voitrans.

+

Зміни стану мережі впливають на завантаження та вивантаження даних. Тому доступ до дозволу на стан мережі буде спільним з friends + та іншими платформами.

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

5 Отримання дозволів на список завдань:

+

android.permission.GET_TASKS

+

Цей дозвіл використовується для отримання списку додатків для функції управління програмним забезпеченням. При використанні функції управління програмним забезпеченням потрібно зчитати додатки, встановлені на мобільному телефоні.

+

Режим нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

6 Отримання дозволу на MAC-адресу

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Коли ви використовуєте Voitrans, додатку будуть потрібні дозволи на MAC-адресу:

+

Коли додатку потрібно повідомляти дані про цільову конверсію, сторонні платформи, такі як Youmon +SDK, повинні використовувати MAC.

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

7 Отримання дозволу на запис аудіо

+

android.permission.RECORD_AUDIO

+

Коли ви використовуєте функцію голосового введення Voitrans, вам потрібно використовувати дозвіл на запис аудіо, і в основному використовувати голосове введення для перекладу та інших пов'язаних функцій.

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності, користувачу динамічно відображається діалогове вікно при необхідності.

+ +

8 Отримання дозволу SSID для WIFI

+

Коли використовується цей дозвіл, додаток зчитує дозвіл SSID для WIFI:

+

Сфера використання та мета: Коли додатку потрібно використовувати послуги аналізу даних, сторонні платформи, такі як +SDK, повинні зчитувати «дозвіл WIFI SSID» пристрою для надання користувачам більш точних та ефективних функціональних послуг.

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

9 Отримання доступу до Bluetooth

+

Коли використовується цей дозвіл, додаток зчитує дозвіл Bluetooth:

+

Сфера використання та мета: Bluetooth-пристрої для пошуку та налаштування аксесуарів, таких як Bluetooth-гарнітури, Bluetooth-годинники тощо. Зручно для управління користувачами

+

Режим нагадування: При першому запуску додатку відображається підказка, що вказує на дозвіл, з проханням підтвердити прийняття. Опис Угоди користувача та Політики конфіденційності.

+ +

10 Отримання дозволу BSSID для WiFi

+

Коли додатку потрібно розрізняти та ідентифікувати користувача для надання функціональних послуг та статистики даних, він зчитує дозвіл «WiFi BSSID» пристрою для:

+

Сфера використання та мета: 1 Сторонні платформи: такі як Youmeng SDK, Bugly SDK, Autonavi SDK

+

Спосіб нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

11 Отримання дозволу на встановлення додатку

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Програмне забезпечення використовуватиме дозвіл на встановлення додатку, який в основному використовується для того, щоб дозволити користувачам встановити нову версію та випробувати нові функції при наявності нової версії.

+

Режим нагадування: Опис Угоди користувача та Політики конфіденційності.

+ +

12 Отримання дозволів на камеру

+

android.permission.CAMERA

+

Voitrans використовує дозволи камери для сканування QR-кодів та прив'язки Bluetooth-пристроїв, таких як Bluetooth-гарнітури та годинники.

+

Спосіб нагадування: При першому запуску додатку відображається підказка, що вказує на дозвіл, з проханням підтвердити прийняття. Опис Угоди користувача та Політики конфіденційності.

+ +

Особливе зауваження:

+

1 Інтеграція додатку з Allies SDK, Scott map SDK, після згоди користувача на дозвіл використання, додаток у фоновому/передньому режимі збирає ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI та іншу персональну інформацію;

+

Примітки: Докладніше дивіться наступний контент та дозволи SDK [VIII. Список доступу до сторонніх SDK]

+ +

8. Доступ до сторонніх SDK

+

1 Для забезпечення стабільної роботи та функціональної реалізації нашого клієнта, щоб ви могли використовувати та користуватися більшою кількістю послуг та функцій, наш додаток буде вбудовувати набір інструментів розробки програмного забезпечення (SDK) або інші подібні програми третіх осіб, ці треті особи збиратимуть та оброблятимуть відповідну інформацію відповідно до власних політик конфіденційності для нормального надання функцій та рекламних послуг. Ви можете дізнатися про правила збору та обробки інформації третьої сторони в наступному розділі. Ми проводитимемо суворі тести безпеки наборів розробки (SDK) для партнерів, щоб отримати інформацію з метою захисту обґрунтованого використання та безпеки вашої персональної інформації. Зверніть увагу, що сторонні SDK можуть змінювати типи обробки даних через оновлення своїх версій. Будь ласка, зверніться до політик конфіденційності, опублікованих сторонніми SDK. Дивіться деталі нижче або натисніть для перегляду Списку сторонніх SDK.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Отримана інформація: Номер пристрою, IP-адреса, інформація про програмне забезпечення пристрою, ідентифікаційний код пристрою (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, інформація IMSI SIM-карти, IP, MAC-адреса), ідентифікатор пристрою, регіон, інформація про додатки, пов'язані з пристроєм, та інша журнальна інформація послуг

+

Мета використання: Вхід та обмін через WeChat

+

Розробник: Shenzhen Tencent Computer Systems Company Limited

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Отримана інформація: Назва додатку, версія додатку, марка та модель пристрою, операційна система, інформація про оператора, роздільна здатність екрану, інформація про датчики (вектор, прискорення, тиск, напрямок, геомагнетизм, гіроскоп, температура, датчик освітлення, сигнал NMEA), інформація про потужність сигналу пристрою

+

Мета використання: Навігація з використанням Amap

+

Розробник: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Отримана інформація: Назва додатку, версія додатку, марка та модель пристрою, операційна система, мережева інформація, потужність сигналу пристрою тощо.

+

Мета використання: Відображення та взаємодія з картою

+

Розробник: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Отримана інформація: Інформація про місцезнаходження (GPS, Wi-Fi, базова станція), інформація про пристрій, мережева інформація тощо.

+

Мета використання: Надання послуг визначення місцезнаходження

+

Розробник: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Отримана інформація: Назва додатку, версія додатку, інформація про пристрій, мережева інформація тощо.

+

Мета використання: Інструменти карти та оптимізація рендерингу

+

Розробник: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Отримана інформація: Ідентифікатори пристрою, базова інформація про пристрій, список встановленого програмного забезпечення та мережева інформація (дивіться офіційну політику конфіденційності для деталей)

+

Мета використання: Вхід в обліковий запис Alipay та виклик оплати

+

Розробник: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Отримана інформація: Версія SDK/API, платформа, мітка часу, ідентифікатор додатку, версія додатку, виробник пристрою, версія ОС, мова, часовий пояс, стан мережі (Wi-Fi тощо), мережеві журнали, дані про збої та використання, IP-адреса тощо (дивіться офіційну політику конфіденційності для деталей)

+

Мета використання: Моніторинг якості додатку та послуга звітності даних

+

Розробник: Shenzhen Tencent Computer Systems Company Limited

+

Метод збору: Самозбір SDK

+

Посилання на політику конфіденційності: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Захист неповнолітніх

+

Користувачі наших продуктів та послуг можуть включати неповнолітніх віком до 18 років, неповнолітні користувачі повинні звернутися за порадою батьків або опікунів щодо цієї Політики конфіденційності перед використанням наших продуктів та використовувати наші послуги або надавати свою інформацію нам після отримання згоди та під керівництвом батьків або опікунів. Опікуни неповнолітніх, які мають запитання, можуть зв'язатися з нами за контактними даними, наведеними в цій Політиці конфіденційності.

+

Якщо ви не згодні зі збором вищезазначеної інформації вищезазначеними сторонніми постачальниками послуг, будь ласка, негайно припиніть використання Програмного забезпечення. Під час використання Програмного забезпечення ці треті особи збиратимуть та оброблятимуть відповідну інформацію відповідно до власних політик конфіденційності для надання деяких функцій, реклами та інших послуг. Якщо інформація витече через збір вищезазначеної інформації відповідним стороннім постачальником послуг, відповідний сторонній постачальник послуг нестиме відповідну юридичну відповідальність.

+ +

10. Чинна та оновлена Політика конфіденційності

+

1. Ця Політика конфіденційності набуває чинності з дати публікації.

+

2. У міру розвитку та змін нашого бізнесу наша Політика конфіденційності може змінюватися. Ми залишаємо за собою право змінювати нашу політику конфіденційності в будь-який час, тому, будь ласка, перевіряйте її часто. Якщо ми вносимо зміни до нашої Політики конфіденційності, ми опублікуємо ці оновлення на нашому веб-сайті, у додатках та там, де ми вважаємо за потрібне, щоб тримати вас в курсі. Якщо політику конфіденційності оновлено, вона набуває чинності з дати оновлення. Продовження використання наших продуктів або послуг означає, що ви погоджуєтесь з нашою зміненою Політикою конфіденційності.

+ +

11. Як зв'язатися з нами

+

Saitong Industries Inc заснована 22 листопада 2024 року, зареєстрована адреса: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Якщо ви хочете дізнатися більше про нашу компанію та платформу, ви можете зв'язатися з нами за контактною інформацією, наданою в цій політиці (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/uk/user_agreement.html b/doc/uk/user_agreement.html new file mode 100644 index 000000000..f7c4dfd5a --- /dev/null +++ b/doc/uk/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Угода користувача додатку Voitrans + + + +
+
Українська
+ +

Угода користувача додатку Voitrans

+ +

Ці Умови та положення використання інформують вас про те, як отримати доступ до використання додатку Voitrans та онлайн-сервісів (далі — «Сервіси»). Saitong Industries Inc. (далі — «Saitong») нагадує користувачам уважно прочитати та повністю зрозуміти цю Угоду користувача (далі — «Угода»). Користувачі повинні уважно прочитати та повністю зрозуміти умови цієї Угоди. Будь ласка, уважно прочитайте та виберіть, чи приймаєте ви цю Угоду. Ваше використання додатку Voitrans (далі — «Додаток» або «Програмне забезпечення») вважатиметься прийняттям цієї Угоди, і ви погоджуєтесь дотримуватися умов цієї Угоди. Якщо ви не погоджуєтесь з цією Угодою, не використовуйте Додаток.

+

Saitong залишає за собою право вносити зміни до цієї Угоди, а оновлені умови Угоди будуть опубліковані в цьому Додатку та набудуть чинності з дати публікації.

+ +

1. Загальні правила

+

1.1 Цей Додаток є програмним забезпеченням, наданим Saitong для підключення продуктів-гарнітур, випущених Saitong та її компаніями-партнерами. Право власності та права на експлуатацію програмного забезпечення та пов'язаних послуг належать виключно Saitong.

+

1.2 Ця Угода є угодою між вами (далі — «Користувач») та компанією, її партнерами та операційними партнерами (далі — «Партнери») щодо використання Користувачем Додатку та пов'язаних послуг.

+

1.3 Програмне забезпечення та послуги включають:

+

1.3.1 Надане програмне забезпечення забезпечує користувачам Voitrans підключення та прив'язку Voitrans, управління налаштуваннями функцій та інші програмні послуги, відповідно до фактичних програмних послуг, наданих Додатком.

+

1.3.2 Оновлення, модернізація та інші послуги програмного забезпечення.

+ +

2. Обсяг ліцензії на програмне забезпечення

+

2.1 Ми надаємо Користувачу особисту, непередавану, несубліцензійну та невиключну ліцензію на Програмне забезпечення.

+

2.2 Користувачі можуть встановлювати, використовувати, відображати та запускати програмне забезпечення на одному мобільному кінцевому пристрої для некомерційних цілей. Однак Користувач не має права встановлювати, використовувати або запускати програмне забезпечення для комерційних цілей, копіювати, змінювати, модифікувати, підключати або запускати програмне забезпечення чи дані, випущені в пам'ять будь-якого кінцевого пристрою під час роботи програмного забезпечення, або дані взаємодії між клієнтом і сервером під час роботи програмного забезпечення, або створювати будь-які похідні роботи. Це включає, але не обмежується, використання плагінів або несанкціонованих сторонніх інструментів/послуг для доступу до Програмного забезпечення та пов'язаних систем. Для комерційного продажу, відтворення та розповсюдження, такого як попередня установка та комплектація програмного забезпечення, необхідно отримати письмовий дозвіл.

+

2.3 Користувач не має права встановлювати Програмне забезпечення на інших кінцевих пристроях без прямого дозволу, включаючи, але не обмежуючись, телевізори, цифрові приставки, ігрові консолі та інші пристрої.

+

2.4 За винятком випадків, прямо передбачених цією Угодою, Користувачу не надаються жодні інші права, і Користувач повинен отримати письмову згоду для використання інших прав.

+ +

3. Оновлення програмного забезпечення

+

3.1 Користувач повинен вибрати версію програмного забезпечення, що відповідає конфігурації встановленого термінала. В іншому випадку проблеми з програмним забезпеченням, проблеми з пристроєм або пошкодження, спричинені будь-якою версією програмного забезпечення, що не підходить для типу пристрою, будуть виключно відповідальністю Користувача.

+

3.2 З метою покращення досвіду Користувача та вдосконалення змісту послуг, Saitong має право час від часу надавати вам версії заміни, модифікації та оновлення програмного забезпечення. Функція «Повідомлення про оновлення» увімкнена для Користувачів за замовчуванням. Залежно від різних версій програмного забезпечення, які використовують Користувачі, Saitong надає Користувачам можливість активувати цю функцію. Після випуску нової версії програмного забезпечення Saitong не гарантує подальшу доступність старої версії програмного забезпечення.

+ +

4. Правила використання

+

4.1 Користувачі можуть використовувати Програмне забезпечення та Послуги відповідно до цієї Угоди за умови дотримання закону та цієї Угоди, і Користувачі не повинні вчиняти наступні дії:

+

4.1.1 Видаляти всю інформацію про авторські права на Програмному забезпеченні та інших копіях, а також змінювати, видаляти або обходити технічні заходи, встановлені Програмним забезпеченням для захисту прав інтелектуальної власності.

+

4.1.2 Зворотна інженерія Програмного забезпечення, така як дизасемблювання, декомпіляція або інші спроби отримати вихідний код Програмного забезпечення.

+

4.1.3 Шляхом модифікації або фальсифікації інструкцій та даних при роботі програмного забезпечення, додавання, видалення або зміни функцій або ефекту роботи програмного забезпечення, або програмного забезпечення чи методів, що використовуються для вищезазначених цілей для роботи або розповсюдження серед громадськості, незалежно від того, чи мають ці дії комерційні цілі.

+

4.1.4 Використання програмного забезпечення для будь-якої поведінки, що загрожує мережевій безпеці, включаючи, але не обмежуючись: використання несанкціонованих даних або доступ до несанкціонованих серверів/облікових записів; Доступ до публічних мереж або інших операційних систем без дозволу та видалення, зміна або додавання збереженої інформації; Несанкціоновані спроби перевірки, сканування або тестування вразливостей системи або мережі програмного забезпечення або інші дії, що підривають мережеву безпеку; Спроби втручання або знищення нормальної роботи програмної системи або веб-сайту, навмисне поширення шкідливих програм або вірусів та інші дії, що порушують нормальні мережеві інформаційні послуги; Підробка імен або часткових імен пакетів TCP/IP.

+

4.1.6 Без письмової згоди Компанії Користувач самовільно вчиняє наступні дії щодо програмного забезпечення та інформації в ньому, включаючи, але не обмежуючись: використання, оренда, надання в позику, копіювання, модифікація, зв'язування, передрук, компіляція, публікація, створення дзеркальних сайтів, розробка похідних продуктів, робіт, послуг, плагінів, сумісність, взаємозв'язок тощо, за допомогою Програмного забезпечення.

+

4.1.7 Використання Програмного забезпечення для публікації, передачі, розповсюдження та зберігання контенту, що порушує місцеві закони.

+

4.1.8 Використання програмного забезпечення для публікації, передачі, розповсюдження та зберігання контенту, що порушує права інтелектуальної власності, комерційні таємниці та інші законні права інших осіб.

+

4.1.9 Використання цього програмного забезпечення для масової публікації, передачі та розповсюдження рекламної та небажаної інформації.

+

4.1.10 Використання Програмного забезпечення та інших Послуг будь-яким незаконним способом, для будь-якої незаконної мети або будь-яким способом, що не відповідає ліцензійному використанню цієї Угоди.

+

4.2 Правила публікації інформації

+

4.2.1 Якщо ви використовуєте програмне забезпечення для публікації інформаційного контенту (за наявності), ви повинні гарантувати, що володієте правами інтелектуальної власності на інформаційний контент, завантажений вами, або отримали законний дозвіл, і будь-яка ваша поведінка при використанні програмного забезпечення та послуг не порушує законних прав та інтересів будь-якої третьої сторони.

+

4.2.2 При використанні Програмного забезпечення Користувач не повинен використовувати Програмне забезпечення для здійснення наступних дій, включаючи, але не обмежуючись:

+

4.2.2.1 Створення, копіювання, публікація, розповсюдження та зберігання контенту, що порушує місцеві національні закони та правила.

+

4.2.2.2 Публікація, передача, розповсюдження та зберігання контенту, що порушує законні права інших осіб, такі як репутація, зображення, інтелектуальна власність та комерційні таємниці.

+

4.2.2.3 Фабрикація фактів, приховування правди з метою введення в оману або обману інших.

+

4.2.2.4 Публікація, передача та розповсюдження рекламної та небажаної інформації.

+

4.2.2.5 Здійснення інших дій, що порушують місцеві закони та правила.

+

4.2.3 Ви не можете здійснювати будь-яку комерційну діяльність, таку як реклама та продаж товарів у Програмному забезпеченні, без дозволу Компанії.

+

4.3 Користувач розуміє та погоджується з тим, що:

+

4.3.1 Saitong визначатиме, чи підозрюється Користувач у порушенні вищезазначених правил використання, і відповідно до результатів визначення призупинить або припинить вашу ліцензію на використання або вживатиме інших обмежувальних заходів, які можуть бути вжиті відповідно до цієї Угоди.

+

4.3.2 Щодо опублікованої Користувачем за допомогою ліцензійного програмного забезпечення інформації, яка підозрюється у незаконності або порушенні законних прав інших осіб чи порушенні цієї Угоди, інформація буде безпосередньо видалена.

+

4.3.3 Якщо порушення Користувачем вищезазначених правил використання завдає шкоди третім особам, ви повинні нести юридичну відповідальність самостійно від свого імені та повинні забезпечити, щоб компанія не зазнала збитків або додаткових витрат.

+

4.3.4 Якщо Користувач порушує відповідні правові положення або угоди, завдаючи збитків Saitong або піддаючись претензіям третіх осіб чи покаранню з боку адміністративного органу, Користувач відшкодує збитки та/або витрати, завдані Saitong, включаючи обґрунтовані гонорари адвокатів, витрати на розслідування та збирання доказів.

+ +

5. Опис послуг третіх осіб

+

5.1 Користувач розуміє та погоджується з тим, що програмна система може містити послуги, надані афілійованими компаніями або третіми особами, і що Компанія лише надає відповідні функціональні модулі в системі для зручності Користувачів та забезпечує доступ до послуг третіх осіб.

+

5.2 Незалежно від того, чи послуги третіх осіб попередньо встановлені в послугах програмної системи, чи відкриті або замовлені самими Користувачами, Користувачі розуміють та погоджуються з тим, що Saitong не надає жодних явних чи неявних гарантій щодо законності та ефективності постачальників послуг третіх осіб або Користувачів, а також щодо законності, точності, ефективності та безпеки послуг третіх осіб.

+

5.3 Компанія не здійснює нагляд, контроль та не надає жодних гарантій або запевнень щодо послуг третіх осіб і не несе жодної відповідальності.

+

5.4 Будь-яка суперечка або розбіжність між Користувачем та постачальником послуг третьої особи вирішується Користувачем та третьою стороною відповідно до ділового процесу та комерційних норм постачальника послуг третьої особи, і компанія не несе жодної відповідальності.

+ +

6. Політика конфіденційності та захист персональних даних

+

6.1 Saitong зобов'язується захищати конфіденційність Користувачів відповідно до Політики конфіденційності, будь ласка, дивіться: Політика конфіденційності Voitrans.

+ +

7. Відповідальність за порушення договору

+

7.1 Saitong має право визначати, чи відповідає поведінка Користувача положенням цієї Угоди. Якщо вважається, що Користувач порушив відповідні закони та правила або положення цієї Угоди та відповідних правил, залежно від серйозності порушення Користувача, Saitong має право видаляти незаконну інформацію, обмежувати, призупиняти, припиняти використання послуг Програмного забезпечення Користувачем, переслідувати юридичну відповідальність Користувача та вживати інших заходів, які Saitong вважає доречними. Якщо ми зазнаємо будь-яких збитків (включаючи, але не обмежуючись, отримання будь-яких претензій третіх осіб або штрафів від будь-якого адміністративного органу), Користувач нестиме повну відповідальність.

+ +

8. Ризики обслуговування та відмова від відповідальності

+

8.1 Ми прагнемо надавати підтримку послуг за допомогою сучасних технологій. Saitong не гарантує, що послуга Програмного забезпечення працюватиме без перерв або помилок, що всі дефекти послуги Програмного забезпечення будуть виправлені або що послуга Програмного забезпечення задовольнить усі вимоги Користувачів. За наслідки, що виникають, Saitong не несе жодної відповідальності.

+

8.2 Всі збитки, понесені Користувачем через третіх осіб, такі як збій лінії зв'язку, технічні проблеми, збої мережі, несправності комп'ютерного термінального обладнання, нестабільність системи та інші причини форс-мажорних обставин, не будуть відповідальністю компанії.

+

8.3 Saitong не гарантує законність, достовірність, точність та ефективність інформаційного контенту, отриманого через програмне забезпечення (включаючи, але не обмежуючись, контент послуг третіх осіб), і Saitong не несе жодної відповідальності за результати будь-якої поведінки Користувачів на основі запитів та перегляду.

+

8.4 Програмне забезпечення, як і більшість інтернет-програмного забезпечення, зазнає впливу різниці в факторах, включаючи, але не обмежуючись, причини Користувача, якість мережевих послуг, соціальне середовище та інші фактори, і може піддаватися різним проблемам безпеки, таким як використання інформації Користувача іншими особами, що призводить до переслідування в реальному житті; Інше програмне забезпечення, завантажене та встановлене Користувачами, або інші веб-сайти, відвідувані Користувачами, містять віруси, такі як «троянські коні», що загрожують безпеці інформації та даних кінцевого обладнання Користувачів, що впливає на нормальне використання програмного забезпечення. Користувачі повинні посилювати обізнаність щодо інформаційної безпеки та захисту даних Користувачів і звертати увагу на посилення захисту паролем, щоб уникнути втрат та переслідування.

+

8.5 Коли Користувачі використовують Програмне забезпечення або вимагають від Saitong надання конкретних послуг, Програмне забезпечення може викликати сторонні системи або стороннє програмне забезпечення для підтримки використання або доступу Користувачів, і результати використання або доступу надаються третіми особами. На додаток до дотримання відповідних правил цієї Угоди, Користувачі також повинні дотримуватися угод та відповідних правил третіх осіб. Користувачі повинні розуміти та погоджуватися з тим, що при використанні послуг третіх осіб треті особи можуть читати дані Користувачів, і Saitong не гарантує безпеку, точність, ефективність та інші невизначені ризики результатів, досягнутих за допомогою сторонніх систем або підтримки стороннього програмного забезпечення, Користувачі повинні проявляти обережне судження, і Saitong не несе жодної відповідальності за будь-які спори та збитки, спричинені цим.

+

8.6 Для забезпечення автономії розвитку та коригування бізнесу компанії, компанія може змінити або перервати послугу в будь-який час після повідомлення Користувача у розумний спосіб.

+

8.7 За винятком випадків, прямо передбачених законами та правилами, Saitong докладе всіх зусиль для забезпечення безпеки, ефективності, точності та надійності програмного забезпечення та задіяних технологій та інформації, але з огляду на обмеження існуючих технологій, Користувач розуміє, що Saitong не може цього гарантувати.

+

8.8 Компенсація за фізичні травми або випадковий та непрямий економічний збиток, спричинений або пов'язаний з будь-якою з наступних обставин, включаючи, але не обмежуючись, втрату прибутку, втрату даних, збитки за переривання бізнесу або інші комерційні збитки чи втрати, покладається на Користувача:

+

1) Використання або неможливість використання ліцензійного програмного забезпечення.

+

2) Несанкціоноване використання програмного забезпечення або зміна даних Користувача третіми особами.

+

3) Витрати та збитки, понесені внаслідок дій Користувача з програмним забезпеченням.

+

4) Помилкові уявлення Користувача про програмне забезпечення.

+

5) Будь-які інші збитки, пов'язані з програмним забезпеченням, що не є наслідком причин Saitong.

+

8.9 Користувач погоджується, що Компанія має право призупинити, перервати або припинити надання всіх або частини Послуг Користувачу на підставі вимог судових, регуляторних та наглядових органів або з власних комерційних причин. Saitong не несе відповідальності за це.

+

8.10 Користувач розуміє та погоджується з тим, що Компанія докладе комерційно обґрунтованих зусиль для забезпечення безпеки зберігання даних у Програмному забезпеченні та Послугах, але компанія не може надати повну гарантію, і Користувач розуміє, що Компанія не несе відповідальності за видалення або збій зберігання чи резервного копіювання даних у Послузі.

+

8.11 У максимальній мірі, дозволеній законом, Розробник або Постачальник не несе відповідальності за будь-які прямі, непрямі, випадкові, спеціальні чи наслідкові збитки, що виникають внаслідок використання Додатку. Якщо Користувач має додаткові потреби, будь ласка, зверніться до акредитованої лікарні для поглибленого обстеження.

+ +

9. Заява про інтелектуальну власність

+

9.1 Saitong є власником прав інтелектуальної власності на це програмне забезпечення. Усі авторські права, торговельні марки, патенти, комерційні таємниці та інші права інтелектуальної власності на програмне забезпечення, а також весь інформаційний контент, пов'язаний з програмним забезпеченням (включаючи, але не обмежуючись, текст, зображення, аудіо, відео, графіку, дизайн інтерфейсу, рамку макету, відповідні дані або електронні документи тощо), захищені місцевими законами та правилами та відповідними міжнародними договорами.

+

9.2 Без письмової згоди Компанії Користувач не має права впроваджувати, використовувати або передавати вищезазначені права інтелектуальної власності для будь-яких комерційних чи некомерційних цілей і не має права дозволяти це будь-якій третій особі, а Компанія залишає за собою право переслідувати юридичну відповідальність за вищезазначені дії.

+ +

10. Зміна угоди

+

10.1 Saitong має право змінювати умови цієї Угоди за необхідності. Після зміни умов Угоди переглянуті умови Угоди будуть опубліковані на відповідній сторінці. Якщо ви не погоджуєтесь зі зміненим змістом, Користувач повинен проявити ініціативу та скасувати цю послугу. Якщо Користувач продовжує використовувати Послуги, вважається, що він приймає зміни в умовах Угоди.

+

10.2 Saitong залишає за собою право змінювати або модифікувати платні послуги, стандарти тарифікації, методи тарифікації, плату за обслуговування та умови обслуговування за необхідності. При наданні послуг ми можемо стягувати певну плату з Користувачів деяких послуг зараз або в майбутньому. Якщо Користувачі відмовляються сплачувати такі збори, вони не можуть продовжувати користуватися відповідними послугами після початку стягнення плати.

+
+ + diff --git a/doc/vi/privacy_policy.html b/doc/vi/privacy_policy.html new file mode 100644 index 000000000..26b7e567f --- /dev/null +++ b/doc/vi/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Chính sách Bảo mật Voitrans + + + + +
+

Chính sách Bảo mật Voitrans

+

Cập nhật lần cuối: 27 tháng 5, 2025

+

Ngày có hiệu lực: 27 tháng 5, 2025

+ +

Chào mừng bạn sử dụng Phần mềm và Dịch vụ Voitrans

+

1. Voitrans được cung cấp bởi Saitong Industries Inc. (sau đây gọi là "Công ty"). Ứng dụng có thể giúp người dùng quản lý các thiết bị Bluetooth và các sản phẩm khác. Chúng tôi hiểu tầm quan trọng của thông tin cá nhân đối với người dùng (sau đây gọi là "bạn") và việc bảo vệ hiệu quả thông tin cá nhân của bạn là nền tảng cho sự phát triển lành mạnh và bền vững của hoạt động kinh doanh. Cảm ơn bạn đã sử dụng và tin tưởng các sản phẩm hoặc dịch vụ Voitrans! Chúng tôi hoàn toàn nhận thức được rằng sự tin tưởng này không dễ dàng có được, chúng tôi tuân thủ nguyên tắc cởi mở và minh bạch, để trình bày cho bạn các quy tắc xử lý thông tin cá nhân của bạn. Chúng tôi sử dụng các phương thức hợp pháp và chính đáng cùng các mục đích rõ ràng và hợp lý để xử lý thông tin cá nhân của bạn. Lưu ý đặc biệt: Vui lòng đảm bảo đọc và hiểu kỹ Chính sách Bảo mật này trước khi sử dụng sản phẩm hoặc dịch vụ của chúng tôi để bạn có thể đưa ra lựa chọn phù hợp.

+

2. Chính sách Bảo mật này giải thích cho bạn cách chúng tôi thu thập, sử dụng, lưu trữ và chia sẻ thông tin cá nhân của bạn khi bạn sử dụng Voitrans. Thông tin cá nhân đề cập đến tất cả các loại thông tin được ghi lại bằng phương tiện điện tử hoặc các phương tiện khác có thể xác định một cá nhân cụ thể hoặc phản ánh các hoạt động của một cá nhân cụ thể đơn lẻ hoặc kết hợp với thông tin khác. Voitrans tôn trọng và bảo vệ quyền riêng tư cá nhân của tất cả người dùng dịch vụ. Trừ khi được quy định khác trong Chính sách Bảo mật này, Voitrans sẽ không tiết lộ thông tin này cho công chúng hoặc cung cấp cho bên thứ ba mà không có sự cho phép trước của bạn.

+

3. Khi bạn sử dụng sản phẩm hoặc dịch vụ của bên thứ ba thông qua sản phẩm hoặc dịch vụ của Chợ ứng dụng, thông tin cá nhân của bạn sẽ tuân theo chính sách bảo mật của bên thứ ba.

+

4. Voitrans Chính sách Bảo mật này sẽ được cập nhật theo thời gian. Bằng việc đồng ý với Thỏa thuận Sử dụng Dịch vụ Voitrans và bắt đầu sử dụng Voitrans, bạn được coi là đã đồng ý với toàn bộ Chính sách Bảo mật này. Nếu bạn không đồng ý với Chính sách Bảo mật này, vui lòng không sử dụng Phần mềm và Dịch vụ Voitrans.

+

5. Để phân tích và đo lường hiệu quả của các dịch vụ liên quan, chúng tôi sẽ sử dụng và tiết lộ thông tin cá nhân của bạn theo các điều khoản của Chính sách Bảo mật này.

+ +

Chính sách Bảo mật này sẽ giúp bạn hiểu những điều sau:

+
    +
  • 1 Thông tin chúng tôi thu thập
  • +
  • 2 Lưu trữ thông tin
  • +
  • 3 Bảo mật thông tin
  • +
  • 4 Chúng tôi sử dụng thông tin thu thập được như thế nào
  • +
  • 5 Chia sẻ thông tin
  • +
  • 6 Bạn quản lý thông tin cá nhân của mình như thế nào
  • +
  • 7 Mô tả quyền ứng dụng
  • +
  • 8 Truy cập SDK bên thứ ba
  • +
  • 9 Bảo vệ trẻ vị thành niên
  • +
  • 10 Chính sách Bảo mật có hiệu lực và được cập nhật
  • +
  • 11 Cách liên hệ với chúng tôi
  • +
+ +

1. Thông tin chúng tôi thu thập

+

1. Khi bắt đầu sử dụng Voitrans, chúng tôi sẽ bắt đầu thu thập dữ liệu về việc sử dụng ứng dụng của bạn

+

2. Voitrans có thể thu thập thông tin cá nhân về bạn từ bên thứ ba hoặc đối tác kinh doanh thông qua các phương tiện hợp pháp

+

3. Để cung cấp cho bạn các sản phẩm và dịch vụ tốt hơn, đảm bảo an ninh mạng cho bạn trong quá trình sử dụng, duy trì hoạt động bình thường của sản phẩm và tối ưu hóa và cải thiện, mục đích của dịch vụ thông tin của chúng tôi, sau khi bạn chủ động nhấp đồng ý với chính sách bảo mật này, sử dụng dịch vụ chúng tôi cung cấp. Trong quá trình dịch vụ, ngoài thông tin cá nhân cần thiết để đảm bảo hoạt động bình thường của các chức năng cơ bản của Ứng dụng theo luật pháp và quy định quốc gia, chúng tôi sẽ thu thập các thông tin cá nhân khác từ bạn:

+

3.1 Để xác định người dùng có rủi ro, đánh giá tính xác thực của người dùng và phòng chống gian lận toàn diện, chúng tôi sẽ đọc thông tin thiết bị của bạn mỗi khi bạn mở phần mềm, bao gồm: (Model thiết bị, địa chỉ MAC thiết bị, mã nhận dạng duy nhất của thiết bị (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, v.v.) MEID, số sê-ri, SSID và BSSID của WIFI), đọc địa chỉ Bluetooth, phiên bản hệ điều hành, tên hệ điều hành, tài khoản đăng nhập và mật khẩu của người dùng;

+

3.2 Khi bạn sử dụng các sản phẩm và dịch vụ của chúng tôi, chúng tôi có thể thu thập một số thông tin nhất định thông qua thông tin nhật ký mạng hoặc các chương trình và phần mềm nhất định, thông tin đó có thể bao gồm: chi tiết về việc sử dụng sản phẩm và dịch vụ, chẳng hạn như thời gian mở ứng dụng của bạn, thời lượng sử dụng và địa chỉ của trang đã truy cập; thông tin sự kiện thiết bị, chẳng hạn như sự cố, hoạt động hệ thống, v.v., để tối ưu hóa thiết bị của bạn và cải thiện dịch vụ của chúng tôi;

+

3.3 Để xác định các ứng dụng có thiết bị gặp rủi ro, cung cấp dịch vụ chức năng an toàn hơn. Do đó, chúng tôi cần thu thập danh sách ứng dụng/cài đặt ứng dụng của bạn trong quá trình để đảm bảo hoạt động bình thường của sản phẩm và bảo vệ bảo mật thiết bị.

+

3.4 Để phân tích việc sử dụng chức năng ứng dụng của người dùng và xác định tính xác thực của người dùng, chúng tôi cần thực hiện thống kê dữ liệu và thu thập thông tin thiết bị nêu trên, bao gồm địa chỉ MAC thiết bị và mã nhận dạng duy nhất của thiết bị, khi thiết bị của bạn đang được sử dụng.

+

3.5 Tín hiệu thiết bị: trạng thái mạng của thiết bị bạn sử dụng, thông tin điểm truy cập WIFI, v.v.

+

3.6 Thông tin vị trí: Chúng tôi có thể sử dụng GPS, WiFi hoặc các phương tiện kỹ thuật khác để thu thập và xử lý thông tin về vị trí của bạn để cập nhật thông tin địa phương, cung cấp dịch vụ nội dung, v.v.

+

Để biết thêm thông tin, vui lòng nhấp vào "Danh sách Thu thập Thông tin Cá nhân".

+ +

1. Đối với thông tin cá nhân nhạy cảm hơn trong các thông tin trên, chẳng hạn như thông tin thiết bị người dùng (số IMEI, trạng thái cuộc gọi và số nhận dạng), thông tin vị trí GPS, nội dung phương tiện ảnh và quyền truy cập tệp, chúng tôi sẽ nhận được sự đồng ý của bạn trước khi thu thập. Đối với một số thông tin không nhạy cảm, việc thu thập có thể là mặc định và tự động. Bạn có thể hạn chế việc chúng tôi thu thập thông tin liên quan hoặc sử dụng một số quyền nhất định từ thiết bị di động bằng cách điều chỉnh tùy chọn Cài đặt cho thiết bị di động của bạn. Khi bạn hạn chế quyền truy cập của chúng tôi vào một quyền nhất định, chúng tôi có thể không tiếp tục cung cấp cho bạn các dịch vụ tương ứng và không còn xử lý thông tin tương ứng của bạn nữa.

+

2. Chúng tôi sẽ không thu thập số chứng minh nhân dân, thông tin sinh trắc học cá nhân, số tài khoản ngân hàng, thông tin tài sản, thông tin tín dụng, thông tin sức khỏe và sinh lý và các thông tin cá nhân nhạy cảm khác của bạn.

+

3. Về quyền nhạy cảm: Để sử dụng đúng các chức năng ứng dụng, sản phẩm cần có các quyền sau để cung cấp dịch vụ chức năng liên quan đến sản phẩm bình thường.

+ +

1 Quyền đọc và ghi bộ nhớ

+

1 Cách lấy: thông báo bật lên, khi có quyền, người dùng sẽ chủ động nhấp đồng ý để ứng dụng sử dụng quyền này

+

2 Mục đích và phạm vi sử dụng: Được sử dụng để quét các tệp bộ nhớ cache tài nguyên và hình thu nhỏ trong hệ thống, tải tài nguyên nhạc và hình ảnh sản phẩm. Được hiển thị trên giao diện Ứng dụng để người dùng thuận tiện xem và thao tác

+ +

2 Quyền danh sách cài đặt ứng dụng

+

1 Cách lấy: thông báo bật lên, khi có quyền, người dùng sẽ chủ động nhấp đồng ý để ứng dụng sử dụng quyền này

+

2 Mục đích và phạm vi sử dụng: Khi ứng dụng cần sử dụng dịch vụ quảng cáo khuyến mãi, nền tảng quảng cáo bên thứ ba, Youmon +SDK, cần lấy "quyền danh sách cài đặt phần mềm ứng dụng" của thiết bị để tránh đẩy cho người dùng ứng dụng mà người dùng đã có và cải thiện trải nghiệm người dùng.

+ +

3 Quyền lấy thông tin trạng thái thiết bị

+

Bao gồm: (Model thiết bị, địa chỉ MAC thiết bị, mã nhận dạng duy nhất của thiết bị (IMEI, AndroidID, Device ID, MEID, UUID, GAID, OAID, IDFA, OpenUDID, GUID, IMSI, CCID, v.v.) MEID, số sê-ri, SSID và BSSID của WIFI, đọc địa chỉ Bluetooth), phiên bản hệ điều hành, tên hệ điều hành, v.v.;

+

1 Cách lấy: thông báo bật lên, khi có quyền, người dùng sẽ chủ động nhấp đồng ý để ứng dụng sử dụng quyền này

+

2 Mục đích và phạm vi sử dụng: Khi sử dụng ứng dụng của chúng tôi, để phân tích việc sử dụng chức năng ứng dụng của người dùng và đánh giá tính xác thực của người dùng, chúng tôi sẽ đồng bộ quyền với các SDK bên thứ ba, bao gồm Autonavi SDK, Youmon +SDK, v.v.

+ +

4 Truy cập thông tin vị trí

+

1 Cách lấy: thông báo bật lên, khi có quyền, người dùng chỉ sử dụng quyền này khi chủ động nhấp đồng ý với ứng dụng.

+

2 Mục đích và phạm vi sử dụng: Khi ứng dụng cần sử dụng GPS, WiFi hoặc các chức năng khác, sản phẩm cần thu thập vị trí và thông tin của bạn để tìm kiếm thiết bị Bluetooth ở các vị trí lân cận.

+

Lưu ý: Để biết thêm quyền ứng dụng, xem tài liệu này "Chính sách Bảo mật" Mục 7 "Mô tả quyền ứng dụng"

+ +

2. Lưu trữ thông tin

+

1. Nơi thông tin được lưu trữ

+

Thông tin cá nhân mà chúng tôi thu thập và tạo ra tại Cộng hòa Nhân dân Trung Hoa sẽ được lưu trữ trên máy chủ của chúng tôi và/hoặc của các công ty liên kết.

+

2. Lưu trữ và xử lý thông tin

+

Chúng tôi chỉ lưu trữ thông tin cá nhân của bạn trong thời gian cần thiết để đạt được mục đích hoặc theo yêu cầu của luật pháp và quy định. Sau khi bạn ngừng sử dụng sản phẩm này, chúng tôi sẽ ngay lập tức ngừng thu thập và xử lý thông tin cá nhân và dữ liệu ứng dụng của bạn. Khi vượt quá thời gian trên, chúng tôi sẽ xóa hoặc ẩn danh thông tin cá nhân mà bạn đã cung cấp cho chúng tôi.

+

Ngoài các chức năng cần thiết, Voitrans cần xin quyền hệ thống tương ứng. Phía máy chủ đám mây không lưu trữ thông tin cá nhân của người dùng, và SDK bên thứ ba được truy cập sẽ được ẩn danh và khử nhận dạng bởi nhà cung cấp dịch vụ (Amu Statistics SDK, Autonavi SDK), do đó không thể theo dõi người dùng. Thông tin được lưu trữ trên điện thoại của người dùng sẽ tự động bị xóa khi người dùng gỡ cài đặt Voitrans hoặc xóa bộ nhớ cache.

+ +

3. Bảo mật thông tin

+

1. Voitrans lưu trữ và bảo vệ thông tin cá nhân của bạn bằng các biện pháp và công nghệ bảo mật tiêu chuẩn ngành, chẳng hạn như xác thực, mã hóa dữ liệu, hạn chế truy cập trung tâm dữ liệu và các biện pháp bảo mật khác để đảm bảo thông tin của bạn được bảo vệ khỏi việc tiết lộ, thay đổi và phá hủy. Mặc dù có các biện pháp bảo mật nêu trên, xin lưu ý rằng không có biện pháp bảo mật nào có thể an toàn 100%.

+

2. Khi sử dụng các dịch vụ do Voitrans cung cấp, vui lòng bảo vệ thông tin cá nhân của bạn. Nếu bạn phát hiện thông tin cá nhân của mình đã bị xâm phạm, vui lòng liên hệ ngay với chúng tôi để chúng tôi có thể thực hiện các biện pháp thích hợp.

+ +

4. Chúng tôi sử dụng thông tin thu thập được như thế nào

+

1. Khi triển khai các chức năng kinh doanh ứng dụng, chúng tôi có thể sử dụng thông tin cá nhân của bạn để đảm bảo tính toàn vẹn và bảo mật của các sản phẩm và dịch vụ mà chúng tôi cung cấp cho bạn;

+

2. Chúng tôi sẽ hiểu thói quen sử dụng của bạn thông qua thông tin thu thập được, và với sự trợ giúp của phân tích dữ liệu, xác định mức độ chấp nhận dịch vụ, thói quen sử dụng của bạn, v.v., để thử nghiệm và tạo ra các sản phẩm, tính năng và dịch vụ mới, cải thiện mức dịch vụ, và giúp chúng tôi cải thiện các dịch vụ hiện có và phát triển dịch vụ mới;

+

3. Chúng tôi có thể sử dụng thông tin cá nhân của bạn cho các khảo sát khách hàng về sản phẩm và dịch vụ, để gửi thông báo về sản phẩm và dịch vụ, và cho mục đích quảng cáo thương mại;

+

4. Chúng tôi có thể sử dụng thông tin của bạn cho phân tích nội bộ và nghiên cứu liên quan đến ứng dụng;

+ +

5. Chia sẻ thông tin

+

Hiện tại, chúng tôi sẽ không chủ động chia sẻ hoặc chuyển thông tin cá nhân của bạn cho bên thứ ba bên ngoài công ty. Nếu có việc chia sẻ hoặc chuyển giao khác thông tin cá nhân của bạn, chúng tôi sẽ trực tiếp xác nhận hoặc đảm bảo rằng bên thứ ba đã nhận được sự đồng ý rõ ràng của bạn cho hành vi nêu trên.

+

Chúng tôi sẽ không tiết lộ công khai thông tin cá nhân mà chúng tôi thu thập. Nếu cần thiết phải tiết lộ công khai, chúng tôi sẽ thông báo cho bạn về mục đích tiết lộ công khai, loại thông tin được tiết lộ và thông tin nhạy cảm có thể liên quan, và nhận được sự đồng ý rõ ràng của bạn.

+

Khi hoạt động kinh doanh tiếp tục phát triển, chúng tôi có thể tham gia vào các giao dịch sáp nhập, mua lại, chuyển nhượng tài sản và các giao dịch khác, và chúng tôi sẽ thông báo cho bạn về các tình huống liên quan, theo luật pháp và quy định và không thấp hơn các tiêu chuẩn yêu cầu bởi Hướng dẫn này để tiếp tục bảo vệ thông tin cá nhân của bạn hoặc yêu cầu bên kiểm soát mới tiếp tục bảo vệ thông tin cá nhân của bạn.

+

Ngoài ra, theo luật pháp, quy định và tiêu chuẩn quốc gia liên quan, chúng tôi có thể chia sẻ, chuyển giao và tiết lộ công khai thông tin cá nhân mà không cần sự ủy quyền và đồng ý trước của chủ thể thông tin cá nhân trong các trường hợp sau:

+
    +
  • 1 Liên quan trực tiếp đến an ninh quốc gia và an ninh quốc phòng;
  • +
  • 2 Liên quan trực tiếp đến an toàn công cộng, sức khỏe cộng đồng hoặc lợi ích công cộng lớn;
  • +
  • 3 Liên quan trực tiếp đến điều tra hình sự, truy tố, xét xử và thi hành án;
  • +
  • 4 Để bảo vệ tính mạng, tài sản và các quyền và lợi ích hợp pháp quan trọng khác của chủ thể dữ liệu cá nhân hoặc các cá nhân khác, nhưng khó có được sự đồng ý của người đó;
  • +
  • 5 Thông tin cá nhân được chủ thể thông tin cá nhân tiết lộ ra công chúng;
  • +
  • 6 Thu thập thông tin cá nhân từ thông tin được tiết lộ hợp pháp công khai, chẳng hạn như báo cáo tin tức hợp pháp, công bố thông tin của chính phủ và các kênh khác.
  • +
+ +

6. Bạn quản lý thông tin cá nhân của mình như thế nào

+

Theo các luật, quy định và tiêu chuẩn liên quan của Trung Quốc, cũng như các thông lệ chung của các quốc gia và khu vực khác, chúng tôi đảm bảo bạn thực hiện các quyền sau đối với thông tin cá nhân của bạn:

+ +

1. Sửa chữa thông tin cá nhân của bạn

+

Nếu bạn phát hiện có lỗi trong thông tin cá nhân mà chúng tôi xử lý, bạn có quyền sửa chữa hoặc cập nhật thông tin sai hoặc không đầy đủ. Nếu bạn không thể tự thao tác trong trung tâm tài khoản, bạn có thể gửi email đến saitong.voitrans@gmail.com để liên hệ chúng tôi

+ +

2. Xóa thông tin cá nhân của bạn

+

Trong các trường hợp sau, bạn có thể gửi yêu cầu cho chúng tôi để xóa thông tin cá nhân của bạn:

+
    +
  • Nếu chúng tôi xử lý thông tin cá nhân vi phạm luật pháp và quy định;
  • +
  • Nếu chúng tôi thu thập và sử dụng thông tin cá nhân của bạn mà không có sự đồng ý;
  • +
  • Nếu việc xử lý thông tin cá nhân của chúng tôi vi phạm thỏa thuận với bạn;
  • +
  • Nếu bạn không còn sử dụng sản phẩm hoặc dịch vụ của chúng tôi;
  • +
  • Nếu chúng tôi không còn cung cấp sản phẩm hoặc dịch vụ cho bạn.
  • +
+

Liên hệ chúng tôi. Chúng tôi sẽ xử lý yêu cầu của bạn tại saitong.voitrans@gmail.com. Chúng tôi sẽ gửi cho bạn trong vòng 30 ngày làm việc kể từ ngày nhận

+ +

3. Thay đổi phạm vi đồng ý của bạn

+

Bạn có thể liên hệ chúng tôi qua email saitong.voitrans@gmail.com. Theo yêu cầu của bạn, chúng tôi sẽ không còn thu thập, sử dụng hoặc tiết lộ thông tin cá nhân của bạn. Xin lưu ý rằng việc rút lại sự đồng ý hoặc xóa thông tin cá nhân của bạn có thể ảnh hưởng đến việc sử dụng một số dịch vụ của chúng tôi.

+ +

4 Truy cập và sao chép thông tin cá nhân

+

Bạn có thể, theo quy định của luật pháp liên quan, cung cấp imei (số sê-ri điện thoại) hoặc oaid hoặc Android ID sau thông tin tài khoản và thông tin khác, bạn có thể nộp đơn cho chúng tôi để truy cập và sao chép thông tin cá nhân của bạn, bạn có thể gửi email đến 3514406195@qq.com để liên hệ chúng tôi.

+ +

5. Đáp ứng yêu cầu trên của bạn

+

Vì mục đích bảo mật, bạn có thể cần cung cấp yêu cầu bằng văn bản hoặc chứng minh danh tính của bạn bằng cách khác. Chúng tôi có thể yêu cầu bạn xác minh danh tính trước khi xử lý yêu cầu. Đối với yêu cầu hợp lý của bạn, chúng tôi sẽ phản hồi và xử lý kịp thời. Chúng tôi có thể từ chối các yêu cầu lặp lại không cần thiết, yêu cầu quá nhiều công nghệ (ví dụ: phát triển hệ thống mới hoặc thay đổi cơ bản trong thực tiễn hiện tại), gây rủi ro cho lợi ích hợp pháp của người khác, hoặc không thực tế.

+

Trong các trường hợp sau, theo yêu cầu của luật pháp và quy định, chúng tôi sẽ không thể đáp ứng yêu cầu của bạn:

+
    +
  • Liên quan đến an ninh quốc gia và an ninh quốc phòng;
  • +
  • Liên quan đến điều tra hình sự, truy tố và xét xử;
  • +
  • Có đủ bằng chứng cho thấy bạn có ác ý chủ quan hoặc lạm dụng quyền;
  • +
  • Đáp ứng yêu cầu của bạn sẽ gây thiệt hại nghiêm trọng cho quyền và lợi ích hợp pháp của bạn hoặc các cá nhân và tổ chức khác.
  • +
+ +

6. Hủy tài khoản

+

Người dùng có thể thực hiện thao tác [hủy tài khoản] trên APP. Các bước thao tác:

+
    +
  1. Đi đến trang [Tôi]
  2. +
  3. Nhấp vào nút [Cài đặt] ở góc trên bên phải
  4. +
  5. Nhấp vào [Hủy tài khoản] để xác nhận
  6. +
+

Sau khi đăng xuất, thông tin về tài khoản người dùng sẽ được xóa

+ +

7. Mô tả quyền ứng dụng

+

Để cung cấp các sản phẩm và dịch vụ tốt hơn, khi bạn sử dụng phần mềm, chúng tôi sẽ xin các quyền sau, khi bạn vào trang chủ hoặc sử dụng chức năng sẽ yêu cầu ủy quyền, nếu bạn từ chối, một số chức năng tương ứng sẽ không thể sử dụng bình thường. Mục đích cụ thể và nhắc nhở về quyền được mô tả chi tiết như sau:

+ +

1 Quyền vị trí:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

Thông qua WiFi hoặc trạm gốc di động để lấy thông tin vị trí kinh độ và vĩ độ của người dùng

+

Khi bạn sử dụng Voitrans, chúng tôi sẽ tìm kiếm thiết bị Bluetooth gần đó dựa trên vị trí địa lý của bạn. Đồng thời, để cung cấp dịch vụ ổn định hơn, tối ưu hóa sản phẩm và cải thiện trải nghiệm, chúng tôi sẽ chia sẻ thông tin trên với ba SDK, chẳng hạn như Youmon và Autonavi, để lấy dữ liệu hoạt động Voitrans và dịch vụ chức năng.

+

Chế độ nhắc nhở: Thông báo hiển thị quyền khi khởi động ứng dụng lần đầu tiên, yêu cầu người dùng xác nhận chấp nhận. Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

Quyền này được yêu cầu khi bạn truy cập ứng dụng để thực hiện chức năng quản lý ứng dụng.

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

3 Quyền mạng:

+

android.permission.INTERNET

+

Các quyền này được yêu cầu cho dịch vụ thông tin và dịch vụ nâng cấp phiên bản của Voitrans, và để cải thiện trải nghiệm người dùng và tối ưu hóa khả năng dịch vụ, các SDK bên thứ ba như Friends cũng sẽ sử dụng các quyền này.

+

Chế độ nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

4 Lấy quyền trạng thái mạng:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

Được sử dụng để xác định kết nối mạng hiện tại có hợp lệ không, xác định môi trường 4G hiện tại có hoạt động không, và có nên nhắc nhở về thay đổi môi trường mạng hay không, từ đó ảnh hưởng đến việc tải nội dung thông tin. Quyền này được xin khi bạn sử dụng Voitrans.

+

Thay đổi trạng thái mạng ảnh hưởng đến việc tải lên và tải xuống dữ liệu. Do đó, quyền truy cập trạng thái mạng sẽ được chia sẻ với friends + và các nền tảng khác.

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

5 Lấy quyền danh sách tác vụ:

+

android.permission.GET_TASKS

+

Quyền này được sử dụng để lấy danh sách ứng dụng cho chức năng quản lý phần mềm. Khi sử dụng chức năng quản lý phần mềm, cần đọc các ứng dụng đã cài đặt trên điện thoại di động.

+

Chế độ nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

6 Lấy quyền địa chỉ MAC

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

Khi sử dụng Voitrans, ứng dụng sẽ cần lấy quyền địa chỉ MAC:

+

Khi ứng dụng cần báo cáo dữ liệu chuyển đổi mục tiêu, các nền tảng bên thứ ba như Youmon +SDK cần sử dụng MAC.

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

7 Lấy quyền ghi âm

+

android.permission.RECORD_AUDIO

+

Khi sử dụng chức năng nhập giọng nói của Voitrans, cần sử dụng quyền ghi âm, chủ yếu sử dụng nhập giọng nói cho dịch thuật và các chức năng liên quan khác.

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật, hộp thoại bật lên động cho người dùng khi cần thiết.

+ +

8 Lấy quyền SSID của WIFI

+

Khi quyền này được sử dụng, ứng dụng đọc quyền SSID của WIFI:

+

Phạm vi sử dụng và mục đích: Khi ứng dụng cần sử dụng dịch vụ phân tích dữ liệu, các nền tảng bên thứ ba như +SDK cần đọc "quyền SSID WIFI" của thiết bị để cung cấp cho người dùng dịch vụ chức năng chính xác và hiệu quả hơn.

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

9 Lấy quyền truy cập Bluetooth

+

Khi quyền này được sử dụng, ứng dụng đọc quyền Bluetooth:

+

Phạm vi sử dụng và mục đích: Thiết bị Bluetooth để tìm kiếm và cấu hình phụ kiện, chẳng hạn như tai nghe Bluetooth, đồng hồ Bluetooth, v.v. Thuận tiện cho người dùng quản lý

+

Chế độ nhắc nhở: Thông báo hiển thị quyền khi khởi động ứng dụng lần đầu tiên, yêu cầu người dùng xác nhận chấp nhận. Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

10 Lấy quyền BSSID của WiFi

+

Khi ứng dụng cần phân biệt và xác định người dùng để cung cấp dịch vụ chức năng và thống kê dữ liệu, nó sẽ đọc quyền "WiFi BSSID" của thiết bị cho:

+

Phạm vi sử dụng và mục đích: 1 Nền tảng bên thứ ba: chẳng hạn như Youmeng SDK, Bugly SDK, Autonavi SDK

+

Phương thức nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

11 Lấy quyền cài đặt ứng dụng

+

android.permission.REQUEST_INSTALL_PACKAGES

+

Phần mềm sẽ sử dụng quyền cài đặt ứng dụng, chủ yếu được sử dụng để cho phép người dùng cài đặt phiên bản mới và trải nghiệm chức năng mới khi có phiên bản mới.

+

Chế độ nhắc nhở: Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

12 Lấy quyền camera

+

android.permission.CAMERA

+

Voitrans sử dụng quyền camera để quét mã QR và liên kết các thiết bị Bluetooth như tai nghe Bluetooth và đồng hồ.

+

Phương thức nhắc nhở: Thông báo hiển thị quyền khi khởi động ứng dụng lần đầu tiên, yêu cầu người dùng xác nhận chấp nhận. Mô tả Thỏa thuận Người dùng và Chính sách Bảo mật.

+ +

Lưu ý đặc biệt:

+

1 Ứng dụng tích hợp Allies SDK, Scott map SDK. Sau khi người dùng đồng ý cho phép sử dụng, ứng dụng ở chế độ nền/trước thu thập ICCID, IMSI, IMEI, SN, ANDROID, BSSID, ANDROID ID, SSID, IMSI và các thông tin cá nhân khác;

+

Ghi chú: Xem thêm nội dung và quyền liên quan đến SDK bên dưới [VIII. Danh sách truy cập SDK bên thứ ba]

+ +

8. Truy cập SDK bên thứ ba

+

1 Để đảm bảo hoạt động ổn định và thực hiện chức năng của ứng dụng khách, để bạn có thể sử dụng và tận hưởng nhiều dịch vụ và chức năng hơn, ứng dụng của chúng tôi sẽ được nhúng bộ công cụ phát triển phần mềm (SDK) hoặc các ứng dụng tương tự khác của bên thứ ba. Các bên thứ ba này sẽ thu thập và xử lý thông tin liên quan theo chính sách bảo mật riêng để cung cấp bình thường các chức năng và dịch vụ quảng cáo. Bạn có thể tìm hiểu về các quy tắc thu thập và xử lý thông tin của bên thứ ba trong phần sau. Chúng tôi sẽ tiến hành kiểm tra bảo mật nghiêm ngặt trên các bộ công cụ phát triển (SDK) của đối tác để lấy thông tin, nhằm bảo vệ việc sử dụng hợp lý và bảo mật thông tin cá nhân của bạn. Xin lưu ý rằng các SDK bên thứ ba có thể thay đổi loại xử lý dữ liệu do nâng cấp phiên bản. Vui lòng tham khảo các chính sách bảo mật được công bố bởi các SDK bên thứ ba. Xem chi tiết bên dưới hoặc nhấp để xem Danh sách SDK bên thứ ba.

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

Thông tin thu thập: Số thiết bị, địa chỉ IP, thông tin phần mềm thiết bị, mã nhận dạng thiết bị (IMEI, Android ID, IDFA, OAID, OPENUDID, GUID, ICCID, thông tin IMSI thẻ SIM, IP, địa chỉ MAC), mã nhận dạng thiết bị, khu vực, thông tin ứng dụng liên quan đến thiết bị và thông tin nhật ký liên quan đến dịch vụ khác

+

Mục đích sử dụng: Đăng nhập và chia sẻ WeChat

+

Nhà phát triển: Shenzhen Tencent Computer Systems Company Limited

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

Thông tin thu thập: Tên ứng dụng, số phiên bản ứng dụng, thương hiệu và model thiết bị, hệ điều hành, thông tin nhà mạng, độ phân giải màn hình, thông tin cảm biến (vector, gia tốc, áp suất, hướng, từ trường, con quay hồi chuyển, nhiệt độ, cảm biến ánh sáng, tín hiệu NMEA), thông tin cường độ tín hiệu thiết bị

+

Mục đích sử dụng: Điều hướng sử dụng Amap

+

Nhà phát triển: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

Thông tin thu thập: Tên ứng dụng, phiên bản ứng dụng, thương hiệu và model thiết bị, hệ điều hành, thông tin mạng, cường độ tín hiệu thiết bị, v.v.

+

Mục đích sử dụng: Hiển thị và tương tác bản đồ

+

Nhà phát triển: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

Thông tin thu thập: Thông tin vị trí (GPS, Wi-Fi, trạm gốc), thông tin thiết bị, thông tin mạng, v.v.

+

Mục đích sử dụng: Cung cấp dịch vụ vị trí

+

Nhà phát triển: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

Thông tin thu thập: Tên ứng dụng, phiên bản ứng dụng, thông tin thiết bị, thông tin mạng, v.v.

+

Mục đích sử dụng: Công cụ bản đồ và tối ưu hóa kết xuất

+

Nhà phát triển: Beijing Gaode Tuqiang Technology Co., Ltd.

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

Thông tin thu thập: Mã nhận dạng thiết bị, thông tin cơ bản về thiết bị, danh sách phần mềm đã cài đặt và thông tin mạng (xem chính sách bảo mật chính thức để biết chi tiết)

+

Mục đích sử dụng: Đăng nhập tài khoản Alipay và gọi thanh toán

+

Nhà phát triển: Alipay (Hangzhou) Information Technology Co., Ltd.

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

Thông tin thu thập: Phiên bản SDK/API, nền tảng, dấu thời gian, mã nhận dạng ứng dụng, phiên bản ứng dụng, nhà sản xuất thiết bị, phiên bản OS, ngôn ngữ, múi giờ, trạng thái mạng (Wi-Fi, v.v.), nhật ký mạng, dữ liệu sự cố và sử dụng, địa chỉ IP, v.v. (xem chính sách bảo mật chính thức để biết chi tiết)

+

Mục đích sử dụng: Dịch vụ giám sát chất lượng ứng dụng và báo cáo dữ liệu

+

Nhà phát triển: Shenzhen Tencent Computer Systems Company Limited

+

Phương thức thu thập: SDK tự thu thập

+

Liên kết Chính sách Bảo mật: https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. Bảo vệ trẻ vị thành niên

+

Người dùng sản phẩm và dịch vụ của chúng tôi có thể bao gồm trẻ vị thành niên dưới 18 tuổi, người dùng vị thành niên nên tham khảo ý kiến của cha mẹ hoặc người giám hộ về Chính sách Bảo mật này trước khi sử dụng sản phẩm, và sử dụng dịch vụ của chúng tôi hoặc cung cấp thông tin cho chúng tôi sau khi có được sự đồng ý và dưới sự hướng dẫn của cha mẹ hoặc người giám hộ. Người giám hộ của trẻ vị thành niên có thắc mắc có thể liên hệ với chúng tôi qua thông tin liên hệ trong Chính sách Bảo mật này.

+

Nếu bạn không đồng ý với việc thu thập thông tin nêu trên bởi các nhà cung cấp dịch vụ bên thứ ba trên, vui lòng ngay lập tức ngừng sử dụng Phần mềm. Trong quá trình bạn sử dụng Phần mềm, các bên thứ ba này sẽ thu thập và xử lý thông tin liên quan theo chính sách bảo mật riêng để cung cấp một số chức năng, quảng cáo và các dịch vụ khác. Nếu thông tin bị rò rỉ do việc thu thập thông tin nêu trên bởi nhà cung cấp dịch vụ bên thứ ba liên quan, nhà cung cấp dịch vụ bên thứ ba liên quan sẽ chịu trách nhiệm pháp lý tương ứng.

+ +

10. Chính sách Bảo mật có hiệu lực và được cập nhật

+

1. Chính sách Bảo mật này có hiệu lực từ ngày đăng tải.

+

2. Khi hoạt động kinh doanh phát triển và thay đổi, Chính sách Bảo mật của chúng tôi có thể thay đổi. Chúng tôi bảo lưu quyền thay đổi chính sách bảo mật bất cứ lúc nào, vì vậy vui lòng kiểm tra thường xuyên. Nếu chúng tôi thay đổi Chính sách Bảo mật, chúng tôi sẽ đăng các cập nhật này trên trang web, ứng dụng và nơi chúng tôi cho là phù hợp để giữ cho bạn được thông báo. Nếu chính sách bảo mật được cập nhật, nó sẽ có hiệu lực từ ngày cập nhật. Việc bạn tiếp tục sử dụng các sản phẩm hoặc dịch vụ của chúng tôi có nghĩa là bạn đồng ý với Chính sách Bảo mật đã thay đổi của chúng tôi.

+ +

11. Cách liên hệ với chúng tôi

+

Saitong Industries Inc thành lập ngày 22 tháng 11, 2024, địa chỉ đăng ký: 18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA. Nếu bạn muốn biết thêm về công ty và nền tảng của chúng tôi, bạn có thể liên hệ với chúng tôi qua thông tin liên hệ được cung cấp trong chính sách này (saitong.voitrans@gmail.com).

+
+ + + diff --git a/doc/vi/user_agreement.html b/doc/vi/user_agreement.html new file mode 100644 index 000000000..9fdb4d35d --- /dev/null +++ b/doc/vi/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Giao thức người dùng ứng dụng Voitrans + + + +
+
Tiếng Việt
+ +

Giao thức người dùng ứng dụng Voitrans

+ +

Các Điều khoản và Điều kiện Sử dụng này cho bạn biết cách truy cập và sử dụng Ứng dụng Voitrans và các dịch vụ trực tuyến ("Dịch vụ"). Saitong Industries Inc. (sau đây gọi là "Saitong") xin nhắc nhở người dùng đọc kỹ và hiểu đầy đủ Thỏa thuận Người dùng này (sau đây gọi là "Thỏa thuận"). Người dùng nên đọc kỹ và hiểu đầy đủ các điều khoản của Thỏa thuận này. Vui lòng đọc kỹ và lựa chọn chấp nhận hoặc không chấp nhận Thỏa thuận này. Việc bạn sử dụng Voitrans APP (sau đây gọi là "Ứng dụng" hoặc "Phần mềm") sẽ được coi là chấp nhận Thỏa thuận này và bạn đồng ý chịu ràng buộc bởi các điều khoản của Thỏa thuận này. Nếu bạn không đồng ý với Thỏa thuận này, vui lòng không sử dụng Ứng dụng.

+

Saitong bảo lưu quyền sửa đổi Thỏa thuận này, và các điều khoản cập nhật của Thỏa thuận sẽ được đăng tải trong Ứng dụng này, có hiệu lực từ ngày đăng tải.

+ +

1. Quy tắc chung

+

1.1 Ứng dụng này là phần mềm do Saitong cung cấp để kết nối các sản phẩm tai nghe do Saitong và các công ty đối tác phát hành. Quyền sở hữu và quyền vận hành phần mềm cùng các dịch vụ liên quan đều thuộc về Saitong.

+

1.2 Thỏa thuận này là thỏa thuận giữa bạn (sau đây gọi là "Người dùng") và công ty cùng các đối tác và đối tác vận hành (sau đây gọi là "Đối tác") về việc người dùng sử dụng Ứng dụng và các dịch vụ liên quan.

+

1.3 Phần mềm và dịch vụ bao gồm:

+

1.3.1 Phần mềm được cung cấp cho người dùng Voitrans các dịch vụ kết nối và liên kết Voitrans, quản lý cài đặt chức năng và các dịch vụ phần mềm khác, tùy thuộc vào các dịch vụ phần mềm thực tế do Ứng dụng cung cấp.

+

1.3.2 Cập nhật, nâng cấp và các dịch vụ khác của phần mềm.

+ +

2. Phạm vi giấy phép phần mềm

+

2.1 Chúng tôi cấp cho người dùng giấy phép cá nhân, không thể chuyển nhượng, không thể cấp phép lại và không độc quyền đối với Phần mềm.

+

2.2 Người dùng có thể cài đặt, sử dụng, hiển thị và chạy phần mềm trên một thiết bị đầu cuối di động duy nhất cho mục đích phi thương mại. Tuy nhiên, người dùng không được cài đặt, sử dụng hoặc chạy phần mềm cho mục đích vận hành thương mại, sao chép, thay đổi, sửa đổi, kết nối hoặc chạy phần mềm hoặc dữ liệu được lưu trong bộ nhớ của bất kỳ thiết bị đầu cuối nào trong quá trình vận hành phần mềm hoặc dữ liệu tương tác giữa máy khách và máy chủ trong quá trình vận hành phần mềm, hoặc tạo bất kỳ tác phẩm phái sinh nào. Điều này bao gồm, nhưng không giới hạn, việc sử dụng các plugin, tiện ích mở rộng hoặc các công cụ/dịch vụ của bên thứ ba không được phép để truy cập Phần mềm và các hệ thống liên quan. Đối với việc bán thương mại, sao chép và phân phối, chẳng hạn như cài đặt sẵn và đóng gói phần mềm, phải có sự ủy quyền và cho phép bằng văn bản.

+

2.3 Người dùng không được cài đặt Phần mềm trên các thiết bị đầu cuối khác mà không có sự cho phép rõ ràng của Nhà sáng tạo, bao gồm nhưng không giới hạn TV, đầu thu kỹ thuật số, máy chơi game và các thiết bị khác.

+

2.4 Trừ khi được ủy quyền rõ ràng trong Thỏa thuận này, không có quyền nào khác được cấp cho Người dùng, và Người dùng phải có được sự đồng ý bằng văn bản để sử dụng các quyền khác.

+ +

3. Nâng cấp phần mềm

+

3.1 Người dùng phải chọn phiên bản phần mềm phù hợp với cấu hình của thiết bị đầu cuối đã cài đặt. Nếu không, các vấn đề về phần mềm, vấn đề về thiết bị hoặc hư hỏng do bất kỳ phiên bản phần mềm nào không phù hợp với loại thiết bị sẽ hoàn toàn là trách nhiệm của người dùng.

+

3.2 Để cải thiện trải nghiệm người dùng và nâng cao nội dung dịch vụ, Saitong có quyền cung cấp cho bạn các phiên bản thay thế, sửa đổi và nâng cấp của phần mềm theo thời gian. Chức năng "Nhắc nhở nâng cấp" được bật mặc định cho người dùng. Tùy thuộc vào các phiên bản phần mềm khác nhau mà người dùng sử dụng, Saitong cung cấp cho người dùng tùy chọn kích hoạt chức năng này. Sau khi phát hành phiên bản mới của phần mềm, Saitong không đảm bảo tính khả dụng liên tục của phiên bản cũ của phần mềm.

+ +

4. Quy định sử dụng

+

4.1 Người dùng có thể sử dụng Phần mềm và Dịch vụ theo Thỏa thuận này với điều kiện tuân thủ pháp luật và Thỏa thuận này, và người dùng không được thực hiện các hành vi sau:

+

4.1.1 Xóa tất cả thông tin bản quyền trên Phần mềm và các bản sao khác, và sửa đổi, xóa hoặc vượt qua các biện pháp kỹ thuật do Phần mềm thiết lập để bảo vệ quyền sở hữu trí tuệ.

+

4.1.2 Kỹ thuật đảo ngược Phần mềm, chẳng hạn như tháo rời, dịch ngược hoặc các nỗ lực khác để lấy mã nguồn của Phần mềm.

+

4.1.3 Bằng cách sửa đổi hoặc giả mạo các lệnh và dữ liệu trong quá trình vận hành phần mềm, thêm, xóa hoặc thay đổi chức năng hoặc hiệu ứng vận hành của phần mềm, hoặc vận hành hoặc phổ biến ra công chúng phần mềm hoặc phương pháp được sử dụng cho các mục đích trên, bất kể các hành vi này có phải cho mục đích thương mại hay không.

+

4.1.4 Sử dụng phần mềm cho bất kỳ hành vi nào gây nguy hiểm cho an ninh mạng, bao gồm nhưng không giới hạn: sử dụng dữ liệu trái phép hoặc truy cập máy chủ/tài khoản trái phép; truy cập mạng công cộng hoặc các hệ điều hành khác mà không có sự cho phép và xóa, sửa đổi hoặc thêm thông tin được lưu trữ; các nỗ lực trái phép nhằm thăm dò, quét hoặc kiểm tra các điểm yếu của hệ thống hoặc mạng của phần mềm hoặc các hành vi khác phá hoại an ninh mạng; các nỗ lực can thiệp hoặc phá hủy hoạt động bình thường của hệ thống phần mềm hoặc trang web, cố tình phát tán các chương trình độc hại hoặc virus, và các hành vi khác phá vỡ dịch vụ thông tin mạng bình thường; giả mạo tên hoặc một phần tên gói TCP/IP.

+

4.1.6 Không có sự đồng ý bằng văn bản của Công ty, người dùng tự ý thực hiện các hành vi sau đối với phần mềm và thông tin trong đó, bao gồm nhưng không giới hạn: sử dụng, cho thuê, cho mượn, sao chép, sửa đổi, liên kết, in lại, biên soạn, xuất bản, đăng tải, thiết lập trang web sao chép, phát triển sản phẩm phái sinh, tác phẩm, dịch vụ, plugin, tiện ích mở rộng, tương thích, kết nối lẫn nhau, v.v., với sự trợ giúp của Phần mềm.

+

4.1.7 Sử dụng Phần mềm để đăng tải, truyền tải, phân phối và lưu trữ nội dung vi phạm luật pháp địa phương của bạn.

+

4.1.8 Sử dụng phần mềm để đăng tải, truyền tải, phổ biến và lưu trữ nội dung xâm phạm quyền sở hữu trí tuệ, bí mật thương mại và các quyền hợp pháp khác của người khác.

+

4.1.9 Sử dụng phần mềm này để đăng tải, truyền tải và phổ biến hàng loạt thông tin quảng cáo và thông tin rác.

+

4.1.10 Sử dụng Phần mềm và các Dịch vụ khác theo bất kỳ cách thức bất hợp pháp nào, cho bất kỳ mục đích bất hợp pháp nào, hoặc theo bất kỳ cách thức nào không phù hợp với việc sử dụng được cấp phép của Thỏa thuận này.

+

4.2 Quy định đăng tải thông tin

+

4.2.1 Nếu bạn sử dụng phần mềm để đăng tải nội dung thông tin (nếu có), bạn phải đảm bảo rằng bạn sở hữu quyền sở hữu trí tuệ đối với nội dung thông tin do bạn tải lên hoặc đã được ủy quyền hợp pháp, và bất kỳ hành vi nào của bạn khi sử dụng phần mềm và dịch vụ không xâm phạm quyền và lợi ích hợp pháp của bất kỳ bên thứ ba nào.

+

4.2.2 Khi sử dụng Phần mềm, người dùng không được sử dụng Phần mềm để thực hiện các hoạt động sau, bao gồm nhưng không giới hạn:

+

4.2.2.1 Tạo, sao chép, đăng tải, phổ biến và lưu trữ nội dung vi phạm luật pháp và quy định quốc gia địa phương.

+

4.2.2.2 Đăng tải, truyền tải, phổ biến và lưu trữ nội dung xâm phạm các quyền hợp pháp của người khác như danh tiếng, hình ảnh, quyền sở hữu trí tuệ và bí mật thương mại.

+

4.2.2.3 Bịa đặt sự thật, che giấu sự thật để gây nhầm lẫn hoặc lừa dối người khác.

+

4.2.2.4 Đăng tải, truyền tải và phổ biến thông tin quảng cáo và thông tin rác.

+

4.2.2.5 Tham gia vào các hành vi khác vi phạm luật pháp và quy định địa phương.

+

4.2.3 Bạn không được thực hiện bất kỳ hoạt động thương mại nào như quảng cáo và bán hàng trong Phần mềm mà không có sự cho phép của Công ty.

+

4.3 Người dùng hiểu và đồng ý rằng:

+

4.3.1 Saitong sẽ xác định liệu người dùng có bị nghi ngờ vi phạm các quy định sử dụng nêu trên hay không, và theo kết quả xác định, sẽ tạm ngừng hoặc chấm dứt giấy phép sử dụng của bạn hoặc thực hiện các biện pháp hạn chế khác có thể được thực hiện theo thỏa thuận này.

+

4.3.2 Đối với thông tin do người dùng đăng tải bằng phần mềm được cấp phép bị nghi ngờ vi phạm pháp luật hoặc xâm phạm quyền hợp pháp của người khác hoặc vi phạm Thỏa thuận này, thông tin đó sẽ bị xóa trực tiếp.

+

4.3.3 Nếu việc người dùng vi phạm các quy tắc sử dụng nêu trên gây thiệt hại cho bên thứ ba, bạn cần tự chịu trách nhiệm pháp lý dưới danh nghĩa của mình, và bạn phải đảm bảo Saitong không chịu tổn thất hoặc chi phí phát sinh thêm.

+

4.3.4 Nếu người dùng vi phạm các quy định pháp luật hoặc thỏa thuận liên quan, gây tổn thất cho Saitong, hoặc bị bên thứ ba khiếu nại, hoặc bị cơ quan hành chính xử phạt, người dùng phải bồi thường tổn thất và/hoặc chi phí gây ra cho Saitong, bao gồm phí luật sư hợp lý, chi phí điều tra và thu thập bằng chứng.

+ +

5. Mô tả dịch vụ bên thứ ba

+

5.1 Người dùng hiểu và đồng ý rằng hệ thống phần mềm có thể chứa các dịch vụ do các công ty liên kết của Công ty hoặc bên thứ ba cung cấp, và Công ty chỉ cung cấp các mô-đun chức năng liên quan trong hệ thống để thuận tiện cho người dùng và cung cấp quyền truy cập vào dịch vụ bên thứ ba.

+

5.2 Dù dịch vụ bên thứ ba được cài đặt sẵn trong dịch vụ hệ thống phần mềm hay do người dùng tự mở hoặc đặt hàng, người dùng hiểu và đồng ý rằng Saitong không đưa ra bất kỳ bảo đảm hoặc cam kết rõ ràng hay ngụ ý nào về tính hợp pháp và hiệu quả của nhà cung cấp dịch vụ bên thứ ba hoặc người dùng, cũng như tính hợp pháp, chính xác, hiệu quả và bảo mật của dịch vụ bên thứ ba.

+

5.3 Công ty không giám sát, kiểm soát hoặc cung cấp bất kỳ bảo hành hoặc bảo đảm nào đối với dịch vụ bên thứ ba và không chịu bất kỳ trách nhiệm nào.

+

5.4 Mọi tranh chấp hoặc bất đồng giữa người dùng và nhà cung cấp dịch vụ bên thứ ba sẽ được Người dùng và bên thứ ba giải quyết theo quy trình kinh doanh và quy chuẩn kinh doanh của nhà cung cấp dịch vụ bên thứ ba, và Công ty không chịu bất kỳ trách nhiệm nào.

+ +

6. Chính sách bảo mật và bảo vệ thông tin cá nhân

+

6.1 Saitong cam kết bảo vệ quyền riêng tư của người dùng theo chính sách bảo mật, vui lòng xem: Chính sách Bảo mật ứng dụng Voitrans.

+ +

7. Trách nhiệm vi phạm

+

7.1 Saitong có quyền đánh giá liệu hành vi của người dùng có tuân thủ các quy định của Thỏa thuận này hay không. Nếu xét thấy Người dùng đã vi phạm luật pháp và quy định liên quan hoặc các quy định của Thỏa thuận này và các quy tắc liên quan, tùy theo mức độ nghiêm trọng của vi phạm, Saitong có quyền xóa thông tin vi phạm, hạn chế, tạm ngừng, chấm dứt việc sử dụng dịch vụ Phần mềm của người dùng, truy cứu trách nhiệm pháp lý của người dùng và thực hiện các biện pháp khác mà Saitong cho là phù hợp. Nếu chúng tôi chịu bất kỳ tổn thất nào (bao gồm nhưng không giới hạn việc nhận khiếu nại từ bên thứ ba hoặc bị xử phạt bởi bất kỳ cơ quan hành chính nào), Người dùng sẽ chịu trách nhiệm hoàn toàn.

+ +

8. Rủi ro dịch vụ và miễn trừ trách nhiệm

+

8.1 Chúng tôi mong muốn cung cấp hỗ trợ dịch vụ với công nghệ hiện tại. Saitong không đảm bảo rằng Dịch vụ Phần mềm sẽ hoạt động không bị gián đoạn hoặc lỗi, rằng tất cả các khiếm khuyết của Dịch vụ Phần mềm sẽ được sửa chữa, hoặc rằng Dịch vụ Phần mềm sẽ đáp ứng mọi yêu cầu của người dùng. Đối với các hậu quả phát sinh, Saitong không chịu bất kỳ trách nhiệm nào.

+

8.2 Tất cả các tổn thất mà người dùng phải chịu do bên thứ ba như lỗi đường truyền, vấn đề kỹ thuật, mạng, lỗi thiết bị đầu cuối máy tính, hệ thống không ổn định và các nguyên nhân bất khả kháng khác sẽ không bị chịu trách nhiệm.

+

8.3 Saitong không đảm bảo tính hợp pháp, tính xác thực, tính chính xác và hiệu quả của nội dung thông tin thu được thông qua phần mềm (bao gồm nhưng không giới hạn nội dung dịch vụ bên thứ ba), và Saitong không chịu bất kỳ trách nhiệm nào đối với kết quả của bất kỳ hành vi nào được người dùng thực hiện dựa trên truy vấn và xem.

+

8.4 Phần mềm, giống như hầu hết các phần mềm Internet, bị ảnh hưởng bởi sự khác biệt trong các yếu tố bao gồm nhưng không giới hạn nguyên nhân từ người dùng, chất lượng dịch vụ mạng, môi trường xã hội và các yếu tố khác, và có thể gặp phải các vấn đề bảo mật khác nhau, chẳng hạn như người khác sử dụng thông tin người dùng, dẫn đến quấy rối trong cuộc sống thực; phần mềm khác được người dùng tải xuống và cài đặt hoặc các trang web khác mà người dùng truy cập chứa virus như "Trojan horse", đe dọa bảo mật thông tin và dữ liệu thiết bị đầu cuối của người dùng, sau đó ảnh hưởng đến việc sử dụng bình thường phần mềm. Người dùng nên nâng cao nhận thức về bảo mật thông tin và bảo vệ dữ liệu người dùng, và chú ý tăng cường bảo vệ mật khẩu để tránh tổn thất và quấy rối.

+

8.5 Khi người dùng sử dụng Phần mềm hoặc yêu cầu Saitong cung cấp dịch vụ cụ thể, Phần mềm có thể gọi hệ thống bên thứ ba hoặc phần mềm bên thứ ba để hỗ trợ việc sử dụng hoặc truy cập của người dùng, và kết quả sử dụng hoặc truy cập được cung cấp bởi bên thứ ba. Ngoài việc tuân thủ các quy tắc liên quan của Thỏa thuận này, người dùng cũng phải tuân thủ các thỏa thuận và quy tắc liên quan của bên thứ ba. Người dùng phải hiểu và đồng ý rằng, khi sử dụng dịch vụ bên thứ ba, bên thứ ba có thể đọc dữ liệu người dùng, và Saitong không đảm bảo tính an toàn, chính xác, hiệu quả và các rủi ro không chắc chắn khác của kết quả đạt được thông qua hỗ trợ hệ thống bên thứ ba hoặc phần mềm bên thứ ba, người dùng nên thực hiện đánh giá thận trọng, và Saitong không chịu bất kỳ trách nhiệm nào đối với bất kỳ tranh chấp và thiệt hại nào phát sinh từ việc này.

+

8.6 Để đảm bảo quyền tự chủ trong phát triển và điều chỉnh kinh doanh của công ty, công ty có thể sửa đổi hoặc gián đoạn dịch vụ bất cứ lúc nào sau khi thông báo hợp lý cho người dùng.

+

8.7 Trừ khi luật pháp và quy định quy định rõ ràng, Saitong sẽ nỗ lực hết sức để đảm bảo rằng phần mềm cũng như công nghệ và thông tin liên quan là an toàn, hiệu quả, chính xác và đáng tin cậy, nhưng do hạn chế của công nghệ hiện tại, người dùng hiểu rằng Saitong không thể đảm bảo điều này.

+

8.8 Bồi thường cho thương tích cá nhân hoặc thiệt hại kinh tế phụ phát và gián tiếp do hoặc liên quan đến bất kỳ trường hợp nào sau đây, bao gồm nhưng không giới hạn mất lợi nhuận, mất dữ liệu, thiệt hại do gián đoạn kinh doanh hoặc các thiệt hại hoặc tổn thất kinh doanh khác, sẽ do Người dùng chịu:

+

1) Sử dụng hoặc không thể sử dụng phần mềm được cấp phép.

+

2) Việc sử dụng trái phép phần mềm hoặc thay đổi dữ liệu người dùng bởi bên thứ ba.

+

3) Chi phí và tổn thất phát sinh từ các hành động của người dùng với phần mềm.

+

4) Sự hiểu lầm của người dùng về phần mềm.

+

5) Bất kỳ tổn thất nào khác liên quan đến phần mềm không phải do nguyên nhân từ Saitong.

+

8.9 Người dùng đồng ý rằng Công ty có quyền tạm ngừng, gián đoạn hoặc chấm dứt toàn bộ hoặc một phần Dịch vụ đối với người dùng dựa trên yêu cầu của cơ quan tư pháp, quản lý và giám sát hoặc vì lý do kinh doanh riêng. Saitong không chịu trách nhiệm về điều này.

+

8.10 Người dùng hiểu và đồng ý rằng Công ty sẽ sử dụng nỗ lực hợp lý về mặt thương mại để đảm bảo bảo mật lưu trữ dữ liệu trong Phần mềm và Dịch vụ, nhưng công ty không thể cung cấp bảo đảm hoàn toàn, và Người dùng hiểu rằng Công ty không chịu trách nhiệm về việc xóa hoặc lỗi lưu trữ hoặc sao lưu dữ liệu trong Dịch vụ.

+

8.11 Trong phạm vi tối đa được pháp luật cho phép, Nhà phát triển hoặc Nhà cung cấp không chịu trách nhiệm về bất kỳ thiệt hại trực tiếp, gián tiếp, phụ phát, đặc biệt hoặc hậu quả nào phát sinh từ việc sử dụng Ứng dụng. Nếu người dùng có nhu cầu thêm, vui lòng đến bệnh viện chính quy để kiểm tra chuyên sâu.

+ +

9. Tuyên bố quyền sở hữu trí tuệ

+

9.1 Saitong là chủ sở hữu quyền sở hữu trí tuệ của phần mềm này. Tất cả bản quyền, nhãn hiệu, bằng sáng chế, bí mật thương mại và các quyền sở hữu trí tuệ khác của phần mềm, cũng như tất cả nội dung thông tin liên quan đến phần mềm (bao gồm nhưng không giới hạn văn bản, hình ảnh, âm thanh, video, đồ họa, thiết kế giao diện, khung bố cục, dữ liệu liên quan hoặc tài liệu điện tử, v.v.) đều được bảo vệ bởi luật pháp và quy định địa phương cùng các hiệp ước quốc tế tương ứng.

+

9.2 Nếu không có sự đồng ý bằng văn bản của Công ty, Người dùng không được thực hiện, sử dụng hoặc chuyển nhượng các quyền sở hữu trí tuệ nêu trên cho bất kỳ mục đích thương mại hoặc phi thương mại nào, hoặc cho phép bất kỳ bên thứ ba nào, và Công ty bảo lưu quyền truy cứu trách nhiệm pháp lý đối với các hành vi nêu trên.

+ +

10. Thay đổi giao thức

+

10.1 Saitong có quyền sửa đổi các điều khoản của Thỏa thuận này khi cần thiết. Khi các điều khoản của Thỏa thuận được thay đổi, các điều khoản sửa đổi của Thỏa thuận sẽ được đăng tải trên trang liên quan. Nếu bạn không đồng ý với nội dung đã thay đổi, người dùng nên chủ động hủy dịch vụ này. Nếu Người dùng tiếp tục sử dụng Dịch vụ, được coi là đã chấp nhận các thay đổi trong các điều khoản của Thỏa thuận.

+

10.2 Saitong bảo lưu quyền sửa đổi hoặc thay đổi các dịch vụ trả phí, tiêu chuẩn tính phí, phương thức tính phí, phí dịch vụ và điều khoản dịch vụ được cung cấp khi cần thiết. Khi cung cấp dịch vụ, chúng tôi có thể tính một số phí nhất định cho người dùng một số dịch vụ hiện tại hoặc trong tương lai. Nếu người dùng từ chối thanh toán các khoản phí đó, họ không thể tiếp tục sử dụng các dịch vụ liên quan sau khi bắt đầu tính phí.

+
+ + diff --git a/doc/ysxy.html b/doc/zh_cn/privacy_policy.html similarity index 99% rename from doc/ysxy.html rename to doc/zh_cn/privacy_policy.html index 32abdf6ad..450405afb 100644 --- a/doc/ysxy.html +++ b/doc/zh_cn/privacy_policy.html @@ -1,4 +1,4 @@ - + diff --git a/doc/yhxy.html b/doc/zh_cn/user_agreement.html similarity index 100% rename from doc/yhxy.html rename to doc/zh_cn/user_agreement.html diff --git a/doc/zh_hk/privacy_policy.html b/doc/zh_hk/privacy_policy.html new file mode 100644 index 000000000..cd7296103 --- /dev/null +++ b/doc/zh_hk/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans 私隱政策 + + + + +
+

Voitrans 私隱政策

+

最後更新:2025年5月27日

+

生效日期:2025年5月27日

+ +

歡迎使用 Voitrans 軟件及服務

+

1. Voitrans 由 Saitong Industries Inc.(以下簡稱「本公司」)提供。可幫助用戶實現藍牙設備及其他產品管理。我們深知個人資料對用戶(以下簡稱「閣下」)的重要性,有效保護閣下的個人資料是我們業務健康持續發展的基石。感謝閣下對 Voitrans 產品或服務的使用及信任!我們充分意識到這份信任來之不易,我們秉持公開透明的原則,向閣下表達我們處理閣下個人資料的規則,我們以合法及正當的方式和明確合理的目的處理閣下的個人資料。特別提示:請務必在使用我們的產品或服務前仔細閱讀並理解本私隱政策,以便閣下作出適當的選擇。

+

2. 本私隱政策向閣下說明,當閣下使用 Voitrans 時,我們如何收集、使用、儲存及共享閣下的個人資料。個人資料是指以電子或其他方式記錄的、能夠單獨或與其他資料結合識別特定自然人或反映特定自然人活動的各種資料。Voitrans 尊重並保護所有服務用戶的個人私隱。除本私隱政策另有規定外,Voitrans 不會在未經閣下事先許可的情況下向公眾披露或向第三方提供此等資料。

+

3. 當閣下通過應用市場產品或服務使用第三方的產品或服務時,閣下的個人資料將受該第三方的私隱政策約束。

+

4. Voitrans 本私隱政策將不時更新。同意 Voitrans 服務使用協議並開始使用 Voitrans,即視為閣下已同意本私隱政策的全部內容。如閣下不同意本私隱政策,請勿使用 Voitrans 軟件及服務。

+

5. 為分析及衡量相關服務的有效性,我們將根據本私隱政策的規定使用及披露閣下的個人資料。

+ +

本私隱政策將幫助閣下了解以下內容:

+
    +
  • 1 我們收集的資料
  • +
  • 2 資料的儲存
  • +
  • 3 資料安全
  • +
  • 4 我們如何使用所收集的資料
  • +
  • 5 資料共享
  • +
  • 6 閣下如何管理個人資料
  • +
  • 7 應用程式權限說明
  • +
  • 8 接入第三方SDK
  • +
  • 9 未成年人保護
  • +
  • 10 私隱政策的生效及更新
  • +
  • 11 如何聯繫我們
  • +
+ +

1. 我們收集的資料

+

1. 使用 Voitrans 之初,我們將開始收集有關閣下使用應用程式的數據

+

2. Voitrans 可能通過合法途徑從第三方或商業夥伴獲取閣下的個人資料

+

3. 為向閣下提供更好的產品及服務,在使用過程中為閣下提供網絡安全、維護產品正常運行及優化改進,我們的資料服務目的,在閣下主動點擊同意本私隱政策後,使用我們提供的資料。在服務期間,除依據國家法律法規確保App基本功能正常運行所必需的個人資料外,我們還將向閣下收集其他個人資料:

+

3.1 為全面識別風險用戶、判斷用戶真實性及防止作弊,我們將在閣下每次打開軟件時讀取閣下的設備資料,包括:(設備型號、設備MAC地址、設備唯一標識符(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、序列號、WIFI的SSID和BSSID)、讀取藍牙地址、操作系統版本、操作系統名稱、用戶登入帳戶及密碼資料;

+

3.2 當閣下使用我們的產品及服務時,我們可能通過網絡日誌資料或某些程式及軟件收集某些資料,此類資料可能包括:產品及服務的使用詳情,如閣下應用程式的開啟時間、使用時長及所瀏覽頁面的地址;設備事件資料,如崩潰、系統活動等,以優化閣下的設備及改善我們的服務;

+

3.3 為識別設備存在風險的應用程式,提供更安全的功能服務。因此,我們需要在此過程中獲取閣下的應用程式/應用安裝列表,以確保產品正常運行及保護設備安全。

+

3.4 為分析用戶對應用功能的使用情況及判斷用戶真實性,我們需要進行數據統計,並在閣下的設備使用期間收集上述設備資料,包括設備MAC地址及設備唯一標識符。

+

3.5 設備信號:閣下使用設備的網絡狀態、WIFI接入點資料等。

+

3.6 位置資料:我們可能使用GPS、WiFi或其他技術手段收集及處理有關閣下位置的資料,以更新本地資料、提供內容服務等。

+

更多資料請點擊「個人資料收集清單」。

+ +

1. 對於上述資料中較為敏感的個人資料,如用戶設備資料(IMEI號碼、通話狀態及識別號碼)、GPS位置資料、照片媒體內容及文件存取權限,我們將在收集前取得閣下的同意。對於某些非敏感資料,收集可能是默認及自動的。閣下可通過調整流動設備的設定選項來限制我們收集相關資料或使用某些權限。當閣下限制我們存取某項權限時,我們可能無法繼續為閣下提供相應的服務,且不再處理閣下相應的資料。

+

2. 我們不會收集閣下的身份證號碼、個人生物特徵資料、銀行帳戶號碼、財產資料、信用資料、健康及生理資料等個人敏感資料。

+

3. 關於敏感權限:為正確使用應用功能,產品需要獲取以下權限,以提供與正常產品相關的功能服務。

+ +

1 獲取儲存讀寫權限

+

1 如何獲取:彈出提示,獲取權限時,用戶主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:用於掃描系統中的資源緩存文件及縮略圖、加載音樂資源及產品圖片。在App介面上顯示,方便用戶查看及操作

+ +

2 獲取應用安裝列表權限

+

1 如何獲取:彈出提示,獲取權限時,用戶主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:當應用程式需要使用廣告推廣服務時,第三方廣告平台 Youmon +SDK 需要獲取設備的「應用軟件安裝列表權限」,以避免向用戶推送用戶已擁有的應用程式,改善用戶體驗。

+ +

3 獲取設備狀態資料權限

+

包括:(設備型號、設備MAC地址、設備唯一標識符(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、序列號、WIFI的SSID和BSSID、讀取藍牙地址)、操作系統版本、操作系統名稱等;

+

1 如何獲取:彈出提示,獲取權限時,用戶主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:使用我們的應用程式時,為分析用戶對應用功能的使用情況及判斷用戶真實性,我們將把權限同步至第三方SDK,包括高德SDK、Youmon +SDK等。

+ +

4 存取位置資料

+

1 如何獲取:彈出提示,獲取權限時,用戶僅在主動點擊同意應用程式後方使用此權限。

+

2 使用目的及範圍:當應用程式需要使用GPS、WiFi或其他功能時,產品需要收集閣下的位置及資料,以搜索附近位置的藍牙設備。

+

注意:更多應用程式權限,請參閱本文件「私隱政策」第7節「應用程式權限說明」

+ +

2. 資料的儲存

+

1. 資料儲存地點

+

我們在中華人民共和國收集及產生的個人資料將儲存在我們的伺服器及/或我們關聯公司的伺服器上。

+

2. 資料儲存及處理

+

我們僅在實現目的所需的期間或法律法規要求的期間內儲存閣下的個人資料。閣下停止使用本產品後,我們將立即停止收集及處理閣下的個人資料及應用數據。超過上述期間後,我們將刪除或匿名化閣下提供給我們的個人資料。

+

除必要功能外,Voitrans 需要申請相應的系統權限。雲端伺服器不儲存用戶個人資料,所接入的第三方SDK將由服務提供商(友盟統計SDK、高德SDK)進行匿名化及去標識化處理,因此無法追蹤用戶。儲存在用戶手機上的資料將在用戶卸載 Voitrans 或清除緩存時自動刪除。

+ +

3. 資料安全

+

1. Voitrans 使用行業標準的安全措施及技術來儲存及保護閣下的個人資料,如身份驗證、數據加密、限制數據中心存取及其他安全措施,以確保閣下的資料免受洩露、篡改及破壞。儘管有上述安全措施,請注意,沒有任何安全措施能夠做到100%安全。

+

2. 當閣下使用 Voitrans 提供的服務時,請保護閣下的個人資料。如閣下發現個人資料被洩露,請立即聯繫我們,以便我們採取適當措施。

+ +

4. 我們如何使用所收集的資料

+

1. 在實施應用業務功能時,我們可能使用閣下的個人資料以確保我們向閣下提供的產品及服務的完整性及安全性;

+

2. 我們將通過所收集的資料了解閣下的使用習慣,並藉助數據分析,識別服務的可接受度、閣下的使用習慣等,以測試及創建新產品、功能及服務,提高服務水平,並幫助我們改善現有服務及開發新服務;

+

3. 我們可能使用閣下的個人資料進行有關產品及服務的客戶調查、發送有關產品及服務的通知,以及進行商業推廣;

+

4. 我們可能使用閣下的資料進行與應用程式相關的內部分析及研究;

+ +

5. 資料共享

+

目前,我們不會主動向公司以外的第三方共享或轉讓閣下的個人資料。如有其他共享或轉讓閣下個人資料的情況,我們將直接或確認第三方已就上述行為取得閣下的明確同意。

+

我們不會公開披露所收集的個人資料。如有必要公開披露,我們將告知閣下公開披露的目的、所披露資料的類型及可能涉及的敏感資料,並取得閣下的明確同意。

+

隨着我們業務的持續發展,我們可能進行合併、收購、資產轉讓等交易,我們將根據法律法規的要求,以不低於本指引要求的標準繼續保護閣下的個人資料或要求新的控制者繼續保護閣下的個人資料,並告知閣下相關情況。

+

此外,根據相關法律法規及國家標準,在以下情況下,我們可能在未經個人資料主體事先授權同意的情況下共享、轉讓及公開披露個人資料:

+
    +
  • 1 與國家安全及國防安全直接相關;
  • +
  • 2 與公共安全、公共衛生或重大公共利益直接相關;
  • +
  • 3 與刑事偵查、起訴、審判及判決執行直接相關;
  • +
  • 4 為保護個人資料主體或其他個人的生命、財產及其他重大合法權益,但難以取得本人同意的;
  • +
  • 5 個人資料主體自行向公眾披露的個人資料;
  • +
  • 6 從合法公開披露的資料中收集個人資料,如合法新聞報道、政府資料公開等渠道。
  • +
+ +

6. 閣下如何管理個人資料

+

根據中國的相關法律、法規及標準,以及其他國家及地區的慣例,我們保證閣下就個人資料行使以下權利:

+ +

1. 更正閣下的個人資料

+

如閣下發現我們處理的個人資料有錯誤,閣下有權更正或更新錯誤或不完整的資料。如閣下無法在帳戶中心自行操作,可發送電子郵件至 saitong.voitrans@gmail.com 聯繫我們

+ +

2. 刪除閣下的個人資料

+

在以下情況下,閣下可向我們提出刪除個人資料的要求:

+
    +
  • 如我們違反法律法規處理個人資料;
  • +
  • 如我們未經閣下同意收集及使用閣下的個人資料;
  • +
  • 如我們對個人資料的處理違反了與閣下的協議;
  • +
  • 如閣下不再使用我們的產品或服務;
  • +
  • 如我們不再向閣下提供產品或服務。
  • +
+

聯繫我們。我們將在 saitong.voitrans@gmail.com 處理閣下的要求。我們將在收到後30個工作日內回覆閣下

+ +

3. 變更閣下的同意範圍

+

閣下可通過電子郵件 saitong.voitrans@gmail.com 聯繫我們。應閣下的要求,我們將不再收集、使用或披露閣下的個人資料。請注意,閣下撤回同意或刪除個人資料可能會影響閣下使用我們的部分服務。

+ +

4 存取及複製個人資料

+

閣下可根據相關法律的規定,提供閣下的IMEI(手機序列號)或OAID或Android ID及帳戶資料等資料後,可向我們申請存取及複製閣下的個人資料,閣下可發送電子郵件至 3514406195@qq.com 與我們聯繫。

+ +

5. 回應閣下的上述要求

+

為安全起見,閣下可能需要提供書面要求或以其他方式證明閣下的身份。我們可能會要求閣下在處理要求前驗證身份。對於閣下的合理要求,我們將及時回應及處理。我們可能會拒絕不必要的重複要求、需要過多技術的要求(例如開發新系統或從根本上改變現有做法)、對他人合法權益構成風險的要求或高度不切實際的要求。

+

在以下情況下,根據法律法規的要求,我們將無法回應閣下的要求:

+
    +
  • 與國家安全及國防安全相關;
  • +
  • 與刑事偵查、起訴及審判相關;
  • +
  • 有充分證據表明閣下存在主觀惡意或濫用權利;
  • +
  • 回應閣下的要求將對閣下或其他個人及組織的合法權益造成嚴重損害。
  • +
+ +

6. 帳戶註銷

+

用戶可在APP上執行【帳戶註銷】操作。操作步驟:

+
    +
  1. 前往【我的】頁面
  2. +
  3. 點擊右上角的【設定】按鈕
  4. +
  5. 點擊【註銷帳戶】確認
  6. +
+

閣下登出後,用戶帳戶的相關資料將被清除

+ +

7. 應用程式權限說明

+

為提供更好的產品及服務,當閣下使用軟件時,我們將申請以下權限,當閣下進入主頁或使用功能時將請求授權,如閣下拒絕,部分相應功能將無法正常使用。權限的具體用途及提示詳細說明如下:

+ +

1 位置權限:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

通過WiFi或流動基站獲取用戶的經緯度位置資料

+

當閣下使用 Voitrans 時,我們將根據閣下的地理位置搜索附近的藍牙設備。同時,為提供更穩定的服務、優化產品及改善體驗,我們將與友盟、高德等三方SDK共享上述資料,以獲取 Voitrans 運營數據及功能服務。

+

提示方式:首次啟動應用程式時顯示權限提示,要求用戶確認接受。用戶協議及私隱政策說明。

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

當閣下存取應用程式以執行應用管理功能時,需要此權限。

+

提示方式:用戶協議及私隱政策說明。

+ +

3 網絡權限:

+

android.permission.INTERNET

+

當閣下使用 Voitrans 的資訊服務及版本升級服務時需要此等權限,為改善用戶體驗及優化服務能力,友盟等第三方SDK亦將使用此等權限。

+

提示方式:用戶協議及私隱政策說明。

+ +

4 獲取網絡狀態權限:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

用於獲取當前網絡連接是否有效、判斷當前是否為4G環境、是否提醒網絡環境變化,從而影響資訊內容的加載。此權限在閣下使用 Voitrans 時申請。

+

網絡狀態的變化影響數據的上傳及加載。因此,存取網絡狀態權限將與友盟+等平台共享。

+

提示方式:用戶協議及私隱政策說明。

+ +

5 獲取任務列表權限:

+

android.permission.GET_TASKS

+

此權限用於獲取軟件管理功能的應用列表。當閣下使用軟件管理功能時,需要讀取手機上已安裝的應用程式。

+

提示方式:用戶協議及私隱政策說明。

+ +

6 獲取MAC地址權限

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

當閣下使用 Voitrans 時,應用程式需要獲取MAC地址權限:

+

當應用程式需要上報目標轉化數據時,友盟+SDK等第三方平台需要使用MAC。

+

提示方式:用戶協議及私隱政策說明。

+ +

7 獲取錄音權限

+

android.permission.RECORD_AUDIO

+

當閣下使用 Voitrans 的語音輸入功能時,需要使用錄音權限,主要用於翻譯及其他相關功能的語音輸入。

+

提示方式:用戶協議及私隱政策說明,在需要時動態彈出提示框。

+ +

8 獲取WIFI的SSID權限

+

使用此權限時,應用程式讀取WIFI的SSID權限:

+

使用範圍及目的:當應用程式需要使用數據分析服務時,+SDK等第三方平台需要讀取設備的「WIFI SSID權限」,為用戶提供更準確、更有效的功能服務。

+

提示方式:用戶協議及私隱政策說明。

+ +

9 獲取藍牙存取權限

+

使用此權限時,應用程式讀取藍牙權限:

+

使用範圍及目的:用於搜索及配置配件的藍牙設備,如藍牙耳機、藍牙手錶等。方便用戶管理

+

提示方式:首次啟動應用程式時顯示權限提示,要求用戶確認接受。用戶協議及私隱政策說明。

+ +

10 獲取WiFi的BSSID權限

+

當應用程式需要區分及識別用戶以提供功能服務及數據統計時,將讀取設備的「WiFi BSSID」權限,用於:

+

使用範圍及目的:1 第三方平台:如友盟SDK、Bugly SDK、高德SDK

+

提示方式:用戶協議及私隱政策說明。

+ +

11 獲取應用安裝權限

+

android.permission.REQUEST_INSTALL_PACKAGES

+

軟件將使用應用安裝權限,主要用於在有新版本時允許用戶安裝新版本及體驗新功能。

+

提示方式:用戶協議及私隱政策說明。

+ +

12 獲取相機權限

+

android.permission.CAMERA

+

Voitrans 使用相機權限掃描二維碼及綁定藍牙設備,如藍牙耳機及手錶。

+

提示方式:首次啟動應用程式時顯示權限提示,要求用戶確認接受。用戶協議及私隱政策說明。

+ +

特別提示:

+

1 應用程式在其 Allies SDK、Scott map SDK 中的整合,在用戶同意允許使用後,應用程式在後台/前台獲取ICCID、IMSI、IMEI、SN、ANDROID、BSSID、ANDROID ID、SSID、IMSI等個人資料;

+

備註:更多內容請參閱以下SDK相關內容及權限【八、接入第三方SDK列表】

+ +

8. 接入第三方SDK

+

1 為確保我們客戶端的穩定運行及功能實現,使閣下能夠使用及享受更多的服務及功能,我們的應用程式將嵌入第三方的軟件工具開發包(SDK)或其他類似應用程式,這些第三方將根據其自身的私隱政策收集及處理相關資料,以正常提供功能及廣告服務。閣下可在以下部分了解第三方的資料收集及處理規則。我們將對合作夥伴獲取資料的開發包(SDK)進行嚴格的安全測試,以保護閣下個人資料的合理使用及安全。請注意,第三方SDK可能因版本升級而更改數據處理類型。請參閱第三方SDK發佈的私隱政策。詳情請參閱下方或點擊查看第三方SDK列表。

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

獲取的資料:設備號碼、IP地址、設備軟件資料、設備識別碼(IMEI、Android ID、IDFA、OAID、OPENUDID、GUID、ICCID、SIM卡IMSI資料、IP、MAC地址)、設備標識符、地區、設備相關應用資料及其他服務相關日誌資料

+

使用目的:WeChat登入及分享

+

開發者:深圳市騰訊計算機系統有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

獲取的資料:應用名稱、應用版本號、設備品牌及型號、操作系統、運營商資料、螢幕解像度、傳感器資料(矢量、加速度、壓力、方向、地磁、陀螺儀、溫度、光感應器、NMEA信號)、設備信號強度資料

+

使用目的:使用高德地圖導航

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

獲取的資料:應用名稱、應用版本、設備品牌及型號、操作系統、網絡資料、設備信號強度等

+

使用目的:地圖顯示及互動

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

獲取的資料:位置資料(GPS、Wi-Fi、基站)、設備資料、網絡資料等

+

使用目的:提供位置服務

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

獲取的資料:應用名稱、應用版本、設備資料、網絡資料等

+

使用目的:地圖工具及渲染優化

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

獲取的資料:設備標識符、基本設備資料、已安裝軟件列表及網絡資料(詳情請參閱官方私隱政策)

+

使用目的:支付寶帳戶登入及支付調用

+

開發者:支付寶(杭州)信息技術有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

獲取的資料:SDK/API版本、平台、時間戳、應用標識符、應用版本、設備製造商、操作系統版本、地區設定、時區、網絡狀態(Wi-Fi等)、網絡日誌、崩潰及使用數據、IP地址等(詳情請參閱官方私隱政策)

+

使用目的:應用質量監控及數據上報服務

+

開發者:深圳市騰訊計算機系統有限公司

+

收集方式:SDK自行收集

+

私隱政策連結:https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. 未成年人保護

+

我們產品及服務的用戶可能包括18歲以下的未成年人,未成年用戶在使用我們的產品前應就本私隱政策徵求其父母或監護人的意見,並在取得父母或監護人同意及指導下使用我們的服務或向我們提供資料。未成年人監護人如有疑問,可通過本私隱政策中的聯繫方式與我們聯繫。

+

如閣下不同意上述第三方服務提供商收集上述資料,請立即停止使用本軟件。在閣下使用本軟件期間,這些第三方將根據其自身的私隱政策收集及處理相關資料,以提供部分功能、廣告及其他服務。如因相關第三方服務提供商收集上述資料而導致資料洩露,相關第三方服務提供商應承擔相應的法律責任。

+ +

10. 私隱政策的生效及更新

+

1. 本私隱政策自發佈之日起生效。

+

2. 隨着我們業務的發展及變化,我們的私隱政策可能會發生變化。我們保留隨時更改私隱政策的權利,因此請經常查閱。如我們對私隱政策作出更改,我們將在網站、應用程式及我們認為適當的地方發佈這些更新,以讓閣下了解最新情況。如私隱政策更新,將自更新之日起生效。閣下繼續使用我們的產品或服務即表示閣下同意我們更改後的私隱政策。

+ +

11. 如何聯繫我們

+

Saitong Industries Inc 成立於2024年11月22日,註冊地址:18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA。如閣下想了解更多有關我們公司及平台的資訊,可通過本政策中提供的聯繫方式(saitong.voitrans@gmail.com)與我們聯繫。

+
+ + + diff --git a/doc/zh_hk/user_agreement.html b/doc/zh_hk/user_agreement.html new file mode 100644 index 000000000..afa3bd20d --- /dev/null +++ b/doc/zh_hk/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans 應用程式用戶協議 + + + +
+
繁體中文(香港)
+ +

Voitrans 應用程式用戶協議

+ +

本使用條款及細則告知閣下如何存取及使用 Voitrans 應用程式及網上服務(「服務」)。Saitong Industries Inc.(以下簡稱「Saitong」)特此提醒用戶仔細閱讀並充分理解本用戶協議(以下簡稱「本協議」)。用戶應仔細閱讀並充分理解本協議的各項條款。請仔細閱讀並選擇接受或不接受本協議。閣下使用 Voitrans APP(以下簡稱「本APP」或「本軟件」)將被視為接受本協議,且閣下同意受本協議條款的約束。如閣下不同意本協議,請勿使用本APP。

+

Saitong 保留修改本協議的權利,更新後的協議條款將在本APP中發佈,自發佈之日起生效。

+ +

1. 一般規則

+

1.1 本APP是 Saitong 為連接由 Saitong 及其合作夥伴公司發佈的耳機產品而提供的軟件。該軟件及相關服務的所有權和營運權均歸 Saitong 所有。

+

1.2 本協議是閣下(以下簡稱「用戶」)與本公司及其合作夥伴和營運合作夥伴(以下簡稱「合作夥伴」)之間就用戶使用本APP及相關服務所訂立的協議。

+

1.3 本軟件及服務包括:

+

1.3.1 所提供的軟件為 Voitrans 用戶提供 Voitrans 連接及綁定、功能設定管理及其他軟件服務,以本APP實際提供的軟件服務為準。

+

1.3.2 軟件的更新、升級及其他服務。

+ +

2. 軟件授權範圍

+

2.1 我們授予用戶一項個人的、不可轉讓的、不可再授權的及非獨佔的軟件使用許可。

+

2.2 用戶可在單一流動終端設備上為非商業目的安裝、使用、顯示及運行本軟件。然而,用戶不得為商業營運目的安裝、使用或運行本軟件,不得複製、更改、修改、連接或運行本軟件或在軟件運行期間釋放至任何終端設備記憶體中的數據,或軟件運行期間客戶端與伺服器之間的互動數據,亦不得創作任何衍生作品。這包括但不限於使用插件、外掛程式或未經授權的第三方工具/服務來存取本軟件及相關系統。如需進行商業銷售、複製及分發,如軟件預裝及捆綁,必須取得書面授權及許可。

+

2.3 未經創作者明確許可,用戶不得在其他終端設備上安裝本軟件,包括但不限於電視機、數碼機頂盒、遊戲機及其他設備。

+

2.4 除本協議明確授權外,不向用戶授予其他權利,用戶須取得書面同意方可使用其他權利。

+ +

3. 軟件升級

+

3.1 用戶必須選擇適合已安裝終端設置的軟件版本。否則,因任何不適合該設備類型的軟件版本而導致的軟件問題、設備問題或損壞,概由用戶自行承擔責任。

+

3.2 為提升用戶體驗及改善服務內容,Saitong 有權不時為閣下提供軟件的替換、修改及升級版本。「升級提示」功能預設為用戶啟用。根據用戶使用的不同軟件版本,Saitong 為用戶提供啟動此功能的選項。軟件新版本發佈後,Saitong 不保證舊版本軟件的持續可用性。

+ +

4. 使用規範

+

4.1 用戶可在遵守法律及本協議的前提下,按照本協議使用本軟件及服務,用戶不得從事以下行為:

+

4.1.1 刪除本軟件及其他副本上的所有版權資訊,以及修改、刪除或規避本軟件為保護知識產權而設置的技術措施。

+

4.1.2 對本軟件進行逆向工程,如反彙編、反編譯或其他試圖獲取本軟件原始碼的行為。

+

4.1.3 通過修改或偽造軟件運行中的指令及數據,增加、刪除或更改軟件的功能或運行效果,或將用於上述目的的軟件或方法向公眾進行操作或傳播,無論這些行為是否出於商業目的。

+

4.1.4 使用本軟件從事任何危害網絡安全的行為,包括但不限於:使用未經授權的數據或存取未經授權的伺服器/帳戶;未經許可存取公共網絡或其他操作系統,並刪除、修改或添加存儲的資訊;未經授權試圖探測、掃描或測試軟件系統或網絡的弱點,或其他破壞網絡安全的行為;試圖干擾或破壞軟件系統或網站的正常運行,故意傳播惡意程式或病毒,以及其他破壞正常網絡資訊服務的行為;偽造TCP/IP數據包名稱或部分名稱。

+

4.1.6 未經本公司書面同意,用戶擅自對軟件及其中的資訊進行以下行為,包括但不限於:借助本軟件使用、出租、出借、複製、修改、連結、轉載、編譯、出版、發佈、建立鏡像網站、開發衍生產品、作品、服務、插件、外掛程式、兼容性、互聯等。

+

4.1.7 使用本軟件發佈、傳輸、分發及存儲違反閣下當地法律的內容。

+

4.1.8 使用本軟件發佈、傳輸、傳播及存儲侵犯他人知識產權、商業秘密及其他合法權利的內容。

+

4.1.9 使用本軟件大量發佈、傳輸及傳播廣告資訊及垃圾資訊。

+

4.1.10 以任何非法方式、為任何非法目的或以與本協議許可使用不一致的任何方式使用本軟件及其他服務。

+

4.2 資訊發佈規範

+

4.2.1 如閣下使用本軟件發佈資訊內容(如有),閣下應保證擁有所上傳資訊內容的知識產權或已獲得合法授權,且閣下使用本軟件及服務的任何行為不侵犯任何第三方的合法權益。

+

4.2.2 使用本軟件時,用戶不得使用本軟件從事以下活動,包括但不限於:

+

4.2.2.1 創建、複製、發佈、傳播及存儲違反當地國家法律法規的內容。

+

4.2.2.2 發佈、傳輸、傳播及存儲侵犯他人名譽權、肖像權、知識產權及商業秘密等合法權利的內容。

+

4.2.2.3 捏造事實、隱瞞真相,以誤導或欺騙他人。

+

4.2.2.4 發佈、傳輸及傳播廣告資訊及垃圾資訊。

+

4.2.2.5 從事其他違反當地法律法規的行為。

+

4.2.3 未經本公司許可,閣下不得在本軟件中進行任何商業活動,如廣告及銷售商品。

+

4.3 用戶理解並同意:

+

4.3.1 Saitong 將判定用戶是否涉嫌違反上述使用規範,並根據判定結果,暫停或終止閣下的使用許可,或採取本協議規定的其他限制性措施。

+

4.3.2 對於用戶使用獲授權軟件發佈的涉嫌違法或涉嫌侵犯他人合法權利或違反本協議的資訊,將被直接刪除。

+

4.3.3 如用戶違反上述使用規則對第三方造成損害,閣下須以自己的名義獨立承擔法律責任,並應確保本公司免受損失或額外費用。

+

4.3.4 如用戶違反相關法律規定或協議,導致 Saitong 遭受損失,或被第三方索賠,或被行政機關處罰,用戶應賠償因此對 Saitong 造成的損失及/或費用,包括合理的律師費、調查及取證費用。

+ +

5. 第三方服務說明

+

5.1 用戶理解並同意,軟件系統可能包含由本公司關聯公司或第三方提供的服務,本公司僅在系統中提供相關功能模塊以方便用戶,並提供第三方服務的存取。

+

5.2 無論第三方服務是預設在軟件系統服務中,還是由用戶自行開通或訂購,用戶理解並同意,Saitong 不對第三方服務提供商或用戶的合法性及有效性,以及第三方服務的合法性、準確性、有效性及安全性作出任何明示或暗示的保證或擔保。

+

5.3 本公司不監督、控制或對第三方服務提供任何形式的保證或擔保,亦不承擔任何責任。

+

5.4 用戶與第三方服務提供商之間的任何爭議或糾紛,應由用戶與第三方按照第三方服務提供商的業務流程及業務規範解決,本公司不承擔任何責任。

+ +

6. 私隱政策及個人資料保護

+

6.1 Saitong 致力於按照私隱政策保護用戶的私隱,詳情請參閱:Voitrans 應用程式私隱政策。

+ +

7. 違約責任

+

7.1 Saitong 有權判斷用戶的行為是否符合本協議的規定。如認為用戶違反了相關法律法規或本協議及相關規則的規定,根據用戶違規的嚴重程度,Saitong 有權刪除違法資訊、限制、暫停、終止用戶使用軟件服務、追究用戶的法律責任及採取 Saitong 認為適當的其他措施。如我們遭受任何損失(包括但不限於收到任何第三方索賠或任何行政部門的處罰),用戶應承擔全部責任。

+ +

8. 服務風險及免責聲明

+

8.1 我們希望以現有技術提供服務支援。Saitong 不保證軟件服務將不間斷或無錯誤地運行,不保證軟件服務的所有缺陷將被修正,亦不保證軟件服務將滿足用戶的所有要求。由此產生的後果,Saitong 不承擔任何責任。

+

8.2 用戶因通訊線路故障、技術問題、網絡、電腦終端設備故障、系統不穩定及其他不可抗力等第三方原因而遭受的所有損失,概不承擔責任。

+

8.3 Saitong 不保證通過軟件獲取的資訊內容(包括但不限於第三方服務內容)的合法性、真實性、準確性及有效性,Saitong 不對用戶基於查詢及瀏覽所作出的任何行為的結果承擔任何責任。

+

8.4 本軟件與大多數互聯網軟件一樣,受到包括但不限於用戶原因、網絡服務質素、社會環境等因素差異的影響,可能遭受各種安全問題,如他人使用用戶資訊,導致現實生活中的騷擾;用戶下載及安裝的其他軟件或用戶瀏覽的其他網站包含「木馬」等病毒,威脅用戶終端設備資訊及數據的安全,進而影響軟件的正常使用。用戶應加強資訊安全及用戶數據保護意識,並注意加強密碼保護以避免損失及騷擾。

+

8.5 當用戶使用本軟件或要求 Saitong 提供特定服務時,本軟件可能調用第三方系統或第三方軟件以支援用戶的使用或存取,使用或存取的結果由第三方提供。除遵守本協議的相關規則外,用戶還應遵守第三方的協議及相關規則。用戶必須理解並同意,在使用第三方服務時,第三方可能讀取用戶數據,Saitong 不保證通過第三方系統或第三方軟件支援所取得結果的安全性、準確性、有效性及其他不確定風險,用戶應審慎判斷,Saitong 不對由此引起的任何爭議及損害承擔任何責任。

+

8.6 為保證公司業務發展及調整的自主性,公司可在以合理方式通知用戶後隨時修改或中斷服務。

+

8.7 除法律法規明確規定外,Saitong 將盡最大努力確保軟件及所涉及的技術和資訊的安全、有效、準確及可靠,但受現有技術所限,用戶理解 Saitong 不能作此保證。

+

8.8 因以下任何情況引起的或與之相關的人身傷害賠償或附帶及間接經濟損害,包括但不限於利潤損失、數據丟失、業務中斷損害或其他商業損害或損失,應由用戶承擔:

+

1) 使用或未能使用獲授權軟件。

+

2) 第三方未經授權使用軟件或篡改用戶數據。

+

3) 用戶使用軟件的行為所產生的費用及損失。

+

4) 用戶對軟件的誤解。

+

5) 任何其他與軟件相關但不可歸因於 Saitong 原因的損失。

+

8.9 用戶同意,本公司有權根據司法、監管及監督機構的要求或其自身商業原因,暫停、中斷或終止向用戶提供的全部或部分服務。Saitong 對此不承擔任何責任。

+

8.10 用戶理解並同意,本公司將盡其商業上合理的努力確保軟件及服務中數據存儲的安全性,但本公司不能提供完全保證,用戶理解本公司不對服務中數據的刪除或存儲或備份失敗負責。

+

8.11 在法律允許的最大範圍內,開發者或供應商不對因使用本應用程式而產生的任何直接、間接、附帶、特殊或後果性損害承擔責任。如用戶有進一步需要,請前往正規醫院進行深入檢查。

+ +

9. 知識產權聲明

+

9.1 Saitong 是本軟件的知識產權持有人。本軟件的所有版權、商標、專利、商業秘密及其他知識產權,以及與本軟件相關的所有資訊內容(包括但不限於文字、圖片、音頻、視頻、圖形、介面設計、版面框架、相關數據或電子文件等)均受當地法律法規及相應國際條約的保護。

+

9.2 未經本公司書面同意,用戶不得為任何商業或非商業目的實施、利用或轉讓上述知識產權,亦不得許可任何第三方這樣做,本公司保留對上述行為追究法律責任的權利。

+ +

10. 協議變更

+

10.1 Saitong 有權在必要時修改本協議的條款。協議條款一經變更,修訂後的協議條款將在相關頁面上發佈。如閣下不同意變更的內容,用戶應主動取消本服務。如用戶繼續使用服務,則視為接受協議條款的變更。

+

10.2 Saitong 保留根據需要修改或變更所提供的付費服務、收費標準、收費方式、服務費及服務條款的權利。在提供服務時,我們現在或將來可能會向部分服務的用戶收取一定費用。如用戶拒絕支付該等費用,則在收費開始後將無法繼續使用相關服務。

+
+ + diff --git a/doc/zh_tw/privacy_policy.html b/doc/zh_tw/privacy_policy.html new file mode 100644 index 000000000..90ccc5eaa --- /dev/null +++ b/doc/zh_tw/privacy_policy.html @@ -0,0 +1,381 @@ + + + + + + + Voitrans 隱私權政策 + + + + +
+

Voitrans 隱私權政策

+

最後更新:2025年5月27日

+

生效日期:2025年5月27日

+ +

歡迎使用 Voitrans 軟體及服務

+

1. Voitrans 由 Saitong Industries Inc.(以下簡稱「本公司」)提供。可協助使用者實現藍牙裝置及其他產品管理。我們深知個人資訊對使用者(以下簡稱「您」)的重要性,有效保護您的個人資訊是我們業務健康永續發展的基石。感謝您對 Voitrans 產品或服務的使用及信任!我們充分意識到這份信任得來不易,我們秉持公開透明的原則,向您表達我們處理您個人資訊的規則,我們以合法及正當的方式和明確合理的目的處理您的個人資訊。特別提示:請務必在使用我們的產品或服務前仔細閱讀並瞭解本隱私權政策,以便您作出適當的選擇。

+

2. 本隱私權政策向您說明,當您使用 Voitrans 時,我們如何收集、使用、儲存及分享您的個人資訊。個人資訊是指以電子或其他方式記錄的、能夠單獨或與其他資訊結合識別特定自然人或反映特定自然人活動的各種資訊。Voitrans 尊重並保護所有服務使用者的個人隱私。除本隱私權政策另有規定外,Voitrans 不會在未經您事先許可的情況下向公眾揭露或向第三方提供此等資訊。

+

3. 當您透過應用程式商店產品或服務使用第三方的產品或服務時,您的個人資訊將受該第三方的隱私權政策約束。

+

4. Voitrans 本隱私權政策將不時更新。同意 Voitrans 服務使用協議並開始使用 Voitrans,即視為您已同意本隱私權政策的全部內容。如您不同意本隱私權政策,請勿使用 Voitrans 軟體及服務。

+

5. 為分析及衡量相關服務的有效性,我們將根據本隱私權政策的規定使用及揭露您的個人資訊。

+ +

本隱私權政策將協助您瞭解以下內容:

+
    +
  • 1 我們收集的資訊
  • +
  • 2 資訊的儲存
  • +
  • 3 資訊安全
  • +
  • 4 我們如何使用所收集的資訊
  • +
  • 5 資訊分享
  • +
  • 6 您如何管理個人資訊
  • +
  • 7 應用程式權限說明
  • +
  • 8 接入第三方SDK
  • +
  • 9 未成年人保護
  • +
  • 10 隱私權政策的生效及更新
  • +
  • 11 如何聯繫我們
  • +
+ +

1. 我們收集的資訊

+

1. 使用 Voitrans 之初,我們將開始收集有關您使用應用程式的資料

+

2. Voitrans 可能透過合法途徑從第三方或商業夥伴取得您的個人資訊

+

3. 為向您提供更好的產品及服務,在使用過程中為您提供網路安全、維護產品正常運作及最佳化改進,我們的資訊服務目的,在您主動點擊同意本隱私權政策後,使用我們提供的資訊。在服務期間,除依據國家法律法規確保App基本功能正常運作所必需的個人資訊外,我們還將向您收集其他個人資訊:

+

3.1 為全面識別風險使用者、判斷使用者真實性及防止作弊,我們將在您每次開啟軟體時讀取您的裝置資訊,包括:(裝置型號、裝置MAC位址、裝置唯一識別碼(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、序號、WIFI的SSID和BSSID)、讀取藍牙位址、作業系統版本、作業系統名稱、使用者登入帳號及密碼資訊;

+

3.2 當您使用我們的產品及服務時,我們可能透過網路日誌資訊或某些程式及軟體收集某些資訊,此類資訊可能包括:產品及服務的使用詳情,如您應用程式的開啟時間、使用時長及所瀏覽頁面的位址;裝置事件資訊,如當機、系統活動等,以最佳化您的裝置及改善我們的服務;

+

3.3 為識別裝置存在風險的應用程式,提供更安全的功能服務。因此,我們需要在此過程中取得您的應用程式/應用安裝清單,以確保產品正常運作及保護裝置安全。

+

3.4 為分析使用者對應用功能的使用情況及判斷使用者真實性,我們需要進行資料統計,並在您的裝置使用期間收集上述裝置資訊,包括裝置MAC位址及裝置唯一識別碼。

+

3.5 裝置訊號:您使用裝置的網路狀態、WIFI存取點資訊等。

+

3.6 位置資訊:我們可能使用GPS、WiFi或其他技術手段收集及處理有關您位置的資訊,以更新本地資訊、提供內容服務等。

+

更多資訊請點擊「個人資訊收集清單」。

+ +

1. 對於上述資訊中較為敏感的個人資訊,如使用者裝置資訊(IMEI號碼、通話狀態及識別號碼)、GPS位置資訊、照片媒體內容及檔案存取權限,我們將在收集前取得您的同意。對於某些非敏感資訊,收集可能是預設及自動的。您可透過調整行動裝置的設定選項來限制我們收集相關資訊或使用某些權限。當您限制我們存取某項權限時,我們可能無法繼續為您提供相應的服務,且不再處理您相應的資訊。

+

2. 我們不會收集您的身分證號碼、個人生物特徵資訊、銀行帳號、財產資訊、信用資訊、健康及生理資訊等個人敏感資訊。

+

3. 關於敏感權限:為正確使用應用功能,產品需要取得以下權限,以提供與正常產品相關的功能服務。

+ +

1 取得儲存讀寫權限

+

1 如何取得:彈出提示,取得權限時,使用者主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:用於掃描系統中的資源快取檔案及縮圖、載入音樂資源及產品圖片。在App介面上顯示,方便使用者檢視及操作

+ +

2 取得應用安裝清單權限

+

1 如何取得:彈出提示,取得權限時,使用者主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:當應用程式需要使用廣告推廣服務時,第三方廣告平台 Youmon +SDK 需要取得裝置的「應用軟體安裝清單權限」,以避免向使用者推送使用者已擁有的應用程式,改善使用者體驗。

+ +

3 取得裝置狀態資訊權限

+

包括:(裝置型號、裝置MAC位址、裝置唯一識別碼(IMEI、AndroidID、Device ID、MEID、UUID、GAID、OAID、IDFA、OpenUDID、GUID、IMSI、CCID等)MEID、序號、WIFI的SSID和BSSID、讀取藍牙位址)、作業系統版本、作業系統名稱等;

+

1 如何取得:彈出提示,取得權限時,使用者主動點擊同意,應用程式將使用此權限

+

2 使用目的及範圍:使用我們的應用程式時,為分析使用者對應用功能的使用情況及判斷使用者真實性,我們將把權限同步至第三方SDK,包括高德SDK、Youmon +SDK等。

+ +

4 存取位置資訊

+

1 如何取得:彈出提示,取得權限時,使用者僅在主動點擊同意應用程式後方使用此權限。

+

2 使用目的及範圍:當應用程式需要使用GPS、WiFi或其他功能時,產品需要收集您的位置及資訊,以搜尋附近位置的藍牙裝置。

+

注意:更多應用程式權限,請參閱本文件「隱私權政策」第7節「應用程式權限說明」

+ +

2. 資訊的儲存

+

1. 資訊儲存地點

+

我們在中華人民共和國收集及產生的個人資訊將儲存在我們的伺服器及/或我們關係企業的伺服器上。

+

2. 資訊儲存及處理

+

我們僅在實現目的所需的期間或法律法規要求的期間內儲存您的個人資訊。您停止使用本產品後,我們將立即停止收集及處理您的個人資訊及應用資料。超過上述期間後,我們將刪除或匿名化您提供給我們的個人資訊。

+

除必要功能外,Voitrans 需要申請相應的系統權限。雲端伺服器不儲存使用者個人資訊,所接入的第三方SDK將由服務提供商(友盟統計SDK、高德SDK)進行匿名化及去識別化處理,因此無法追蹤使用者。儲存在使用者手機上的資訊將在使用者解除安裝 Voitrans 或清除快取時自動刪除。

+ +

3. 資訊安全

+

1. Voitrans 使用業界標準的安全措施及技術來儲存及保護您的個人資訊,如身分驗證、資料加密、限制資料中心存取及其他安全措施,以確保您的資訊免受洩露、竄改及毀損。儘管有上述安全措施,請注意,沒有任何安全措施能夠做到100%安全。

+

2. 當您使用 Voitrans 提供的服務時,請保護您的個人資訊。如您發現個人資訊遭到洩露,請立即聯繫我們,以便我們採取適當措施。

+ +

4. 我們如何使用所收集的資訊

+

1. 在實施應用業務功能時,我們可能使用您的個人資訊以確保我們向您提供的產品及服務的完整性及安全性;

+

2. 我們將透過所收集的資訊瞭解您的使用習慣,並藉助資料分析,識別服務的接受度、您的使用習慣等,以測試及建立新產品、功能及服務,提高服務水準,並協助我們改善現有服務及開發新服務;

+

3. 我們可能使用您的個人資訊進行有關產品及服務的客戶調查、傳送有關產品及服務的通知,以及進行商業推廣;

+

4. 我們可能使用您的資訊進行與應用程式相關的內部分析及研究;

+ +

5. 資訊分享

+

目前,我們不會主動向公司以外的第三方分享或移轉您的個人資訊。如有其他分享或移轉您個人資訊的情況,我們將直接或確認第三方已就上述行為取得您的明確同意。

+

我們不會公開揭露所收集的個人資訊。如有必要公開揭露,我們將告知您公開揭露的目的、所揭露資訊的類型及可能涉及的敏感資訊,並取得您的明確同意。

+

隨著我們業務的持續發展,我們可能進行合併、收購、資產移轉等交易,我們將根據法律法規的要求,以不低於本指引要求的標準繼續保護您的個人資訊或要求新的控制者繼續保護您的個人資訊,並告知您相關情況。

+

此外,根據相關法律法規及國家標準,在以下情況下,我們可能在未經個人資訊主體事先授權同意的情況下分享、移轉及公開揭露個人資訊:

+
    +
  • 1 與國家安全及國防安全直接相關;
  • +
  • 2 與公共安全、公共衛生或重大公共利益直接相關;
  • +
  • 3 與刑事偵查、起訴、審判及判決執行直接相關;
  • +
  • 4 為保護個人資訊主體或其他個人的生命、財產及其他重大合法權益,但難以取得本人同意的;
  • +
  • 5 個人資訊主體自行向公眾揭露的個人資訊;
  • +
  • 6 從合法公開揭露的資訊中收集個人資訊,如合法新聞報導、政府資訊公開等管道。
  • +
+ +

6. 您如何管理個人資訊

+

根據中國的相關法律、法規及標準,以及其他國家及地區的慣例,我們保證您就個人資訊行使以下權利:

+ +

1. 更正您的個人資訊

+

如您發現我們處理的個人資訊有錯誤,您有權更正或更新錯誤或不完整的資訊。如您無法在帳戶中心自行操作,可傳送電子郵件至 saitong.voitrans@gmail.com 聯繫我們

+ +

2. 刪除您的個人資訊

+

在以下情況下,您可向我們提出刪除個人資訊的要求:

+
    +
  • 如我們違反法律法規處理個人資訊;
  • +
  • 如我們未經您的同意收集及使用您的個人資訊;
  • +
  • 如我們對個人資訊的處理違反了與您的協議;
  • +
  • 如您不再使用我們的產品或服務;
  • +
  • 如我們不再向您提供產品或服務。
  • +
+

聯繫我們。我們將在 saitong.voitrans@gmail.com 處理您的要求。我們將在收到後30個工作日內回覆您

+ +

3. 變更您的同意範圍

+

您可透過電子郵件 saitong.voitrans@gmail.com 聯繫我們。應您的要求,我們將不再收集、使用或揭露您的個人資訊。請注意,您撤回同意或刪除個人資訊可能會影響您使用我們的部分服務。

+ +

4 存取及複製個人資訊

+

您可根據相關法律的規定,提供您的IMEI(手機序號)或OAID或Android ID及帳戶資訊等資訊後,可向我們申請存取及複製您的個人資訊,您可傳送電子郵件至 3514406195@qq.com 與我們聯繫。

+ +

5. 回應您的上述要求

+

為安全起見,您可能需要提供書面要求或以其他方式證明您的身分。我們可能會要求您在處理要求前驗證身分。對於您的合理要求,我們將及時回應及處理。我們可能會拒絕不必要的重複要求、需要過多技術的要求(例如開發新系統或從根本上改變現有做法)、對他人合法權益構成風險的要求或高度不切實際的要求。

+

在以下情況下,根據法律法規的要求,我們將無法回應您的要求:

+
    +
  • 與國家安全及國防安全相關;
  • +
  • 與刑事偵查、起訴及審判相關;
  • +
  • 有充分證據表明您存在主觀惡意或濫用權利;
  • +
  • 回應您的要求將對您或其他個人及組織的合法權益造成嚴重損害。
  • +
+ +

6. 帳號註銷

+

使用者可在APP上執行【帳號註銷】操作。操作步驟:

+
    +
  1. 前往【我的】頁面
  2. +
  3. 點擊右上角的【設定】按鈕
  4. +
  5. 點擊【註銷帳號】確認
  6. +
+

您登出後,使用者帳號的相關資訊將被清除

+ +

7. 應用程式權限說明

+

為提供更好的產品及服務,當您使用軟體時,我們將申請以下權限,當您進入首頁或使用功能時將請求授權,如您拒絕,部分相應功能將無法正常使用。權限的具體用途及提示詳細說明如下:

+ +

1 位置權限:

+

android.permission.ACCESS_COARSE_LOCATION

+

android.permission.ACCESS_FINE_LOCATION

+

透過WiFi或行動基地台取得使用者的經緯度位置資訊

+

當您使用 Voitrans 時,我們將根據您的地理位置搜尋附近的藍牙裝置。同時,為提供更穩定的服務、最佳化產品及改善體驗,我們將與友盟、高德等三方SDK分享上述資訊,以取得 Voitrans 營運資料及功能服務。

+

提示方式:首次啟動應用程式時顯示權限提示,要求使用者確認接受。使用者協議及隱私權政策說明。

+ +

2

+

android.permission.READ_EXTERNAL_STORAGE

+

android.permission.WRITE_EXTERNAL_STORAGE

+

當您存取應用程式以執行應用管理功能時,需要此權限。

+

提示方式:使用者協議及隱私權政策說明。

+ +

3 網路權限:

+

android.permission.INTERNET

+

當您使用 Voitrans 的資訊服務及版本升級服務時需要此等權限,為改善使用者體驗及最佳化服務能力,友盟等第三方SDK亦將使用此等權限。

+

提示方式:使用者協議及隱私權政策說明。

+ +

4 取得網路狀態權限:

+

android.permission.ACCESS_NETWORK_STATE

+

android.permission.ACCESS_WIFI_STATE

+

用於取得當前網路連線是否有效、判斷當前是否為4G環境、是否提醒網路環境變化,從而影響資訊內容的載入。此權限在您使用 Voitrans 時申請。

+

網路狀態的變化影響資料的上傳及載入。因此,存取網路狀態權限將與友盟+等平台分享。

+

提示方式:使用者協議及隱私權政策說明。

+ +

5 取得工作清單權限:

+

android.permission.GET_TASKS

+

此權限用於取得軟體管理功能的應用清單。當您使用軟體管理功能時,需要讀取手機上已安裝的應用程式。

+

提示方式:使用者協議及隱私權政策說明。

+ +

6 取得MAC位址權限

+

android.permission.ACCESS_WIFI_STATE

+

android.permission.INTERNET

+

android.permission.ACCESS_NETWORK_STATE

+

當您使用 Voitrans 時,應用程式需要取得MAC位址權限:

+

當應用程式需要回報目標轉換資料時,友盟+SDK等第三方平台需要使用MAC。

+

提示方式:使用者協議及隱私權政策說明。

+ +

7 取得錄音權限

+

android.permission.RECORD_AUDIO

+

當您使用 Voitrans 的語音輸入功能時,需要使用錄音權限,主要用於翻譯及其他相關功能的語音輸入。

+

提示方式:使用者協議及隱私權政策說明,在需要時動態彈出提示框。

+ +

8 取得WIFI的SSID權限

+

使用此權限時,應用程式讀取WIFI的SSID權限:

+

使用範圍及目的:當應用程式需要使用資料分析服務時,+SDK等第三方平台需要讀取裝置的「WIFI SSID權限」,為使用者提供更準確、更有效的功能服務。

+

提示方式:使用者協議及隱私權政策說明。

+ +

9 取得藍牙存取權限

+

使用此權限時,應用程式讀取藍牙權限:

+

使用範圍及目的:用於搜尋及設定配件的藍牙裝置,如藍牙耳機、藍牙手錶等。方便使用者管理

+

提示方式:首次啟動應用程式時顯示權限提示,要求使用者確認接受。使用者協議及隱私權政策說明。

+ +

10 取得WiFi的BSSID權限

+

當應用程式需要區分及識別使用者以提供功能服務及資料統計時,將讀取裝置的「WiFi BSSID」權限,用於:

+

使用範圍及目的:1 第三方平台:如友盟SDK、Bugly SDK、高德SDK

+

提示方式:使用者協議及隱私權政策說明。

+ +

11 取得應用安裝權限

+

android.permission.REQUEST_INSTALL_PACKAGES

+

軟體將使用應用安裝權限,主要用於在有新版本時允許使用者安裝新版本及體驗新功能。

+

提示方式:使用者協議及隱私權政策說明。

+ +

12 取得相機權限

+

android.permission.CAMERA

+

Voitrans 使用相機權限掃描QR碼及繫結藍牙裝置,如藍牙耳機及手錶。

+

提示方式:首次啟動應用程式時顯示權限提示,要求使用者確認接受。使用者協議及隱私權政策說明。

+ +

特別提示:

+

1 應用程式在其 Allies SDK、Scott map SDK 中的整合,在使用者同意允許使用後,應用程式在背景/前景取得ICCID、IMSI、IMEI、SN、ANDROID、BSSID、ANDROID ID、SSID、IMSI等個人資訊;

+

備註:更多內容請參閱以下SDK相關內容及權限【八、接入第三方SDK清單】

+ +

8. 接入第三方SDK

+

1 為確保我們用戶端的穩定運作及功能實現,使您能夠使用及享受更多的服務及功能,我們的應用程式將嵌入第三方的軟體工具開發套件(SDK)或其他類似應用程式,這些第三方將根據其自身的隱私權政策收集及處理相關資訊,以正常提供功能及廣告服務。您可在以下部分瞭解第三方的資訊收集及處理規則。我們將對合作夥伴取得資訊的開發套件(SDK)進行嚴格的安全測試,以保護您個人資訊的合理使用及安全。請注意,第三方SDK可能因版本升級而變更資料處理類型。請參閱第三方SDK發布的隱私權政策。詳情請參閱下方或點擊檢視第三方SDK清單。

+ +

8.1 WeChat OpenSDK Android (com.tencent.mm.opensdk)

+

取得的資訊:裝置號碼、IP位址、裝置軟體資訊、裝置識別碼(IMEI、Android ID、IDFA、OAID、OPENUDID、GUID、ICCID、SIM卡IMSI資訊、IP、MAC位址)、裝置識別碼、地區、裝置相關應用資訊及其他服務相關日誌資訊

+

使用目的:WeChat登入及分享

+

開發者:深圳市騰訊電腦系統有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://support.weixin.qq.com/cgi-bin/mmsupportacctnodeweb-bin/pages/RYiYJkLOrQwu0nb8

+ +

8.2 Navigation SDK (com.amap.api.navi)

+

取得的資訊:應用名稱、應用版本號、裝置品牌及型號、作業系統、電信業者資訊、螢幕解析度、感測器資訊(向量、加速度、壓力、方向、地磁、陀螺儀、溫度、光感測器、NMEA訊號)、裝置訊號強度資訊

+

使用目的:使用高德地圖導航

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.3 Map SDK (com.amap.api.maps)

+

取得的資訊:應用名稱、應用版本、裝置品牌及型號、作業系統、網路資訊、裝置訊號強度等

+

使用目的:地圖顯示及互動

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.4 Location SDK (com.amap.api.location)

+

取得的資訊:位置資訊(GPS、Wi-Fi、基地台)、裝置資訊、網路資訊等

+

使用目的:提供位置服務

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.5 Lite Map SDK (com.amap.api.maps.utils)

+

取得的資訊:應用名稱、應用版本、裝置資訊、網路資訊等

+

使用目的:地圖工具及繪圖最佳化

+

開發者:北京高德圖強科技有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://lbs.amap.com/pages/privacy/

+ +

8.6 Alipay App Client SDK (com.alipay.sdk)

+

取得的資訊:裝置識別碼、基本裝置資訊、已安裝軟體清單及網路資訊(詳情請參閱官方隱私權政策)

+

使用目的:支付寶帳號登入及付款調用

+

開發者:支付寶(杭州)資訊科技有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://opendocs.alipay.com/open/54/01g6qm#%E6%94%AF%E4%BB%98%E5%AE%9D%20App%20%E6%94%AF%E4%BB%98%E5%AE%A2%E6%88%B7%E7%AB%AF%20SDK%20%E9%9A%90%E7%A7%81%E6%94%BF%E7%AD%96

+ +

8.7 Beacon SDK Android (com.tencent.beacon)

+

取得的資訊:SDK/API版本、平台、時間戳記、應用識別碼、應用版本、裝置製造商、作業系統版本、地區設定、時區、網路狀態(Wi-Fi等)、網路日誌、當機及使用資料、IP位址等(詳情請參閱官方隱私權政策)

+

使用目的:應用品質監控及資料回報服務

+

開發者:深圳市騰訊電腦系統有限公司

+

收集方式:SDK自行收集

+

隱私權政策連結:https://privacy.qq.com/document/preview/a19a8cf4f2354306b137a7db39d32024

+ +

9. 未成年人保護

+

我們產品及服務的使用者可能包括18歲以下的未成年人,未成年使用者在使用我們的產品前應就本隱私權政策徵求其父母或監護人的意見,並在取得父母或監護人同意及指導下使用我們的服務或向我們提供資訊。未成年人監護人如有疑問,可透過本隱私權政策中的聯繫方式與我們聯繫。

+

如您不同意上述第三方服務提供商收集上述資訊,請立即停止使用本軟體。在您使用本軟體期間,這些第三方將根據其自身的隱私權政策收集及處理相關資訊,以提供部分功能、廣告及其他服務。如因相關第三方服務提供商收集上述資訊而導致資訊洩露,相關第三方服務提供商應承擔相應的法律責任。

+ +

10. 隱私權政策的生效及更新

+

1. 本隱私權政策自發布之日起生效。

+

2. 隨著我們業務的發展及變化,我們的隱私權政策可能會發生變化。我們保留隨時變更隱私權政策的權利,因此請經常查閱。如我們對隱私權政策作出變更,我們將在網站、應用程式及我們認為適當的地方發布這些更新,以讓您瞭解最新情況。如隱私權政策更新,將自更新之日起生效。您繼續使用我們的產品或服務即表示您同意我們變更後的隱私權政策。

+ +

11. 如何聯繫我們

+

Saitong Industries Inc 成立於2024年11月22日,註冊地址:18305 E Valley Blvd, Unit C, City of Industry, CA 91744, USA。如您想瞭解更多有關我們公司及平台的資訊,可透過本政策中提供的聯繫方式(saitong.voitrans@gmail.com)與我們聯繫。

+
+ + + diff --git a/doc/zh_tw/user_agreement.html b/doc/zh_tw/user_agreement.html new file mode 100644 index 000000000..7935d5a0e --- /dev/null +++ b/doc/zh_tw/user_agreement.html @@ -0,0 +1,151 @@ + + + + + + Voitrans 應用程式使用者協議 + + + +
+
繁體中文(臺灣)
+ +

Voitrans 應用程式使用者協議

+ +

本使用條款與條件告知您如何存取及使用 Voitrans 應用程式及線上服務(「服務」)。Saitong Industries Inc.(以下簡稱「Saitong」)特此提醒使用者仔細閱讀並充分瞭解本使用者協議(以下簡稱「本協議」)。使用者應仔細閱讀並充分瞭解本協議的各項條款。請仔細閱讀並選擇接受或不接受本協議。您使用 Voitrans APP(以下簡稱「本APP」或「本軟體」)將被視為接受本協議,且您同意受本協議條款的約束。如您不同意本協議,請勿使用本APP。

+

Saitong 保留修改本協議的權利,更新後的協議條款將在本APP中發布,自發布之日起生效。

+ +

1. 一般規則

+

1.1 本APP是 Saitong 為連接由 Saitong 及其合作夥伴公司發布的耳機產品而提供的軟體。該軟體及相關服務的所有權和營運權均歸 Saitong 所有。

+

1.2 本協議是您(以下簡稱「使用者」)與本公司及其合作夥伴和營運合作夥伴(以下簡稱「合作夥伴」)之間就使用者使用本APP及相關服務所訂立的協議。

+

1.3 本軟體及服務包括:

+

1.3.1 所提供的軟體為 Voitrans 使用者提供 Voitrans 連線及綁定、功能設定管理及其他軟體服務,以本APP實際提供的軟體服務為準。

+

1.3.2 軟體的更新、升級及其他服務。

+ +

2. 軟體授權範圍

+

2.1 我們授予使用者一項個人的、不可轉讓的、不可再授權的及非專屬的軟體使用授權。

+

2.2 使用者可在單一行動終端裝置上為非商業目的安裝、使用、顯示及執行本軟體。然而,使用者不得為商業營運目的安裝、使用或執行本軟體,不得複製、變更、修改、連接或執行本軟體或在軟體運作期間釋放至任何終端裝置記憶體中的資料,或軟體運作期間用戶端與伺服器之間的互動資料,亦不得建立任何衍生著作。這包括但不限於使用外掛程式、插件或未經授權的第三方工具/服務來存取本軟體及相關系統。如需進行商業銷售、複製及散布,如軟體預先安裝及捆綁,必須取得書面授權及許可。

+

2.3 未經建立者明確許可,使用者不得在其他終端裝置上安裝本軟體,包括但不限於電視機、數位機上盒、遊戲主機及其他裝置。

+

2.4 除本協議明確授權外,不向使用者授予其他權利,使用者須取得書面同意方可使用其他權利。

+ +

3. 軟體升級

+

3.1 使用者必須選擇適合已安裝終端設定的軟體版本。否則,因任何不適合該裝置類型的軟體版本而導致的軟體問題、裝置問題或損壞,概由使用者自行承擔責任。

+

3.2 為提升使用者體驗及改善服務內容,Saitong 有權不時為您提供軟體的替換、修改及升級版本。「升級提示」功能預設為使用者啟用。根據使用者使用的不同軟體版本,Saitong 為使用者提供啟動此功能的選項。軟體新版本發布後,Saitong 不保證舊版本軟體的持續可用性。

+ +

4. 使用規範

+

4.1 使用者可在遵守法律及本協議的前提下,按照本協議使用本軟體及服務,使用者不得從事以下行為:

+

4.1.1 刪除本軟體及其他副本上的所有著作權資訊,以及修改、刪除或規避本軟體為保護智慧財產權而設置的技術措施。

+

4.1.2 對本軟體進行逆向工程,如反組譯、反編譯或其他試圖取得本軟體原始碼的行為。

+

4.1.3 透過修改或偽造軟體運作中的指令及資料,增加、刪除或變更軟體的功能或運作效果,或將用於上述目的的軟體或方法向公眾進行操作或傳播,無論這些行為是否出於商業目的。

+

4.1.4 使用本軟體從事任何危害網路安全的行為,包括但不限於:使用未經授權的資料或存取未經授權的伺服器/帳戶;未經許可存取公共網路或其他作業系統,並刪除、修改或新增儲存的資訊;未經授權試圖探測、掃描或測試軟體系統或網路的弱點,或其他破壞網路安全的行為;試圖干擾或破壞軟體系統或網站的正常運作,故意散布惡意程式或病毒,以及其他破壞正常網路資訊服務的行為;偽造TCP/IP封包名稱或部分名稱。

+

4.1.6 未經本公司書面同意,使用者擅自對軟體及其中的資訊進行以下行為,包括但不限於:藉助本軟體使用、出租、出借、複製、修改、連結、轉載、編譯、出版、發布、建立鏡像網站、開發衍生產品、著作、服務、外掛程式、插件、相容性、互聯等。

+

4.1.7 使用本軟體發布、傳輸、散布及儲存違反您當地法律的內容。

+

4.1.8 使用本軟體發布、傳輸、散布及儲存侵犯他人智慧財產權、營業秘密及其他合法權利的內容。

+

4.1.9 使用本軟體大量發布、傳輸及散布廣告資訊及垃圾資訊。

+

4.1.10 以任何非法方式、為任何非法目的或以與本協議授權使用不一致的任何方式使用本軟體及其他服務。

+

4.2 資訊發布規範

+

4.2.1 如您使用本軟體發布資訊內容(如有),您應保證擁有所上傳資訊內容的智慧財產權或已取得合法授權,且您使用本軟體及服務的任何行為不侵犯任何第三方的合法權益。

+

4.2.2 使用本軟體時,使用者不得使用本軟體從事以下活動,包括但不限於:

+

4.2.2.1 建立、複製、發布、散布及儲存違反當地國家法律法規的內容。

+

4.2.2.2 發布、傳輸、散布及儲存侵犯他人名譽權、肖像權、智慧財產權及營業秘密等合法權利的內容。

+

4.2.2.3 捏造事實、隱瞞真相,以誤導或欺騙他人。

+

4.2.2.4 發布、傳輸及散布廣告資訊及垃圾資訊。

+

4.2.2.5 從事其他違反當地法律法規的行為。

+

4.2.3 未經本公司許可,您不得在本軟體中進行任何商業活動,如廣告及銷售商品。

+

4.3 使用者瞭解並同意:

+

4.3.1 Saitong 將判定使用者是否涉嫌違反上述使用規範,並根據判定結果,暫停或終止您的使用授權,或採取本協議規定的其他限制性措施。

+

4.3.2 對於使用者使用獲授權軟體發布的涉嫌違法或涉嫌侵犯他人合法權利或違反本協議的資訊,將被直接刪除。

+

4.3.3 如使用者違反上述使用規則對第三方造成損害,您須以自己的名義獨立承擔法律責任,並應確保本公司免受損失或額外費用。

+

4.3.4 如使用者違反相關法律規定或協議,導致 Saitong 遭受損失,或被第三方求償,或被行政機關處罰,使用者應賠償因此對 Saitong 造成的損失及/或費用,包括合理的律師費、調查及蒐證費用。

+ +

5. 第三方服務說明

+

5.1 使用者瞭解並同意,軟體系統可能包含由本公司關係企業或第三方提供的服務,本公司僅在系統中提供相關功能模組以方便使用者,並提供第三方服務的存取。

+

5.2 無論第三方服務是預設在軟體系統服務中,還是由使用者自行開通或訂購,使用者瞭解並同意,Saitong 不對第三方服務提供商或使用者的合法性及有效性,以及第三方服務的合法性、準確性、有效性及安全性作出任何明示或暗示的保證或擔保。

+

5.3 本公司不監督、控制或對第三方服務提供任何形式的保證或擔保,亦不承擔任何責任。

+

5.4 使用者與第三方服務提供商之間的任何爭議或糾紛,應由使用者與第三方按照第三方服務提供商的業務流程及業務規範解決,本公司不承擔任何責任。

+ +

6. 隱私權政策及個人資料保護

+

6.1 Saitong 致力於按照隱私權政策保護使用者的隱私,詳情請參閱:Voitrans 應用程式隱私權政策。

+ +

7. 違約責任

+

7.1 Saitong 有權判斷使用者的行為是否符合本協議的規定。如認為使用者違反了相關法律法規或本協議及相關規則的規定,根據使用者違規的嚴重程度,Saitong 有權刪除違法資訊、限制、暫停、終止使用者使用軟體服務、追究使用者的法律責任及採取 Saitong 認為適當的其他措施。如我們遭受任何損失(包括但不限於收到任何第三方求償或任何行政部門的處罰),使用者應承擔全部責任。

+ +

8. 服務風險及免責聲明

+

8.1 我們希望以現有技術提供服務支援。Saitong 不保證軟體服務將不間斷或無錯誤地運作,不保證軟體服務的所有缺陷將被修正,亦不保證軟體服務將滿足使用者的所有要求。由此產生的後果,Saitong 不承擔任何責任。

+

8.2 使用者因通訊線路故障、技術問題、網路、電腦終端設備故障、系統不穩定及其他不可抗力等第三方原因而遭受的所有損失,概不承擔責任。

+

8.3 Saitong 不保證透過軟體取得的資訊內容(包括但不限於第三方服務內容)的合法性、真實性、準確性及有效性,Saitong 不對使用者基於查詢及瀏覽所作出的任何行為的結果承擔任何責任。

+

8.4 本軟體與大多數網際網路軟體一樣,受到包括但不限於使用者原因、網路服務品質、社會環境等因素差異的影響,可能遭受各種安全問題,如他人使用使用者資訊,導致現實生活中的騷擾;使用者下載及安裝的其他軟體或使用者瀏覽的其他網站包含「木馬」等病毒,威脅使用者終端設備資訊及資料的安全,進而影響軟體的正常使用。使用者應加強資訊安全及使用者資料保護意識,並注意加強密碼保護以避免損失及騷擾。

+

8.5 當使用者使用本軟體或要求 Saitong 提供特定服務時,本軟體可能呼叫第三方系統或第三方軟體以支援使用者的使用或存取,使用或存取的結果由第三方提供。除遵守本協議的相關規則外,使用者還應遵守第三方的協議及相關規則。使用者必須瞭解並同意,在使用第三方服務時,第三方可能讀取使用者資料,Saitong 不保證透過第三方系統或第三方軟體支援所取得結果的安全性、準確性、有效性及其他不確定風險,使用者應審慎判斷,Saitong 不對由此引起的任何爭議及損害承擔任何責任。

+

8.6 為保證公司業務發展及調整的自主性,公司可在以合理方式通知使用者後隨時修改或中斷服務。

+

8.7 除法律法規明確規定外,Saitong 將盡最大努力確保軟體及所涉及的技術和資訊的安全、有效、準確及可靠,但受現有技術所限,使用者瞭解 Saitong 不能作此保證。

+

8.8 因以下任何情況引起的或與之相關的人身傷害賠償或附帶及間接經濟損害,包括但不限於利潤損失、資料遺失、營業中斷損害或其他商業損害或損失,應由使用者承擔:

+

1) 使用或未能使用獲授權軟體。

+

2) 第三方未經授權使用軟體或竄改使用者資料。

+

3) 使用者使用軟體的行為所產生的費用及損失。

+

4) 使用者對軟體的誤解。

+

5) 任何其他與軟體相關但不可歸因於 Saitong 原因的損失。

+

8.9 使用者同意,本公司有權根據司法、監管及監督機構的要求或其自身商業原因,暫停、中斷或終止向使用者提供的全部或部分服務。Saitong 對此不承擔任何責任。

+

8.10 使用者瞭解並同意,本公司將盡其商業上合理的努力確保軟體及服務中資料儲存的安全性,但本公司不能提供完全保證,使用者瞭解本公司不對服務中資料的刪除或儲存或備份失敗負責。

+

8.11 在法律允許的最大範圍內,開發者或供應商不對因使用本應用程式而產生的任何直接、間接、附帶、特殊或衍生性損害承擔責任。如使用者有進一步需要,請前往正規醫院進行深入檢測。

+ +

9. 智慧財產權聲明

+

9.1 Saitong 是本軟體的智慧財產權持有人。本軟體的所有著作權、商標、專利、營業秘密及其他智慧財產權,以及與本軟體相關的所有資訊內容(包括但不限於文字、圖片、音訊、視訊、圖形、介面設計、版面框架、相關資料或電子文件等)均受當地法律法規及相應國際條約的保護。

+

9.2 未經本公司書面同意,使用者不得為任何商業或非商業目的實施、利用或轉讓上述智慧財產權,亦不得許可任何第三方這樣做,本公司保留對上述行為追究法律責任的權利。

+ +

10. 協議變更

+

10.1 Saitong 有權在必要時修改本協議的條款。協議條款一經變更,修訂後的協議條款將在相關頁面上發布。如您不同意變更的內容,使用者應主動取消本服務。如使用者繼續使用服務,則視為接受協議條款的變更。

+

10.2 Saitong 保留根據需要修改或變更所提供的付費服務、收費標準、收費方式、服務費及服務條款的權利。在提供服務時,我們現在或將來可能會向部分服務的使用者收取一定費用。如使用者拒絕支付該等費用,則在收費開始後將無法繼續使用相關服務。

+
+ + diff --git a/fix_ja_jp.py b/fix_ja_jp.py new file mode 100644 index 000000000..c3fe5695e --- /dev/null +++ b/fix_ja_jp.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python3 +""" +Fix Japanese translation file: replace English/Chinese placeholders with proper Japanese. +Brand names (Voitrans, Lily, WeChat, Alipay, PayPal, Apple, Google, Bluetooth, BLE, OTA, +AI, ASR, TTS, VOITRANS, AIPEN, VoiTrans, DeepSound) are kept as-is. +""" + +import re + +filepath = 'lib/core/translations/language/ja_jp.dart' + +with open(filepath, 'r', encoding='utf-8') as f: + content = f.read() + +# Each tuple: (old_string, new_string) +# We use exact string replacement to be safe. + +replacements = [ + # ---- English-only entries that need translation ---- + + # viewAll + (" 'viewAll': 'View All',", + " 'viewAll': 'すべて表示',"), + + # proMonthly – price tag, keep currency but translate label + (" 'proMonthly': 'Pro ¥60/month',", + " 'proMonthly': 'Pro ¥60/月',"), + + # proMonthlyDesc – multiline + (" 'proMonthlyDesc':\n '7-day free trial, then ¥800/year. Cancel anytime before trial ends.',", + " 'proMonthlyDesc':\n '7日間無料トライアル、その後¥800/年。トライアル終了前にいつでもキャンセル可能。',"), + + # proMonthlyPrice + (" 'proMonthlyPrice': '¥120/month',", + " 'proMonthlyPrice': '¥120/月',"), + + # unlimitedMonthlyPrice + (" 'unlimitedMonthlyPrice': '¥198/month',", + " 'unlimitedMonthlyPrice': '¥198/月',"), + + # currentQuality + (' "currentQuality": "Current quality: @value%",', + ' "currentQuality": "現在の品質: @value%",'), + + # currentMaxSize + (' "currentMaxSize": "Current: @pxpx",', + ' "currentMaxSize": "現在: @pxpx",'), + + # allStepsCompleted + (' "allStepsCompleted": "All steps completed",', + ' "allStepsCompleted": "すべてのステップが完了しました",'), + + # clean / Clear Cache + (" 'clean': 'Clear Cache',", + " 'clean': 'キャッシュをクリア',"), + + # cleanTips + (" 'cleanTips': 'Are you sure you want to clear personal cache?',", + " 'cleanTips': '個人キャッシュをクリアしてもよろしいですか?',"), + + # permissionUtilNeed + (" 'permissionUtilNeed': 'Need ',", + " 'permissionUtilNeed': '必要:',"), + + # iapCustomerServiceQQLabel + (" 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq',", + " 'iapCustomerServiceQQLabel': 'IAP カスタマーサービス QQ: @qq',"), + + # tsransit (transit / 公交) + (' "tsransit": "Transit",', + ' "tsransit": "乗り換え",'), + + # sixThousandMinutes / threeThousandMinutes / sixHundredMinutes / oneHundredTwentyMinutes + (" 'sixThousandMinutes': '6,000 minutes',", + " 'sixThousandMinutes': '6,000分',"), + (" 'threeThousandMinutes': '3,000 minutes',", + " 'threeThousandMinutes': '3,000分',"), + (" 'sixHundredMinutes': '600 minutes',", + " 'sixHundredMinutes': '600分',"), + (" 'oneHundredTwentyMinutes': '120 minutes',", + " 'oneHundredTwentyMinutes': '120分',"), +] + +original = content +for old, new in replacements: + if old in content: + content = content.replace(old, new) + print(f'REPLACED: {repr(old[:60])}') + else: + print(f'NOT FOUND: {repr(old[:60])}') + +if content != original: + with open(filepath, 'w', encoding='utf-8') as f: + f.write(content) + print('\nFile updated successfully.') +else: + print('\nNo changes made.') diff --git a/lib/core/translations/language/ar_sa.dart b/lib/core/translations/language/ar_sa.dart index d0d0ca055..7e7a5f964 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': 'متابعة', @@ -18,6 +19,11 @@ const Map arSA = { "unknownError": "خطأ غير معروف", "asrConnectionFailed": "فشل الاتصال بخدمة التعرف على الصوت. يرجى التحقق من الشبكة والمحاولة مرة أخرى لاحقًا.", + "justNow": "الآن", + "minutesAgo": "قبل @minutes دقيقة", + "yesterday": "أمس", + "daysAgo": "قبل @days يوم", + "hoursAgo": "قبل @hours ساعة", // 启动页 "slogan": "تواصل مع العالم، أبعد من مجرد صوت", @@ -28,7 +34,7 @@ const Map arSA = { "explore": "اكتشف", "settings": "الإعدادات", - // 语言 + // 语言列表 "followingSystem": "متابعة النظام", "chinese": "الصينية", "english": "الإنجليزية", @@ -72,7 +78,7 @@ const Map arSA = { "arabic": "العربية", "persian": "الفارسية", - // 登录页 + // 登录模块 "welcome": "أهلاً بك", "loginTips": "يرجى استخدام رقم الهاتف أو البريد الإلكتروني لتسجيل الدخول/التسجيل", @@ -101,13 +107,9 @@ const Map arSA = { "resendVerificationCode": "إعادة إرسال رمز التحقق", "login": "تسجيل الدخول", "usePasswordLogin": "استخدام كلمة المرور لتسجيل الدخول", - - // 隐私政策弹窗 "loginDeclaration": "إعلان Voitrans", // Voitrans 声明 "welcomeToThisApp": "مرحبًا بك في Voitrans، يرجى القراءة بعناية", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "، بالنقر على 'أوافق وأدخل'، فإنك تقر بأنك قد قرأت ووافقت على الاتفاقيات المذكورة أعلاه. النقر على 'لا أوافق' سيؤدي إلى الخروج من التطبيق.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "لا أوافق", // 不同意 @@ -128,8 +130,7 @@ const Map arSA = { "aiAssistantInfo": "مستشار حصري على مدار 24 ساعة للإجابة على الأسئلة وتقديم الاقتراحات", "interpretation": "الترجمة", - "simultaneousInterpretationInfo": - "ترجمة فورية لعدة لغات، سفر خالٍ من القلق", + "simultaneousInterpretationInfo": "ترجمة فورية لعدة لغات، سفر خالٍ من القلق", "aiCompanion": "رفيق العائلة", "aiCompanionInfo": "يفهمك ويقدم لك رفقة دافئة", "homeSlogan": "تواصل مع العالم، أبعد من الصوت", @@ -165,6 +166,29 @@ const Map arSA = { 'right': 'يمين', 'checkConnectionStatusFailed': 'فشل التحقق من حالة الاتصال', + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'فشل تهيئة البلوتوث: @error', + 'needBluetoothAndLocationPermission': + 'مطلوبة أذونات البلوتوث والموقع لمسح الأجهزة', + 'permissionRequestFailedWithError': 'فشل طلب الإذن: @error', + 'needPermission': 'الإذن مطلوب', + 'blePermissionDialogContent': + 'يتطلب هذا التطبيق أذونات البلوتوث والموقع لمسح الأجهزة. يرجى تمكينها من الإعدادات.', + 'needEnableBluetooth': 'فعّل البلوتوث', + 'enableBluetoothDialogContent': + 'يرجى تفعيل البلوتوث لمسح الأجهزة والاتصال بها.', + 'bleScanFailedWithError': 'فشل المسح: @error', + 'bleConnectionSuccess': 'تم الاتصال بنجاح', + 'bleConnectedToDevice': 'تم الاتصال بـ @device', + 'bleConnectionFailedWithError': 'فشل الاتصال: @error', + 'bleDisconnected': 'تم قطع الاتصال', + 'bleDeviceDisconnected': 'تم قطع اتصال الجهاز', + 'bleDisconnectFailedWithError': 'فشل قطع الاتصال: @error', + 'signalStrong': 'قوية', + 'signalMedium': 'متوسطة', + 'signalWeak': 'ضعيفة', + 'signalVeryWeak': 'ضعيفة جدًا', + // 发现页 "searchAi": "بحث عن وظائف الذكاء الاصطناعي...", "exploreSlogan": "سماعات ذكية، إمكانيات لا حصر لها", @@ -189,6 +213,7 @@ const Map arSA = { "usageStats": "إحصائيات الاستخدام", "usageStatsInfo": "عرض إحصائيات استخدامك", "scene": "مشهد", + // 用量统计模块 "aiChat": "دردشة الذكاء الاصطناعي", "translationStats": "إحصائيات الترجمة", @@ -209,7 +234,6 @@ const Map arSA = { "translationApi": "API الترجمة", "asr": "التعرف على الكلام", "tts": "تحويل النص إلى كلام", - //"aiSummary": "AI摘要", "dataVolumeStats": "إحصائيات حجم البيانات", "sourceTextCharacters": "أحرف النص المصدر", "ttsTextCharacters": "أحرف نص TTS", @@ -226,7 +250,6 @@ const Map arSA = { "totalAudioDuration": "إجمالي مدة الصوت", "audioFileSize": "حجم ملف الصوت", "transcriptBytes": "بايت النسخ", - // 通知文案 "loadFailed": "فشل التحميل", "statsLoadFailedTryLater": "فشل تحميل الإحصائيات، يرجى المحاولة لاحقًا", "cleanupComplete": "اكتمل التنظيف", @@ -234,56 +257,123 @@ const Map arSA = { "exportFeature": "ميزة التصدير", "exportInDevelopment": "ميزة تصدير البيانات قيد التطوير", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'الباقات المتاحة', 'remainingQuota': 'الحصة المتبقية', 'totalQuota': 'إجمالي الحصة', 'remaining': 'المتبقي', 'featureDescription': 'وصف الميزة', - // AI 功能卡片 + 'paymentSuccess': 'تم الدفع بنجاح', + 'paymentFailed': 'فشل الدفع', + 'gotIt': 'فهمت', + 'paymentFailedTryAgain': 'فشل الدفع. يرجى المحاولة مرة أخرى.', + 'selectPaymentMethod': 'اختر طريقة الدفع', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'فشل إنشاء طلب WeChat', + 'alipayOrderCreateFailed': 'فشل إنشاء طلب Alipay', + 'appleOrderCreateFailed': 'فشل إنشاء طلب Apple', + 'googleOrderCreateFailed': 'فشل إنشاء طلب Google', + 'paypalOrderCreateFailed': 'فشل إنشاء طلب PayPal', + 'paymentException': 'استثناء في الدفع', + 'paymentLaunchFailed': 'فشل بدء الدفع', + 'paymentExceptionWithError': 'استثناء في الدفع: @error', + 'paymentProcessingCheckLater': 'طلبك قيد المعالجة. يرجى التحقق لاحقًا.', + 'paymentResultQueryException': 'فشل الاستعلام عن نتيجة الدفع: @error', + 'orderConfirmedQuotaRefreshed': 'تم تأكيد الطلب. تم تحديث رصيدك.', + 'paymentCompletedConfirming': 'تم الدفع. جاري التأكيد…', + 'paymentCancelled': 'تم إلغاء الدفع', + 'paypalOpenedCompleteInBrowser': 'تم فتح PayPal. يرجى إكمال الدفع في متصفحك.', + 'paypalOpenFailed': 'تعذر فتح صفحة الدفع عبر PayPal', + 'paymentTestTitle': 'اختبار الدفع', + 'paymentTestOrderInfo': 'معلومات طلب الاختبار', + 'paymentTestProductId': 'معرّف المنتج', + 'paymentTestProductDescription': 'وصف المنتج', + 'paymentTestWechatDescription': 'اختبار الدفع عبر WeChat', + 'paymentTestAlipayDescription': 'اختبار الدفع عبر Alipay', + 'paymentTestAmount': 'المبلغ', + 'paymentTestSelectAmount': 'اختر مبلغ الاختبار', + 'paying': 'جاري الدفع...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'حالة الدفع', + 'errorInfoWithMessage': 'خطأ: @message', + 'retest': 'إعادة الاختبار', + 'paymentTestInstructionsTitle': 'التعليمات', + 'paymentTestInstructionsContent': + '1. اختر مبلغ اختبار (يُنصح بـ: ¥0.01)\n2. انقر على زر الدفع للبدء\n3. أكمل الدفع في تطبيق الدفع\n4. ارجع للتحقق من النتيجة', + 'startingWechatPayment': 'جاري تشغيل WeChat Pay...', + 'startingAlipayPayment': 'جاري تشغيل Alipay...', + 'wechatPaymentSuccess': 'تم الدفع عبر WeChat Pay بنجاح!', + 'wechatPaymentFailed': 'فشل WeChat Pay', + 'wechatPaymentLaunchFailed': 'فشل تشغيل WeChat Pay', + 'cannotLaunchWechatPayment': 'تعذر تشغيل WeChat Pay', + 'wechatPaymentException': 'استثناء WeChat Pay', + 'wechatPaymentTestCompleted': 'اكتمل اختبار WeChat Pay', + 'alipayPaymentSuccess': 'تم الدفع عبر Alipay بنجاح!', + 'alipayPaymentFailed': 'فشل Alipay', + 'alipayPaymentLaunchFailed': 'فشل تشغيل Alipay', + 'cannotLaunchAlipayPayment': 'تعذر تشغيل Alipay', + 'alipayPaymentException': 'استثناء Alipay', + "insufficientIntegral": "نقاط غير كافية", + "insufficientBalanceDesc": + "الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن", + "recharge": "الذهاب للشحن", + "aiMemberExpiredDesc": + "انتهت عضوية AI، يرجى الانتقال إلى شحن العضوية للتجديد", + + // 商品模块 - AI商品页 'musicAndRecommendation': 'الموسيقى والتوصيات', 'navigationAndRoutes': 'الملاحة والمسارات', 'nearbySearch': 'البحث القريب', 'newsInformation': 'الأخبار والمعلومات', 'communicationAssistant': 'مساعد الاتصال', - // 翻译功能卡片 + 'aiHeaderDesc1': + 'حصة محادثة أطول، المزيد من استدعاءات الأدوات، دعم سياق أطول.', + 'aiHeaderDesc2': + 'مناسب للأسئلة والأجوبة الذكية، التلخيص والتحليل، وتنفيذ المهام.', + 'musicSearchPlaybackControl': 'البحث في مكتبة الموسيقى والتحكم في التشغيل', + 'smartPlaylistAndSimilarRecommendations': + 'قائمة تشغيل ذكية وتوصيات لأغاني مماثلة', + 'routePlanningAndCongestionAvoidance': 'تخطيط المسار وتجنب الازدحام', + 'voiceBroadcastAndWaypoints': 'البث الصوتي وإعدادات نقاط الطريق', + 'realTimeWeatherForecast': 'الطقس في الوقت الفعلي والتوقعات', + 'clothingAdviceAndTravelReminders': 'نصائح الملابس وتذكيرات السفر', + 'poiSearchFoodGasParking': 'البحث عن نقاط الاهتمام: طعام/وقود/مواقف', + 'ratingsHoursAndDirectRoutes': 'التقييمات، ساعات العمل والمسارات المباشرة', + 'hotNewsAndTopicOverview': 'أخبار عاجلة ونظرة عامة على الموضوع', + 'longArticleSummariesAndKeyPoints': 'ملخصات المقالات الطويلة واستخراج النقاط', + 'helpCallAndSMS': 'المساعدة في إجراء المكالمات وإرسال الرسائل القصيرة', + 'templatedMessagesAndScheduleReminders': 'رسائل القوالب وتذكيرات الجدول', + 'aiDisclaimer': + 'تتأثر الميزات المذكورة أعلاه بأذونات الجهاز، توفر الخدمة وحالة الشبكة، يرجى الرجوع إلى الأداء الفعلي.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'النسخ في الوقت الفعلي', - // 'textTranslation' 已存在 'sceneLexicon': 'معجم المشهد', 'subtitleDisplay': 'عرض الترجمة', - // 会议功能卡片 + 'transHeaderDesc1': + 'ترجمة فورية متعددة اللغات وترجمة نصوص، بث صوتي بزمن انتقال منخفض.', + 'transHeaderDesc2': 'مناسب للسفر، الأعمال، الخطب والتدريس.', + 'translateZhEn': 'ترجمة صينية-إنجليزية', + 'lowLatencyVoiceBroadcast': 'بث صوتي بزمن انتقال منخفض', + 'multiLangTextTranslation': 'ترجمة نصوص متعددة اللغات', + 'termOptimizationContextPreserve': 'تحسين المصطلحات والحفاظ على السياق', + 'lexiconTourBusinessLife': 'معاجم السياحة/الأعمال/الحياة', + 'personalVocabularyMemory': 'ذاكرة المفردات الشخصية', + 'conversationSubtitleLargeText': 'ترجمة المحادثة/وضع النص الكبير', + 'colorHighContrast': 'تباين ألوان عالي', + 'transDisclaimer': + 'يتأثر أداء الترجمة بالميكروفون، تأخير الشبكة وضوضاء البيئة، يرجى الرجوع إلى الأداء الفعلي.', + + // 商品模块 - 会议商品页 'meetingRecording': 'تسجيل الاجتماع', 'transcriptionAndSummary': 'النسخ والملخص', 'keywordSearch': 'بحث الكلمات الرئيسية', 'collaborationSharing': 'التعاون والمشاركة', - // 商品名称(按ID) - 'ai_001_name': 'أساسيات الذكاء الاصطناعي 100 مرة', - 'ai_002_name': 'أساسيات الذكاء الاصطناعي 500 مرة', - 'ai_003_name': 'أساسيات الذكاء الاصطناعي 1000 مرة', - 'meet_001_name': 'أساسيات الاجتماع 100 مرة', - 'meet_002_name': 'أساسيات الاجتماع 500 مرة', - 'meet_003_name': 'أساسيات الاجتماع 1000 مرة', - 'trans_001_name': 'أساسيات الترجمة 100 مرة', - 'trans_002_name': 'أساسيات الترجمة 500 مرة', - 'trans_003_name': 'أساسيات الترجمة 1000 مرة', - - // 商品描述(按ID) - 'ai_001_desc': 'يحتوي على 100 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'ai_002_desc': 'يحتوي على 500 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'ai_003_desc': 'يحتوي على 1000 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', - 'meet_001_desc': 'يحتوي على 100 تسجيل/نسخ للاجتماعات', - 'meet_002_desc': 'يحتوي على 500 تسجيل/نسخ للاجتماعات', - 'meet_003_desc': 'يحتوي على 1000 تسجيل/نسخ للاجتماعات', - 'trans_001_desc': 'يحتوي على 100 ترجمة (صوت/نص)', - 'trans_002_desc': 'يحتوي على 500 ترجمة (صوت/نص)', - 'trans_003_desc': 'يحتوي على 1000 ترجمة (صوت/نص)', - -// 商品页通用页脚 - 'appNameProvider': 'اسم التطبيق: Voitrans · مزود الخدمة: Voitrans', - 'iapCustomerServiceQQLabel': 'خدمة عملاء المشتريات داخل التطبيق QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'تسجيل ونسخ، بحث الكلمات الرئيسية والملخص التلقائي، تحسين كفاءة الاجتماعات.', 'meetingHeaderDesc2': @@ -299,43 +389,7 @@ const Map arSA = { 'meetingDisclaimer': 'يُقترح الاستخدام في بيئة هادئة، يتأثر الأداء بالميكروفون والشبكة، يرجى الرجوع إلى الأداء الفعلي.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'ترجمة فورية متعددة اللغات وترجمة نصوص، بث صوتي بزمن انتقال منخفض.', - 'transHeaderDesc2': 'مناسب للسفر، الأعمال، الخطب والتدريس.', - 'translateZhEn': 'ترجمة صينية-إنجليزية', - 'lowLatencyVoiceBroadcast': 'بث صوتي بزمن انتقال منخفض', - 'multiLangTextTranslation': 'ترجمة نصوص متعددة اللغات', - 'termOptimizationContextPreserve': 'تحسين المصطلحات والحفاظ على السياق', - 'lexiconTourBusinessLife': 'معاجم السياحة/الأعمال/الحياة', - 'personalVocabularyMemory': 'ذاكرة المفردات الشخصية', - 'conversationSubtitleLargeText': 'ترجمة المحادثة/وضع النص الكبير', - 'colorHighContrast': 'تباين ألوان عالي', - 'transDisclaimer': - 'يتأثر أداء الترجمة بالميكروفون، تأخير الشبكة وضوضاء البيئة، يرجى الرجوع إلى الأداء الفعلي.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'حصة محادثة أطول، المزيد من استدعاءات الأدوات، دعم سياق أطول.', - 'aiHeaderDesc2': - 'مناسب للأسئلة والأجوبة الذكية، التلخيص والتحليل، وتنفيذ المهام.', - 'musicSearchPlaybackControl': 'البحث في مكتبة الموسيقى والتحكم في التشغيل', - 'smartPlaylistAndSimilarRecommendations': - 'قائمة تشغيل ذكية وتوصيات لأغاني مماثلة', - 'routePlanningAndCongestionAvoidance': 'تخطيط المسار وتجنب الازدحام', - 'voiceBroadcastAndWaypoints': 'البث الصوتي وإعدادات نقاط الطريق', - 'realTimeWeatherForecast': 'الطقس في الوقت الفعلي والتوقعات', - 'clothingAdviceAndTravelReminders': 'نصائح الملابس وتذكيرات السفر', - 'poiSearchFoodGasParking': 'البحث عن نقاط الاهتمام: طعام/وقود/مواقف', - 'ratingsHoursAndDirectRoutes': 'التقييمات، ساعات العمل والمسارات المباشرة', - 'hotNewsAndTopicOverview': 'أخبار عاجلة ونظرة عامة على الموضوع', - 'longArticleSummariesAndKeyPoints': 'ملخصات المقالات الطويلة واستخراج النقاط', - 'helpCallAndSMS': 'المساعدة في إجراء المكالمات وإرسال الرسائل القصيرة', - 'templatedMessagesAndScheduleReminders': 'رسائل القوالب وتذكيرات الجدول', - 'aiDisclaimer': - 'تتأثر الميزات المذكورة أعلاه بأذونات الجهاز، توفر الخدمة وحالة الشبكة، يرجى الرجوع إلى الأداء الفعلي.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'نظرة عامة على المزايا', 'higherQuota': 'حصة استخدام أعلى', 'lowerUnitPrice': 'سعر وحدة أقل', @@ -351,7 +405,32 @@ const Map arSA = { 'vipDisclaimer': 'تخضع المزايا الفعلية لتوضيح الباقة، وقد يتم تعديلها مع تحديثات الإصدار.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'أساسيات الذكاء الاصطناعي 100 مرة', + 'ai_002_name': 'أساسيات الذكاء الاصطناعي 500 مرة', + 'ai_003_name': 'أساسيات الذكاء الاصطناعي 1000 مرة', + 'meet_001_name': 'أساسيات الاجتماع 100 مرة', + 'meet_002_name': 'أساسيات الاجتماع 500 مرة', + 'meet_003_name': 'أساسيات الاجتماع 1000 مرة', + 'trans_001_name': 'أساسيات الترجمة 100 مرة', + 'trans_002_name': 'أساسيات الترجمة 500 مرة', + 'trans_003_name': 'أساسيات الترجمة 1000 مرة', + 'ai_001_desc': 'يحتوي على 100 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'ai_002_desc': 'يحتوي على 500 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'ai_003_desc': 'يحتوي على 1000 استخدام، يغطي ميزات الذكاء الاصطناعي الأساسية', + 'meet_001_desc': 'يحتوي على 100 تسجيل/نسخ للاجتماعات', + 'meet_002_desc': 'يحتوي على 500 تسجيل/نسخ للاجتماعات', + 'meet_003_desc': 'يحتوي على 1000 تسجيل/نسخ للاجتماعات', + 'trans_001_desc': 'يحتوي على 100 ترجمة (صوت/نص)', + 'trans_002_desc': 'يحتوي على 500 ترجمة (صوت/نص)', + 'trans_003_desc': 'يحتوي على 1000 ترجمة (صوت/نص)', + + // 商品模块 - 页脚 + 'appNameProvider': 'اسم التطبيق: Voitrans · مزود الخدمة: Voitrans', + 'iapCustomerServiceQQLabel': 'خدمة عملاء المشتريات داخل التطبيق QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'تخطي', 'next': 'التالي', 'sayLilyHint': 'قل للميكروفون: "Lily Lily"', @@ -364,7 +443,6 @@ const Map arSA = { 'رائع! لقد نجحت في إيقاظ Lily، جرب الآن أن تطلب منها القيام بشيء ما', 'confirmInput': 'تأكيد الإدخال', 'guideClickSendPrefix': 'انقر للإرسال،', - // AI 引导步骤 'guideWeatherStart': 'قل لـ Lily: "كيف هو الطقس اليوم"', 'guideWeatherInput': 'كيف هو الطقس اليوم', 'guideWeatherSend': 'ستقوم Lily ببث الطقس لك في الوقت الفعلي', @@ -391,7 +469,7 @@ const Map arSA = { 'guideSmsSend': 'ستقوم Lily بإرسال الرسالة لك', 'guideSmsEnd': 'تم إرسال الرسالة، التحكم الصوتي أكثر ملاءمة', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "بدء الاجتماع", 'edit': 'تعديل', 'delete': 'حذف', @@ -403,8 +481,6 @@ const Map arSA = { 'recordingDetails': 'تفاصيل التسجيل', 'aiSummary': 'ملخص الذكاء الاصطناعي', 'meetingTranscript': 'نص الاجتماع', - - // Meeting模块 - 导航和基础功能 'files': 'ملفات', 'mine': 'أنا', 'connect': 'اتصال', @@ -442,20 +518,26 @@ const Map arSA = { 'meetingRecordEndAndSave': 'إنهاء التسجيل وحفظه', // 结束录音并保存 'meetingRecordEndWithoutSave': 'إنهاء التسجيل دون حفظ', // 结束录音不保存 'meetingRecordContinueInBackground': 'متابعة التسجيل في الخلفية', // 后台继续录音 - 'meetingRecordStopTimeout': 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'انتهت مهلة إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'تعذر إيقاف التسجيل. يرجى المحاولة مرة أخرى.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'تعذر حفظ التسجيل. يرجى المحاولة مرة أخرى.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'التسجيل جارٍ', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'يتم التسجيل في الخلفية. اضغط للعودة إلى التطبيق.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'الظهور فوق التطبيقات الأخرى', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'لعرض نتائج الترجمة أثناء المكالمات أو ترجمة الصوت/الفيديو، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى. يتيح لك ذلك رؤية الترجمات الفورية أثناء استخدام تطبيقات أخرى.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'لعرض شريط التسجيل العائم (المؤقت/إيقاف مؤقت/استئناف) أثناء التسجيل، نحتاج إلى إذن الظهور فوق التطبيقات الأخرى.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'تعذر فتح إعدادات النظام تلقائيًا. يرجى فتح الإعدادات وتمكين إذن الظهور فوق التطبيقات الأخرى يدويًا.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'جاري النسخ...', 'summarizing': 'جاري التلخيص...', 'analyzing': 'جاري التحليل...', 'summaryComplete': 'اكتمل الملخص', - //'generating': '正在生成...', 'generate': 'إنشاء', 'overview': 'نظرة عامة', 'transcription': 'النسخ', @@ -464,6 +546,98 @@ const Map arSA = { 'editSpeaker': 'تعديل', 'nameSpeaker': 'تسمية المتحدث', + // Meeting模块 - 转写与总结 + 'reSummarize': 'إعادة التلخيص', + 'dateAndTime': 'التاريخ والوقت', + 'location': 'الموقع', + 'attendees': 'الحاضرين', + 'inputLocation': 'إدخال الموقع', + 'inputAttendees': 'إدخال الحاضرين', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'اختر قالب الملخص', + 'useThisTemplate': 'استخدم هذا القالب', + 'lastUsed': 'آخر استخدام', + 'create': 'إنشاء', + 'templateDetails': 'تفاصيل القالب', + 'tag': 'علامة', + 'description': 'الوصف', + 'template': 'قالب', + 'deleteTemplate': 'حذف القالب', + 'deleteTemplateConfirm': 'هل أنت متأكد من أنك تريد حذف هذا القالب؟', + 'editTemplate': 'تعديل القالب', + 'createTemplate': 'إنشاء قالب', + 'name': 'الاسم', + 'templateContentHint': + 'يرجى إدخال محتوى القالب! نصيحة: انقر على زر الذكاء الاصطناعي أعلاه لإنشاء محتوى القالب بسرعة بناءً على الاسم والوصف الذي أدخلته', + 'inputNameHint': 'يرجى إدخال الاسم', + 'inputDescHint': 'يرجى إدخال الوصف', + 'custom': 'مخصص', + 'pleaseEnter': 'يرجى الإدخال', + 'viewAll': 'عرض الكل', + 'recordingLanguage': 'لغة التسجيل', + 'chineseSimplified': 'الصينية الماندرين (المبسطة)', + 'meetingGenerateNow': 'إنشاء الآن', + 'keyEventsAnalyzed': 'تم تحليل {count} حدث رئيسي.', + 'aiAnalysisDesc': + 'يحدد تحليل الذكاء الاصطناعي الأحداث الرئيسية في التسجيلات، مما يتيح لك اختيار الأحداث المهمة لإنشاء الذكاء الاصطناعي.', + + // Meeting模块 - 文件操作 + 'importing': 'جاري الاستيراد...', + 'batchImporting': 'جاري الاستيراد المجمع...', + 'importingLocalRecordings': 'جاري استيراد التسجيلات المحلية...', + 'importFailed': 'فشل استيراد الملف: {filePath}, error: {error}', + 'importSuccess': 'تم استيراد {count} تسجيل محلي بنجاح', + 'importError': 'فشل الاستيراد: {error}', + 'pleaseSelectAudioFile': 'يرجى اختيار ملف صوتي', + 'shareAudio': 'مشاركة صوت الاجتماع', + 'shareComplete': 'اكتملت المشاركة!', + 'shareFailed': 'فشلت المشاركة: {error}', + 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'حفظ الخريطة الذهنية', + 'shareMindMap': 'مشاركة الخريطة الذهنية', + 'shareSuccess': 'تمت المشاركة بنجاح', + + // Meeting模块 - AI问答 + 'askAI': 'اسأل AI ...', + 'askAIPrompt': 'ما الذي يمكنني مساعدتك به اليوم؟', + 'continueAsk': 'متابعة السؤال', + 'todoList': 'قائمة المهام', + 'extractConclusion': 'استخلاص النتائج', + 'generateKeyIndicators': 'إنشاء مؤشرات رئيسية', + + // Meeting模块 - 分享与导出 + 'shareLink': 'مشاركة الرابط', + 'copyTranscript': 'نسخ النص', + 'copySummary': 'نسخ الملخص', + 'exportAudio': 'تصدير الصوت', + 'exportTranscript': 'تصدير النص', + 'shareMeetingAudio': 'مشاركة صوت الاجتماع', + 'exportSummary': 'تصدير الملخص', + 'exportAs': 'تصدير كـ', + 'exportingPDF': 'جاري تصدير PDF...', + 'export': 'تصدير', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث', + 'summaryWillBeUpdatedAutomatically': + 'سيتم تحديث الملخص تلقائيًا بناءً على القالب', + 'nameCurrentSpeaker': 'تسمية المتحدث الحالي', + 'recentlyUsedNames': 'الأسماء المستخدمة مؤخرًا', + 'applyToCurrentParagraph': 'تطبيق على الفقرة الحالية', + 'totalTime': 'الإجمالي', + 'summarySpeakerWillBeUpdatedAutomatically': + 'سيتم تحديث متحدثي الملخص تلقائيًا', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'مزامنة إلى السحابة', + 'syncToCloudTip': + 'مزامنة تسجيلاتك تلقائيًا إلى السحابة، يمكنك تشغيل وإدارة ومشاركة التسجيلات عبر أي تطبيق VOITRANS أو VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'مزامنة تطبيق VOITRANS', + 'transcriptionRecord': 'سجل النسخ', + // Meeting模块 - 我的页面 'transcriptionRecords': 'سجلات النسخ', 'templateCommunity': 'مجتمع القوالب', @@ -482,7 +656,7 @@ const Map arSA = { 'bindDeviceToActivate': 'ربط جهاز Voitrans لتفعيل عضوية Starter', 'unlockNow': 'فتح الآن', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'مقارنة', 'detailedInfo': 'معلومات مفصلة', 'monthlyTranscriptionTime': 'وقت النسخ الشهري', @@ -518,8 +692,6 @@ const Map arSA = { 'يمكنك استيراد ملفات الصوت بسهولة من التطبيقات المحلية أو التابعة لجهات خارجية، مثل المذكرات الصوتية، Google Drive، إلخ.', 'multipleExportFormatsDesc': 'تصدير تسجيلاتك الصوتية، نصوص النسخ والملخصات بتنسيقات مختلفة (TXT، PDF، JPEG) لتلبية احتياجاتك.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'ترقية عضويتك', 'yearlySubscription': 'اشتراك سنوي', 'monthlySubscription': 'اشتراك شهري', @@ -548,105 +720,26 @@ const Map arSA = { 'validityNote': 'يتم التفعيل فور الشراء، صالح لمدة عامين بعد التفعيل.', 'purchase': 'شراء', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'اختر قالب الملخص', - 'useThisTemplate': 'استخدم هذا القالب', - 'lastUsed': 'آخر استخدام', - 'viewAll': 'عرض الكل', - 'recordingLanguage': 'لغة التسجيل', - 'chineseSimplified': 'الصينية الماندرين (المبسطة)', - 'meetingGenerateNow': 'إنشاء الآن', - 'keyEventsAnalyzed': 'تم تحليل {count} حدث رئيسي.', - 'aiAnalysisDesc': - 'يحدد تحليل الذكاء الاصطناعي الأحداث الرئيسية في التسجيلات، مما يتيح لك اختيار الأحداث المهمة لإنشاء الذكاء الاصطناعي.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'جاري الاستيراد...', - 'batchImporting': 'جاري الاستيراد المجمع...', - 'importingLocalRecordings': 'جاري استيراد التسجيلات المحلية...', - 'importFailed': 'فشل استيراد الملف: {filePath}, error: {error}', - 'importSuccess': 'تم استيراد {count} تسجيل محلي بنجاح', - 'importError': 'فشل الاستيراد: {error}', - 'pleaseSelectAudioFile': 'يرجى اختيار ملف صوتي', - 'shareAudio': 'مشاركة صوت الاجتماع', - 'shareComplete': 'اكتملت المشاركة!', - 'shareFailed': 'فشلت المشاركة: {error}', - 'fileProcessingFailed': 'فشلت معالجة الملف: {filePath}, خطأ: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'لغة غير معروفة', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'تخزين', - 'meetingStoragePermissionExplanation': - 'نحتاج إلى الوصول إلى إذن التخزين حتى تتمكن من اختيار وتحميل ملفات الصوت.', - 'meetingStoragePermissionPermanentDenial': - 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'مشاركة الخريطة الذهنية', - 'shareSuccess': 'تمت المشاركة بنجاح', - - // Meeting模块 - AI相关 - 'askAI': 'اسأل AI ...', - 'askAIPrompt': 'ما الذي يمكنني مساعدتك به اليوم؟', - 'continueAsk': 'متابعة السؤال', - 'todoList': 'قائمة المهام', - 'extractConclusion': 'استخلاص النتائج', - 'generateKeyIndicators': 'إنشاء مؤشرات رئيسية', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'إعادة التلخيص', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'لغة التسجيل', - // 'chinese': '中文普通话(简体)', 'cantonese': 'الكانتونية', 'sichuan': 'لهجة سيتشوان', 'shanghai': 'لهجة شنغهاي', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'مشاركة الرابط', - 'copyTranscript': 'نسخ النص', - 'copySummary': 'نسخ الملخص', - 'exportAudio': 'تصدير الصوت', - 'exportTranscript': 'تصدير النص', - 'shareMeetingAudio': 'مشاركة صوت الاجتماع', - 'exportSummary': 'تصدير الملخص', - 'exportAs': 'تصدير كـ', - 'exportingPDF': 'جاري تصدير PDF...', - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'تطبيق على جميع فقرات هذا المتحدث', - 'summaryWillBeUpdatedAutomatically': - 'سيتم تحديث الملخص تلقائيًا بناءً على القالب', - 'nameCurrentSpeaker': 'تسمية المتحدث الحالي', - 'recentlyUsedNames': 'الأسماء المستخدمة مؤخرًا', - 'applyToCurrentParagraph': 'تطبيق على الفقرة الحالية', - 'totalTime': 'الإجمالي', - 'summarySpeakerWillBeUpdatedAutomatically': - 'سيتم تحديث متحدثي الملخص تلقائيًا', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'مزامنة إلى السحابة', - 'syncToCloudTip': - 'مزامنة تسجيلاتك تلقائيًا إلى السحابة، يمكنك تشغيل وإدارة ومشاركة التسجيلات عبر أي تطبيق VOITRANS أو VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'مزامنة تطبيق VOITRANS', - 'transcriptionRecord': 'سجل النسخ', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'التاريخ والوقت', - 'location': 'الموقع', - 'attendees': 'الحاضرين', - 'inputLocation': 'إدخال الموقع', - 'inputAttendees': 'إدخال الحاضرين', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'لغة غير معروفة', + 'analysisFailed': 'فشل التحليل، يرجى المحاولة لاحقًا', + 'transcriptionFailed': 'فشل النسخ، يرجى المحاولة لاحقًا', + 'summaryFailed': 'فشل الملخص، يرجى المحاولة لاحقًا', + 'summaryFailedShort': 'فشل الملخص', + 'transcriptionFailedShort': 'فشل النسخ', + + // Meeting模块 - 播放器 + 'playerNotReady': 'مشغل الصوت غير جاهز، يرجى الانتظار', + 'playFailed': 'فشل التشغيل', + 'audioFileNotFound': 'ملف الصوت غير موجود', + 'fetchingAudio': 'جاري جلب الصوت من السحابة...', + 'playerLoadFailed': 'فشل تحميل مشغل الصوت', // 设置页 "systemSettings": "إعدادات النظام", @@ -698,25 +791,14 @@ const Map arSA = { "bleHeadsetFirmwareUpgrade": "ترقية إصدار البرنامج الثابت لسماعة BLE", "deviceManagement": "إدارة الأجهزة", "manageConnectedDevices": "إدارة أجهزة البلوتوث المرتبطة", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'الإصدار الحالي هو الأحدث {version}', 'checkUpdateFailed': 'فشل التحقق من التحديث', 'networkErrorRetry': 'خطأ في الشبكة، يرجى المحاولة لاحقًا', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "محادثة صوتية في الوقت الفعلي", "realtimeVoiceChatInfo": "تجرية وظيفة التفاعل الصوتي الذكي (معاينة)", "loading": "جاري التحميل...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "جهاز غير معروف", "deviceTypeClassicBluetoothHeadset": "سماعة بلوتوث كلاسيكية", "deviceTypeBleBluetoothHeadset": "سماعة بلوتوث BLE", @@ -732,8 +814,7 @@ const Map arSA = { "هل أنت متأكد من أنك تريد فك ارتباط الجهاز \"{deviceName}\"؟", "confirmUnbindAction": "تأكيد فك الارتباط", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "مسح سجل الدردشة", "online": "متصل", @@ -763,8 +844,10 @@ const Map arSA = { "swipeUpForMore": "اسحب للأعلى لرؤية المزيد", "callingTool": "أنا أساعدك، يرجى الانتظار!", // 正在帮您,请稍等! "voice_interrupt": "مقاطعة صوتية", // 语音打断 + 'voice_interrupt_tip': + 'عند التفعيل: لن يتم مقاطعة الذكاء الاصطناعي بصوتك أثناء تحدثه ويمكنه التعامل مع جولة محادثة واحدة فقط في كل مرة. لبدء جولة جديدة، ما عليك سوى قول كلمة التنبيه.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "شغل بعض الموسيقى", // 来点音乐 "presetNavigation": "ملاحة إلى", // 导航 "presetWeather": "طقس اليوم", // 今日天气 @@ -776,7 +859,7 @@ const Map arSA = { "todayNews": "ما هي الأخبار اليوم؟", // 今日新闻 "nearbyFood": "ما هي الأطعمة اللذيذة القريبة؟", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'مرحبًا! أنا **Lily**، يمكنني مساعدتك في:\n\n' '• الإجابة على الأسئلة وتوفير المعلومات\n\n' '• ترجمة صوتية في الوقت الفعلي\n\n' @@ -796,18 +879,17 @@ const Map arSA = { 'startVoiceInput': 'بدء الإدخال الصوتي', 'startPhoneCallMode': 'بدء وضع الاتصال، بدء الإدخال الصوتي', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'أدخل رسالتك هنا...', // 全屏编辑器输入提示 'characterCount': '{count} حرف', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'نسخ', 'copySuccess': 'تم النسخ بنجاح', 'report': 'إبلاغ', 'submitSuccess': 'تم الإرسال بنجاح', 'submitFailed': 'فشل الإرسال', 'reportSubmitted': 'تم إرسال البلاغ، سنقوم بمعالجته في أقرب وقت ممكن', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'ضار/غير آمن', 'pornographicVulgar': 'إباحي/مبتذل', 'misleadingAttack': 'مضلل/هجوم', @@ -817,17 +899,21 @@ const Map arSA = { 'other': 'أخرى', 'reportDescriptionHint': 'نود معرفة سبب إبلاغك، يمكنك وصف المشكلة التي واجهتها.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'تم إنشاؤه بواسطة AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'استدعاء الأداة', + 'noResult': 'لا توجد نتيجة', + 'noToolCallContentToCopy': 'لا يوجد محتوى لاستدعاء الأداة للنسخ', + 'toolCallDetails': 'تفاصيل استدعاء الأداة:', + 'toolCallContentCopied': 'تم نسخ محتوى استدعاء الأداة إلى الحافظة', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'إليك بعض الموسيقى الموصى بها:', 'playList': 'قائمة التشغيل', 'moreMusic': 'المزيد من الموسيقى', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'كم', // 公里单位 'meters': 'م', // 米单位 'hours': 'ساعة', // 小时单位 @@ -842,7 +928,30 @@ const Map arSA = { "bicycling": "ركوب الدراجات", "tsransit": "نقل عام", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'اختر تطبيق الملاحة', + 'amapMap': 'Amap', + 'useAmapNavigation': 'التنقل باستخدام Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'التنقل باستخدام Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'التنقل باستخدام Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'التنقل باستخدام خرائط Apple', + 'builtInNavigation': 'الملاحة المدمجة', + 'useBuiltInNavigation': 'التنقل باستخدام الخريطة المدمجة', + 'navigationStartFailed': 'فشل بدء التنقل', + 'cannotPlayMusicListRetryLater': + 'تعذر تشغيل قائمة الموسيقى، يرجى المحاولة لاحقًا', + 'cannotPlaySong': 'تعذر تشغيل الأغنية', + 'openMapError': 'خطأ أثناء فتح الخريطة', + 'pleaseInstallAmapApp': 'يرجى تثبيت تطبيق Amap أولاً', + 'pleaseInstallBaiduMapApp': 'يرجى تثبيت تطبيق Baidu Maps أولاً', + 'appleMapStartFailed': 'فشل تشغيل خرائط Apple', + 'appleMapUnavailable': 'خرائط Apple غير متاحة', + 'openAppleMapError': 'خطأ أثناء فتح خرائط Apple', + + // Agent模块 - 天气卡片 'weatherQuery': 'استعلام عن الطقس:', 'highest': 'الأعلى', 'lowest': 'الأدنى', @@ -871,18 +980,8 @@ const Map arSA = { "friday": "الجمعة", "saturday": "السبت", "sunday": "الأحد", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "تاريخ الانتهاء:", - "notActivated": "غير مفعل", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "مشمس", "partlyCloudy": "غائم جزئيا", "partlySunny": "مشمس جزئيا", @@ -903,7 +1002,138 @@ const Map arSA = { "haze": "سديم", "strongWind": "رياح قوية", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "ترجمة الصور", + "textTranslation": "ترجمة النصوص", + + // 翻译模块 - 主页 + "translationHistory": "سجل الترجمة", + "enableRecording": "هل تريد تمكين التسجيل", + "viewAudioFiles": "عرض ملفات التسجيل", + "headsetUser": "مستخدم سماعة الرأس", + "phoneUser": "مستخدم الهاتف", + "selectSourceLanguage": "اختر اللغة المصدر", + "selectTargetLanguage": "اختر اللغة الهدف", + "me": "أنا", + "counterPart": "الطرف الآخر", + "bluetoothCallStateError": + "يرجى التأكد من توصيل سماعة البلوتوث بالهاتف وفي حالة الاتصال", + "autoDetect": "كشف تلقائي", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "فشل اكتشاف اللغة", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'تعطيل النافذة العائمة', + 'enableFloatingWindow': 'تمكين النافذة العائمة', + 'permissionTip': 'تنبيه الأذونات', + 'micPermissionRequiredForRecording': 'إذن الميكروفون مطلوب للتسجيل', + 'deleteTranslationRecordError': 'خطأ في حذف سجل الترجمة: @error', + "translationFailed": "فشلت الترجمة", + "translating": "جارٍ الترجمة", + "translate": "ترجمة", + "pleaseInputText": "يرجى إدخال النص", + "inputTextToTranslate": "يرجى إدخال النص المراد ترجمته", + "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "لا يوجد سجل تاريخي", + "historyRecords": "السجلات التاريخية", + "clearResults": "مسح النتائج", + "clearHistory": "مسح السجل", + "clearHistoryConfirm": + "هل أنت متأكد من أنك تريد مسح كل سجل الترجمة؟ هذا الإجراء لا يمكن التراجع عنه.", + "unknownLanguage": "لغة غير معروفة", + "deleteSessionRecord": "حذف سجل الجلسة", + "deleteSessionConfirm": + "هل أنت متأكد من أنك تريد حذف جميع سجلات الترجمة لهذه الجلسة؟ هذا الإجراء لا يمكن التراجع عنه.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "اختر مصدر الصورة", + "imagePreview": "معاينة الصورة", + "translationResult": "نتيجة الترجمة", + "recognitionResult": "نتيجة التعرف", + "translatedImagePreview": "معاينة الصورة المترجمة", + "translatedImageLoadFailed": "فشل تحميل الصورة المترجمة", + "pleaseSelectImage": "يرجى اختيار صورة", + "imageLoadFailed": "فشل تحميل الصورة", + "imageQuality": "جودة الصورة", + "maxSize": "الحجم الأقصى", + "close": "إغلاق", + "setImageQuality": "تعيين جودة الصورة", + "currentQuality": "الجودة الحالية: @value%", + "setMaxSize": "تعيين الحجم الأقصى", + "currentMaxSize": "الحالي: @pxpx", + "waitingForAction": "في انتظار الإجراء", + "pleaseSelectImageToStart": "يرجى اختيار صورة للبدء", + "chooseImage": "اختر صورة", + "openingCamera": "جاري فتح الكاميرا...", + "openingPhotoAlbum": "جاري فتح ألبوم الصور...", + "cancelled": "تم الإلغاء", + "userCancelledSelection": "ألغى المستخدم الاختيار", + "translatingImage": "جاري ترجمة الصورة", + "callingImageTranslateService": "جاري استدعاء خدمة ترجمة الصور...", + "savingRecord": "جاري حفظ السجل", + "savingTranslationResult": "جاري حفظ نتيجة الترجمة...", + "translationCompleted": "اكتملت الترجمة", + "allStepsCompleted": "اكتملت جميع الخطوات", + "processingFailed": "فشلت المعالجة", + "imageProcessingOrTranslationFailed": + "فشلت معالجة الصورة أو الترجمة، يرجى إعادة المحاولة.\nمعلومات الخطأ: {error}", + "imageTooLarge": "حجم الصورة يتجاوز حد 4 ميجابايت", + "imageTooLargeHint": + "حجم الصورة يتجاوز حد 4 ميجابايت، يرجى تقليل الجودة أو الحجم والمحاولة مرة أخرى", + "emptyTranslationResult": "أعادت واجهة ترجمة الصور نتيجة فارغة", + "imageTranslationFailedTryLater": + "فشلت ترجمة الصورة، الأسباب المحتملة: شذوذ في الشبكة أو تحديد معدل الواجهة، يرجى المحاولة لاحقًا", + "imageTranslationApiException": + "استثناء في استدعاء واجهة ترجمة الصور، يرجى التحقق من الشبكة والمحاولة مرة أخرى", + "permissionRequired": "متطلبات الإذن", + "cameraPermissionRequired": "تحتاج إلى إذن الكاميرا لالتقاط الصور", + "photoAlbumPermissionRequired": "تحتاج إلى إذن الألبوم لاختيار الصور", + "translationDetails": "تفاصيل الترجمة", + "originalImage": "الصورة الأصلية", + "sourceLanguage": "اللغة المصدر", + "targetLanguage": "اللغة الهدف", + "translationTime": "وقت الترجمة", + "shareInDevelopment": "وظيفة المشاركة قيد التطوير", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ترجمة ملفات التسجيل", + "noAudioFiles": "لا توجد ملفات صوتية", + "calculating": "جاري الحساب...", + "playing": "جاري التشغيل...", + "paused": "متوقف مؤقتًا", + "clickToPlay": "انقر للتشغيل", + "rename": "إعادة تسمية", + "smartTranscription": "نسخ ذكي", + "renameAudioFile": "إعادة تسمية ملف الصوت", + "enterNewFileName": "يرجى إدخال اسم ملف جديد", + + // 翻译模块 - 翻译详情 + "originalRecord": "السجل الأصلي", + "recordSummary": "ملخص السجل", + "clickToGenerateSummary": "انقر على الزر أدناه لإنشاء ملخص الجلسة", + "summaryContent": "محتوى الملخص", + "copied": "تم النسخ", + "summaryCopiledToClipboard": "تم نسخ الملخص إلى الحافظة", + "extractSummary": "استخراج الملخص", + "summaryGenerated": "تم إنشاء الملخص", + "generating": "جاري الإنشاء...", + "regenerate": "إعادة الإنشاء", + "summaryTimeoutMessage": + "انتهت مهلة طلب إنشاء الملخص، قد يكون ذلك بسبب مشكلة في الشبكة أو انشغال الخادم.", + "deleteTranslationRecord": "حذف سجل الترجمة", + "deleteTranslationConfirm": + "هل أنت متأكد من أنك تريد حذف سجل الترجمة هذا؟ هذا الإجراء لا يمكن التراجع عنه.", + "originalText": "النص الأصلي", + "translatedText": "النص المترجم", + "sessionSummary": "ملخص الجلسة", + "cannotShare": "لا يمكن المشاركة", + "generateSummaryFirst": "يرجى إنشاء ملخص أولاً", + "translationSessionRecord": "سجل جلسة الترجمة", + + // 个人资料模块 "editProfile": "تعديل المعلومات الشخصية", "avatar": "صورة رمزية", "nickname": "لقب", @@ -919,8 +1149,6 @@ const Map arSA = { 'هل أنت متأكد من أنك تريد حذف حسابك نهائيًا؟ هذا الإجراء لا يمكن التراجع عنه', 'clean': 'مسح الذاكرة المؤقتة', 'cleanTips': 'هل أنت متأكد من أنك تريد مسح الذاكرة المؤقتة الشخصية؟', - - // Profile 错误信息 'networkConnectionFailed': 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة والمحاولة مرة أخرى', 'serverTemporarilyUnavailable': @@ -937,10 +1165,6 @@ const Map arSA = { 'networkConnectionFailedCheckSettings': 'فشل الاتصال بالشبكة، يرجى التحقق من إعدادات الشبكة', 'serverInternalErrorRetryLater': 'خطأ داخلي في الخادم، يرجى المحاولة لاحقًا', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'فشل ضغط الصورة', 'avatarUpdateFailed': 'فشل تحديث الصورة الرمزية', 'usernameCannotBeEmpty': 'لا يمكن أن يكون اسم المستخدم فارغًا', @@ -951,8 +1175,6 @@ const Map arSA = { 'logoutFailedRetry': 'فشل تسجيل الخروج، يرجى المحاولة مرة أخرى', 'accountPermanentlyDeleted': 'تم حذف الحساب نهائيًا', 'deleteAccountFailedRetry': 'فشل حذف الحساب، يرجى المحاولة مرة أخرى', - - // 账号服务相关 'clearUserDataFailed': 'فشل تنظيف بيانات المستخدم', // 清理用户数据失败 'deleteUserDataFailed': 'فشل حذف بيانات المستخدم', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -965,7 +1187,12 @@ const Map arSA = { 'تم تنظيف جميع بيانات المستخدم بنجاح', // 所有用户数据清理成功 'accountServiceInitialized': 'تمت تهيئة خدمة الحساب', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'تخزين', + 'meetingStoragePermissionExplanation': + 'نحتاج إلى الوصول إلى إذن التخزين حتى تتمكن من اختيار وتحميل ملفات الصوت.', + 'meetingStoragePermissionPermanentDenial': + 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', 'getPermissionStatusFailed': 'فشل الحصول على حالة الإذن', 'communicationPermissions': 'أذونات الاتصال', 'bluetoothPermissions': 'أذونات البلوتوث', @@ -978,7 +1205,6 @@ const Map arSA = { 'phone': 'هاتف', 'sms': 'رسائل قصيرة', 'contacts': 'جهات الاتصال', - //'bluetooth': '蓝牙', 'notification': 'إشعار', 'alarm': 'منبه', 'calendarWrite': 'كتابة التقويم', @@ -1030,8 +1256,6 @@ const Map arSA = { 'permanentDenialText': 'لقد رفضت إذن {permission} بشكل دائم، يرجى الانتقال إلى إعدادات التطبيق لفتحه', 'goToSettings': 'الذهاب للإعدادات', - - // 权限申请 'bluetoothScan': 'مسح البلوتوث', 'bluetoothConnect': 'اتصال البلوتوث', 'bluetoothScanExplanation': @@ -1055,7 +1279,6 @@ const Map arSA = { 'لقد رفضت إذن الإشعارات بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه.', 'locationPermissionPermanentDenial': 'لقد رفضت إذن الموقع بشكل دائم، يرجى الانتقال إلى الإعدادات لتمكينه.', -//'microphonePermission': '录音', 'storagePermission': 'تخزين', 'microphonePermissionExplanation': 'نحن بحاجة إلى إذن الميكروفون لتسجيل المحتوى الصوتي.', @@ -1065,13 +1288,20 @@ const Map arSA = { 'تم اكتشاف أنك رفضت إذن التسجيل بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن الميكروفون يدويًا.', 'storagePermissionPermanentDenial': 'تم اكتشاف أنك رفضت إذن التخزين بشكل دائم. للمتابعة في استخدام هذه الميزة، يرجى الانتقال إلى إعدادات التطبيق لتمكين إذن التخزين يدويًا.', + 'permissionUtilNeed': 'يحتاج ', + 'permissionUtilPermission': ' إذن', + 'permissionUtilRestricted': ' الإذن مقيد', + 'permissionUtilRestrictedMessage': + 'هذه الميزة غير متوفرة أو مقيدة على الجهاز الحالي، يرجى التحقق من إعدادات الجهاز أو قيود النظام', + 'permissionUtilConfirm': 'تأكيد', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS 'native.notification.navigation.title': 'التنقل جارٍ', // 导航进行中 'native.notification.navigation.keepRunning': 'التنقل جارٍ، يرجى إبقاء التطبيق قيد التشغيل', // 正在导航中,请保持应用运行 - 'native.notification.bleAgent.running': 'المساعد الصوتي قيد التشغيل', // 语音助手正在运行 + 'native.notification.bleAgent.running': + 'المساعد الصوتي قيد التشغيل', // 语音助手正在运行 'native.notification.audioRecording.recording': 'يتم التسجيل، اضغط للعودة إلى التطبيق', // 正在录音,点击返回应用 'native.notification.music.waiting': 'في انتظار التشغيل', // 等待播放 @@ -1081,15 +1311,7 @@ const Map arSA = { 'native.notification.music.pause': 'إيقاف مؤقت', // 暂停 'native.notification.qqMusic.playing': 'يتم تشغيل الموسيقى', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'يحتاج ', - 'permissionUtilPermission': ' إذن', - 'permissionUtilRestricted': ' الإذن مقيد', - 'permissionUtilRestrictedMessage': - 'هذه الميزة غير متوفرة أو مقيدة على الجهاز الحالي، يرجى التحقق من إعدادات الجهاز أو قيود النظام', - 'permissionUtilConfirm': 'تأكيد', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'تم العثور على إصدار جديد', // 版本更新对话框标题 'remindLater': 'تذكير لاحقًا', // 稍后提醒按钮 'updateNow': 'تحديث الآن', // 立即更新按钮 @@ -1100,251 +1322,7 @@ const Map arSA = { 'updateErrorRetry': 'حدث خطأ أثناء عملية التحديث، يرجى المحاولة لاحقًا', // 更新错误重试提示 - //国家列表 - "邮箱": "البريد الإلكتروني", - "中国": "الصين", - "美国": "الولايات المتحدة", - "加拿大": "كندا", - "俄罗斯": "روسيا", - "英国": "المملكة المتحدة", - "德国": "ألمانيا", - "意大利": "إيطاليا", - "法国": "فرنسا", - "西班牙": "إسبانيا", - "南非": "جنوب أفريقيا", - "沙特阿拉伯": "المملكة العربية السعودية", - "土耳其": "تركيا", - "日本": "اليابان", - "韩国": "كوريا الجنوبية", - "新加坡": "سنغافورة", - "马来西亚": "ماليزيا", - "泰国": "تايلاند", - "越南": "فيتنام", - "印度": "الهند", - "巴基斯坦": "باكستان", - "菲律宾": "الفلبين", - "印度尼西亚": "إندونيسيا", - "阿联酋": "الإمارات العربية المتحدة", - "墨西哥": "المكسيك", - "巴西": "البرازيل", - "阿根廷": "الأرجنتين", - "澳大利亚": "أستراليا", - "新西兰": "نيوزيلندا", - "中国香港": "هونغ كونغ، الصين", - "中国澳门": "ماكاو، الصين", - "中国台湾": "تايوان، الصين", - "埃及": "مصر", - "希腊": "اليونان", - "荷兰": "هولندا", - "比利时": "بلجيكا", - "匈牙利": "المجر", - "罗马尼亚": "رومانيا", - "瑞士": "سويسرا", - "奥地利": "النمسا", - "丹麦": "الدانمرك", - "瑞典": "السويد", - "挪威": "النرويج", - "波兰": "بولندا", - "秘鲁": "بيرو", - "智利": "تشيلي", - "哥伦比亚": "كولومبيا", - "委内瑞拉": "فنزويلا", - "葡萄牙": "البرتغال", - "卢森堡": "لوكسمبورغ", - "爱尔兰": "أيرلندا", - "冰岛": "أيسلندا", - "阿尔巴尼亚": "ألبانيا", - "马耳他": "مالطا", - "塞浦路斯": "قبرص", - "芬兰": "فنلندا", - "保加利亚": "بلغاريا", - "立陶宛": "ليتوانيا", - "拉脱维亚": "لاتفيا", - "爱沙尼亚": "إستونيا", - "乌克兰": "أوكرانيا", - "塞尔维亚": "صربيا", - "克罗地亚": "كرواتيا", - "斯洛文尼亚": "سلوفينيا", - "捷克": "جمهورية التشيك", - "斯洛伐克": "سلوفاكيا", - "危地马拉": "غواتيمالا", - "萨尔瓦多": "السلفادور", - "洪都拉斯": "هندوراس", - "尼加拉瓜": "نيكاراغوا", - "哥斯达黎加": "كوستاريكا", - "巴拿马": "بنما", - "海地": "هايتي", - "玻利维亚": "بوليفيا", - "厄瓜多尔": "الإكوادور", - "巴拉圭": "باراغواي", - "乌拉圭": "أوروغواي", - "摩洛哥": "المغرب", - "阿尔及利亚": "الجزائر", - "突尼斯": "تونس", - "尼日利亚": "نيجيريا", - "加纳": "غانا", - "埃塞俄比亚": "إثيوبيا", - "肯尼亚": "كينيا", - "坦桑尼亚": "تنزانيا", - "乌干达": "أوغندا", - "孟加拉国": "بنغلاديش", - "以色列": "إسرائيل", - "黎巴嫩": "لبنان", - "约旦": "الأردن", - "伊拉克": "العراق", - "科威特": "الكويت", - "巴林": "البحرين", - "卡塔尔": "قطر", - "阿曼": "عمان", - "阿富汗": "أفغانستان", - "斯里兰卡": "سريلانكا", - "缅甸": "ميانمار", - "尼泊尔": "نيبال", - "蒙古": "منغوليا", - "柬埔寨": "كمبوديا", - "老挝": "لاوس", - "文莱": "بروناي", - "东帝汶": "تيمور الشرقية", - "斐济": "فيجي", - "所罗门群岛": "جزر سليمان", - "刚果民主共和国": "جمهورية الكونغو الديمقراطية", - "安哥拉": "أنغولا", - "苏丹": "السودان", - "马尔代夫": "المالديف", - "不丹": "بوتان", - "摩纳哥": "موناكو", - "圣马力诺": "سان مارينو", - "牙买加": "جامايكا", - "巴哈马": "جزر البهاما", - "巴布亚新几内亚": "بابوا غينيا الجديدة", - "萨摩亚": "ساموا", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "ترجمة الصور", - "textTranslation": "ترجمة النصوص", - - // 翻译主页 (translation_view.dart) - "translationHistory": "سجل الترجمة", - "enableRecording": "هل تريد تمكين التسجيل", - "viewAudioFiles": "عرض ملفات التسجيل", - "headsetUser": "مستخدم سماعة الرأس", - "phoneUser": "مستخدم الهاتف", - "selectSourceLanguage": "اختر اللغة المصدر", - "selectTargetLanguage": "اختر اللغة الهدف", - "me": "أنا", - "counterPart": "الطرف الآخر", - "bluetoothCallStateError": - "يرجى التأكد من توصيل سماعة البلوتوث بالهاتف وفي حالة الاتصال", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "كشف تلقائي", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "فشل اكتشاف اللغة", - "translationFailed": "فشلت الترجمة", - "pleaseInputText": "يرجى إدخال النص", - "textTooLong": "النص طويل جدًا، بحد أقصى 5000 حرف", - - // 翻译历史页 - "noTranslationHistory": "لا يوجد سجل تاريخي", - "historyRecords": "السجلات التاريخية", - "clearResults": "مسح النتائج", - "clearHistory": "مسح السجل", - "clearHistoryConfirm": - "هل أنت متأكد من أنك تريد مسح كل سجل الترجمة؟ هذا الإجراء لا يمكن التراجع عنه.", - "unknownLanguage": "لغة غير معروفة", - "deleteSessionRecord": "حذف سجل الجلسة", - "deleteSessionConfirm": - "هل أنت متأكد من أنك تريد حذف جميع سجلات الترجمة لهذه الجلسة؟ هذا الإجراء لا يمكن التراجع عنه.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "اختر مصدر الصورة", - "imagePreview": "معاينة الصورة", - "translationResult": "نتيجة الترجمة", - "recognitionResult": "نتيجة التعرف", - "translatedImagePreview": "معاينة الصورة المترجمة", - "translatedImageLoadFailed": "فشل تحميل الصورة المترجمة", - "pleaseSelectImage": "يرجى اختيار صورة", - "imageLoadFailed": "فشل تحميل الصورة", - "imageQuality": "جودة الصورة", - "maxSize": "الحجم الأقصى", - "close": "إغلاق", - "setImageQuality": "تعيين جودة الصورة", - "currentQuality": "الجودة الحالية: @value%", - "setMaxSize": "تعيين الحجم الأقصى", - "currentMaxSize": "الحالي: @pxpx", - "waitingForAction": "في انتظار الإجراء", - "pleaseSelectImageToStart": "يرجى اختيار صورة للبدء", - "chooseImage": "اختر صورة", - "openingCamera": "جاري فتح الكاميرا...", - "openingPhotoAlbum": "جاري فتح ألبوم الصور...", - "cancelled": "تم الإلغاء", - "userCancelledSelection": "ألغى المستخدم الاختيار", - "translatingImage": "جاري ترجمة الصورة", - "callingImageTranslateService": "جاري استدعاء خدمة ترجمة الصور...", - "savingRecord": "جاري حفظ السجل", - "savingTranslationResult": "جاري حفظ نتيجة الترجمة...", - "translationCompleted": "اكتملت الترجمة", - "allStepsCompleted": "اكتملت جميع الخطوات", - "processingFailed": "فشلت المعالجة", - "imageProcessingOrTranslationFailed": - "فشلت معالجة الصورة أو الترجمة، يرجى إعادة المحاولة.\nمعلومات الخطأ: {error}", - "imageTooLarge": "حجم الصورة يتجاوز حد 4 ميجابايت", - "imageTooLargeHint": - "حجم الصورة يتجاوز حد 4 ميجابايت، يرجى تقليل الجودة أو الحجم والمحاولة مرة أخرى", - "emptyTranslationResult": "أعادت واجهة ترجمة الصور نتيجة فارغة", - "imageTranslationFailedTryLater": - "فشلت ترجمة الصورة، الأسباب المحتملة: شذوذ في الشبكة أو تحديد معدل الواجهة، يرجى المحاولة لاحقًا", - "imageTranslationApiException": - "استثناء في استدعاء واجهة ترجمة الصور، يرجى التحقق من الشبكة والمحاولة مرة أخرى", - "permissionRequired": "متطلبات الإذن", - "cameraPermissionRequired": "تحتاج إلى إذن الكاميرا لالتقاط الصور", - "photoAlbumPermissionRequired": "تحتاج إلى إذن الألبوم لاختيار الصور", - "translationDetails": "تفاصيل الترجمة", - "originalImage": "الصورة الأصلية", - "sourceLanguage": "اللغة المصدر", - "targetLanguage": "اللغة الهدف", - "translationTime": "وقت الترجمة", - "shareInDevelopment": "وظيفة المشاركة قيد التطوير", - - // 翻译录音文件列表页 - "translateAudioFiles": "ترجمة ملفات التسجيل", - "noAudioFiles": "لا توجد ملفات صوتية", - "calculating": "جاري الحساب...", - "playing": "جاري التشغيل...", - "paused": "متوقف مؤقتًا", - "clickToPlay": "انقر للتشغيل", - "rename": "إعادة تسمية", - "smartTranscription": "نسخ ذكي", - "renameAudioFile": "إعادة تسمية ملف الصوت", - "enterNewFileName": "يرجى إدخال اسم ملف جديد", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "السجل الأصلي", - "recordSummary": "ملخص السجل", - "clickToGenerateSummary": "انقر على الزر أدناه لإنشاء ملخص الجلسة", - "summaryContent": "محتوى الملخص", - "copied": "تم النسخ", - "summaryCopiledToClipboard": "تم نسخ الملخص إلى الحافظة", - "extractSummary": "استخراج الملخص", - "summaryGenerated": "تم إنشاء الملخص", - "generating": "جاري الإنشاء...", - "regenerate": "إعادة الإنشاء", - "summaryTimeoutMessage": - "انتهت مهلة طلب إنشاء الملخص، قد يكون ذلك بسبب مشكلة في الشبكة أو انشغال الخادم.", - "deleteTranslationRecord": "حذف سجل الترجمة", - "deleteTranslationConfirm": - "هل أنت متأكد من أنك تريد حذف سجل الترجمة هذا؟ هذا الإجراء لا يمكن التراجع عنه.", - "originalText": "النص الأصلي", - "translatedText": "النص المترجم", - "sessionSummary": "ملخص الجلسة", - "cannotShare": "لا يمكن المشاركة", - "generateSummaryFirst": "يرجى إنشاء ملخص أولاً", - "translationSessionRecord": "سجل جلسة الترجمة", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "اقتران الجهاز", "connectYourDeepSoundHeadset": "قم بتوصيل سماعة Voitrans الخاصة بك", "bind": "ربط", @@ -1353,14 +1331,11 @@ const Map arSA = { "autoInputCode": "إدخال الرمز تلقائيًا", "skipBinding": "تخطي الربط", "rescan": "إعادة المسح", - "verifyingDevice": "جاري التحقق من الجهاز...", "confirmBinding": "تأكيد الربط", "associatingDevice": "جاري ربط الجهاز...", "goToBluetoothSettings": "الانتقال إلى إعدادات البلوتوث", 'bluetooth': 'بلوتوث', - - // 配对状态文本 "readyToPair": "جاهز لبدء الاقتران", "preparingPairingEnvironment": "جاري تحضير بيئة الاقتران...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1345,6 @@ const Map arSA = { "waitingCompletePairing": "يرجى الانتظار، جاري إكمال الاقتران...", "pairingSuccessRedirecting": "نجح الاقتران! سيتم التوجيه إلى الصفحة الرئيسية قريبًا...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "الجهاز المستخدم حاليًا: %s، يرجى التأكد من توصيل جهاز يدعمه Voitrans", "deviceAlreadyBoundToOtherAccount": "هذا الجهاز مرتبط بالفعل بحساب آخر", @@ -1381,19 +1354,12 @@ const Map arSA = { "networkError": "خطأ في الشبكة", "authorizationFailedCheckCode": "فشل التفويض، يرجى التحقق من صحة رمز التفويض", "pairingFailedRetry": "فشل الاقتران، يرجى المحاولة مرة أخرى", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'يرجى تمكين البلوتوث', 'deviceDisconnected': 'تم فصل الجهاز', 'readyToStartPairing': 'جاهز لبدء الاقتران', 'checkingEnvironment': 'جاري فحص البيئة...', 'ensureHeadsetOnAndPairingMode': 'يرجى التأكد من تشغيل سماعة الرأس وفي وضع الاقتران', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'جاري إنشاء اتصال آمن...', 'needManualBindingAuthCode': 'مطلوب رمز تفويض الربط اليدوي...', 'pairingSuccessful': 'نجح الاقتران!', @@ -1414,8 +1380,6 @@ const Map arSA = { 'bleConnectionFailed': 'فشل اتصال BLE', 'deviceAuthorizationFailedCheckCode': 'فشل تفويض الجهاز، يرجى التحقق من رمز التفويض', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'يجب تمكين البلوتوث يدويًا', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'يرجى اتباع الخطوات التالية:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1428,7 +1392,18 @@ const Map arSA = { 'نصيحة: يمكنك أيضًا الضغط لفترة طويلة على أيقونة البلوتوث في مركز التحكم للوصول بسرعة إلى إعدادات البلوتوث', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'أنا أعرف', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "مكافأة الترحيب", + "firstBindRewardDesc": "لقد حصلت على مكافآت الربط.", + "vipLevelLabel": "مستوى VIP:", + "expiryLabel": "تاريخ الانتهاء:", + "notActivated": "غير مفعل", + "aiChatCreditsLabel": "رصيد محادثة الذكاء الاصطناعي:", + "translationCreditsLabel": "رصيد الترجمة:", + "meetingCreditsLabel": "رصيد الاجتماعات:", + "ok": "موافق", + + // 用户反馈模块 "feedback": "ملاحظات المستخدم", 'feedbackInfo': 'قدم ملاحظات أو اقتراحات', 'feedbackDescription': 'يرجى وصف المشكلة التي واجهتها أو اقتراحك', @@ -1469,7 +1444,59 @@ const Map arSA = { "removeEarbudsEnsureBattery": "أخرج السماعتين، وتأكد من أن مستوى البطارية أعلى من 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'تم العثور على إصدار جديد @version', + 'otaConfirmUpdateNow': 'هل تريد التحديث الآن؟', + 'otaUpdate': 'تحديث', + 'otaUpgradeSuccess': 'تمت الترقية بنجاح', + 'otaUpgradeCompleteRepair': + 'اكتملت ترقية البرنامج الثابت!\n\nيجب إعادة إقران الجهاز ليعمل بشكل صحيح. هل تريد الانتقال إلى صفحة الإقران الآن؟', + 'otaPairLater': 'الإقران لاحقًا', + 'otaPairNow': 'الإقران الآن', + 'okConfirm': 'موافق', + + // OTA升级模块 - 设备检查 + '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': + 'يتضمن هذا التحديث تحسينات في الأداء وإصلاحات للأخطاء.', + 'otaGetLatestVersionFailed': 'فشل الحصول على معلومات أحدث إصدار', + 'otaGetVersionInfoFailed': 'فشل الحصول على معلومات الإصدار', + 'otaCheckingDeviceStatus': 'جارٍ التحقق من حالة الجهاز...', + 'otaDownloadFailedCheckNetwork': 'فشل التنزيل، يرجى التحقق من اتصال الشبكة', + 'otaDownloadFailed': 'فشل التنزيل', + 'otaPreparingConnection': 'جارٍ تحضير اتصال الجهاز...', + 'otaConnectingDevice': 'جارٍ الاتصال بالجهاز...', + 'otaUpgradeStarted': 'بدأت ترقية OTA...', + 'otaUpgradeProgressWithPercent': 'تقدم الترقية: @percent%', + 'otaUpgradeSuccessComplete': 'اكتملت الترقية بنجاح', + 'otaUpgradeFailedWithCode': 'فشلت الترقية، رمز الخطأ: @code', + 'otaUpgradeFailedTitle': 'فشلت الترقية', + 'otaUpgradeFailedDesc': + 'يرجى التحقق من اتصال الجهاز أو حزمة التحديث، رمز الخطأ: @code', + 'otaDeviceDisconnected': 'تم قطع اتصال الجهاز', + 'otaDeviceConnected': 'تم اتصال الجهاز', + + // 音乐模块 "noMusic": "لا توجد موسيقى", // 暂无音乐 "noPlayingMusic": "لا توجد موسيقى قيد التشغيل", // 暂无播放音乐 "unknownSong": "أغنية غير معروفة", // 未知歌曲 @@ -1517,22 +1544,122 @@ const Map arSA = { "波斯语": "الفارسية", "斯瓦希里语": "السواحيلية", - // 时间相关 - "justNow": "الآن", - "minutesAgo": "قبل @minutes دقيقة", - "yesterday": "أمس", - // 时间扩展(图片翻译模块使用) - "daysAgo": "قبل @days يوم", - "hoursAgo": "قبل @hours ساعة", - - //补充 - "insufficientIntegral": "نقاط غير كافية", - - //余额不足弹窗 - "insufficientBalanceDesc": - "الرصيد غير كافٍ، يرجى الانتقال إلى صفحة الشحن المقابلة للشحن", - "recharge": "الذهاب للشحن", - // 会员到期提示 - "aiMemberExpiredDesc": - "انتهت عضوية AI، يرجى الانتقال إلى شحن العضوية للتجديد", + // 国家列表 + "邮箱": "البريد الإلكتروني", + "中国": "الصين", + "美国": "الولايات المتحدة", + "加拿大": "كندا", + "俄罗斯": "روسيا", + "英国": "المملكة المتحدة", + "德国": "ألمانيا", + "意大利": "إيطاليا", + "法国": "فرنسا", + "西班牙": "إسبانيا", + "南非": "جنوب أفريقيا", + "沙特阿拉伯": "المملكة العربية السعودية", + "土耳其": "تركيا", + "日本": "اليابان", + "韩国": "كوريا الجنوبية", + "新加坡": "سنغافورة", + "马来西亚": "ماليزيا", + "泰国": "تايلاند", + "越南": "فيتنام", + "印度": "الهند", + "巴基斯坦": "باكستان", + "菲律宾": "الفلبين", + "印度尼西亚": "إندونيسيا", + "阿联酋": "الإمارات العربية المتحدة", + "墨西哥": "المكسيك", + "巴西": "البرازيل", + "阿根廷": "الأرجنتين", + "澳大利亚": "أستراليا", + "新西兰": "نيوزيلندا", + "中国香港": "هونغ كونغ، الصين", + "中国澳门": "ماكاو، الصين", + "中国台湾": "تايوان، الصين", + "埃及": "مصر", + "希腊": "اليونان", + "荷兰": "هولندا", + "比利时": "بلجيكا", + "匈牙利": "المجر", + "罗马尼亚": "رومانيا", + "瑞士": "سويسرا", + "奥地利": "النمسا", + "丹麦": "الدانمرك", + "瑞典": "السويد", + "挪威": "النرويج", + "波兰": "بولندا", + "秘鲁": "بيرو", + "智利": "تشيلي", + "哥伦比亚": "كولومبيا", + "委内瑞拉": "فنزويلا", + "葡萄牙": "البرتغال", + "卢森堡": "لوكسمبورغ", + "爱尔兰": "أيرلندا", + "冰岛": "أيسلندا", + "阿尔巴尼亚": "ألبانيا", + "马耳他": "مالطا", + "塞浦路斯": "قبرص", + "芬兰": "فنلندا", + "保加利亚": "بلغاريا", + "立陶宛": "ليتوانيا", + "拉脱维亚": "لاتفيا", + "爱沙尼亚": "إستونيا", + "乌克兰": "أوكرانيا", + "塞尔维亚": "صربيا", + "克罗地亚": "كرواتيا", + "斯洛文尼亚": "سلوفينيا", + "捷克": "جمهورية التشيك", + "斯洛伐克": "سلوفاكيا", + "危地马拉": "غواتيمالا", + "萨尔瓦多": "السلفادور", + "洪都拉斯": "هندوراس", + "尼加拉瓜": "نيكاراغوا", + "哥斯达黎加": "كوستاريكا", + "巴拿马": "بنما", + "海地": "هايتي", + "玻利维亚": "بوليفيا", + "厄瓜多尔": "الإكوادور", + "巴拉圭": "باراغواي", + "乌拉圭": "أوروغواي", + "摩洛哥": "المغرب", + "阿尔及利亚": "الجزائر", + "突尼斯": "تونس", + "尼日利亚": "نيجيريا", + "加纳": "غانا", + "埃塞俄比亚": "إثيوبيا", + "肯尼亚": "كينيا", + "坦桑尼亚": "تنزانيا", + "乌干达": "أوغندا", + "孟加拉国": "بنغلاديش", + "以色列": "إسرائيل", + "黎巴嫩": "لبنان", + "约旦": "الأردن", + "伊拉克": "العراق", + "科威特": "الكويت", + "巴林": "البحرين", + "卡塔尔": "قطر", + "阿曼": "عمان", + "阿富汗": "أفغانستان", + "斯里兰卡": "سريلانكا", + "缅甸": "ميانمار", + "尼泊尔": "نيبال", + "蒙古": "منغوليا", + "柬埔寨": "كمبوديا", + "老挝": "لاوس", + "文莱": "بروناي", + "东帝汶": "تيمور الشرقية", + "斐济": "فيجي", + "所罗门群岛": "جزر سليمان", + "刚果民主共和国": "جمهورية الكونغو الديمقراطية", + "安哥拉": "أنغولا", + "苏丹": "السودان", + "马尔代夫": "المالديف", + "不丹": "بوتان", + "摩纳哥": "موناكو", + "圣马力诺": "سان مارينو", + "牙买加": "جامايكا", + "巴哈马": "جزر البهاما", + "巴布亚新几内亚": "بابوا غينيا الجديدة", + "萨摩亚": "ساموا", }; diff --git a/lib/core/translations/language/bg_bg.dart b/lib/core/translations/language/bg_bg.dart index fc24ba982..c806cafa4 100644 --- a/lib/core/translations/language/bg_bg.dart +++ b/lib/core/translations/language/bg_bg.dart @@ -1,3 +1,4 @@ +//保加利亚-保加利亚语 const Map bgBG = { // 通用 'continue': 'Продължи', @@ -18,6 +19,11 @@ const Map bgBG = { "unknownError": "Неизвестна грешка", "asrConnectionFailed": "Неуспешно свързване с услугата за разпознаване на реч. Проверете мрежата или опитайте отново по-късно.", + "justNow": "Току-що", + "minutesAgo": "преди @minutes минути", + "yesterday": "Вчера", + "daysAgo": "преди @days дни", + "hoursAgo": "преди @hours часа", // 启动页 "slogan": "Свързвайки света, отвъд звука", @@ -28,7 +34,7 @@ const Map bgBG = { "explore": "Изследвай", "settings": "Настройки", - // 语言 + // 语言列表 "followingSystem": "Следвай системата", "chinese": "Китайски", "english": "Английски", @@ -72,7 +78,7 @@ const Map bgBG = { "arabic": "Арабски", "persian": "Фарски", - // 登录页 + // 登录模块 "welcome": "Добре дошли", "loginTips": "Моля, влезте или се регистрирайте с телефонен номер или имейл", "accountNumber": "Телефонен номер или имейл", @@ -100,13 +106,9 @@ const Map bgBG = { "resendVerificationCode": "Изпрати отново кода за потвърждение", "login": "Влизане", "usePasswordLogin": "Използвай влизане с парола", - - // 隐私政策弹窗 "loginDeclaration": "Декларация на Voitrans", // Voitrans 声明 "welcomeToThisApp": "Добре дошли в Voitrans, моля прочетете внимателно", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Кликването на 'Съгласявам се и влизам' означава, че сте прочели напълно и се съгласявате с горните споразумения. Кликването на 'Не се съгласявам' ще затвори приложението.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не се съгласявам", // 不同意 @@ -165,7 +167,30 @@ const Map bgBG = { 'checkConnectionStatusFailed': 'Неуспешна проверка на състоянието на връзката', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Неуспешна инициализация на Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'За сканиране на устройства са необходими разрешения за Bluetooth и местоположение', + 'permissionRequestFailedWithError': 'Неуспешна заявка за разрешение: @error', + 'needPermission': 'Необходимо разрешение', + 'blePermissionDialogContent': + 'Това приложение изисква разрешения за Bluetooth и местоположение за сканиране на устройства. Моля, включете ги в Настройки.', + 'needEnableBluetooth': 'Включете Bluetooth', + 'enableBluetoothDialogContent': + 'Моля, включете Bluetooth за сканиране и свързване на устройства.', + 'bleScanFailedWithError': 'Неуспешно сканиране: @error', + 'bleConnectionSuccess': 'Успешно свързване', + 'bleConnectedToDevice': 'Свързан към @device', + 'bleConnectionFailedWithError': 'Неуспешно свързване: @error', + 'bleDisconnected': 'Прекъсната връзка', + 'bleDeviceDisconnected': 'Устройството е прекъснато', + 'bleDisconnectFailedWithError': 'Неуспешно прекъсване на връзката: @error', + 'signalStrong': 'Силен', + 'signalMedium': 'Среден', + 'signalWeak': 'Слаб', + 'signalVeryWeak': 'Много слаб', + + // 发现页 "searchAi": "Търсене на AI функции...", "exploreSlogan": "Интелигентни слушалки, безгранични възможности", "exploreSlogan1": "Интелигентен спътник, безгранични възможности", @@ -189,6 +214,7 @@ const Map bgBG = { "usageStats": "Статистика за използване", "usageStatsInfo": "Прегледвайте статистика за използване на приложението", "scene": "Сценарии", + // 用量统计模块 "aiChat": "AI чат", "translationStats": "Статистика за преводи", @@ -209,7 +235,6 @@ const Map bgBG = { "translationApi": "API за превод", "asr": "Разпознаване на реч", "tts": "Синтез на реч", - //"aiSummary": "AI резюме", "dataVolumeStats": "Статистика за обем данни", "sourceTextCharacters": "Символи в изходния текст", "ttsTextCharacters": "Символи в TTS текст", @@ -226,7 +251,6 @@ const Map bgBG = { "totalAudioDuration": "Обща продължителност на аудиото", "audioFileSize": "Размер на аудио файла", "transcriptBytes": "Байтове на транскрипцията", - // 通知文案 "loadFailed": "Неуспешно зареждане", "statsLoadFailedTryLater": "Неуспешно зареждане на статистиката. Моля, опитайте отново по-късно.", @@ -235,88 +259,84 @@ const Map bgBG = { "exportFeature": "Функция за експорт", "exportInDevelopment": "Експортът на данни е в процес на разработка", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Налични пакети', 'remainingQuota': 'Оставаща квота', 'totalQuota': 'Обща квота', 'remaining': 'Оставащо', 'featureDescription': 'Описание на функцията', - // AI 功能卡片 + 'paymentSuccess': 'Успешно плащане', + 'paymentFailed': 'Неуспешно плащане', + 'gotIt': 'Разбрах', + 'paymentFailedTryAgain': 'Неуспешно плащане. Моля, опитайте отново.', + 'selectPaymentMethod': 'Изберете начин на плащане', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Неуспешно създаване на поръчка в WeChat', + 'alipayOrderCreateFailed': 'Неуспешно създаване на поръчка в Alipay', + 'appleOrderCreateFailed': 'Неуспешно създаване на поръчка в Apple', + 'googleOrderCreateFailed': 'Неуспешно създаване на поръчка в Google', + 'paypalOrderCreateFailed': 'Неуспешно създаване на поръчка в PayPal', + 'paymentException': 'Изключение при плащане', + 'paymentLaunchFailed': 'Неуспешно стартиране на плащане', + 'paymentExceptionWithError': 'Изключение при плащане: @error', + 'paymentProcessingCheckLater': + 'Вашата поръчка се обработва. Моля, проверете по-късно.', + 'paymentResultQueryException': + 'Неуспешно запитване за резултат от плащане: @error', + 'orderConfirmedQuotaRefreshed': + 'Поръчката е потвърдена. Вашата квота е обновена.', + 'paymentCompletedConfirming': 'Плащането е завършено. Потвърждаване…', + 'paymentCancelled': 'Плащането е отменено', + 'paypalOpenedCompleteInBrowser': + 'PayPal е отворен. Моля, завършете плащането в браузъра.', + 'paypalOpenFailed': 'Не може да се отвори страницата за плащане с PayPal', + 'paymentTestTitle': 'Тест на плащане', + 'paymentTestOrderInfo': 'Информация за тестова поръчка', + 'paymentTestProductId': 'ID на продукта', + 'paymentTestProductDescription': 'Описание на продукта', + 'paymentTestWechatDescription': 'Тест на плащане с WeChat', + 'paymentTestAlipayDescription': 'Тест на плащане с Alipay', + 'paymentTestAmount': 'Сума', + 'paymentTestSelectAmount': 'Изберете тестова сума', + 'paying': 'Плащане...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Статус на плащането', + 'errorInfoWithMessage': 'Грешка: @message', + 'retest': 'Тестирай отново', + 'paymentTestInstructionsTitle': 'Инструкции', + 'paymentTestInstructionsContent': + '1. Изберете тестова сума (препоръчително: ¥0.01)\n2. Натиснете бутона за плащане, за да започнете\n3. Завършете плащането в приложението за плащане\n4. Върнете се, за да проверите резултата', + 'startingWechatPayment': 'Стартиране на WeChat Pay...', + 'startingAlipayPayment': 'Стартиране на Alipay...', + 'wechatPaymentSuccess': 'Успешно плащане с WeChat Pay!', + 'wechatPaymentFailed': 'Неуспешно плащане с WeChat Pay', + 'wechatPaymentLaunchFailed': 'Неуспешно стартиране на WeChat Pay', + 'cannotLaunchWechatPayment': 'Не може да се стартира WeChat Pay', + 'wechatPaymentException': 'Изключение в WeChat Pay', + 'wechatPaymentTestCompleted': 'Тестът на плащане с WeChat Pay е завършен', + 'alipayPaymentSuccess': 'Успешно плащане с Alipay!', + 'alipayPaymentFailed': 'Неуспешно плащане с Alipay', + 'alipayPaymentLaunchFailed': 'Неуспешно стартиране на Alipay', + 'cannotLaunchAlipayPayment': 'Не може да се стартира Alipay', + 'alipayPaymentException': 'Изключение в Alipay', + "insufficientIntegral": "Недостатъчно точки", + "insufficientBalanceDesc": + 'Недостатъчен баланс, моля отидете на съответната страница за презареждане.', + "recharge": 'Отиди към презареждане', + "aiMemberExpiredDesc": + 'AI членството изтече, моля отидете на страницата за презареждане на членство за подновяване.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Музика и препоръки', 'navigationAndRoutes': 'Навигация и маршрути', 'nearbySearch': 'Търсене наблизо', 'newsInformation': 'Новини', 'communicationAssistant': 'Комуникационен асистент', - // 翻译功能卡片 - 'realtimeTranscription': 'Транскрипция в реално време', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Сценариен речник', - 'subtitleDisplay': 'Субтитри', - // 会议功能卡片 - 'meetingRecording': 'Запис на среща', - 'transcriptionAndSummary': 'Транскрипция и резюме', - 'keywordSearch': 'Търсене по ключови думи', - 'collaborationSharing': 'Сътрудничество и споделяне', - // 商品名称(按ID) - 'ai_001_name': 'AI Базов 100', - 'ai_002_name': 'AI Базов 500', - 'ai_003_name': 'AI Базов 1000', - 'meet_001_name': 'Среща Базов 100', - 'meet_002_name': 'Среща Базов 500', - 'meet_003_name': 'Среща Базов 1000', - 'trans_001_name': 'Превод Базов 100', - 'trans_002_name': 'Превод Базов 500', - 'trans_003_name': 'Превод Базов 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Включва 100 използвания. Достъп до основни AI функции.', - 'ai_002_desc': 'Включва 500 използвания. Достъп до основни AI функции.', - 'ai_003_desc': 'Включва 1000 използвания. Достъп до основни AI функции.', - 'meet_001_desc': 'Включва 100 записа/транскрипции на срещи.', - 'meet_002_desc': 'Включва 500 записа/транскрипции на срещи.', - 'meet_003_desc': 'Включва 1000 записа/транскрипции на срещи.', - 'trans_001_desc': 'Включва 100 превода (глас/текст).', - 'trans_002_desc': 'Включва 500 превода (глас/текст).', - 'trans_003_desc': 'Включва 1000 превода (глас/текст).', - -// 商品页通用页脚 - 'appNameProvider': 'Приложение: VoiTrans · Предоставено от: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP обслужване на клиенти QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Аудио запис, транскрипция, търсене по ключови думи и автоматично резюме за повишаване на ефективността на срещите.', - 'meetingHeaderDesc2': - 'Подходящо за бизнес срещи, записки в клас и протоколи от интервюта.', - 'meetingAutoRecording': 'Автоматичен запис и сегментиране', - 'meetingSpeakerTagging': 'Етикетиране на говорителите', - 'meetingLongAudioTranscription': 'Транскрипция на дълго аудио', - 'meetingKeyPointSummary': 'Извличане на ключови точки', - 'meetingTopicNameSearch': 'Търсене по тема/име', - 'meetingTimelineJump': 'Скок във времевата линия', - 'meetingExportSummary': 'Експорт на протоколи', - 'meetingMultiPlatformShare': 'Споделяне между платформи', - 'meetingDisclaimer': - 'Използвайте в тиха среда; производителността зависи от микрофона и мрежата.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Едновременен превод в реално време и текстов превод с глас с ниска латентност.', - 'transHeaderDesc2': 'Подходящо за пътуване, бизнес, речи и обучение.', - 'translateZhEn': 'Китайско-английски превод', - 'lowLatencyVoiceBroadcast': 'Гласово излъчване с ниска латентност', - 'multiLangTextTranslation': 'Многоезичен текстов превод', - 'termOptimizationContextPreserve': - 'Оптимизация на терминологията и запазване на контекста', - 'lexiconTourBusinessLife': 'Речници за пътуване/бизнес/живот', - 'personalVocabularyMemory': 'Лична памет за речник', - 'conversationSubtitleLargeText': 'Субтитри за разговор / Режим с голям текст', - 'colorHighContrast': 'Висок цветови контраст', - 'transDisclaimer': - 'Производителността на превода зависи от микрофона, мрежовата латентност и околния шум.', - - // AI 商品页描述 'aiHeaderDesc1': 'По-голяма квота за разговори, повече повиквания на инструменти, удължена дължина на контекста.', 'aiHeaderDesc2': @@ -342,7 +362,46 @@ const Map bgBG = { 'aiDisclaimer': 'Функциите зависят от разрешенията на устройството, наличността на услугата и мрежовите условия.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Транскрипция в реално време', + 'sceneLexicon': 'Сценариен речник', + 'subtitleDisplay': 'Субтитри', + 'transHeaderDesc1': + 'Едновременен превод в реално време и текстов превод с глас с ниска латентност.', + 'transHeaderDesc2': 'Подходящо за пътуване, бизнес, речи и обучение.', + 'translateZhEn': 'Китайско-английски превод', + 'lowLatencyVoiceBroadcast': 'Гласово излъчване с ниска латентност', + 'multiLangTextTranslation': 'Многоезичен текстов превод', + 'termOptimizationContextPreserve': + 'Оптимизация на терминологията и запазване на контекста', + 'lexiconTourBusinessLife': 'Речници за пътуване/бизнес/живот', + 'personalVocabularyMemory': 'Лична памет за речник', + 'conversationSubtitleLargeText': 'Субтитри за разговор / Режим с голям текст', + 'colorHighContrast': 'Висок цветови контраст', + 'transDisclaimer': + 'Производителността на превода зависи от микрофона, мрежовата латентност и околния шум.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Запис на среща', + 'transcriptionAndSummary': 'Транскрипция и резюме', + 'keywordSearch': 'Търсене по ключови думи', + 'collaborationSharing': 'Сътрудничество и споделяне', + 'meetingHeaderDesc1': + 'Аудио запис, транскрипция, търсене по ключови думи и автоматично резюме за повишаване на ефективността на срещите.', + 'meetingHeaderDesc2': + 'Подходящо за бизнес срещи, записки в клас и протоколи от интервюта.', + 'meetingAutoRecording': 'Автоматичен запис и сегментиране', + 'meetingSpeakerTagging': 'Етикетиране на говорителите', + 'meetingLongAudioTranscription': 'Транскрипция на дълго аудио', + 'meetingKeyPointSummary': 'Извличане на ключови точки', + 'meetingTopicNameSearch': 'Търсене по тема/име', + 'meetingTimelineJump': 'Скок във времевата линия', + 'meetingExportSummary': 'Експорт на протоколи', + 'meetingMultiPlatformShare': 'Споделяне между платформи', + 'meetingDisclaimer': + 'Използвайте в тиха среда; производителността зависи от микрофона и мрежата.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Преглед на предимствата', 'higherQuota': 'По-висока квота за използване', 'lowerUnitPrice': 'По-ниска единична цена', @@ -358,7 +417,32 @@ const Map bgBG = { 'vipDisclaimer': 'Действителните предимства зависят от детайлите на пакета и могат да се променят с версиите.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Базов 100', + 'ai_002_name': 'AI Базов 500', + 'ai_003_name': 'AI Базов 1000', + 'meet_001_name': 'Среща Базов 100', + 'meet_002_name': 'Среща Базов 500', + 'meet_003_name': 'Среща Базов 1000', + 'trans_001_name': 'Превод Базов 100', + 'trans_002_name': 'Превод Базов 500', + 'trans_003_name': 'Превод Базов 1000', + 'ai_001_desc': 'Включва 100 използвания. Достъп до основни AI функции.', + 'ai_002_desc': 'Включва 500 използвания. Достъп до основни AI функции.', + 'ai_003_desc': 'Включва 1000 използвания. Достъп до основни AI функции.', + 'meet_001_desc': 'Включва 100 записа/транскрипции на срещи.', + 'meet_002_desc': 'Включва 500 записа/транскрипции на срещи.', + 'meet_003_desc': 'Включва 1000 записа/транскрипции на срещи.', + 'trans_001_desc': 'Включва 100 превода (глас/текст).', + 'trans_002_desc': 'Включва 500 превода (глас/текст).', + 'trans_003_desc': 'Включва 1000 превода (глас/текст).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Приложение: VoiTrans · Предоставено от: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP обслужване на клиенти QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Прескочи", 'next': 'Напред', 'sayLilyHint': 'Кажете "Lily Lily" на микрофона', @@ -370,7 +454,6 @@ const Map bgBG = { 'guideAwakenSuccess': 'Страхотно! Lily е будна—помолете я за помощ.', 'confirmInput': 'Потвърди въвеждането', 'guideClickSendPrefix': 'Натиснете изпрати, ', - // AI 引导步骤 'guideWeatherStart': 'Кажете на Lily: "Какво е времето днес?"', 'guideWeatherInput': 'Какво е времето днес?', 'guideWeatherSend': 'Lily ще докладва времето в реално време', @@ -399,7 +482,7 @@ const Map bgBG = { 'guideSmsSend': 'Lily ще изпрати съобщението', 'guideSmsEnd': 'Съобщението е изпратено—гласовият контрол е удобен', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Започни среща", 'edit': 'Редактирай', 'delete': 'Изтрий', @@ -411,8 +494,6 @@ const Map bgBG = { 'recordingDetails': 'Детайли на записа', 'aiSummary': 'AI резюме', 'meetingTranscript': 'Протокол от срещата', - - // Meeting模块 - 导航和基础功能 'files': 'Файлове', 'mine': 'Мои', 'connect': 'Свържи', @@ -447,24 +528,32 @@ 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': 'Анализиране...', 'summaryComplete': 'Обобщението завърши', - //'generating': '正在生成...', 'generate': 'Генерирай', 'overview': 'Преглед', 'transcription': 'Транскрипция', @@ -473,6 +562,99 @@ const Map bgBG = { 'editSpeaker': 'Редактирай', 'nameSpeaker': 'Име на говорител', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Обобщи отново', + 'dateAndTime': 'Дата и час', + 'location': 'Местоположение', + 'attendees': 'Участници', + 'inputLocation': 'Въведете местоположение', + 'inputAttendees': 'Въведете участници', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Избери шаблон за резюме', + 'useThisTemplate': 'Използвай този шаблон', + 'lastUsed': 'Последно използвано', + 'create': 'Създай', + 'templateDetails': 'Детайли на шаблона', + 'tag': 'Етикет', + 'description': 'Описание', + 'template': 'Шаблон', + 'deleteTemplate': 'Изтрий шаблон', + 'deleteTemplateConfirm': 'Сигурни ли сте, че искате да изтриете този шаблон?', + 'editTemplate': 'Редактирай шаблон', + 'createTemplate': 'Създай шаблон', + 'name': 'Име', + 'templateContentHint': + 'Моля, въведете съдържание на шаблона! Съвет: Натиснете бутона AI по-горе, за да генерирате бързо съдържание на шаблон въз основа на въведеното от вас име и описание', + 'inputNameHint': 'Моля, въведете име', + 'inputDescHint': 'Моля, въведете описание', + 'custom': 'Персонализиран', + 'pleaseEnter': 'Моля, въведете', + 'viewAll': 'Виж всички', + 'recordingLanguage': 'Език на записа', + 'chineseSimplified': 'Китайски мандарин (Опростен)', + 'meetingGenerateNow': 'Генерирай сега', + 'keyEventsAnalyzed': 'Анализирани {count} ключови събития.', + 'aiAnalysisDesc': + 'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.', + + // Meeting模块 - 文件操作 + 'importing': 'Импортиране...', + 'batchImporting': 'Пакетно импортиране...', + 'importingLocalRecordings': 'Импортиране на локални записи...', + 'importFailed': 'Неуспешен импорт на файл: {filePath}, грешка: {error}', + 'importSuccess': 'Успешно импортирани {count} локални записа', + 'importError': 'Неуспешен импорт: {error}', + 'pleaseSelectAudioFile': 'Моля, изберете аудио файл', + 'shareAudio': 'Споделяне на аудио от срещата', + 'shareComplete': 'Споделянето завърши!', + 'shareFailed': 'Неуспешно споделяне: {error}', + 'fileProcessingFailed': + 'Неуспешна обработка на файл: {filePath}, грешка: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Запази интелектуална карта', + 'shareMindMap': 'Споделяне на мисловна карта', + 'shareSuccess': 'Успешно споделяне', + + // Meeting模块 - AI问答 + 'askAI': 'Попитай AI...', + 'askAIPrompt': 'С какво мога да ви помогна днес?', + 'continueAsk': 'Продължи с въпроси', + 'todoList': 'Списък със задачи', + 'extractConclusion': 'Извлечи заключение', + 'generateKeyIndicators': 'Генерирай ключови показатели', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Споделяне на връзка', + 'copyTranscript': 'Копиране на протокола', + 'copySummary': 'Копиране на резюмето', + 'exportAudio': 'Експортиране на аудио', + 'exportTranscript': 'Експортиране на протокола', + 'shareMeetingAudio': 'Споделяне на аудио от срещата', + 'exportSummary': 'Експортиране на резюмето', + 'exportAs': 'Експортирай като', + 'exportingPDF': 'Експортиране на PDF...', + 'export': 'Експортиране', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител', + 'summaryWillBeUpdatedAutomatically': + 'Резюмето ще се обновява автоматично според шаблона', + 'nameCurrentSpeaker': 'Именувай текущия говорител', + 'recentlyUsedNames': 'Скоро използвани имена', + 'applyToCurrentParagraph': 'Приложи към текущия абзац', + 'totalTime': 'Общо време', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Синхронизирай в облака', + 'syncToCloudTip': + 'Автоматично синхронизирайте записите си в облака. Можете да възпроизвеждате, управлявате и споделяте записи чрез всяко приложение VOITRANS или VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Синхронизирай с VOITRANS APP', + 'transcriptionRecord': 'Запис на транскрипция', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Записи на транскрипции', 'templateCommunity': 'Общност за шаблони', @@ -492,7 +674,7 @@ const Map bgBG = { 'Свържи Voitrans устройство за активиране на стартово членство', 'unlockNow': 'Отключи сега', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Сравнение', 'detailedInfo': 'Детайлна информация', 'monthlyTranscriptionTime': 'Месечно време за транскрипция', @@ -528,8 +710,6 @@ const Map bgBG = { 'Лесно импортиране на аудио файлове от локални или приложения на трети страни, като гласови бележки, Google Drive и др.', 'multipleExportFormatsDesc': 'Експортирайте вашите аудио записи, транскрипционен текст и резюмета в различни формати (TXT, PDF, JPEG), за да отговорите на нуждите си.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Надстройте членството си', 'yearlySubscription': 'Годишен абонамент', 'monthlySubscription': 'Месечен абонамент', @@ -559,105 +739,27 @@ const Map bgBG = { 'Активира се веднага след покупка, валидно за 2 години след активация.', 'purchase': 'Покупка', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Избери шаблон за резюме', - 'useThisTemplate': 'Използвай този шаблон', - 'lastUsed': 'Последно използвано', - 'viewAll': 'Виж всички', - 'recordingLanguage': 'Език на записа', - 'chineseSimplified': 'Китайски мандарин (Опростен)', - 'meetingGenerateNow': 'Генерирай сега', - 'keyEventsAnalyzed': 'Анализирани {count} ключови събития.', - 'aiAnalysisDesc': - 'AI анализът идентифицира ключови събития в записите, позволявайки ви да изберете важни събития за AI генериране.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Приложи към всички абзаци на този говорител', - 'summaryWillBeUpdatedAutomatically': - 'Резюмето ще се обновява автоматично според шаблона', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Език на записа', + 'cantonese': 'Кантонски', + 'sichuan': 'Съчуански диалект', + 'shanghai': 'Шанхайски диалект', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Неизвестен език', + 'analysisFailed': 'Анализът не успя, моля опитайте отново по-късно', + 'transcriptionFailed': + 'Транскрипцията не успя, моля опитайте отново по-късно', + 'summaryFailed': 'Обобщението не успя, моля опитайте отново по-късно', + 'summaryFailedShort': 'Неуспешно обобщение', + 'transcriptionFailedShort': 'Неуспешна транскрипция', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудио плейърът не е готов, моля изчакайте', + 'playFailed': 'Неуспешно възпроизвеждане', + 'audioFileNotFound': 'Аудио файлът не е намерен', + 'fetchingAudio': 'Извличане на аудио от облака...', + 'playerLoadFailed': 'Аудио плейърът не успя да се зареди', // 设置页 "systemSettings": "Системни настройки", @@ -666,10 +768,10 @@ const Map bgBG = { "translationRecharge": "Преплащане за превод", "meetingAssistantRecharge": "Преплащане за Сообщението", "cloudSync": "Преплащане за синхронизация в облака", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Членско обслужване", + "bindRewardTitle": "Награди", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Наградата за първо свързване на устройство е издадена. Натиснете ОК за затваряне.", "joinDevice": "Свързано устройство:", "accountId": "ID на акаунта:", "systemSetting": "Системни настройки", @@ -710,26 +812,15 @@ const Map bgBG = { "bleHeadsetFirmwareUpgrade": "Актуализация на фърмуера на BLE слушалките", "deviceManagement": "Управление на устройства", "manageConnectedDevices": "Управление на свързани Bluetooth устройства", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'В момента е най-новата версия {version}', 'checkUpdateFailed': 'Неуспешна проверка за актуализации', 'networkErrorRetry': 'Мрежова грешка, моля опитайте отново по-късно', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Гласов разговор в реално време", "realtimeVoiceChatInfo": "Изпитайте интелигентната гласова интерактивна функция (предварителен преглед)", "loading": "Зареждане...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Неизвестно устройство", "deviceTypeClassicBluetoothHeadset": "Класически Bluetooth слушалки", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth слушалки", @@ -745,8 +836,7 @@ const Map bgBG = { "Сигурни ли сте, че искате да развържете устройство \"{deviceName}\"?", "confirmUnbindAction": "Потвърдете развързването", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Изчисти историята на чата", "online": "Онлайн", @@ -776,8 +866,10 @@ const Map bgBG = { "swipeUpForMore": "Плъзнете нагоре за повече", "callingTool": "Помагам ви, моля изчакайте!", // 正在帮您,请稍等! "voice_interrupt": "Прекъсване", // 语音打断 + 'voice_interrupt_tip': + 'Когато е включено: AI няма да бъде прекъснат от гласа ви, докато говори, и може да обработва само един кръг от разговор наведнъж. За да започнете нов кръг, просто кажете думата за събуждане.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Пусни малко музика", // 来点音乐 "presetNavigation": "Навигация до", // 导航 "presetWeather": "Времето днес", // 今日天气 @@ -789,7 +881,7 @@ const Map bgBG = { "todayNews": "Какви са новините днес?", // 今日新闻 "nearbyFood": "Каква вкусна храна има наблизо?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Здравейте! Аз съм **Сяо Ян**, мога да ви помогна с:\n\n' '• Отговаряне на въпроси и предоставяне на информация\n\n' '• Превод на глас в реално време\n\n' @@ -810,18 +902,17 @@ const Map bgBG = { 'startPhoneCallMode': 'Започни режим на телефонно обаждане, започни гласово въвеждане', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Въведете съобщението си тук...', // 全屏编辑器输入提示 'characterCount': '{count} символа', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копирай', 'copySuccess': 'Успешно копиране', 'report': 'Докладвай', 'submitSuccess': 'Успешно изпращане', 'submitFailed': 'Неуспешно изпращане', 'reportSubmitted': 'Докладът е изпратен, ще го обработим възможно най-скоро', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Вредно/небезопасно', 'pornographicVulgar': 'Порнографско/вулгарно', 'misleadingAttack': 'Подвеждаща атака', @@ -831,17 +922,21 @@ const Map bgBG = { 'other': 'Друго', 'reportDescriptionHint': 'Искаме да знаем причината за доклада ви, можете да опишете проблема, с който сте се сблъскали.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Генерирано от AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Извикване на инструмент', + 'noResult': 'Няма резултат', + 'noToolCallContentToCopy': 'Няма съдържание за копиране', + 'toolCallDetails': 'Детайли на извикването:', + 'toolCallContentCopied': 'Съдържанието е копирано в клипборда', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ето някои препоръчани музики:', 'playList': 'Плейлист', 'moreMusic': 'Повече музика', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'километра', // 公里单位 'meters': 'метра', // 米单位 'hours': 'часа', // 小时单位 @@ -856,7 +951,31 @@ const Map bgBG = { "bicycling": "Колоездене", "tsransit": "Обществен транспорт", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Избери навигационно приложение', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Навигирай с Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Навигирай с Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Навигирай с Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Навигирай с Apple Maps', + 'builtInNavigation': 'Вградена навигация', + 'useBuiltInNavigation': 'Навигирай с вградена карта', + 'navigationStartFailed': 'Неуспешно стартиране на навигацията', + 'cannotPlayMusicListRetryLater': + 'Не може да се възпроизведе музикалният списък, моля опитайте отново по-късно', + 'cannotPlaySong': 'Не може да се възпроизведе песен', + 'openMapError': 'Грешка при отваряне на картата', + 'pleaseInstallAmapApp': 'Моля, първо инсталирайте приложението Amap', + 'pleaseInstallBaiduMapApp': + 'Моля, първо инсталирайте приложението Baidu Maps', + 'appleMapStartFailed': 'Неуспешно стартиране на Apple Maps', + 'appleMapUnavailable': 'Apple Maps не е налично', + 'openAppleMapError': 'Грешка при отваряне на Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Заявка за времето:', 'highest': 'Най-висока', 'lowest': 'Най-ниска', @@ -886,18 +1005,8 @@ const Map bgBG = { "friday": "Петък", "saturday": "Събота", "sunday": "Неделя", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Награда за добре дошли", - "firstBindRewardDesc": "Получихте награди за свързване.", - "vipLevelLabel": "VIP ниво:", - "expiryLabel": "Изтичане:", - "notActivated": "Неактивирано", - "aiChatCreditsLabel": "AI чат кредити:", - "translationCreditsLabel": "Кредити за превод:", - "meetingCreditsLabel": "Кредити за срещи:", - "ok": "ОК", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Слънчево", "partlyCloudy": "Малко облачно", "partlySunny": "Слънчево с облаци", @@ -918,350 +1027,43 @@ const Map bgBG = { "haze": "Мъгла", "strongWind": "Силен вятър", - //编辑个人信息页 - "editProfile": "Редактирай личната информация", - "avatar": "Аватар", - "nickname": "Прякор", - "save": "Запази", - "about": "За", - "enterNickname": "Моля въведете прякор", - "notSet": "Не е зададено", - "accountSetting": "Настройки на акаунта", - "logout": "Излизане", - "logoutTips": "Сигурни ли сте, че искате да излезете от текущия акаунт?", - 'deleteAccount': 'Изтрий акаунт', - 'deleteAccountTips': - 'Сигурни ли сте, че искате да изтриете завинаги акаунта си? Тази операция не може да бъде отменена', - 'clean': 'Изчисти кеша', - 'cleanTips': 'Сигурни ли сте, че искате да изчистите личния кеш?', + // 翻译模块 - 中间层 + "pictureTranslation": "Превод на снимки", + "textTranslation": "Текстов превод", - // Profile 错误信息 - 'networkConnectionFailed': - 'Неуспешна мрежова връзка, моля проверете мрежовите настройки и опитайте отново', - 'serverTemporarilyUnavailable': - 'Сървърът временно не може да отговори, моля опитайте отново по-късно', - 'loginExpiredPleaseRelogin': 'Влизането е изтекло, моля влезте отново', - 'noPermissionForThisOperation': 'Няма разрешение за тази операция', - 'requestedResourceNotFound': 'Заявеният ресурс не съществува', - 'imageProcessingFailedPleaseReselect': - 'Неуспешна обработка на изображението, моля изберете отново изображение', - 'operationFailedPleaseRetry': 'Неуспешна операция, моля опитайте отново', - 'serverReturnedError': 'Сървърът върна грешка', - 'serverError': 'Грешка в сървъра', - 'networkConnectionFailedCheckSettings': - 'Неуспешна мрежова връзка, моля проверете мрежовите настройки', - 'serverInternalErrorRetryLater': - 'Вътрешна грешка в сървъра, моля опитайте отново по-късно', + // 翻译模块 - 主页 + "translationHistory": "История на преводите", + "enableRecording": "Включи записването", + "viewAudioFiles": "Виж аудио файловете", + "headsetUser": "Потребител на слушалки", + "phoneUser": "Потребител на телефон", + "selectSourceLanguage": "Избери изходен език", + "selectTargetLanguage": "Избери целеви език", + "me": "Аз", + "counterPart": "Събеседник", + "bluetoothCallStateError": + "Моля уверете се, че Bluetooth слушалките са свързани с телефона и са в състояние на разговор", + "autoDetect": "Автоматично откриване", // 自动检测 -// Profile 用户交互 -//'error': '错误', -//'success': '成功', - 'imageCompressionFailed': 'Неуспешно компресиране на изображението', - 'avatarUpdateFailed': 'Неуспешна актуализация на аватара', - 'usernameCannotBeEmpty': 'Потребителското име не може да бъде празно', - 'saveSuccess': 'Успешно запазване', - 'personalInfoUpdated': 'Личната информация е актуализирана', - 'saveFailed': 'Неуспешно запазване', - 'loggedOut': 'Излязохте от акаунта', - 'logoutFailedRetry': 'Неуспешно излизане, моля опитайте отново', - 'accountPermanentlyDeleted': 'Акаунтът е изтрит завинаги', - 'deleteAccountFailedRetry': - 'Неуспешно изтриване на акаунта, моля опитайте отново', + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Неуспешно откриване на езика", - // 账号服务相关 - 'clearUserDataFailed': - 'Неуспешно изчистване на потребителските данни', // 清理用户数据失败 - 'deleteUserDataFailed': - 'Неуспешно изтриване на потребителските данни', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Успешно излизане от трета страна', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': 'Неуспешно излизане от трета страна', // 第三方登录退出失败 - 'signOutProcessError': 'Грешка в процеса на излизане', // 登出过程发生错误 - 'deleteAccountProcessError': - 'Грешка в процеса на изтриване на акаунта', // 删除账号过程发生错误 - 'userDataClearSuccess': - 'Успешно изчистване на потребителските данни', // 用户数据清理成功 - 'allUserDataClearSuccess': - 'Успешно изчистване на всички потребителски данни', // 所有用户数据清理成功 - 'accountServiceInitialized': - 'AccountService е инициализиран', // AccountService 已初始化 - - // 权限管理页面 - 'getPermissionStatusFailed': - 'Неуспешно получаване на състоянието на разрешенията', - 'communicationPermissions': 'Разрешения за комуникация', - 'bluetoothPermissions': 'Bluetooth разрешения', - 'notificationPermissions': 'Разрешения за известия', - 'storagePermissions': 'Разрешения за съхранение', - 'microphonePermissions': 'Разрешения за микрофон', - 'alarmPermissions': 'Разрешения за аларма', - 'calendarPermissions': 'Разрешения за календар', - 'locationPermissions': 'Разрешения за местоположение', - 'phone': 'Телефон', - 'sms': 'SMS', - 'contacts': 'Контакти', - //'bluetooth': '蓝牙', - 'notification': 'Известия', - 'alarm': 'Аларма', - 'calendarWrite': 'Писане в календара', - 'calendarFullAccess': 'Пълен достъп до календара', - 'locationInfo': 'Информация за местоположението', - 'phonePermissionDesc': 'Използва се за функцията за телефонни обаждания', - 'smsPermissionDesc': 'Използва се за функцията за изпращане на SMS', - 'alarmPermissionDesc': - 'Използва се за задаване на точни аларми, за да се гарантира, че напомнянията се задействат навреме', - 'calendarWritePermissionDesc': - 'Използва се за създаване на календарни събития и напомняния', - 'calendarFullAccessPermissionDesc': - 'Използва се за четене и управление на календарни събития и напомняния', - 'locationPermissionDesc': - 'Използва се за получаване на информация за текущото местоположение', - 'appFunctionNeeds': 'Функцията на приложението се нуждае от', - 'authorized': 'Разрешено', - 'unauthorized': 'Неразрешено', - 'needOpenInSystemSettings': 'Трябва да се включи в системните настройки', - 'partialAuthorization': 'Частично разрешение', - 'unknownStatus': 'Неизвестно състояние', - 'permissionGranted': 'Разрешението е предоставено', - 'permissionRequestError': 'Грешка при заявяване на разрешение', - 'phonePermissionDetailDesc': - 'Функцията за телефонни обаждания се нуждае от разрешение за телефон', - 'smsPermissionDetailDesc': - 'Функцията за изпращане на SMS се нуждае от SMS разрешение', - 'alarmPermissionDetailDesc': - 'Това разрешение е необходимо за задаване на точни аларми и гарантиране, че напомнянията се задействат навреме', - 'calendarWritePermissionDetailDesc': - 'Създаването на календарни събития се нуждае от разрешение за писане в календара', - 'calendarFullAccessPermissionDetailDesc': - 'Управлението на календарни събития се нуждае от пълно разрешение за календара', - 'locationPermissionDetailDesc': - 'Получаването на информация за местоположението се нуждае от разрешение за местоположение', - 'contactsPermissionDesc': 'Използва се за достъп до информация за контакти', - 'contactsPermissionDetailDesc': - 'Функционалността за телефонни разговори и SMS изисква разрешение за контакти за избор на контакти', - 'bluetoothPermissionDesc': - 'Използва се за свързване и управление на Bluetooth устройства', - 'bluetoothPermissionDetailDesc': - 'Свързването с Bluetooth слушалки и други устройства изисква Bluetooth разрешение', - 'bluetoothScanPermissionDesc': - 'Използва се за сканиране на близки Bluetooth устройства', - 'bluetoothScanPermissionDetailDesc': - 'Сканирането за близки Bluetooth устройства изисква разрешение за Bluetooth сканиране', - 'bluetoothConnectPermissionDesc': - 'Използва се за свързване с Bluetooth устройства', - 'bluetoothConnectPermissionDetailDesc': - 'Свързването с Bluetooth устройства изисква разрешение за Bluetooth свързване', - 'notificationPermissionDesc': - 'Използва се за изпращане на уведомителни съобщения', - 'notificationPermissionDetailDesc': - 'Приложението се нуждае от разрешение за известия, за да ви изпраща важни сигнали и съобщения', - 'appNeedsPermissionForFullFunction': - 'Приложението се нуждае от това разрешение за да предостави пълна функционалност', - 'permanentDenialText': - 'Вие сте отказали постоянно разрешението за {permission}, моля отидете в настройките на приложението за да го включите', - 'goToSettings': 'Отиди в настройки', - - // 权限申请 - 'bluetoothScan': 'Bluetooth сканиране', - 'bluetoothConnect': 'Bluetooth свързване', - 'bluetoothScanExplanation': - 'Приложението се нуждае от разрешение за Bluetooth сканиране, за да сканира близки Bluetooth устройства.', - 'bluetoothConnectExplanation': - 'Приложението се нуждае от разрешение за Bluetooth свързване, за да се свързва с Bluetooth устройства.', - 'locationForBluetoothExplanation': - 'Приложението се нуждае от разрешение за местоположение, за да сканира Bluetooth устройства.', - 'bluetoothScanPermanentDenial': - 'Разрешението за Bluetooth сканиране е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', - 'bluetoothConnectPermanentDenial': - 'Разрешението за Bluetooth свързване е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', - 'locationPermanentDenial': - 'Разрешението за местоположение е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', - 'notificationPermission': 'Известия', - 'locationPermission': 'Местоположение', - 'notificationPermissionExplanation': - 'Разрешението за известия е необходимо за показване на състоянието на възпроизвеждане на музика.', - 'locationPermissionExplanation': - 'Разрешението за местоположение е необходимо за получаване на текущото местоположение.', - 'notificationPermissionPermanentDenial': - 'Постоянно сте отказали разрешение за известия, моля отидете в настройките, за да го включите.', - 'locationPermissionPermanentDenial': - 'Постоянно сте отказали разрешение за местоположение, моля отидете в настройките, за да го включите.', -//'microphonePermission': '录音', - 'storagePermission': 'Съхранение', - 'microphonePermissionExplanation': - 'Нуждаем се от разрешение за микрофон, за да записваме аудио съдържание.', - 'storagePermissionExplanation': - 'Нуждаем се от разрешение за съхранение, за да избирате и качвате аудио файлове.', - 'microphonePermissionPermanentDenial': - 'Разрешението за микрофон е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за микрофон.', - 'storagePermissionPermanentDenial': - 'Разрешението за съхранение е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.', - - //permission_util.dart - 'permissionUtilNeed': 'Нужно е ', - 'permissionUtilPermission': ' разрешение', - 'permissionUtilRestricted': ' Разрешението е ограничено', - 'permissionUtilRestrictedMessage': - 'Тази функция е недостъпна или ограничена на текущото устройство, моля проверете настройките на устройството или системните ограничения', - 'permissionUtilConfirm': 'ОК', - - // 版本更新对话框 - 'newVersionFound': 'Намерена е нова версия', // 版本更新对话框标题 - 'remindLater': 'Напомни по-късно', // 稍后提醒按钮 - 'updateNow': 'Актуализирай сега', // 立即更新按钮 - 'checkUpdate': 'Провери за актуализации', // 检查更新按钮 - 'updateFailed': 'Неуспешна актуализация', // 更新失败提示 - 'cannotOpenAppStore': - 'Не може да се отвори магазинът за приложения, моля отидете ръчно в магазина за актуализация', // 无法打开应用商店提示 - 'updateErrorRetry': - 'Възникна грешка по време на актуализацията, моля опитайте отново по-късно', // 更新错误重试提示 - - //国家列表 - "邮箱": "Имейл", - "中国": "Китай", - "美国": "САЩ", - "加拿大": "Канада", - "俄罗斯": "Русия", - "英国": "Великобритания", - "德国": "Германия", - "意大利": "Италия", - "法国": "Франция", - "西班牙": "Испания", - "南非": "Южна Африка", - "沙特阿拉伯": "Саудитска Арабия", - "土耳其": "Турция", - "日本": "Япония", - "韩国": "Южна Корея", - "新加坡": "Сингапур", - "马来西亚": "Малайзия", - "泰国": "Тайланд", - "越南": "Виетнам", - "印度": "Индия", - "巴基斯坦": "Пакистан", - "菲律宾": "Филипини", - "印度尼西亚": "Индонезия", - "阿联酋": "ОАЕ", - "墨西哥": "Мексико", - "巴西": "Бразилия", - "阿根廷": "Аржентина", - "澳大利亚": "Австралия", - "新西兰": "Нова Зеландия", - "中国香港": "Хонг Конг", - "中国澳门": "Макао", - "中国台湾": "Тайван", - "埃及": "Египет", - "希腊": "Гърция", - "荷兰": "Холандия", - "比利时": "Белгия", - "匈牙利": "Унгария", - "罗马尼亚": "Румъния", - "瑞士": "Швейцария", - "奥地利": "Австрия", - "丹麦": "Дания", - "瑞典": "Швеция", - "挪威": "Норвегия", - "波兰": "Полша", - "秘鲁": "Перу", - "智利": "Чили", - "哥伦比亚": "Колумбия", - "委内瑞拉": "Венецуела", - "葡萄牙": "Португалия", - "卢森堡": "Люксембург", - "爱尔兰": "Ирландия", - "冰岛": "Исландия", - "阿尔巴尼亚": "Албания", - "马耳他": "Малта", - "塞浦路斯": "Кипър", - "芬兰": "Финландия", - "保加利亚": "България", - "立陶宛": "Литва", - "拉脱维亚": "Латвия", - "爱沙尼亚": "Естония", - "乌克兰": "Украйна", - "塞尔维亚": "Сърбия", - "克罗地亚": "Хърватия", - "斯洛文尼亚": "Словения", - "捷克": "Чехия", - "斯洛伐克": "Словакия", - "危地马拉": "Гватемала", - "萨尔瓦多": "Салвадор", - "洪都拉斯": "Хондурас", - "尼加拉瓜": "Никарагуа", - "哥斯达黎加": "Коста Рика", - "巴拿马": "Панама", - "海地": "Хаити", - "玻利维亚": "Боливия", - "厄瓜多尔": "Еквадор", - "巴拉圭": "Парагвай", - "乌拉圭": "Уругвай", - "摩洛哥": "Мароко", - "阿尔及利亚": "Алжир", - "突尼斯": "Тунис", - "尼日利亚": "Нигерия", - "加纳": "Гана", - "埃塞俄比亚": "Етиопия", - "肯尼亚": "Кения", - "坦桑尼亚": "Танзания", - "乌干达": "Уганда", - "孟加拉国": "Бангладеш", - "以色列": "Израел", - "黎巴嫩": "Ливан", - "约旦": "Йордания", - "伊拉克": "Ирак", - "科威特": "Кувейт", - "巴林": "Бахрейн", - "卡塔尔": "Катар", - "阿曼": "Оман", - "阿富汗": "Афганистан", - "斯里兰卡": "Шри Ланка", - "缅甸": "Мианмар", - "尼泊尔": "Непал", - "蒙古": "Монголия", - "柬埔寨": "Камбоджа", - "老挝": "Лаос", - "文莱": "Бруней", - "东帝汶": "Източен Тимор", - "斐济": "Фиджи", - "所罗门群岛": "Соломонови острови", - "刚果民主共和国": "Демократична република Конго", - "安哥拉": "Ангола", - "苏丹": "Судан", - "马尔代夫": "Малдиви", - "不丹": "Бутан", - "摩纳哥": "Монако", - "圣马力诺": "Сан Марино", - "牙买加": "Ямайка", - "巴哈马": "Бахами", - "巴布亚新几内亚": "Папуа Нова Гвинея", - "萨摩亚": "Самоа", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Превод на снимки", - "textTranslation": "Текстов превод", - - // 翻译主页 (translation_view.dart) - "translationHistory": "История на преводите", - "enableRecording": "Включи записването", - "viewAudioFiles": "Виж аудио файловете", - "headsetUser": "Потребител на слушалки", - "phoneUser": "Потребител на телефон", - "selectSourceLanguage": "Избери изходен език", - "selectTargetLanguage": "Избери целеви език", - "me": "Аз", - "counterPart": "Събеседник", - "bluetoothCallStateError": - "Моля уверете се, че Bluetooth слушалките са свързани с телефона и са в състояние на разговор", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Автоматично откриване", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Неуспешно откриване на езика", + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Изключи плаващ прозорец', + 'enableFloatingWindow': 'Включи плаващ прозорец', + 'permissionTip': 'Съвет за разрешение', + 'micPermissionRequiredForRecording': + 'За записване е необходимо разрешение за микрофон', + 'deleteTranslationRecordError': + 'Грешка при изтриване на запис за превод: @error', "translationFailed": "Неуспешен превод", + "translating": "Превеждане", + "translate": "Преведи", "pleaseInputText": "Моля въведете текст", + "inputTextToTranslate": "Моля, въведете текста за превод", "textTooLong": "Текстът е твърде дълъг, макс 5000 символа", - // 翻译历史页 + // 翻译模块 - 历史记录 "noTranslationHistory": "Няма история на преводи", "historyRecords": "Исторически записи", "clearResults": "Изчисти резултатите", @@ -1273,7 +1075,7 @@ const Map bgBG = { "deleteSessionConfirm": "Сигурни ли сте, че искате да изтриете всички записи на преводи за тази сесия? Тази операция не може да бъде отменена.", - // 图片翻译模块(Picture Translation) + // 翻译模块 - 图片翻译 "selectImageSource": "Избери източник на изображение", "imagePreview": "Преглед на изображение", "translationResult": "Резултат от превода", @@ -1327,7 +1129,7 @@ const Map bgBG = { "translationTime": "Време на превод", "shareInDevelopment": "Функцията за споделяне е в процес на разработка", - // 翻译录音文件列表页 + // 翻译模块 - 录音文件 "translateAudioFiles": "Преведи аудио файлове", "noAudioFiles": "Няма аудио файлове", "calculating": "Изчисляване...", @@ -1339,32 +1141,234 @@ const Map bgBG = { "renameAudioFile": "Преименувай аудио файла", "enterNewFileName": "Моля въведете новото име на файла", - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригинален запис", - "recordSummary": "Резюме на записа", - "clickToGenerateSummary": - "Кликнете бутона отдолу за да генерирате резюме на сесията", - "summaryContent": "Съдържание на резюмето", - "copied": "Копирано", - "summaryCopiledToClipboard": "Резюмето е копирано в клипборда", - "extractSummary": "Извлечи резюме", - "summaryGenerated": "Резюмето е генерирано", - "generating": "Генериране...", - "regenerate": "Регенерирай", - "summaryTimeoutMessage": - "Заявката за генериране на резюме изтече, възможно е да има мрежов проблем или сървърът да е зает.", - "deleteTranslationRecord": "Изтрий записа на превода", - "deleteTranslationConfirm": - "Сигурни ли сте, че искате да изтриете този запис на превод? Тази операция не може да бъде отменена.", - "originalText": "Оригинален текст", - "translatedText": "Преведен текст", - "sessionSummary": "Резюме на сесията", - "cannotShare": "Не може да се сподели", - "generateSummaryFirst": "Моля първо генерирайте резюме", - "translationSessionRecord": "Запис на сесията за превод", + // 翻译模块 - 翻译详情 + "originalRecord": "Оригинален запис", + "recordSummary": "Резюме на записа", + "clickToGenerateSummary": + "Кликнете бутона отдолу за да генерирате резюме на сесията", + "summaryContent": "Съдържание на резюмето", + "copied": "Копирано", + "summaryCopiledToClipboard": "Резюмето е копирано в клипборда", + "extractSummary": "Извлечи резюме", + "summaryGenerated": "Резюмето е генерирано", + "generating": "Генериране...", + "regenerate": "Регенерирай", + "summaryTimeoutMessage": + "Заявката за генериране на резюме изтече, възможно е да има мрежов проблем или сървърът да е зает.", + "deleteTranslationRecord": "Изтрий записа на превода", + "deleteTranslationConfirm": + "Сигурни ли сте, че искате да изтриете този запис на превод? Тази операция не може да бъде отменена.", + "originalText": "Оригинален текст", + "translatedText": "Преведен текст", + "sessionSummary": "Резюме на сесията", + "cannotShare": "Не може да се сподели", + "generateSummaryFirst": "Моля първо генерирайте резюме", + "translationSessionRecord": "Запис на сесията за превод", + + // 个人资料模块 + "editProfile": "Редактирай личната информация", + "avatar": "Аватар", + "nickname": "Прякор", + "save": "Запази", + "about": "За", + "enterNickname": "Моля въведете прякор", + "notSet": "Не е зададено", + "accountSetting": "Настройки на акаунта", + "logout": "Излизане", + "logoutTips": "Сигурни ли сте, че искате да излезете от текущия акаунт?", + 'deleteAccount': 'Изтрий акаунт', + 'deleteAccountTips': + 'Сигурни ли сте, че искате да изтриете завинаги акаунта си? Тази операция не може да бъде отменена', + 'clean': 'Изчисти кеша', + 'cleanTips': 'Сигурни ли сте, че искате да изчистите личния кеш?', + 'networkConnectionFailed': + 'Неуспешна мрежова връзка, моля проверете мрежовите настройки и опитайте отново', + 'serverTemporarilyUnavailable': + 'Сървърът временно не може да отговори, моля опитайте отново по-късно', + 'loginExpiredPleaseRelogin': 'Влизането е изтекло, моля влезте отново', + 'noPermissionForThisOperation': 'Няма разрешение за тази операция', + 'requestedResourceNotFound': 'Заявеният ресурс не съществува', + 'imageProcessingFailedPleaseReselect': + 'Неуспешна обработка на изображението, моля изберете отново изображение', + 'operationFailedPleaseRetry': 'Неуспешна операция, моля опитайте отново', + 'serverReturnedError': 'Сървърът върна грешка', + 'serverError': 'Грешка в сървъра', + 'networkConnectionFailedCheckSettings': + 'Неуспешна мрежова връзка, моля проверете мрежовите настройки', + 'serverInternalErrorRetryLater': + 'Вътрешна грешка в сървъра, моля опитайте отново по-късно', + 'imageCompressionFailed': 'Неуспешно компресиране на изображението', + 'avatarUpdateFailed': 'Неуспешна актуализация на аватара', + 'usernameCannotBeEmpty': 'Потребителското име не може да бъде празно', + 'saveSuccess': 'Успешно запазване', + 'personalInfoUpdated': 'Личната информация е актуализирана', + 'saveFailed': 'Неуспешно запазване', + 'loggedOut': 'Излязохте от акаунта', + 'logoutFailedRetry': 'Неуспешно излизане, моля опитайте отново', + 'accountPermanentlyDeleted': 'Акаунтът е изтрит завинаги', + 'deleteAccountFailedRetry': + 'Неуспешно изтриване на акаунта, моля опитайте отново', + 'clearUserDataFailed': + 'Неуспешно изчистване на потребителските данни', // 清理用户数据失败 + 'deleteUserDataFailed': + 'Неуспешно изтриване на потребителските данни', // 删除用户数据失败 + 'thirdPartyLogoutSuccess': 'Успешно излизане от трета страна', // 第三方登录退出成功 + 'thirdPartyLogoutFailed': 'Неуспешно излизане от трета страна', // 第三方登录退出失败 + 'signOutProcessError': 'Грешка в процеса на излизане', // 登出过程发生错误 + 'deleteAccountProcessError': + 'Грешка в процеса на изтриване на акаунта', // 删除账号过程发生错误 + 'userDataClearSuccess': + 'Успешно изчистване на потребителските данни', // 用户数据清理成功 + 'allUserDataClearSuccess': + 'Успешно изчистване на всички потребителски данни', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'AccountService е инициализиран', // AccountService 已初始化 + + // 权限模块 + 'meetingStoragePermission': 'Съхранение', + 'meetingStoragePermissionExplanation': + 'Нуждаем се от достъп до разрешения за съхранение, за да можете да избирате и качвате аудио файлове.', + 'meetingStoragePermissionPermanentDenial': + 'Установихме, че сте отказали постоянно разрешението за съхранение. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.', + 'getPermissionStatusFailed': + 'Неуспешно получаване на състоянието на разрешенията', + 'communicationPermissions': 'Разрешения за комуникация', + 'bluetoothPermissions': 'Bluetooth разрешения', + 'notificationPermissions': 'Разрешения за известия', + 'storagePermissions': 'Разрешения за съхранение', + 'microphonePermissions': 'Разрешения за микрофон', + 'alarmPermissions': 'Разрешения за аларма', + 'calendarPermissions': 'Разрешения за календар', + 'locationPermissions': 'Разрешения за местоположение', + 'phone': 'Телефон', + 'sms': 'SMS', + 'contacts': 'Контакти', + 'notification': 'Известия', + 'alarm': 'Аларма', + 'calendarWrite': 'Писане в календара', + 'calendarFullAccess': 'Пълен достъп до календара', + 'locationInfo': 'Информация за местоположението', + 'phonePermissionDesc': 'Използва се за функцията за телефонни обаждания', + 'smsPermissionDesc': 'Използва се за функцията за изпращане на SMS', + 'alarmPermissionDesc': + 'Използва се за задаване на точни аларми, за да се гарантира, че напомнянията се задействат навреме', + 'calendarWritePermissionDesc': + 'Използва се за създаване на календарни събития и напомняния', + 'calendarFullAccessPermissionDesc': + 'Използва се за четене и управление на календарни събития и напомняния', + 'locationPermissionDesc': + 'Използва се за получаване на информация за текущото местоположение', + 'appFunctionNeeds': 'Функцията на приложението се нуждае от', + 'authorized': 'Разрешено', + 'unauthorized': 'Неразрешено', + 'needOpenInSystemSettings': 'Трябва да се включи в системните настройки', + 'partialAuthorization': 'Частично разрешение', + 'unknownStatus': 'Неизвестно състояние', + 'permissionGranted': 'Разрешението е предоставено', + 'permissionRequestError': 'Грешка при заявяване на разрешение', + 'phonePermissionDetailDesc': + 'Функцията за телефонни обаждания се нуждае от разрешение за телефон', + 'smsPermissionDetailDesc': + 'Функцията за изпращане на SMS се нуждае от SMS разрешение', + 'alarmPermissionDetailDesc': + 'Това разрешение е необходимо за задаване на точни аларми и гарантиране, че напомнянията се задействат навреме', + 'calendarWritePermissionDetailDesc': + 'Създаването на календарни събития се нуждае от разрешение за писане в календара', + 'calendarFullAccessPermissionDetailDesc': + 'Управлението на календарни събития се нуждае от пълно разрешение за календара', + 'locationPermissionDetailDesc': + 'Получаването на информация за местоположението се нуждае от разрешение за местоположение', + 'contactsPermissionDesc': 'Използва се за достъп до информация за контакти', + 'contactsPermissionDetailDesc': + 'Функционалността за телефонни разговори и SMS изисква разрешение за контакти за избор на контакти', + 'bluetoothPermissionDesc': + 'Използва се за свързване и управление на Bluetooth устройства', + 'bluetoothPermissionDetailDesc': + 'Свързването с Bluetooth слушалки и други устройства изисква Bluetooth разрешение', + 'bluetoothScanPermissionDesc': + 'Използва се за сканиране на близки Bluetooth устройства', + 'bluetoothScanPermissionDetailDesc': + 'Сканирането за близки Bluetooth устройства изисква разрешение за Bluetooth сканиране', + 'bluetoothConnectPermissionDesc': + 'Използва се за свързване с Bluetooth устройства', + 'bluetoothConnectPermissionDetailDesc': + 'Свързването с Bluetooth устройства изисква разрешение за Bluetooth свързване', + 'notificationPermissionDesc': + 'Използва се за изпращане на уведомителни съобщения', + 'notificationPermissionDetailDesc': + 'Приложението се нуждае от разрешение за известия, за да ви изпраща важни сигнали и съобщения', + 'appNeedsPermissionForFullFunction': + 'Приложението се нуждае от това разрешение за да предостави пълна функционалност', + 'permanentDenialText': + 'Вие сте отказали постоянно разрешението за {permission}, моля отидете в настройките на приложението за да го включите', + 'goToSettings': 'Отиди в настройки', + 'bluetoothScan': 'Bluetooth сканиране', + 'bluetoothConnect': 'Bluetooth свързване', + 'bluetoothScanExplanation': + 'Приложението се нуждае от разрешение за Bluetooth сканиране, за да сканира близки Bluetooth устройства.', + 'bluetoothConnectExplanation': + 'Приложението се нуждае от разрешение за Bluetooth свързване, за да се свързва с Bluetooth устройства.', + 'locationForBluetoothExplanation': + 'Приложението се нуждае от разрешение за местоположение, за да сканира Bluetooth устройства.', + 'bluetoothScanPermanentDenial': + 'Разрешението за Bluetooth сканиране е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', + 'bluetoothConnectPermanentDenial': + 'Разрешението за Bluetooth свързване е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', + 'locationPermanentDenial': + 'Разрешението за местоположение е постоянно отказано, моля отидете в настройките, за да го включите ръчно.', + 'notificationPermission': 'Известия', + 'locationPermission': 'Местоположение', + 'notificationPermissionExplanation': + 'Разрешението за известия е необходимо за показване на състоянието на възпроизвеждане на музика.', + 'locationPermissionExplanation': + 'Разрешението за местоположение е необходимо за получаване на текущото местоположение.', + 'notificationPermissionPermanentDenial': + 'Постоянно сте отказали разрешение за известия, моля отидете в настройките, за да го включите.', + 'locationPermissionPermanentDenial': + 'Постоянно сте отказали разрешение за местоположение, моля отидете в настройките, за да го включите.', + 'storagePermission': 'Съхранение', + 'microphonePermissionExplanation': + 'Нуждаем се от разрешение за микрофон, за да записваме аудио съдържание.', + 'storagePermissionExplanation': + 'Нуждаем се от разрешение за съхранение, за да избирате и качвате аудио файлове.', + 'microphonePermissionPermanentDenial': + 'Разрешението за микрофон е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за микрофон.', + 'storagePermissionPermanentDenial': + 'Разрешението за съхранение е постоянно отказано. За да продължите да използвате тази функция, моля отидете в настройките на приложението, за да включите ръчно разрешението за съхранение.', + 'permissionUtilNeed': 'Нужно е ', + 'permissionUtilPermission': ' разрешение', + 'permissionUtilRestricted': ' Разрешението е ограничено', + 'permissionUtilRestrictedMessage': + 'Тази функция е недостъпна или ограничена на текущото устройство, моля проверете настройките на устройството или системните ограничения', + 'permissionUtilConfirm': 'ОК', + + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Навигация в ход', + 'native.notification.navigation.keepRunning': + 'Навигация, поддържайте приложението работещо', + 'native.notification.bleAgent.running': 'Гласовият асистент работи', + 'native.notification.audioRecording.recording': + 'Записва се аудио, натиснете за да се върнете в приложението', + 'native.notification.music.waiting': 'Изчакване за възпроизвеждане', + 'native.notification.music.previous': 'Предишна', + 'native.notification.music.next': 'Следваща', + 'native.notification.music.play': 'Възпроизвеждане', + 'native.notification.music.pause': 'Пауза', + 'native.notification.qqMusic.playing': 'Възпроизвеждане на музика', + + // 版本更新 + 'newVersionFound': 'Намерена е нова версия', // 版本更新对话框标题 + 'remindLater': 'Напомни по-късно', // 稍后提醒按钮 + 'updateNow': 'Актуализирай сега', // 立即更新按钮 + 'checkUpdate': 'Провери за актуализации', // 检查更新按钮 + 'updateFailed': 'Неуспешна актуализация', // 更新失败提示 + 'cannotOpenAppStore': + 'Не може да се отвори магазинът за приложения, моля отидете ръчно в магазина за актуализация', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Възникна грешка по време на актуализацията, моля опитайте отново по-късно', // 更新错误重试提示 // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Сдвояване на устройства", "connectYourDeepSoundHeadset": "Свържете вашите Voitrans слушалки", "bind": "Свържи", @@ -1373,14 +1377,11 @@ const Map bgBG = { "autoInputCode": "Автоматично въвеждане на код", "skipBinding": "Прескочи свързването", "rescan": "Сканирай отново", - "verifyingDevice": "Проверка на устройството...", "confirmBinding": "Потвърди свързването", "associatingDevice": "Асоцииране на устройството...", "goToBluetoothSettings": "Отиди в Bluetooth настройките", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Готов за сдвояване", "preparingPairingEnvironment": "Подготовка на средата за сдвояване...", "connectDeepSoundViaSystemBluetooth": @@ -1391,8 +1392,6 @@ const Map bgBG = { "waitingCompletePairing": "Моля изчакайте, завършване на сдвояването...", "pairingSuccessRedirecting": "Успешно сдвояване! Пренасочване към началната страница...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Моля уверете се, че свързаното устройство е Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1405,19 +1404,12 @@ const Map bgBG = { "authorizationFailedCheckCode": "Неуспешно разрешение, моля проверете дали кодът за разрешение е правилен", "pairingFailedRetry": "Неуспешно сдвояване, моля опитайте отново", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Моля включете Bluetooth', 'deviceDisconnected': 'Устройството е прекъснато', 'readyToStartPairing': 'Готов за започване на сдвояването', 'checkingEnvironment': 'Проверка на средата...', 'ensureHeadsetOnAndPairingMode': 'Моля уверете се, че слушалките са включени и в режим на сдвояване', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Установяване на сигурна връзка...', 'needManualBindingAuthCode': 'Нужен е ръчен код за разрешение на свързването...', @@ -1441,8 +1433,6 @@ const Map bgBG = { 'bleConnectionFailed': 'Неуспешна BLE връзка', 'deviceAuthorizationFailedCheckCode': 'Неуспешно разрешение на устройството, моля проверете кода за разрешение', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Изисква се ръчно активиране на Bluetooth', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Моля следвайте тези стъпки:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1455,7 +1445,18 @@ const Map bgBG = { 'Съвет: Можете също да задържите иконата на Bluetooth в Центъра за управление за бърз достъп до настройките на Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Разбрах', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Награда за добре дошли", + "firstBindRewardDesc": "Получихте награди за свързване.", + "vipLevelLabel": "VIP ниво:", + "expiryLabel": "Изтичане:", + "notActivated": "Неактивирано", + "aiChatCreditsLabel": "AI чат кредити:", + "translationCreditsLabel": "Кредити за превод:", + "meetingCreditsLabel": "Кредити за срещи:", + "ok": "ОК", + + // 用户反馈模块 "feedback": "Потребителска обратна връзка", 'feedbackInfo': 'Предоставете обратна връзка или предложения', 'feedbackDescription': 'Моля опишете проблема или предложението си', @@ -1499,7 +1500,62 @@ const Map bgBG = { "removeEarbudsEnsureBattery": "Извадете двете слушалки и се уверете, че батерията на двете е над 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Намерена е нова версия @version', + 'otaConfirmUpdateNow': 'Да се актуализира ли сега?', + 'otaUpdate': 'Актуализиране', + 'otaUpgradeSuccess': 'Успешна актуализация', + 'otaUpgradeCompleteRepair': + 'Актуализацията на фърмуера е завършена!\n\nУстройството трябва да бъде сдвоено отново, за да работи правилно. Да отидете на страницата за сдвояване сега?', + 'otaPairLater': 'Сдвояване по-късно', + 'otaPairNow': 'Сдвояване сега', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + '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': + 'Тази актуализация включва оптимизации на производителността и поправки на грешки.', + 'otaGetLatestVersionFailed': + 'Неуспешно получаване на информация за последната версия', + 'otaGetVersionInfoFailed': 'Неуспешно получаване на информация за версията', + 'otaCheckingDeviceStatus': 'Проверка на състоянието на устройството...', + 'otaDownloadFailedCheckNetwork': + 'Изтеглянето не успя, проверете мрежовата връзка', + 'otaDownloadFailed': 'Изтеглянето не успя', + 'otaPreparingConnection': 'Подготовка на връзката с устройството...', + 'otaConnectingDevice': 'Свързване с устройството...', + 'otaUpgradeStarted': 'Актуализацията (OTA) започна...', + 'otaUpgradeProgressWithPercent': 'Напредък на актуализацията: @percent%', + 'otaUpgradeSuccessComplete': 'Актуализацията завърши успешно', + 'otaUpgradeFailedWithCode': 'Актуализацията не успя, код на грешка: @code', + 'otaUpgradeFailedTitle': 'Актуализацията не успя', + 'otaUpgradeFailedDesc': + 'Проверете връзката на устройството или пакета за актуализация, код на грешка: @code', + 'otaDeviceDisconnected': 'Устройството е разкачено', + 'otaDeviceConnected': 'Устройството е свързано', + + // 音乐模块 "noMusic": "Няма музика", // 暂无音乐 "noPlayingMusic": "Няма възпроизвеждаща се музика", // 暂无播放音乐 "unknownSong": "Неизвестна песен", // 未知歌曲 @@ -1547,22 +1603,122 @@ const Map bgBG = { "波斯语": "Персийски", "斯瓦希里语": "Суахили", - // 时间相关 - "justNow": "Току-що", - "minutesAgo": "преди @minutes минути", - "yesterday": "Вчера", - // 时间扩展(图片翻译模块使用) - "daysAgo": "преди @days дни", - "hoursAgo": "преди @hours часа", - - //补充 - "insufficientIntegral": "Недостатъчно точки", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Недостатъчен баланс, моля отидете на съответната страница за презареждане.', - "recharge": 'Отиди към презареждане', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI членството изтече, моля отидете на страницата за презареждане на членство за подновяване.', + // 国家列表 + "邮箱": "Имейл", + "中国": "Китай", + "美国": "САЩ", + "加拿大": "Канада", + "俄罗斯": "Русия", + "英国": "Великобритания", + "德国": "Германия", + "意大利": "Италия", + "法国": "Франция", + "西班牙": "Испания", + "南非": "Южна Африка", + "沙特阿拉伯": "Саудитска Арабия", + "土耳其": "Турция", + "日本": "Япония", + "韩国": "Южна Корея", + "新加坡": "Сингапур", + "马来西亚": "Малайзия", + "泰国": "Тайланд", + "越南": "Виетнам", + "印度": "Индия", + "巴基斯坦": "Пакистан", + "菲律宾": "Филипини", + "印度尼西亚": "Индонезия", + "阿联酋": "ОАЕ", + "墨西哥": "Мексико", + "巴西": "Бразилия", + "阿根廷": "Аржентина", + "澳大利亚": "Австралия", + "新西兰": "Нова Зеландия", + "中国香港": "Хонг Конг", + "中国澳门": "Макао", + "中国台湾": "Тайван", + "埃及": "Египет", + "希腊": "Гърция", + "荷兰": "Холандия", + "比利时": "Белгия", + "匈牙利": "Унгария", + "罗马尼亚": "Румъния", + "瑞士": "Швейцария", + "奥地利": "Австрия", + "丹麦": "Дания", + "瑞典": "Швеция", + "挪威": "Норвегия", + "波兰": "Полша", + "秘鲁": "Перу", + "智利": "Чили", + "哥伦比亚": "Колумбия", + "委内瑞拉": "Венецуела", + "葡萄牙": "Португалия", + "卢森堡": "Люксембург", + "爱尔兰": "Ирландия", + "冰岛": "Исландия", + "阿尔巴尼亚": "Албания", + "马耳他": "Малта", + "塞浦路斯": "Кипър", + "芬兰": "Финландия", + "保加利亚": "България", + "立陶宛": "Литва", + "拉脱维亚": "Латвия", + "爱沙尼亚": "Естония", + "乌克兰": "Украйна", + "塞尔维亚": "Сърбия", + "克罗地亚": "Хърватия", + "斯洛文尼亚": "Словения", + "捷克": "Чехия", + "斯洛伐克": "Словакия", + "危地马拉": "Гватемала", + "萨尔瓦多": "Салвадор", + "洪都拉斯": "Хондурас", + "尼加拉瓜": "Никарагуа", + "哥斯达黎加": "Коста Рика", + "巴拿马": "Панама", + "海地": "Хаити", + "玻利维亚": "Боливия", + "厄瓜多尔": "Еквадор", + "巴拉圭": "Парагвай", + "乌拉圭": "Уругвай", + "摩洛哥": "Мароко", + "阿尔及利亚": "Алжир", + "突尼斯": "Тунис", + "尼日利亚": "Нигерия", + "加纳": "Гана", + "埃塞俄比亚": "Етиопия", + "肯尼亚": "Кения", + "坦桑尼亚": "Танзания", + "乌干达": "Уганда", + "孟加拉国": "Бангладеш", + "以色列": "Израел", + "黎巴嫩": "Ливан", + "约旦": "Йордания", + "伊拉克": "Ирак", + "科威特": "Кувейт", + "巴林": "Бахрейн", + "卡塔尔": "Катар", + "阿曼": "Оман", + "阿富汗": "Афганистан", + "斯里兰卡": "Шри Ланка", + "缅甸": "Мианмар", + "尼泊尔": "Непал", + "蒙古": "Монголия", + "柬埔寨": "Камбоджа", + "老挝": "Лаос", + "文莱": "Бруней", + "东帝汶": "Източен Тимор", + "斐济": "Фиджи", + "所罗门群岛": "Соломонови острови", + "刚果民主共和国": "Демократична република Конго", + "安哥拉": "Ангола", + "苏丹": "Судан", + "马尔代夫": "Малдиви", + "不丹": "Бутан", + "摩纳哥": "Монако", + "圣马力诺": "Сан Марино", + "牙买加": "Ямайка", + "巴哈马": "Бахами", + "巴布亚新几内亚": "Папуа Нова Гвинея", + "萨摩亚": "Самоа", }; diff --git a/lib/core/translations/language/cs_cz.dart b/lib/core/translations/language/cs_cz.dart index 5734cb0b5..bd7c5718b 100644 --- a/lib/core/translations/language/cs_cz.dart +++ b/lib/core/translations/language/cs_cz.dart @@ -1,3 +1,4 @@ +//捷克-捷克语 const Map csCZ = { // 通用 'continue': 'Pokračovat', @@ -18,6 +19,11 @@ const Map csCZ = { "unknownError": "Neznámá chyba", "asrConnectionFailed": "Připojení ke službě rozpoznávání řeči selhalo. Zkontrolujte síť nebo to zkuste znovu později.", + "justNow": "Právě teď", + "minutesAgo": "před @minutes minutami", + "yesterday": "Včera", + "daysAgo": "před @days dny", + "hoursAgo": "před @hours hodinami", // 启动页 "slogan": "Spojujeme svět, za hranice zvuku", @@ -28,7 +34,7 @@ const Map csCZ = { "explore": "Prozkoumat", "settings": "Nastavení", - // 语言 + // 语言列表 "followingSystem": "Následovat systém", "chinese": "Čínština", "english": "Angličtina", @@ -72,7 +78,7 @@ const Map csCZ = { "arabic": "Arabština", "persian": "Farsština", - // 登录页 + // 登录模块 "welcome": "Vítejte", "loginTips": "Přihlaste se nebo se zaregistrujte pomocí telefonního čísla nebo e-mailu", @@ -101,13 +107,9 @@ const Map csCZ = { "resendVerificationCode": "Znovu odeslat ověřovací kód", "login": "Přihlásit se", "usePasswordLogin": "Použít přihlášení heslem", - - // 隐私政策弹窗 "loginDeclaration": "Prohlášení Voitrans", // Voitrans 声明 "welcomeToThisApp": "Vítejte v Voitrans, přečtěte si prosím pozorně", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Kliknutím na 'Souhlasím a vstoupit' označujete, že jste si výše uvedené smlouvy plně přečetli a souhlasíte s nimi. Kliknutím na 'Nesouhlasím' aplikaci ukončíte.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesouhlasím", // 不同意 @@ -164,7 +166,30 @@ const Map csCZ = { 'right': 'Pravý', 'checkConnectionStatusFailed': 'Kontrola stavu připojení selhala', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inicializace Bluetooth selhala: @error', + '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í.', + 'needEnableBluetooth': 'Zapnout Bluetooth', + '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', + 'bleConnectionFailedWithError': 'Připojení selhalo: @error', + 'bleDisconnected': 'Odpojeno', + 'bleDeviceDisconnected': 'Zařízení odpojeno', + 'bleDisconnectFailedWithError': 'Odpojení selhalo: @error', + 'signalStrong': 'Silný', + 'signalMedium': 'Střední', + 'signalWeak': 'Slabý', + 'signalVeryWeak': 'Velmi slabý', + + // 发现页 "searchAi": "Hledat AI funkce...", "exploreSlogan": "Chytrá sluchátka, nekonečné možnosti", "exploreSlogan1": "Chytrý společník, nekonečné možnosti", @@ -188,6 +213,7 @@ const Map csCZ = { "usageStats": "Statistika použití", "usageStatsInfo": "Zobrazit statistiku použití aplikace", "scene": "Scénáře", + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Statistiky překladů", @@ -208,7 +234,6 @@ const Map csCZ = { "translationApi": "Překladové API", "asr": "Rozpoznávání řeči", "tts": "Syntéza řeči", - //"aiSummary": "AI摘要", "dataVolumeStats": "Statistiky objemu dat", "sourceTextCharacters": "Znaky zdrojového textu", "ttsTextCharacters": "Znaky textu TTS", @@ -225,7 +250,6 @@ const Map csCZ = { "totalAudioDuration": "Celková délka zvuku", "audioFileSize": "Velikost zvukového souboru", "transcriptBytes": "Bajty přepisu", - // 通知文案 "loadFailed": "Načtení selhalo", "statsLoadFailedTryLater": "Statistiky se nepodařilo načíst. Zkuste to prosím později.", @@ -234,56 +258,129 @@ const Map csCZ = { "exportFeature": "Funkce exportu", "exportInDevelopment": "Export dat je ve vývoji", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Dostupné balíčky', 'remainingQuota': 'Zbývající kvóta', 'totalQuota': 'Celková kvóta', 'remaining': 'Zbývá', 'featureDescription': 'Popis funkce', - // AI 功能卡片 + 'paymentSuccess': 'Platba proběhla úspěšně', + 'paymentFailed': 'Platba se nezdařila', + 'gotIt': 'Rozumím', + 'paymentFailedTryAgain': 'Platba se nezdařila. Zkuste to prosím znovu.', + 'selectPaymentMethod': 'Vyberte způsob platby', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Nepodařilo se vytvořit objednávku WeChat', + 'alipayOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Alipay', + 'appleOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Apple', + 'googleOrderCreateFailed': 'Nepodařilo se vytvořit objednávku Google', + 'paypalOrderCreateFailed': 'Nepodařilo se vytvořit objednávku PayPal', + 'paymentException': 'Chyba platby', + 'paymentLaunchFailed': 'Nepodařilo se spustit platbu', + 'paymentExceptionWithError': 'Chyba platby: @error', + 'paymentProcessingCheckLater': + 'Vaše objednávka se zpracovává. Zkontrolujte později.', + 'paymentResultQueryException': + 'Nepodařilo se zjistit výsledek platby: @error', + 'orderConfirmedQuotaRefreshed': + 'Objednávka potvrzena. Váš limit byl obnoven.', + 'paymentCompletedConfirming': 'Platba dokončena. Potvrzování…', + 'paymentCancelled': 'Platba zrušena', + 'paypalOpenedCompleteInBrowser': + 'PayPal otevřen. Dokončete platbu v prohlížeči.', + 'paypalOpenFailed': 'Nelze otevřít stránku platby PayPal', + 'paymentTestTitle': 'Test platby', + 'paymentTestOrderInfo': 'Informace o testovací objednávce', + 'paymentTestProductId': 'ID produktu', + 'paymentTestProductDescription': 'Popis produktu', + 'paymentTestWechatDescription': 'Test platby WeChat', + 'paymentTestAlipayDescription': 'Test platby Alipay', + 'paymentTestAmount': 'Částka', + 'paymentTestSelectAmount': 'Vyberte testovací částku', + 'paying': 'Platba...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stav platby', + 'errorInfoWithMessage': 'Chyba: @message', + 'retest': 'Opakovat test', + 'paymentTestInstructionsTitle': 'Pokyny', + 'paymentTestInstructionsContent': + '1. Vyberte testovací částku (doporučeno: ¥0.01)\n2. Klikněte na tlačítko platby pro zahájení\n3. Dokončete platbu v platební aplikaci\n4. Vraťte se a zkontrolujte výsledek', + 'startingWechatPayment': 'Spouštění WeChat Pay...', + 'startingAlipayPayment': 'Spouštění Alipay...', + 'wechatPaymentSuccess': 'Platba WeChat Pay proběhla úspěšně!', + 'wechatPaymentFailed': 'Platba WeChat Pay se nezdařila', + 'wechatPaymentLaunchFailed': 'Nepodařilo se spustit WeChat Pay', + 'cannotLaunchWechatPayment': 'Nelze spustit WeChat Pay', + 'wechatPaymentException': 'Chyba WeChat Pay', + 'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončen', + 'alipayPaymentSuccess': 'Platba Alipay proběhla úspěšně!', + 'alipayPaymentFailed': 'Platba Alipay se nezdařila', + 'alipayPaymentLaunchFailed': 'Nepodařilo se spustit Alipay', + 'cannotLaunchAlipayPayment': 'Nelze spustit Alipay', + 'alipayPaymentException': 'Chyba Alipay', + "insufficientIntegral": "Nedostatek bodů", + "insufficientBalanceDesc": + 'Nedostatečný zůstatek, přejděte prosím na příslušnou stránku pro dobití.', + "recharge": 'Přejít na dobití', + "aiMemberExpiredDesc": + 'AI členství vypršelo, přejděte prosím na stránku dobíjení členství pro obnovení.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Hudba a doporučení', 'navigationAndRoutes': 'Navigace a trasy', 'nearbySearch': 'Hledání v okolí', 'newsInformation': 'Zprávy', 'communicationAssistant': 'Komunikační asistent', - // 翻译功能卡片 + 'aiHeaderDesc1': + 'Delší kvóta konverzace, více volání nástrojů, rozšířená délka kontextu.', + 'aiHeaderDesc2': 'Vhodné pro Q&A agenta, shrnutí, analýzu a provádění úkolů.', + 'musicSearchPlaybackControl': + 'Hledání v hudební knihovně a ovládání přehrávání', + 'smartPlaylistAndSimilarRecommendations': + 'Chytrý playlist a doporučení podobných skladeb', + 'routePlanningAndCongestionAvoidance': 'Plánování trasy a vyhýbání se zácpám', + 'voiceBroadcastAndWaypoints': 'Hlasové vysílání a nastavení průjezdních bodů', + 'realTimeWeatherForecast': 'Počasí v reálném čase a předpověď', + 'clothingAdviceAndTravelReminders': + 'Rady ohledně oblečení a cestovní připomínky', + 'poiSearchFoodGasParking': 'Hledání POI: stravování / benzín / parkování', + 'ratingsHoursAndDirectRoutes': 'Hodnocení, otevírací doba a přímé trasy', + 'hotNewsAndTopicOverview': 'Žhavé novinky a přehled témat', + 'longArticleSummariesAndKeyPoints': 'Shrnutí dlouhých článků a klíčové body', + 'helpCallAndSMS': 'Pomoc s hovory a SMS', + 'templatedMessagesAndScheduleReminders': 'Šablony zpráv a připomínky plánu', + 'aiDisclaimer': + 'Funkce závisí na oprávněních zařízení, dostupnosti služby a síťových podmínkách.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Přepis v reálném čase', - // 'textTranslation' 已存在 'sceneLexicon': 'Slovníček scénářů', 'subtitleDisplay': 'Titulky', - // 会议功能卡片 + 'transHeaderDesc1': + 'Simultánní tlumočení v reálném čase a překlad textu s nízkou latencí hlasu.', + 'transHeaderDesc2': 'Vhodné pro cestování, podnikání, projevy a výuku.', + 'translateZhEn': 'Čínsko-anglický překlad', + 'lowLatencyVoiceBroadcast': 'Hlasové vysílání s nízkou latencí', + 'multiLangTextTranslation': 'Vícejazyčný textový překlad', + 'termOptimizationContextPreserve': + 'Optimalizace terminologie a zachování kontextu', + 'lexiconTourBusinessLife': 'Slovníky pro cestování/podnikání/život', + 'personalVocabularyMemory': 'Paměť osobní slovní zásoby', + 'conversationSubtitleLargeText': 'Titulky konverzace / Režim velkého textu', + 'colorHighContrast': 'Vysoký barevný kontrast', + 'transDisclaimer': + 'Výkon překladu závisí na mikrofonu, latenci sítě a okolním hluku.', + + // 商品模块 - 会议商品页 'meetingRecording': 'Nahrávání schůzky', 'transcriptionAndSummary': 'Přepis a shrnutí', 'keywordSearch': 'Hledání klíčových slov', 'collaborationSharing': 'Spolupráce a sdílení', - // 商品名称(按ID) - 'ai_001_name': 'AI Základ 100', - 'ai_002_name': 'AI Základ 500', - 'ai_003_name': 'AI Základ 1000', - 'meet_001_name': 'Schůzky Základ 100', - 'meet_002_name': 'Schůzky Základ 500', - 'meet_003_name': 'Schůzky Základ 1000', - 'trans_001_name': 'Překlad Základ 100', - 'trans_002_name': 'Překlad Základ 500', - 'trans_003_name': 'Překlad Základ 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Zahrnuje 100 použití. Přístup k základním AI funkcím.', - 'ai_002_desc': 'Zahrnuje 500 použití. Přístup k základním AI funkcím.', - 'ai_003_desc': 'Zahrnuje 1000 použití. Přístup k základním AI funkcím.', - 'meet_001_desc': 'Zahrnuje 100 nahrávek/přepisů schůzek.', - 'meet_002_desc': 'Zahrnuje 500 nahrávek/přepisů schůzek.', - 'meet_003_desc': 'Zahrnuje 1000 nahrávek/přepisů schůzek.', - 'trans_001_desc': 'Zahrnuje 100 překladů (hlas/text).', - 'trans_002_desc': 'Zahrnuje 500 překladů (hlas/text).', - 'trans_003_desc': 'Zahrnuje 1000 překladů (hlas/text).', - -// 商品页通用页脚 - 'appNameProvider': 'Aplikace: VoiTrans · Poskytovatel: VoiTrans', - 'iapCustomerServiceQQLabel': 'Zákaznický servis IAP QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': 'Nahrávání zvuku, přepis, hledání klíčových slov a automatické shrnutí pro zvýšení efektivity schůzek.', 'meetingHeaderDesc2': @@ -299,45 +396,7 @@ const Map csCZ = { 'meetingDisclaimer': 'Používejte v tichém prostředí; výkon závisí na mikrofonu a síti.', - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Simultánní tlumočení v reálném čase a překlad textu s nízkou latencí hlasu.', - 'transHeaderDesc2': 'Vhodné pro cestování, podnikání, projevy a výuku.', - 'translateZhEn': 'Čínsko-anglický překlad', - 'lowLatencyVoiceBroadcast': 'Hlasové vysílání s nízkou latencí', - 'multiLangTextTranslation': 'Vícejazyčný textový překlad', - 'termOptimizationContextPreserve': - 'Optimalizace terminologie a zachování kontextu', - 'lexiconTourBusinessLife': 'Slovníky pro cestování/podnikání/život', - 'personalVocabularyMemory': 'Paměť osobní slovní zásoby', - 'conversationSubtitleLargeText': 'Titulky konverzace / Režim velkého textu', - 'colorHighContrast': 'Vysoký barevný kontrast', - 'transDisclaimer': - 'Výkon překladu závisí na mikrofonu, latenci sítě a okolním hluku.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Delší kvóta konverzace, více volání nástrojů, rozšířená délka kontextu.', - 'aiHeaderDesc2': 'Vhodné pro Q&A agenta, shrnutí, analýzu a provádění úkolů.', - 'musicSearchPlaybackControl': - 'Hledání v hudební knihovně a ovládání přehrávání', - 'smartPlaylistAndSimilarRecommendations': - 'Chytrý playlist a doporučení podobných skladeb', - 'routePlanningAndCongestionAvoidance': 'Plánování trasy a vyhýbání se zácpám', - 'voiceBroadcastAndWaypoints': 'Hlasové vysílání a nastavení průjezdních bodů', - 'realTimeWeatherForecast': 'Počasí v reálném čase a předpověď', - 'clothingAdviceAndTravelReminders': - 'Rady ohledně oblečení a cestovní připomínky', - 'poiSearchFoodGasParking': 'Hledání POI: stravování / benzín / parkování', - 'ratingsHoursAndDirectRoutes': 'Hodnocení, otevírací doba a přímé trasy', - 'hotNewsAndTopicOverview': 'Žhavé novinky a přehled témat', - 'longArticleSummariesAndKeyPoints': 'Shrnutí dlouhých článků a klíčové body', - 'helpCallAndSMS': 'Pomoc s hovory a SMS', - 'templatedMessagesAndScheduleReminders': 'Šablony zpráv a připomínky plánu', - 'aiDisclaimer': - 'Funkce závisí na oprávněních zařízení, dostupnosti služby a síťových podmínkách.', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Přehled výhod', 'higherQuota': 'Vyšší kvóta využití', 'lowerUnitPrice': 'Nižší jednotková cena', @@ -353,7 +412,32 @@ const Map csCZ = { 'vipDisclaimer': 'Skutečné výhody závisí na podrobnostech balíčku a mohou se měnit s verzemi.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Základ 100', + 'ai_002_name': 'AI Základ 500', + 'ai_003_name': 'AI Základ 1000', + 'meet_001_name': 'Schůzky Základ 100', + 'meet_002_name': 'Schůzky Základ 500', + 'meet_003_name': 'Schůzky Základ 1000', + 'trans_001_name': 'Překlad Základ 100', + 'trans_002_name': 'Překlad Základ 500', + 'trans_003_name': 'Překlad Základ 1000', + 'ai_001_desc': 'Zahrnuje 100 použití. Přístup k základním AI funkcím.', + 'ai_002_desc': 'Zahrnuje 500 použití. Přístup k základním AI funkcím.', + 'ai_003_desc': 'Zahrnuje 1000 použití. Přístup k základním AI funkcím.', + 'meet_001_desc': 'Zahrnuje 100 nahrávek/přepisů schůzek.', + 'meet_002_desc': 'Zahrnuje 500 nahrávek/přepisů schůzek.', + 'meet_003_desc': 'Zahrnuje 1000 nahrávek/přepisů schůzek.', + 'trans_001_desc': 'Zahrnuje 100 překladů (hlas/text).', + 'trans_002_desc': 'Zahrnuje 500 překladů (hlas/text).', + 'trans_003_desc': 'Zahrnuje 1000 překladů (hlas/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Aplikace: VoiTrans · Poskytovatel: VoiTrans', + 'iapCustomerServiceQQLabel': 'Zákaznický servis IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Přeskočit", 'next': 'Další', 'sayLilyHint': 'Řekněte "Lily Lily" do mikrofonu', @@ -364,34 +448,33 @@ const Map csCZ = { 'guideAwakenSuccess': 'Skvělé! Lily je vzhůru – požádejte ji o pomoc.', 'confirmInput': 'Potvrdit vstup', 'guideClickSendPrefix': 'Klepněte na odeslat, ', - // AI 引导步骤 - 'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?“', + 'guideWeatherStart': 'Řekněte Lily: „Jaké je dnes počasí?"', 'guideWeatherInput': 'Jaké je dnes počasí?', 'guideWeatherSend': 'Lily nahlásí počasí v reálném čase', 'guideWeatherEnd': 'Lily může hlásit počasí živě – zkuste jiné příkazy', - 'guideMusicStart': 'Řekněte Lily: „Zahraj nějaký rock“', + 'guideMusicStart': 'Řekněte Lily: „Zahraj nějaký rock"', 'guideMusicInput': 'Zahraj nějaký rock', 'guideMusicSend': 'Lily pro vás najde hudbu', 'guideMusicEnd': 'Lily našla hudbu – zkuste jiné příkazy', - 'guideNavStart': 'Řekněte Lily: „Naviguj na letiště Šen-čen“', + 'guideNavStart': 'Řekněte Lily: „Naviguj na letiště Šen-čen"', 'guideNavInput': 'Naviguj na letiště Šen-čen', 'guideNavSend': 'Lily naplánuje trasu', 'guideNavEnd': 'Navigace nastavena – zkuste jiné příkazy', 'guideMeetingStart': - 'Řekněte Lily: „Vytvoř připomínku schůzky na zítra ve 3 odpoledne“', + 'Řekněte Lily: „Vytvoř připomínku schůzky na zítra ve 3 odpoledne"', 'guideMeetingInput': 'Vytvoř připomínku schůzky na zítra ve 3 odpoledne', 'guideMeetingSend': 'Lily vytvoří připomínku schůzky', 'guideMeetingEnd': 'Připomínka vytvořena – zkuste jiné příkazy', - 'guidePhoneStart': 'Řekněte Lily: „Zavolej mámě“', + 'guidePhoneStart': 'Řekněte Lily: „Zavolej mámě"', 'guidePhoneInput': 'Zavolej mámě', 'guidePhoneSend': 'Lily uskuteční hovor', 'guidePhoneEnd': 'Hovor zahájen – zkuste jiné příkazy', - 'guideSmsStart': 'Řekněte Lily: „Pošli tátovi SMS: Přijdu na večeři domů“', + 'guideSmsStart': 'Řekněte Lily: „Pošli tátovi SMS: Přijdu na večeři domů"', 'guideSmsInput': 'SMS tátovi: Přijdu na večeři domů', 'guideSmsSend': 'Lily odešle zprávu', 'guideSmsEnd': 'Zpráva odeslána – hlasové ovládání je pohodlné', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Začít schůzku", 'edit': 'Upravit', 'delete': 'Smazat', @@ -403,8 +486,6 @@ const Map csCZ = { 'recordingDetails': 'Podrobnosti nahrávky', 'aiSummary': 'AI shrnutí', 'meetingTranscript': 'Přepis schůzky', - - // Meeting模块 - 导航和基础功能 'files': 'Soubory', 'mine': 'Moje', 'connect': 'Připojit', @@ -443,21 +524,28 @@ 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í...', 'summaryComplete': 'Shrnutí dokončeno', - //'generating': '正在生成...', 'generate': 'Generovat', 'overview': 'Přehled', 'transcription': 'Přepis', @@ -466,6 +554,99 @@ const Map csCZ = { 'editSpeaker': 'Upravit', 'nameSpeaker': 'Pojmenovat mluvčího', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Znovu shrnout', + 'dateAndTime': 'Datum a čas', + 'location': 'Místo', + 'attendees': 'Účastníci', + 'inputLocation': 'Zadejte místo', + 'inputAttendees': 'Zadejte účastníky', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Vyberte šablonu shrnutí', + 'useThisTemplate': 'Použít tuto šablonu', + 'lastUsed': 'Naposledy použito', + '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': 'Zobrazit vše', + 'recordingLanguage': 'Jazyk nahrávání', + 'chineseSimplified': 'Čínština – mandarínština (zjednodušená)', + 'meetingGenerateNow': 'Generovat nyní', + 'keyEventsAnalyzed': 'Analyzováno {count} klíčových událostí.', + 'aiAnalysisDesc': + 'AI analýza identifikuje klíčové události v nahrávkách a umožňuje vám vybrat důležité události pro generování pomocí AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Importování...', + 'batchImporting': 'Hromadné importování...', + 'importingLocalRecordings': 'Importování místních nahrávek...', + 'importFailed': 'Import souboru selhal: {filePath}, chyba: {error}', + 'importSuccess': 'Úspěšně importováno {count} místních nahrávek', + 'importError': 'Import selhal: {error}', + 'pleaseSelectAudioFile': 'Vyberte prosím zvukový soubor', + 'shareAudio': 'Sdílet zvuk schůzky', + 'shareComplete': 'Sdílení dokončeno!', + 'shareFailed': 'Sdílení selhalo: {error}', + 'fileProcessingFailed': + 'Zpracování souboru selhalo: {filePath}, chyba: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Uložit myšlenkovou mapu', + 'shareMindMap': 'Sdílet myšlenkovou mapu', + 'shareSuccess': 'Sdílení úspěšné', + + // Meeting模块 - AI问答 + 'askAI': 'Zeptat se AI ...', + 'askAIPrompt': 'S čím vám dnes mohu pomoci?', + 'continueAsk': 'Pokračovat v dotazování', + 'todoList': 'Seznam úkolů', + 'extractConclusion': 'Extrahovat závěr', + 'generateKeyIndicators': 'Generovat klíčové ukazatele', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Sdílet odkaz', + 'copyTranscript': 'Kopírovat přepis', + 'copySummary': 'Kopírovat shrnutí', + 'exportAudio': 'Exportovat zvuk', + 'exportTranscript': 'Exportovat přepis', + 'shareMeetingAudio': 'Sdílet zvuk schůzky', + 'exportSummary': 'Exportovat shrnutí', + 'exportAs': 'Exportovat jako', + 'exportingPDF': 'Exportování PDF...', + 'export': 'Exportovat', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího', + 'summaryWillBeUpdatedAutomatically': + 'Souhrn se bude automaticky aktualizovat podle šablony', + 'nameCurrentSpeaker': 'Pojmenovat aktuálního mluvčího', + 'recentlyUsedNames': 'Nedávno použitá jména', + 'applyToCurrentParagraph': 'Použít na aktuální odstavec', + 'totalTime': 'Celkový čas', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Mluvčí v shrnutí budou automaticky aktualizováni', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synchronizovat do cloudu', + 'syncToCloudTip': + 'Automaticky synchronizujte nahrávky do cloudu. Nahrávky můžete přehrávat, spravovat a sdílet prostřednictvím libovolné aplikace VOITRANS nebo VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synchronizovat VOITRANS APP', + 'transcriptionRecord': 'Záznam přepisu', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Záznamy přepisů', 'templateCommunity': 'Komunita šablon', @@ -485,7 +666,7 @@ const Map csCZ = { 'Propojte zařízení Voitrans pro aktivaci Startovacího členství', 'unlockNow': 'Odemknout nyní', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Porovnání', 'detailedInfo': 'Podrobné informace', 'monthlyTranscriptionTime': 'Měsíční čas přepisu', @@ -521,135 +702,54 @@ const Map csCZ = { 'Snadno importujte zvukové soubory z místních nebo aplikací třetích stran, jako jsou hlasové poznámky, Google Drive atd.', 'multipleExportFormatsDesc': 'Exportujte své zvukové nahrávky, text přepisu a shrnutí v různých formátech (TXT, PDF, JPEG), aby vyhovovaly vašim potřebám.', - - // Meeting模块 - 升级会员 - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'upgradeMembership': 'Upgradovat členství', + 'yearlySubscription': 'Roční předplatné', + 'monthlySubscription': 'Měsíční předplatné', + 'proMonthly': 'Pro ¥60/měsíc', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7denní zkušební verze zdarma, poté ¥800/rok. Zrušte kdykoli před koncem zkušební doby.', + 'sevenDayTrial': '7denní zkušební verze zdarma', + 'unlimitedMonthly': 'Neomezené ¥120/měsíc', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + '7denní zkušební verze zdarma, poté ¥1600/rok. Zrušte kdykoli před koncem zkušební doby.', + 'trialNote': '*7 dní zdarma, poté roční poplatek, zrušte kdykoli.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/měsíc', + 'subscribe': 'Přihlásit k odběru', + 'unlimitedPrice': 'Neomezené ¥198', + 'unlimitedMonthlyPrice': '¥198/měsíc', '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 upgradu předplatného budou zbývající dny původního předplatného automaticky vypočítány a vráceny na váš platební účet', + 'buyMoreTranscriptionTime': 'Koupit více času přepisu', + 'sixThousandMinutes': '6 000 minut', + 'threeThousandMinutes': '3 000 minut', + 'sixHundredMinutes': '600 minut', + 'oneHundredTwentyMinutes': '120 minut', + 'validityPeriod': '*Doba platnosti: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Použít na všechny odstavce tohoto mluvčího', - 'summaryWillBeUpdatedAutomatically': - 'Souhrn se bude automaticky aktualizovat podle šablony', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivováno ihned po zakoupení, platné 2 roky po aktivaci.', + 'purchase': 'Zakoupit', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Jazyk nahrávání', + 'cantonese': 'Kantonština', + 'sichuan': 'Sečuánské nářečí', + 'shanghai': 'Šanghajské nářečí', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Neznámý jazyk', + 'analysisFailed': 'Analýza se nezdařila, zkuste to prosím později', + 'transcriptionFailed': 'Přepis se nezdařil, zkuste to prosím později', + 'summaryFailed': 'Nepodařilo se vytvořit shrnutí, zkuste to prosím později', + 'summaryFailedShort': 'Shrnutí se nezdařilo', + 'transcriptionFailedShort': 'Přepis se nezdařil', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio přehrávač není připraven, počkejte prosím', + 'playFailed': 'Chyba přehrávání', + 'audioFileNotFound': 'Zvukový soubor nenalezen', + 'fetchingAudio': 'Načítání zvuku z cloudu...', + 'playerLoadFailed': 'Nepodařilo se načíst audio přehrávač', // 设置页 "systemSettings": "Systémová nastavení", @@ -658,10 +758,10 @@ 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": - "First bind device reward has been issued. Tap OK to close.", + "Odměna za první propojení zařízení byla vydána. Klepněte na OK pro zavření.", "joinDevice": "Připojené zařízení:", "accountId": "ID účtu:", "systemSetting": "Systémová nastavení", @@ -701,26 +801,15 @@ const Map csCZ = { "bleHeadsetFirmwareUpgrade": "Aktualizace firmwaru BLE sluchátek", "deviceManagement": "Správa zařízení", "manageConnectedDevices": "Správa připojených Bluetooth zařízení", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aktuálně nejnovější verze {version}', 'checkUpdateFailed': 'Kontrola aktualizací selhala', 'networkErrorRetry': 'Chyba sítě, zkuste to prosím později', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Hlasový chat v reálném čase", "realtimeVoiceChatInfo": "Vyzkoušejte funkci inteligentní hlasové interakce (náhled funkce)", "loading": "Načítání...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Neznámé zařízení", "deviceTypeClassicBluetoothHeadset": "Klasická Bluetooth sluchátka", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth sluchátka", @@ -732,11 +821,10 @@ const Map csCZ = { "noMacAddress": "Žádná MAC adresa", "licenseCode": "Licenční kód", "confirmUnbind": "Potvrdit odpojení", - "confirmUnbindMessage": "Opravdu chcete odpojit zařízení „{deviceName}“?", + "confirmUnbindMessage": 'Opravdu chcete odpojit zařízení „{deviceName}"?', "confirmUnbindAction": "Potvrdit odpojení", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Vymazat historii chatu", "online": "Online", @@ -766,8 +854,10 @@ const Map csCZ = { "swipeUpForMore": "Potáhněte nahoru pro více", "callingTool": "Pomáhám vám, prosím čekejte!", // 正在帮您,请稍等! "voice_interrupt": "Přerušit", // 语音打断 + 'voice_interrupt_tip': + 'Při zapnutí: AI nebude přerušen vaším hlasem během mluvení a může zpracovat pouze jedno kolo konverzace najednou. Pro zahájení nového kola stačí říct aktivační slovo.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Zahraj nějakou hudbu", // 来点音乐 "presetNavigation": "Navigace do", // 导航 "presetWeather": "Dnešní počasí", // 今日天气 @@ -779,7 +869,7 @@ const Map csCZ = { "todayNews": "Jaké jsou dnešní zprávy?", // 今日新闻 "nearbyFood": "Jaké dobré jídlo je v okolí?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Ahoj! Jsem **Lily**, mohu vám pomoci s:\n\n' '• Odpovídáním na otázky a poskytováním informací\n\n' '• Překladem řeči v reálném čase\n\n' @@ -799,18 +889,17 @@ const Map csCZ = { 'startVoiceInput': 'Začít hlasový vstup', 'startPhoneCallMode': 'Začít režim telefonního hovoru, začít hlasový vstup', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Zde zadejte svou zprávu...', // 全屏编辑器输入提示 'characterCount': '{count} znaků', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopírovat', 'copySuccess': 'Úspěšně zkopírováno', 'report': 'Nahlásit', 'submitSuccess': 'Úspěšně odesláno', 'submitFailed': 'Odeslání selhalo', 'reportSubmitted': 'Hlášení bylo odesláno, zpracujeme ho co nejdříve', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodlivé/nebezpečné', 'pornographicVulgar': 'Pornografické/vulgární', 'misleadingAttack': 'Zavádějící útok', @@ -820,17 +909,21 @@ const Map csCZ = { 'other': 'Jiné', 'reportDescriptionHint': 'Chceme znát důvod vašeho hlášení, můžete popsat problém, se kterým jste se setkali.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generováno AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Volání nástroje', + 'noResult': 'Žádný výsledek', + 'noToolCallContentToCopy': 'Žádný obsah volání nástroje ke kopírování', + 'toolCallDetails': 'Podrobnosti volání nástroje:', + 'toolCallContentCopied': 'Obsah volání nástroje zkopírován do schránky', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Zde jsou některé doporučené hudby:', 'playList': 'Playlist', 'moreMusic': 'Více hudby', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometrů', // 公里单位 'meters': 'metrů', // 米单位 'hours': 'hodin', // 小时单位 @@ -845,7 +938,30 @@ const Map csCZ = { "bicycling": "Jízda na kole", "tsransit": "Veřejná doprava", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Vybrat navigační aplikaci', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigovat pomocí Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigovat pomocí Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigovat pomocí Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigovat pomocí Apple Maps', + 'builtInNavigation': 'Vestavěná navigace', + 'useBuiltInNavigation': 'Navigovat pomocí vestavěné mapy', + 'navigationStartFailed': 'Spuštění navigace selhalo', + 'cannotPlayMusicListRetryLater': + 'Nelze přehrát seznam hudby, zkuste to prosím později', + 'cannotPlaySong': 'Nelze přehrát píseň', + 'openMapError': 'Chyba při otevírání mapy', + 'pleaseInstallAmapApp': 'Nejprve prosím nainstalujte aplikaci Amap', + 'pleaseInstallBaiduMapApp': 'Nejprve prosím nainstalujte aplikaci Baidu Maps', + 'appleMapStartFailed': 'Spuštění Apple Maps selhalo', + 'appleMapUnavailable': 'Apple Maps není k dispozici', + 'openAppleMapError': 'Chyba při otevírání Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Dotaz na počasí:', 'highest': 'Nejvyšší', 'lowest': 'Nejnižší', @@ -875,18 +991,8 @@ const Map csCZ = { "friday": "Pátek", "saturday": "Sobota", "sunday": "Neděle", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Uvítací odměna", - "firstBindRewardDesc": "Získali jste odměny za propojení.", - "vipLevelLabel": "Úroveň VIP:", - "expiryLabel": "Platnost:", - "notActivated": "Neaktivováno", - "aiChatCreditsLabel": "Kredity AI chatu:", - "translationCreditsLabel": "Kredity překladu:", - "meetingCreditsLabel": "Kredity schůzky:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Slunečno", "partlyCloudy": "Polojasno", "partlySunny": "Slunečno s mraky", @@ -907,342 +1013,42 @@ const Map csCZ = { "haze": "Opar", "strongWind": "Silný vítr", - //编辑个人信息页 - "editProfile": "Upravit osobní informace", - "avatar": "Avatar", - "nickname": "Přezdívka", - "save": "Uložit", - "about": "O aplikaci", - "enterNickname": "Zadejte prosím přezdívku", - "notSet": "Nenastaveno", - "accountSetting": "Nastavení účtu", - "logout": "Odhlásit se", - "logoutTips": "Opravdu se chcete odhlásit z aktuálního účtu?", - 'deleteAccount': 'Smazat účet', - 'deleteAccountTips': - 'Opravdu chcete trvale smazat svůj účet? Tuto operaci nelze vrátit zpět', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', + // 翻译模块 - 中间层 + "pictureTranslation": "Překlad obrázků", + "textTranslation": "Překlad textu", - // Profile 错误信息 - 'networkConnectionFailed': - 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě a zkuste to znovu', - 'serverTemporarilyUnavailable': - 'Server dočasně nemůže odpovědět, zkuste to prosím později', - 'loginExpiredPleaseRelogin': 'Přihlášení vypršelo, přihlaste se prosím znovu', - 'noPermissionForThisOperation': 'Nemáte oprávnění k této operaci', - 'requestedResourceNotFound': 'Požadovaný zdroj neexistuje', - 'imageProcessingFailedPleaseReselect': - 'Zpracování obrázku selhalo, vyberte prosím obrázek znovu', - 'operationFailedPleaseRetry': 'Operace selhala, zkuste to prosím znovu', - 'serverReturnedError': 'Server vrátil chybu', - 'serverError': 'Chyba serveru', - 'networkConnectionFailedCheckSettings': - 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě', - 'serverInternalErrorRetryLater': - 'Vnitřní chyba serveru, zkuste to prosím později', + // 翻译模块 - 主页 + "translationHistory": "Historie překladů", + "enableRecording": "Povolit nahrávání", + "viewAudioFiles": "Zobrazit audio soubory", + "headsetUser": "Uživatel sluchátek", + "phoneUser": "Uživatel telefonu", + "selectSourceLanguage": "Vyberte zdrojový jazyk", + "selectTargetLanguage": "Vyberte cílový jazyk", + "me": "Já", + "counterPart": "Protějšek", + "bluetoothCallStateError": + "Ujistěte se prosím, že jsou Bluetooth sluchátka připojena k telefonu a probíhá hovor", + "autoDetect": "Automatická detekce", // 自动检测 -// Profile 用户交互 -//'error': '错误', -//'success': '成功', - 'imageCompressionFailed': 'Komprese obrázku selhala', - 'avatarUpdateFailed': 'Aktualizace avataru selhala', - 'usernameCannotBeEmpty': 'Uživatelské jméno nemůže být prázdné', - 'saveSuccess': 'Úspěšně uloženo', - 'personalInfoUpdated': 'Osobní informace byly aktualizovány', - 'saveFailed': 'Uložení selhalo', - 'loggedOut': 'Odhlášeno', - 'logoutFailedRetry': 'Odhlášení selhalo, zkuste to prosím znovu', - 'accountPermanentlyDeleted': 'Účet byl trvale smazán', - 'deleteAccountFailedRetry': 'Smazání účtu selhalo, zkuste to prosím znovu', + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Detekce jazyka selhala", - // 账号服务相关 - 'clearUserDataFailed': 'Vymazání uživatelských dat selhalo', // 清理用户数据失败 - 'deleteUserDataFailed': 'Smazání uživatelských dat selhalo', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Odhlášení třetí strany úspěšné', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': 'Odhlášení třetí strany selhalo', // 第三方登录退出失败 - 'signOutProcessError': 'Chyba v procesu odhlašování', // 登出过程发生错误 - 'deleteAccountProcessError': 'Chyba v procesu mazání účtu', // 删除账号过程发生错误 - 'userDataClearSuccess': 'Úspěšné vymazání uživatelských dat', // 用户数据清理成功 - 'allUserDataClearSuccess': - 'Úspěšné vymazání všech uživatelských dat', // 所有用户数据清理成功 - 'accountServiceInitialized': - 'AccountService byl inicializován', // AccountService 已初始化 + // 翻译模块 - 悬浮窗与权限 + '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', + 'deleteTranslationRecordError': 'Chyba při mazání záznamu překladu: @error', + "translationFailed": "Překlad selhal", + "translating": "Překládání", + "translate": "Přeložit", + "pleaseInputText": "Zadejte prosím text", + "inputTextToTranslate": "Zadejte text k překladu", + "textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků", - // 权限管理页面 - 'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo', - 'communicationPermissions': 'Komunikační oprávnění', - 'bluetoothPermissions': 'Oprávnění Bluetooth', - 'notificationPermissions': 'Oprávnění oznámení', - 'storagePermissions': 'Oprávnění úložiště', - 'microphonePermissions': 'Oprávnění mikrofonu', - 'alarmPermissions': 'Oprávnění budíku', - 'calendarPermissions': 'Oprávnění kalendáře', - 'locationPermissions': 'Oprávnění polohy', - 'phone': 'Telefon', - 'sms': 'SMS', - 'contacts': 'Kontakty', - //'bluetooth': '蓝牙', - 'notification': 'Oznámení', - 'alarm': 'Budík', - 'calendarWrite': 'Zápis do kalendáře', - 'calendarFullAccess': 'Úplný přístup ke kalendáři', - 'locationInfo': 'Informace o poloze', - 'phonePermissionDesc': 'Používá se pro funkci telefonních hovorů', - 'smsPermissionDesc': 'Používá se pro funkci odesílání SMS', - 'alarmPermissionDesc': - 'Používá se k nastavení přesných budíků pro zajištění včasného spuštění připomínek', - 'calendarWritePermissionDesc': - 'Používá se pro vytváření událostí a připomínek v kalendáři', - 'calendarFullAccessPermissionDesc': - 'Používá se pro čtení a správu událostí a připomínek v kalendáři', - 'locationPermissionDesc': - 'Používá se pro získání informací o aktuální poloze', - 'appFunctionNeeds': 'Funkce aplikace potřebuje', - 'authorized': 'Autorizováno', - 'unauthorized': 'Neautorizováno', - 'needOpenInSystemSettings': 'Je třeba povolit v systémových nastaveních', - 'partialAuthorization': 'Částečná autorizace', - 'unknownStatus': 'Neznámý stav', - 'permissionGranted': 'Oprávnění uděleno', - 'permissionRequestError': 'Chyba při žádosti o oprávnění', - 'phonePermissionDetailDesc': - 'Funkce telefonních hovorů potřebuje oprávnění k telefonu', - 'smsPermissionDetailDesc': 'Funkce odesílání SMS potřebuje SMS oprávnění', - 'alarmPermissionDetailDesc': - 'Toto oprávnění je vyžadováno pro nastavení přesných budíků a zajištění včasného spuštění připomínek', - 'calendarWritePermissionDetailDesc': - 'Vytváření událostí v kalendáři potřebuje oprávnění k zápisu do kalendáře', - 'calendarFullAccessPermissionDetailDesc': - 'Správa událostí v kalendáři potřebuje úplné oprávnění ke kalendáři', - 'locationPermissionDetailDesc': - 'Získání informací o poloze potřebuje oprávnění k poloze', - 'contactsPermissionDesc': 'Používá se pro přístup k informacím o kontaktech', - 'contactsPermissionDetailDesc': - 'Funkce telefonních hovorů a SMS vyžaduje oprávnění ke kontaktům pro výběr kontaktů', - 'bluetoothPermissionDesc': - 'Používá se pro připojení a správu Bluetooth zařízení', - 'bluetoothPermissionDetailDesc': - 'Připojení k Bluetooth sluchátkům a dalším zařízením vyžaduje oprávnění Bluetooth', - 'bluetoothScanPermissionDesc': - 'Používá se pro skenování okolních Bluetooth zařízení', - 'bluetoothScanPermissionDetailDesc': - 'Skenování okolních Bluetooth zařízení vyžaduje oprávnění ke skenování Bluetooth', - 'bluetoothConnectPermissionDesc': - 'Používá se pro připojení k Bluetooth zařízením', - 'bluetoothConnectPermissionDetailDesc': - 'Připojení k Bluetooth zařízením vyžaduje oprávnění k připojení Bluetooth', - 'notificationPermissionDesc': 'Používá se pro odesílání oznámení', - 'notificationPermissionDetailDesc': - 'Aplikace potřebuje oprávnění k oznámení, aby vám mohla posílat důležitá upozornění a zprávy', - 'appNeedsPermissionForFullFunction': - 'Aplikace potřebuje toto oprávnění pro poskytnutí plné funkčnosti', - 'permanentDenialText': - 'Trvale jste odmítli oprávnění {permission}, přejděte prosím do nastavení aplikace a povolte ho', - 'goToSettings': 'Přejít do nastavení', - - // 权限申请 - 'bluetoothScan': 'Skenování Bluetooth', - 'bluetoothConnect': 'Připojení Bluetooth', - 'bluetoothScanExplanation': - 'Aplikace potřebuje oprávnění ke skenování Bluetooth pro vyhledávání okolních zařízení Bluetooth.', - 'bluetoothConnectExplanation': - 'Aplikace potřebuje oprávnění k připojení Bluetooth pro připojení k zařízením Bluetooth.', - 'locationForBluetoothExplanation': - 'Aplikace potřebuje oprávnění k poloze pro skenování zařízení Bluetooth.', - 'bluetoothScanPermanentDenial': - 'Oprávnění ke skenování Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', - 'bluetoothConnectPermanentDenial': - 'Oprávnění k připojení Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', - 'locationPermanentDenial': - 'Oprávnění k poloze bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', - 'notificationPermission': 'Oznámení', - 'locationPermission': 'Poloha', - 'notificationPermissionExplanation': - 'Oprávnění k oznámení je vyžadováno pro zobrazení stavu přehrávání hudby.', - 'locationPermissionExplanation': - 'Oprávnění k poloze je vyžadováno pro získání aktuální polohy.', - 'notificationPermissionPermanentDenial': - 'Trvale jste odmítli oprávnění k oznámení, přejděte prosím do nastavení a povolte jej.', - 'locationPermissionPermanentDenial': - 'Trvale jste odmítli oprávnění k poloze, přejděte prosím do nastavení a povolte jej.', -//'microphonePermission': '录音', - 'storagePermission': 'Úložiště', - 'microphonePermissionExplanation': - 'Potřebujeme oprávnění k mikrofonu pro nahrávání zvukového obsahu.', - 'storagePermissionExplanation': - 'Potřebujeme oprávnění k úložišti, abyste mohli vybírat a nahrávat audio soubory.', - 'microphonePermissionPermanentDenial': - 'Oprávnění k mikrofonu bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k mikrofonu.', - 'storagePermissionPermanentDenial': - 'Oprávnění k úložišti bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k úložišti.', - - //permission_util.dart - 'permissionUtilNeed': 'Je třeba ', - 'permissionUtilPermission': ' oprávnění', - 'permissionUtilRestricted': ' Oprávnění omezeno', - 'permissionUtilRestrictedMessage': - 'Tato funkce není k dispozici nebo je na aktuálním zařízení omezena, zkontrolujte prosím nastavení zařízení nebo systémová omezení', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 - 'newVersionFound': 'Nalezena nová verze', // 版本更新对话框标题 - 'remindLater': 'Připomenout později', // 稍后提醒按钮 - 'updateNow': 'Aktualizovat nyní', // 立即更新按钮 - 'checkUpdate': 'Zkontrolovat aktualizace', // 检查更新按钮 - 'updateFailed': 'Aktualizace selhala', // 更新失败提示 - 'cannotOpenAppStore': - 'Nelze otevřít obchod s aplikacemi, přejděte prosím ručně do obchodu pro aktualizaci', // 无法打开应用商店提示 - 'updateErrorRetry': - 'Během aktualizace došlo k chybě, zkuste to prosím později', // 更新错误重试提示 - - //国家列表 - "邮箱": "E-mail", - "中国": "Čína", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Rusko", - "英国": "Velká Británie", - "德国": "Německo", - "意大利": "Itálie", - "法国": "Francie", - "西班牙": "Španělsko", - "南非": "Jižní Afrika", - "沙特阿拉伯": "Saúdská Arábie", - "土耳其": "Turecko", - "日本": "Japonsko", - "韩国": "Jižní Korea", - "新加坡": "Singapur", - "马来西亚": "Malajsie", - "泰国": "Thajsko", - "越南": "Vietnam", - "印度": "Indie", - "巴基斯坦": "Pákistán", - "菲律宾": "Filipíny", - "印度尼西亚": "Indonésie", - "阿联酋": "SAE", - "墨西哥": "Mexiko", - "巴西": "Brazílie", - "阿根廷": "Argentina", - "澳大利亚": "Austrálie", - "新西兰": "Nový Zéland", - "中国香港": "Hongkong", - "中国澳门": "Macao", - "中国台湾": "Tchaj-wan", - "埃及": "Egypt", - "希腊": "Řecko", - "荷兰": "Nizozemsko", - "比利时": "Belgie", - "匈牙利": "Maďarsko", - "罗马尼亚": "Rumunsko", - "瑞士": "Švýcarsko", - "奥地利": "Rakousko", - "丹麦": "Dánsko", - "瑞典": "Švédsko", - "挪威": "Norsko", - "波兰": "Polsko", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbie", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalsko", - "卢森堡": "Lucembursko", - "爱尔兰": "Irsko", - "冰岛": "Island", - "阿尔巴尼亚": "Albánie", - "马耳他": "Malta", - "塞浦路斯": "Kypr", - "芬兰": "Finsko", - "保加利亚": "Bulharsko", - "立陶宛": "Litva", - "拉脱维亚": "Lotyšsko", - "爱沙尼亚": "Estonsko", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbsko", - "克罗地亚": "Chorvatsko", - "斯洛文尼亚": "Slovinsko", - "捷克": "Česko", - "斯洛伐克": "Slovensko", - "危地马拉": "Guatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívie", - "厄瓜多尔": "Ekvádor", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžírsko", - "突尼斯": "Tunisko", - "尼日利亚": "Nigérie", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopie", - "肯尼亚": "Keňa", - "坦桑尼亚": "Tanzanie", - "乌干达": "Uganda", - "孟加拉国": "Bangladéš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánsko", - "伊拉克": "Irák", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afghánistán", - "斯里兰卡": "Srí Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepál", - "蒙古": "Mongolsko", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Východní Timor", - "斐济": "Fidži", - "所罗门群岛": "Šalamounovy ostrovy", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Překlad obrázků", - "textTranslation": "Překlad textu", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historie překladů", - "enableRecording": "Povolit nahrávání", - "viewAudioFiles": "Zobrazit audio soubory", - "headsetUser": "Uživatel sluchátek", - "phoneUser": "Uživatel telefonu", - "selectSourceLanguage": "Vyberte zdrojový jazyk", - "selectTargetLanguage": "Vyberte cílový jazyk", - "me": "Já", - "counterPart": "Protějšek", - "bluetoothCallStateError": - "Ujistěte se prosím, že jsou Bluetooth sluchátka připojena k telefonu a probíhá hovor", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Automatická detekce", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Detekce jazyka selhala", - "translationFailed": "Překlad selhal", - "pleaseInputText": "Zadejte prosím text", - "textTooLong": "Text je příliš dlouhý, maximálně 5000 znaků", - - // 翻译历史页 + // 翻译模块 - 历史记录 "noTranslationHistory": "Žádná historie překladů", "historyRecords": "Záznamy historie", "clearResults": "Vymazat výsledky", @@ -1254,7 +1060,7 @@ const Map csCZ = { "deleteSessionConfirm": "Opravdu chcete smazat všechny záznamy překladů pro tuto relaci? Tuto operaci nelze vrátit zpět.", - // 图片翻译模块(Picture Translation) + // 翻译模块 - 图片翻译 "selectImageSource": "Vybrat zdroj obrázku", "imagePreview": "Náhled obrázku", "translationResult": "Výsledek překladu", @@ -1306,7 +1112,7 @@ const Map csCZ = { "translationTime": "Čas překladu", "shareInDevelopment": "Funkce sdílení je ve vývoji", - // 翻译录音文件列表页 + // 翻译模块 - 录音文件 "translateAudioFiles": "Přeložit audio soubory", "noAudioFiles": "Žádné audio soubory", "calculating": "Výpočet...", @@ -1318,32 +1124,226 @@ const Map csCZ = { "renameAudioFile": "Přejmenovat audio soubor", "enterNewFileName": "Zadejte prosím nový název souboru", - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Původní záznam", - "recordSummary": "Shrnutí záznamu", - "clickToGenerateSummary": - "Klikněte na tlačítko níže pro vygenerování shrnutí relace", - "summaryContent": "Obsah shrnutí", - "copied": "Zkopírováno", - "summaryCopiledToClipboard": "Shrnutí bylo zkopírováno do schránky", - "extractSummary": "Extrahovat shrnutí", - "summaryGenerated": "Shrnutí vygenerováno", - "generating": "Generování...", - "regenerate": "Regenerovat", - "summaryTimeoutMessage": - "Požadavek na generování shrnutí vypršel, možná kvůli problému se sítí nebo přetížení serveru.", - "deleteTranslationRecord": "Smazat záznam překladu", - "deleteTranslationConfirm": - "Opravdu chcete smazat tento záznam překladu? Tuto operaci nelze vrátit zpět.", - "originalText": "Původní text", - "translatedText": "Přeložený text", - "sessionSummary": "Shrnutí relace", - "cannotShare": "Nelze sdílet", - "generateSummaryFirst": "Nejprve prosím vygenerujte shrnutí", - "translationSessionRecord": "Záznam relace překladu", + // 翻译模块 - 翻译详情 + "originalRecord": "Původní záznam", + "recordSummary": "Shrnutí záznamu", + "clickToGenerateSummary": + "Klikněte na tlačítko níže pro vygenerování shrnutí relace", + "summaryContent": "Obsah shrnutí", + "copied": "Zkopírováno", + "summaryCopiledToClipboard": "Shrnutí bylo zkopírováno do schránky", + "extractSummary": "Extrahovat shrnutí", + "summaryGenerated": "Shrnutí vygenerováno", + "generating": "Generování...", + "regenerate": "Regenerovat", + "summaryTimeoutMessage": + "Požadavek na generování shrnutí vypršel, možná kvůli problému se sítí nebo přetížení serveru.", + "deleteTranslationRecord": "Smazat záznam překladu", + "deleteTranslationConfirm": + "Opravdu chcete smazat tento záznam překladu? Tuto operaci nelze vrátit zpět.", + "originalText": "Původní text", + "translatedText": "Přeložený text", + "sessionSummary": "Shrnutí relace", + "cannotShare": "Nelze sdílet", + "generateSummaryFirst": "Nejprve prosím vygenerujte shrnutí", + "translationSessionRecord": "Záznam relace překladu", + + // 个人资料模块 + "editProfile": "Upravit osobní informace", + "avatar": "Avatar", + "nickname": "Přezdívka", + "save": "Uložit", + "about": "O aplikaci", + "enterNickname": "Zadejte prosím přezdívku", + "notSet": "Nenastaveno", + "accountSetting": "Nastavení účtu", + "logout": "Odhlásit se", + "logoutTips": "Opravdu se chcete odhlásit z aktuálního účtu?", + 'deleteAccount': 'Smazat účet', + 'deleteAccountTips': + 'Opravdu chcete trvale smazat svůj účet? Tuto operaci nelze vrátit zpět', + 'clean': 'Vymazat mezipaměť', + 'cleanTips': 'Opravdu chcete vymazat osobní mezipaměť?', + 'networkConnectionFailed': + 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě a zkuste to znovu', + 'serverTemporarilyUnavailable': + 'Server dočasně nemůže odpovědět, zkuste to prosím později', + 'loginExpiredPleaseRelogin': 'Přihlášení vypršelo, přihlaste se prosím znovu', + 'noPermissionForThisOperation': 'Nemáte oprávnění k této operaci', + 'requestedResourceNotFound': 'Požadovaný zdroj neexistuje', + 'imageProcessingFailedPleaseReselect': + 'Zpracování obrázku selhalo, vyberte prosím obrázek znovu', + 'operationFailedPleaseRetry': 'Operace selhala, zkuste to prosím znovu', + 'serverReturnedError': 'Server vrátil chybu', + 'serverError': 'Chyba serveru', + 'networkConnectionFailedCheckSettings': + 'Připojení k síti selhalo, zkontrolujte prosím nastavení sítě', + 'serverInternalErrorRetryLater': + 'Vnitřní chyba serveru, zkuste to prosím později', + 'imageCompressionFailed': 'Komprese obrázku selhala', + 'avatarUpdateFailed': 'Aktualizace avataru selhala', + 'usernameCannotBeEmpty': 'Uživatelské jméno nemůže být prázdné', + 'saveSuccess': 'Úspěšně uloženo', + 'personalInfoUpdated': 'Osobní informace byly aktualizovány', + 'saveFailed': 'Uložení selhalo', + 'loggedOut': 'Odhlášeno', + 'logoutFailedRetry': 'Odhlášení selhalo, zkuste to prosím znovu', + 'accountPermanentlyDeleted': 'Účet byl trvale smazán', + 'deleteAccountFailedRetry': 'Smazání účtu selhalo, zkuste to prosím znovu', + 'clearUserDataFailed': 'Vymazání uživatelských dat selhalo', // 清理用户数据失败 + 'deleteUserDataFailed': 'Smazání uživatelských dat selhalo', // 删除用户数据失败 + 'thirdPartyLogoutSuccess': 'Odhlášení třetí strany úspěšné', // 第三方登录退出成功 + 'thirdPartyLogoutFailed': 'Odhlášení třetí strany selhalo', // 第三方登录退出失败 + 'signOutProcessError': 'Chyba v procesu odhlašování', // 登出过程发生错误 + 'deleteAccountProcessError': 'Chyba v procesu mazání účtu', // 删除账号过程发生错误 + 'userDataClearSuccess': 'Úspěšné vymazání uživatelských dat', // 用户数据清理成功 + 'allUserDataClearSuccess': + 'Úspěšné vymazání všech uživatelských dat', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'AccountService byl inicializován', // AccountService 已初始化 + + // 权限模块 + 'meetingStoragePermission': 'Úložiště', + 'meetingStoragePermissionExplanation': + 'Potřebujeme přístup k oprávnění úložiště, abyste mohli vybírat a nahrávat zvukové soubory.', + 'meetingStoragePermissionPermanentDenial': + 'Zjistili jsme, že jste trvale odmítli oprávnění k úložišti. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k úložišti.', + 'getPermissionStatusFailed': 'Získání stavu oprávnění selhalo', + 'communicationPermissions': 'Komunikační oprávnění', + 'bluetoothPermissions': 'Oprávnění Bluetooth', + 'notificationPermissions': 'Oprávnění oznámení', + 'storagePermissions': 'Oprávnění úložiště', + 'microphonePermissions': 'Oprávnění mikrofonu', + 'alarmPermissions': 'Oprávnění budíku', + 'calendarPermissions': 'Oprávnění kalendáře', + 'locationPermissions': 'Oprávnění polohy', + 'phone': 'Telefon', + 'sms': 'SMS', + 'contacts': 'Kontakty', + 'notification': 'Oznámení', + 'alarm': 'Budík', + 'calendarWrite': 'Zápis do kalendáře', + 'calendarFullAccess': 'Úplný přístup ke kalendáři', + 'locationInfo': 'Informace o poloze', + 'phonePermissionDesc': 'Používá se pro funkci telefonních hovorů', + 'smsPermissionDesc': 'Používá se pro funkci odesílání SMS', + 'alarmPermissionDesc': + 'Používá se k nastavení přesných budíků pro zajištění včasného spuštění připomínek', + 'calendarWritePermissionDesc': + 'Používá se pro vytváření událostí a připomínek v kalendáři', + 'calendarFullAccessPermissionDesc': + 'Používá se pro čtení a správu událostí a připomínek v kalendáři', + 'locationPermissionDesc': + 'Používá se pro získání informací o aktuální poloze', + 'appFunctionNeeds': 'Funkce aplikace potřebuje', + 'authorized': 'Autorizováno', + 'unauthorized': 'Neautorizováno', + 'needOpenInSystemSettings': 'Je třeba povolit v systémových nastaveních', + 'partialAuthorization': 'Částečná autorizace', + 'unknownStatus': 'Neznámý stav', + 'permissionGranted': 'Oprávnění uděleno', + 'permissionRequestError': 'Chyba při žádosti o oprávnění', + 'phonePermissionDetailDesc': + 'Funkce telefonních hovorů potřebuje oprávnění k telefonu', + 'smsPermissionDetailDesc': 'Funkce odesílání SMS potřebuje SMS oprávnění', + 'alarmPermissionDetailDesc': + 'Toto oprávnění je vyžadováno pro nastavení přesných budíků a zajištění včasného spuštění připomínek', + 'calendarWritePermissionDetailDesc': + 'Vytváření událostí v kalendáři potřebuje oprávnění k zápisu do kalendáře', + 'calendarFullAccessPermissionDetailDesc': + 'Správa událostí v kalendáři potřebuje úplné oprávnění ke kalendáři', + 'locationPermissionDetailDesc': + 'Získání informací o poloze potřebuje oprávnění k poloze', + 'contactsPermissionDesc': 'Používá se pro přístup k informacím o kontaktech', + 'contactsPermissionDetailDesc': + 'Funkce telefonních hovorů a SMS vyžaduje oprávnění ke kontaktům pro výběr kontaktů', + 'bluetoothPermissionDesc': + 'Používá se pro připojení a správu Bluetooth zařízení', + 'bluetoothPermissionDetailDesc': + 'Připojení k Bluetooth sluchátkům a dalším zařízením vyžaduje oprávnění Bluetooth', + 'bluetoothScanPermissionDesc': + 'Používá se pro skenování okolních Bluetooth zařízení', + 'bluetoothScanPermissionDetailDesc': + 'Skenování okolních Bluetooth zařízení vyžaduje oprávnění ke skenování Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Používá se pro připojení k Bluetooth zařízením', + 'bluetoothConnectPermissionDetailDesc': + 'Připojení k Bluetooth zařízením vyžaduje oprávnění k připojení Bluetooth', + 'notificationPermissionDesc': 'Používá se pro odesílání oznámení', + 'notificationPermissionDetailDesc': + 'Aplikace potřebuje oprávnění k oznámení, aby vám mohla posílat důležitá upozornění a zprávy', + 'appNeedsPermissionForFullFunction': + 'Aplikace potřebuje toto oprávnění pro poskytnutí plné funkčnosti', + 'permanentDenialText': + 'Trvale jste odmítli oprávnění {permission}, přejděte prosím do nastavení aplikace a povolte ho', + 'goToSettings': 'Přejít do nastavení', + 'bluetoothScan': 'Skenování Bluetooth', + 'bluetoothConnect': 'Připojení Bluetooth', + 'bluetoothScanExplanation': + 'Aplikace potřebuje oprávnění ke skenování Bluetooth pro vyhledávání okolních zařízení Bluetooth.', + 'bluetoothConnectExplanation': + 'Aplikace potřebuje oprávnění k připojení Bluetooth pro připojení k zařízením Bluetooth.', + 'locationForBluetoothExplanation': + 'Aplikace potřebuje oprávnění k poloze pro skenování zařízení Bluetooth.', + 'bluetoothScanPermanentDenial': + 'Oprávnění ke skenování Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', + 'bluetoothConnectPermanentDenial': + 'Oprávnění k připojení Bluetooth bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', + 'locationPermanentDenial': + 'Oprávnění k poloze bylo trvale odmítnuto, přejděte prosím do nastavení a povolte jej ručně.', + 'notificationPermission': 'Oznámení', + 'locationPermission': 'Poloha', + 'notificationPermissionExplanation': + 'Oprávnění k oznámení je vyžadováno pro zobrazení stavu přehrávání hudby.', + 'locationPermissionExplanation': + 'Oprávnění k poloze je vyžadováno pro získání aktuální polohy.', + 'notificationPermissionPermanentDenial': + 'Trvale jste odmítli oprávnění k oznámení, přejděte prosím do nastavení a povolte jej.', + 'locationPermissionPermanentDenial': + 'Trvale jste odmítli oprávnění k poloze, přejděte prosím do nastavení a povolte jej.', + 'storagePermission': 'Úložiště', + 'microphonePermissionExplanation': + 'Potřebujeme oprávnění k mikrofonu pro nahrávání zvukového obsahu.', + 'storagePermissionExplanation': + 'Potřebujeme oprávnění k úložišti, abyste mohli vybírat a nahrávat audio soubory.', + 'microphonePermissionPermanentDenial': + 'Oprávnění k mikrofonu bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k mikrofonu.', + 'storagePermissionPermanentDenial': + 'Oprávnění k úložišti bylo trvale odmítnuto. Chcete-li tuto funkci dále používat, přejděte prosím do nastavení aplikace a ručně povolte oprávnění k úložišti.', + 'permissionUtilNeed': 'Je třeba ', + 'permissionUtilPermission': ' oprávnění', + 'permissionUtilRestricted': ' Oprávnění omezeno', + 'permissionUtilRestrictedMessage': + 'Tato funkce není k dispozici nebo je na aktuálním zařízení omezena, zkontrolujte prosím nastavení zařízení nebo systémová omezení', + 'permissionUtilConfirm': 'OK', + + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Probíhá navigace', + 'native.notification.navigation.keepRunning': + 'Navigace, nechte aplikaci spuštěnou', + 'native.notification.bleAgent.running': 'Hlasový asistent běží', + 'native.notification.audioRecording.recording': + 'Nahrávání zvuku, klepněte pro návrat do aplikace', + 'native.notification.music.waiting': 'Čekání na přehrávání', + 'native.notification.music.previous': 'Předchozí', + 'native.notification.music.next': 'Další', + 'native.notification.music.play': 'Přehrát', + 'native.notification.music.pause': 'Pozastavit', + 'native.notification.qqMusic.playing': 'Přehrávání hudby', + + // 版本更新 + 'newVersionFound': 'Nalezena nová verze', // 版本更新对话框标题 + 'remindLater': 'Připomenout později', // 稍后提醒按钮 + 'updateNow': 'Aktualizovat nyní', // 立即更新按钮 + 'checkUpdate': 'Zkontrolovat aktualizace', // 检查更新按钮 + 'updateFailed': 'Aktualizace selhala', // 更新失败提示 + 'cannotOpenAppStore': + 'Nelze otevřít obchod s aplikacemi, přejděte prosím ručně do obchodu pro aktualizaci', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Během aktualizace došlo k chybě, zkuste to prosím později', // 更新错误重试提示 // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Párování zařízení", "connectYourDeepSoundHeadset": "Připojte svá sluchátka Voitrans", "bind": "Svázat", @@ -1352,14 +1352,11 @@ const Map csCZ = { "autoInputCode": "Automatické zadání kódu", "skipBinding": "Přeskočit svázání", "rescan": "Znovu skenovat", - "verifyingDevice": "Ověřování zařízení...", "confirmBinding": "Potvrdit svázání", "associatingDevice": "Přidružování zařízení...", "goToBluetoothSettings": "Přejít do nastavení Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Připraveno k párování", "preparingPairingEnvironment": "Příprava prostředí pro párování...", "connectDeepSoundViaSystemBluetooth": @@ -1369,8 +1366,6 @@ const Map csCZ = { "waitingCompletePairing": "Čekejte prosím, dokončování párování...", "pairingSuccessRedirecting": "Párování úspěšné! Přesměrování na hlavní stránku...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Ujistěte se prosím, že připojené zařízení je Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1378,12 @@ const Map csCZ = { "authorizationFailedCheckCode": "Autorizace selhala, zkontrolujte prosím, zda je autorizační kód správný", "pairingFailedRetry": "Párování selhalo, zkuste to prosím znovu", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Zapněte prosím Bluetooth', 'deviceDisconnected': 'Zařízení bylo odpojeno', 'readyToStartPairing': 'Připraveno k zahájení párování', 'checkingEnvironment': 'Kontrola prostředí...', 'ensureHeadsetOnAndPairingMode': 'Ujistěte se prosím, že jsou sluchátka zapnutá a v režimu párování', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Navazování bezpečného spojení...', 'needManualBindingAuthCode': 'Potřeba ručního autorizačního kódu pro svázání...', @@ -1418,8 +1406,6 @@ const Map csCZ = { 'bleConnectionFailed': 'BLE připojení selhalo', 'deviceAuthorizationFailedCheckCode': 'Autorizace zařízení selhala, zkontrolujte prosím autorizační kód', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Vyžadována ruční aktivace Bluetooth', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Postupujte prosím podle těchto kroků:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1432,7 +1418,18 @@ const Map csCZ = { 'Tip: Můžete také dlouze stisknout ikonu Bluetooth v Ovládacím centru pro rychlý přístup k nastavení Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Rozumím', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Uvítací odměna", + "firstBindRewardDesc": "Získali jste odměny za propojení.", + "vipLevelLabel": "Úroveň VIP:", + "expiryLabel": "Platnost:", + "notActivated": "Neaktivováno", + "aiChatCreditsLabel": "Kredity AI chatu:", + "translationCreditsLabel": "Kredity překladu:", + "meetingCreditsLabel": "Kredity schůzky:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Zpětná vazba uživatele", 'feedbackInfo': 'Poskytněte zpětnou vazbu nebo návrhy', 'feedbackDescription': 'Popište prosím váš problém nebo návrh', @@ -1475,7 +1472,61 @@ const Map csCZ = { "removeEarbudsEnsureBattery": "Vyjměte obě sluchátka a ujistěte se, že baterie obou je nad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nalezena nová verze @version', + 'otaConfirmUpdateNow': 'Aktualizovat nyní?', + 'otaUpdate': 'Aktualizovat', + '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í?', + 'otaPairLater': 'Spárovat později', + 'otaPairNow': 'Spárovat nyní', + 'okConfirm': 'OK', + + // 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', + 'otaDeviceInfoUnavailableTitle': 'Informace o zařízení nedostupné', + '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', + 'otaCannotGetBatteryInfo': 'Nelze získat platné informace o baterii', + 'otaLowBattery': 'Nízká baterie', + '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': + 'Tato aktualizace zahrnuje optimalizace výkonu a opravy chyb.', + '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', + 'otaDownloadFailed': 'Stahování selhalo', + 'otaPreparingConnection': 'Příprava připojení zařízení...', + 'otaConnectingDevice': 'Připojování k zařízení...', + 'otaUpgradeStarted': 'OTA aktualizace zahájena...', + 'otaUpgradeProgressWithPercent': 'Průběh aktualizace: @percent %', + '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', + 'otaDeviceDisconnected': 'Zařízení odpojeno', + 'otaDeviceConnected': 'Zařízení připojeno', + + // 音乐模块 "noMusic": "Žádná hudba", // 暂无音乐 "noPlayingMusic": "Žádná přehrávaná hudba", // 暂无播放音乐 "unknownSong": "Neznámá píseň", // 未知歌曲 @@ -1523,22 +1574,122 @@ const Map csCZ = { "波斯语": "Perština", "斯瓦希里语": "Svahilština", - // 时间相关 - "justNow": "Právě teď", - "minutesAgo": "před @minutes minutami", - "yesterday": "Včera", - // 时间扩展(图片翻译模块使用) - "daysAgo": "před @days dny", - "hoursAgo": "před @hours hodinami", - - //补充 - "insufficientIntegral": "Nedostatek bodů", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Nedostatečný zůstatek, přejděte prosím na příslušnou stránku pro dobití.', - "recharge": 'Přejít na dobití', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI členství vypršelo, přejděte prosím na stránku dobíjení členství pro obnovení.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Čína", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Rusko", + "英国": "Velká Británie", + "德国": "Německo", + "意大利": "Itálie", + "法国": "Francie", + "西班牙": "Španělsko", + "南非": "Jižní Afrika", + "沙特阿拉伯": "Saúdská Arábie", + "土耳其": "Turecko", + "日本": "Japonsko", + "韩国": "Jižní Korea", + "新加坡": "Singapur", + "马来西亚": "Malajsie", + "泰国": "Thajsko", + "越南": "Vietnam", + "印度": "Indie", + "巴基斯坦": "Pákistán", + "菲律宾": "Filipíny", + "印度尼西亚": "Indonésie", + "阿联酋": "SAE", + "墨西哥": "Mexiko", + "巴西": "Brazílie", + "阿根廷": "Argentina", + "澳大利亚": "Austrálie", + "新西兰": "Nový Zéland", + "中国香港": "Hongkong", + "中国澳门": "Macao", + "中国台湾": "Tchaj-wan", + "埃及": "Egypt", + "希腊": "Řecko", + "荷兰": "Nizozemsko", + "比利时": "Belgie", + "匈牙利": "Maďarsko", + "罗马尼亚": "Rumunsko", + "瑞士": "Švýcarsko", + "奥地利": "Rakousko", + "丹麦": "Dánsko", + "瑞典": "Švédsko", + "挪威": "Norsko", + "波兰": "Polsko", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbie", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalsko", + "卢森堡": "Lucembursko", + "爱尔兰": "Irsko", + "冰岛": "Island", + "阿尔巴尼亚": "Albánie", + "马耳他": "Malta", + "塞浦路斯": "Kypr", + "芬兰": "Finsko", + "保加利亚": "Bulharsko", + "立陶宛": "Litva", + "拉脱维亚": "Lotyšsko", + "爱沙尼亚": "Estonsko", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbsko", + "克罗地亚": "Chorvatsko", + "斯洛文尼亚": "Slovinsko", + "捷克": "Česko", + "斯洛伐克": "Slovensko", + "危地马拉": "Guatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívie", + "厄瓜多尔": "Ekvádor", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžírsko", + "突尼斯": "Tunisko", + "尼日利亚": "Nigérie", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopie", + "肯尼亚": "Keňa", + "坦桑尼亚": "Tanzanie", + "乌干达": "Uganda", + "孟加拉国": "Bangladéš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánsko", + "伊拉克": "Irák", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afghánistán", + "斯里兰卡": "Srí Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepál", + "蒙古": "Mongolsko", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Východní Timor", + "斐济": "Fidži", + "所罗门群岛": "Šalamounovy ostrovy", + "刚果民主共和国": "Demokratická republika Kongo", + "安哥拉": "Angola", + "苏丹": "Súdán", + "马尔代夫": "Maledivy", + "不丹": "Bhútán", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamajka", + "巴哈马": "Bahamy", + "巴布亚新几内亚": "Papua Nová Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/da_dk.dart b/lib/core/translations/language/da_dk.dart index ed704e607..fc19d6fcd 100644 --- a/lib/core/translations/language/da_dk.dart +++ b/lib/core/translations/language/da_dk.dart @@ -1,3 +1,4 @@ +//丹麦-丹麦语 const Map daDK = { // 通用 'continue': 'Fortsæt', @@ -18,6 +19,11 @@ const Map daDK = { "unknownError": "Ukendt fejl", "asrConnectionFailed": "Forbindelsen til talegenkendelsestjenesten mislykkedes. Kontroller netværket, eller prøv igen senere.", + "justNow": "Lige nu", + "minutesAgo": "for @minutes minutter siden", + "yesterday": "I går", + "daysAgo": "for @days dage siden", + "hoursAgo": "for @hours timer siden", // 启动页 "slogan": "Forbind verden, ud over lyd", @@ -28,7 +34,7 @@ const Map daDK = { "explore": "Udforsk", "settings": "Indstillinger", - // 语言 + // 语言列表 "followingSystem": "Følg system", "chinese": "Kinesisk", "english": "Engelsk", @@ -43,9 +49,9 @@ const Map daDK = { "russian": "Russisk", "vietnamese": "Vietnamesisk", "italian": "Italiensk", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonesisk", - "thai": "Thai", + "thai": 'Thai', "malay": "Malaysisk", "turkish": "Tyrkisk", "polish": "Polsk", @@ -72,7 +78,7 @@ const Map daDK = { "arabic": "Arabisk", "persian": "Farsisk", - // 登录页 + // 登录模块 "welcome": "Velkommen", "loginTips": "Log ind eller tilmeld dig med telefonnummer eller e-mail", "accountNumber": "Telefonnummer eller e-mail", @@ -90,7 +96,7 @@ const Map daDK = { "pleaseEnterContactInfo": "Indtast venligst telefonnummer eller e-mail", "invalidEmailFormat": "Ugyldigt e-mail format", "invalidPhoneFormat": "Ugyldigt telefonnummer format", - "tip": "Tip", + "tip": 'Tip', "pleaseEnterCompleteCode": "Indtast venligst den komplette verifikationskode", "loginFailed": "Login mislykkedes, prøv venligst igen", 'pleaseAcceptPrivacyPolicy': @@ -100,13 +106,9 @@ const Map daDK = { "resendVerificationCode": "Send verifikationskode igen", "login": "Log ind", "usePasswordLogin": "Brug adgangskode login", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans erklæring", // Voitrans 声明 "welcomeToThisApp": "Velkommen til Voitrans, læs venligst grundigt", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Ved at klikke 'Accepter og fortsæt' angiver du, at du har læst og accepteret ovenstående aftaler fuldt ud. Ved at klikke 'Accepter ikke' vil applikationen lukke.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Accepter ikke", // 不同意 @@ -117,7 +119,7 @@ const Map daDK = { "reconnect": "Tilslut igen", "connectingDevice": "Tilslutter enhed...", "connectedTo": "Tilsluttet til", - "signal": "Signal", + "signal": 'Signal', "deviceId": "Enheds-ID", "firmwareVersion": "Firmware version", "disconnectedDevice": "Ingen tilsluttet enhed, klik på knappen nedenfor", @@ -164,7 +166,31 @@ const Map daDK = { 'right': 'Højre', 'checkConnectionStatusFailed': 'Kontrol af forbindelsesstatus mislykkedes', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth-initialisering 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.', + 'needEnableBluetooth': 'Aktivér Bluetooth', + 'enableBluetoothDialogContent': + 'Aktivér Bluetooth for at scanne og forbinde enheder.', + 'bleScanFailedWithError': 'Scanning mislykkedes: @error', + 'bleConnectionSuccess': 'Forbindelse oprettet', + 'bleConnectedToDevice': 'Forbundet til @device', + 'bleConnectionFailedWithError': 'Forbindelse mislykkedes: @error', + 'bleDisconnected': 'Frakoblet', + 'bleDeviceDisconnected': 'Enhed frakoblet', + 'bleDisconnectFailedWithError': 'Frakobling mislykkedes: @error', + 'signalStrong': 'Stærkt signal', + 'signalMedium': 'Middel signal', + 'signalWeak': 'Svagt signal', + 'signalVeryWeak': 'Meget svagt signal', + + // 发现页 "searchAi": "Søg AI funktioner...", "exploreSlogan": "Smarte øretelefoner, uendelige muligheder", "exploreSlogan1": "Smart ledsager, uendelige muligheder", @@ -188,8 +214,9 @@ const Map daDK = { "usageStats": "Brugsstatistik", "usageStatsInfo": "Se statistik for brug af appen", "scene": "Scenarier", + // 用量统计模块 - "aiChat": "AI Chat", + "aiChat": 'AI-chat', "translationStats": "Oversættelsesstatistik", "meetingStats": "Mødestatistik", "today": "I dag", @@ -208,7 +235,6 @@ const Map daDK = { "translationApi": "Oversættelses-API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Datamængdestatistik", "sourceTextCharacters": "Kildeteksttegn", "ttsTextCharacters": "TTS Teksttegn", @@ -225,7 +251,6 @@ const Map daDK = { "totalAudioDuration": "Total lydvarighed", "audioFileSize": "Lydfilstørrelse", "transcriptBytes": "Udskriftbytes", - // 通知文案 "loadFailed": "Indlæsning mislykkedes", "statsLoadFailedTryLater": "Statistik kunne ikke indlæses. Prøv venligst igen senere.", @@ -234,88 +259,82 @@ const Map daDK = { "exportFeature": "Eksportfunktion", "exportInDevelopment": "Dataeksport er under udvikling", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Tilgængelige pakker', 'remainingQuota': 'Resterende kvote', 'totalQuota': 'Total kvote', 'remaining': 'Resterende', 'featureDescription': 'Funktionsbeskrivelse', - // AI 功能卡片 + 'paymentSuccess': 'Betaling gennemført', + 'paymentFailed': 'Betaling mislykkedes', + 'gotIt': 'Forstået', + 'paymentFailedTryAgain': 'Betaling mislykkedes. Prøv igen.', + 'selectPaymentMethod': 'Vælg betalingsmetode', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kunne ikke oprette WeChat-ordre', + 'alipayOrderCreateFailed': 'Kunne ikke oprette Alipay-ordre', + 'appleOrderCreateFailed': 'Kunne ikke oprette Apple-ordre', + 'googleOrderCreateFailed': 'Kunne ikke oprette Google-ordre', + 'paypalOrderCreateFailed': 'Kunne ikke oprette PayPal-ordre', + 'paymentException': 'Betalingsundtagelse', + 'paymentLaunchFailed': 'Kunne ikke starte betaling', + 'paymentExceptionWithError': 'Betalingsundtagelse: @error', + 'paymentProcessingCheckLater': 'Din ordre behandles. Tjek igen senere.', + 'paymentResultQueryException': 'Kunne ikke hente betalingsresultat: @error', + 'orderConfirmedQuotaRefreshed': + 'Ordre bekræftet. Din kvote er blevet opdateret.', + 'paymentCompletedConfirming': 'Betaling gennemført. Bekræfter…', + 'paymentCancelled': 'Betaling annulleret', + 'paypalOpenedCompleteInBrowser': + 'PayPal er åbnet. Gennemfør betalingen i din browser.', + 'paypalOpenFailed': 'Kan ikke åbne PayPal-betalingssiden', + 'paymentTestTitle': 'Betalingstest', + 'paymentTestOrderInfo': 'Testordreinformation', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeskrivelse', + 'paymentTestWechatDescription': 'WeChat Pay betalingstest', + 'paymentTestAlipayDescription': 'Alipay betalingstest', + 'paymentTestAmount': 'Beløb', + 'paymentTestSelectAmount': 'Vælg testbeløb', + 'paying': 'Betaler...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Betalingsstatus', + 'errorInfoWithMessage': 'Fejl: @message', + 'retest': 'Test igen', + 'paymentTestInstructionsTitle': 'Instruktioner', + 'paymentTestInstructionsContent': + '1. Vælg et testbeløb (anbefalet: ¥0,01)\n2. Klik på betalingsknappen for at starte\n3. Gennemfør betalingen i betalingsappen\n4. Gå tilbage for at tjekke resultatet', + 'startingWechatPayment': 'Starter WeChat Pay...', + 'startingAlipayPayment': 'Starter Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay gennemført!', + 'wechatPaymentFailed': 'WeChat Pay mislykkedes', + 'wechatPaymentLaunchFailed': 'Kunne ikke starte WeChat Pay', + 'cannotLaunchWechatPayment': 'Kan ikke starte WeChat Pay', + 'wechatPaymentException': 'WeChat Pay-undtagelse', + 'wechatPaymentTestCompleted': 'WeChat Pay-test gennemført', + 'alipayPaymentSuccess': 'Alipay gennemført!', + 'alipayPaymentFailed': 'Alipay mislykkedes', + 'alipayPaymentLaunchFailed': 'Kunne ikke starte Alipay', + 'cannotLaunchAlipayPayment': 'Kan ikke starte Alipay', + 'alipayPaymentException': 'Alipay-undtagelse', + "insufficientIntegral": "Utilstrækkelige point", + "insufficientBalanceDesc": + 'Utilstrækkelig saldo, gå venligst til den tilsvarende genopfyldningsside for at genopfylde.', + "recharge": 'Gå til genopfyldning', + "aiMemberExpiredDesc": + 'AI medlemskab udløbet, gå venligst til medlemskabsgenopfyldningssiden for at forny.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Musik & anbefaling', 'navigationAndRoutes': 'Navigation & ruter', 'nearbySearch': 'Søgning i nærheden', 'newsInformation': 'Nyheder', 'communicationAssistant': 'Kommunikationsassistent', - // 翻译功能卡片 - 'realtimeTranscription': 'Realtidstranskription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenarieordbog', - 'subtitleDisplay': 'Undertekster', - // 会议功能卡片 - 'meetingRecording': 'Mødeoptagelse', - 'transcriptionAndSummary': 'Transkription & sammendrag', - 'keywordSearch': 'Søgeordsøgning', - 'collaborationSharing': 'Samarbejde & deling', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Møde Basic 100', - 'meet_002_name': 'Møde Basic 500', - 'meet_003_name': 'Møde Basic 1000', - 'trans_001_name': 'Oversættelse Basic 100', - 'trans_002_name': 'Oversættelse Basic 500', - 'trans_003_name': 'Oversættelse Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Inkluderer 100 anvendelser. Adgang til kerne AI-funktioner.', - 'ai_002_desc': 'Inkluderer 500 anvendelser. Adgang til kerne AI-funktioner.', - 'ai_003_desc': 'Inkluderer 1000 anvendelser. Adgang til kerne AI-funktioner.', - 'meet_001_desc': 'Inkluderer 100 mødeoptagelser/transkriptioner.', - 'meet_002_desc': 'Inkluderer 500 mødeoptagelser/transkriptioner.', - 'meet_003_desc': 'Inkluderer 1000 mødeoptagelser/transkriptioner.', - 'trans_001_desc': 'Inkluderer 100 oversættelser (stemme/tekst).', - 'trans_002_desc': 'Inkluderer 500 oversættelser (stemme/tekst).', - 'trans_003_desc': 'Inkluderer 1000 oversættelser (stemme/tekst).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Leveret af: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP kundeservice QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Lydoptagelse, transkription, søgeordsøgning og automatisk sammendrag for at øge mødeeffektiviteten.', - 'meetingHeaderDesc2': - 'Velegnet til forretningsmøder, klassenoter og interviewreferater.', - 'meetingAutoRecording': 'Automatisk optagelse og segmentering', - 'meetingSpeakerTagging': 'Taleridentifikation', - 'meetingLongAudioTranscription': 'Lang lydtranskription', - 'meetingKeyPointSummary': 'Udtrækning af hovedpunkter', - 'meetingTopicNameSearch': 'Søg efter emne/navn', - 'meetingTimelineJump': 'Tidslinjehop', - 'meetingExportSummary': 'Eksportér referat', - 'meetingMultiPlatformShare': 'Del på tværs af platforme', - 'meetingDisclaimer': - 'Brug i stille omgivelser; ydeevne afhænger af mikrofon og netværk.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Realtids simultantolkning og tekstoversættelse med lav latenstid.', - 'transHeaderDesc2': 'Velegnet til rejser, forretning, taler og undervisning.', - 'translateZhEn': 'Kinesisk-engelsk oversættelse', - 'lowLatencyVoiceBroadcast': 'Stemmeudsendelse med lav latenstid', - 'multiLangTextTranslation': 'Flersproget tekstoversættelse', - 'termOptimizationContextPreserve': - 'Terminologioptimering og kontekstbevarelse', - 'lexiconTourBusinessLife': 'Rejse/Forretning/Livsstil ordbøger', - 'personalVocabularyMemory': 'Personlig ordforrådshukommelse', - 'conversationSubtitleLargeText': 'Samtaleundertekster / Stor teksttilstand', - 'colorHighContrast': 'Høj farvekontrast', - 'transDisclaimer': - 'Oversættelsesydelse afhænger af mikrofon, netværkslatenstid og omgivende støj.', - - // AI 商品页描述 'aiHeaderDesc1': 'Længere samtalekvote, flere værktøjskald, udvidet kontekstlængde.', 'aiHeaderDesc2': @@ -339,7 +358,46 @@ const Map daDK = { 'aiDisclaimer': 'Funktioner afhænger af enhedstilladelser, servicetilgængelighed og netværksforhold.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Realtidstranskription', + 'sceneLexicon': 'Scenarieordbog', + 'subtitleDisplay': 'Undertekster', + 'transHeaderDesc1': + 'Realtids simultantolkning og tekstoversættelse med lav latenstid.', + 'transHeaderDesc2': 'Velegnet til rejser, forretning, taler og undervisning.', + 'translateZhEn': 'Kinesisk-engelsk oversættelse', + 'lowLatencyVoiceBroadcast': 'Stemmeudsendelse med lav latenstid', + 'multiLangTextTranslation': 'Flersproget tekstoversættelse', + 'termOptimizationContextPreserve': + 'Terminologioptimering og kontekstbevarelse', + 'lexiconTourBusinessLife': 'Rejse/Forretning/Livsstil ordbøger', + 'personalVocabularyMemory': 'Personlig ordforrådshukommelse', + 'conversationSubtitleLargeText': 'Samtaleundertekster / Stor teksttilstand', + 'colorHighContrast': 'Høj farvekontrast', + 'transDisclaimer': + 'Oversættelsesydelse afhænger af mikrofon, netværkslatenstid og omgivende støj.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Mødeoptagelse', + 'transcriptionAndSummary': 'Transkription & sammendrag', + 'keywordSearch': 'Søgeordsøgning', + 'collaborationSharing': 'Samarbejde & deling', + 'meetingHeaderDesc1': + 'Lydoptagelse, transkription, søgeordsøgning og automatisk sammendrag for at øge mødeeffektiviteten.', + 'meetingHeaderDesc2': + 'Velegnet til forretningsmøder, klassenoter og interviewreferater.', + 'meetingAutoRecording': 'Automatisk optagelse og segmentering', + 'meetingSpeakerTagging': 'Taleridentifikation', + 'meetingLongAudioTranscription': 'Lang lydtranskription', + 'meetingKeyPointSummary': 'Udtrækning af hovedpunkter', + 'meetingTopicNameSearch': 'Søg efter emne/navn', + 'meetingTimelineJump': 'Tidslinjehop', + 'meetingExportSummary': 'Eksportér referat', + 'meetingMultiPlatformShare': 'Del på tværs af platforme', + 'meetingDisclaimer': + 'Brug i stille omgivelser; ydeevne afhænger af mikrofon og netværk.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Fordelsoversigt', 'higherQuota': 'Højere brugskvote', 'lowerUnitPrice': 'Lavere enhedspris', @@ -355,7 +413,32 @@ const Map daDK = { 'vipDisclaimer': 'Faktiske fordele afhænger af pakkedetaljerne og kan ændre sig med versioner.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basis 100', + 'ai_002_name': 'AI Basis 500', + 'ai_003_name': 'AI Basis 1000', + 'meet_001_name': 'Møde Basic 100', + 'meet_002_name': 'Møde Basic 500', + 'meet_003_name': 'Møde Basic 1000', + 'trans_001_name': 'Oversættelse Basic 100', + 'trans_002_name': 'Oversættelse Basic 500', + 'trans_003_name': 'Oversættelse Basic 1000', + 'ai_001_desc': 'Inkluderer 100 anvendelser. Adgang til kerne AI-funktioner.', + 'ai_002_desc': 'Inkluderer 500 anvendelser. Adgang til kerne AI-funktioner.', + 'ai_003_desc': 'Inkluderer 1000 anvendelser. Adgang til kerne AI-funktioner.', + 'meet_001_desc': 'Inkluderer 100 mødeoptagelser/transkriptioner.', + 'meet_002_desc': 'Inkluderer 500 mødeoptagelser/transkriptioner.', + 'meet_003_desc': 'Inkluderer 1000 mødeoptagelser/transkriptioner.', + 'trans_001_desc': 'Inkluderer 100 oversættelser (stemme/tekst).', + 'trans_002_desc': 'Inkluderer 500 oversættelser (stemme/tekst).', + 'trans_003_desc': 'Inkluderer 1000 oversættelser (stemme/tekst).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Leveret af: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP kundeservice QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Spring over", 'next': 'Næste', 'sayLilyHint': 'Sig "Lily Lily" til mikrofonen', @@ -366,7 +449,6 @@ const Map daDK = { 'guideAwakenSuccess': 'Fantastisk! Lily er vågen – bed hende om hjælp.', 'confirmInput': 'Bekræft input', 'guideClickSendPrefix': 'Tryk send, ', - // AI 引导步骤 'guideWeatherStart': 'Sig til Lily: "Hvordan er vejret i dag?"', 'guideWeatherInput': 'Hvordan er vejret i dag?', 'guideWeatherSend': 'Lily vil rapportere vejret i realtid', @@ -394,7 +476,7 @@ const Map daDK = { 'guideSmsSend': 'Lily vil sende beskeden', 'guideSmsEnd': 'Besked sendt – stemmestyring er praktisk', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start møde", 'edit': 'Rediger', 'delete': 'Slet', @@ -406,10 +488,8 @@ const Map daDK = { 'recordingDetails': 'Optagelsesdetaljer', 'aiSummary': 'AI sammendrag', 'meetingTranscript': 'Mødeudskrift', - - // Meeting模块 - 导航和基础功能 'files': 'Filer', - 'mine': 'Mine', + 'mine': 'Min', 'connect': 'Tilslut', 'allFiles': 'Alle filer', 'searchInAllFiles': 'Søg i alle filer', @@ -442,24 +522,32 @@ 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...', 'summaryComplete': 'Sammendrag fuldført', - //'generating': '正在生成...', 'generate': 'Generer', 'overview': 'Oversigt', 'transcription': 'Transkription', @@ -468,6 +556,99 @@ const Map daDK = { 'editSpeaker': 'Rediger', 'nameSpeaker': 'Navngiv taler', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Gen-sammendrag', + 'dateAndTime': 'Dato & Tid', + 'location': 'Lokation', + 'attendees': 'Deltagere', + 'inputLocation': 'Indtast lokation', + 'inputAttendees': 'Indtast deltagere', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Vælg sammendragsskabelon', + 'useThisTemplate': 'Brug denne skabelon', + 'lastUsed': 'Sidst brugt', + 'create': 'Opret', + 'templateDetails': 'Skabelondetaljer', + 'tag': 'Mærke', + 'description': 'Beskrivelse', + 'template': 'Skabelon', + 'deleteTemplate': 'Slet skabelon', + 'deleteTemplateConfirm': 'Er du sikker på, at du vil slette denne skabelon?', + 'editTemplate': 'Rediger skabelon', + 'createTemplate': 'Opret skabelon', + 'name': 'Navn', + 'templateContentHint': + 'Indtast venligst skabelonindhold! Tip: Klik på AI-knappen ovenfor for hurtigt at generere skabelonindhold baseret på det navn og den beskrivelse, du har indtastet', + 'inputNameHint': 'Indtast venligst navn', + 'inputDescHint': 'Indtast venligst beskrivelse', + 'custom': 'Tilpasset', + 'pleaseEnter': 'Indtast venligst', + 'viewAll': 'Se alle', + 'recordingLanguage': 'Optagelsessprog', + 'chineseSimplified': 'Kinesisk Mandarin (Forenklet)', + 'meetingGenerateNow': 'Generer nu', + 'keyEventsAnalyzed': 'Analyserede {count} nøglebegivenheder.', + 'aiAnalysisDesc': + 'AI-analyse identificerer nøglebegivenheder i optagelser, så du kan vælge vigtige begivenheder til AI-generering.', + + // Meeting模块 - 文件操作 + 'importing': 'Importerer...', + 'batchImporting': 'Batchimporterer...', + 'importingLocalRecordings': 'Importerer lokale optagelser...', + 'importFailed': 'Import af fil mislykkedes: {filePath}, fejl: {error}', + 'importSuccess': 'Importerede succesfuldt {count} lokale optagelser', + 'importError': 'Import mislykkedes: {error}', + 'pleaseSelectAudioFile': 'Vælg venligst lydfil', + 'shareAudio': 'Del mødelyd', + 'shareComplete': 'Deling fuldført!', + 'shareFailed': 'Deling mislykkedes: {error}', + 'fileProcessingFailed': + 'Filbehandling mislykkedes: {filePath}, fejl: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Gem tankekort', + 'shareMindMap': 'Del mindmap', + 'shareSuccess': 'Deling succes', + + // Meeting模块 - AI问答 + 'askAI': 'Spørg AI ...', + 'askAIPrompt': 'Hvad kan jeg hjælpe dig med i dag?', + 'continueAsk': 'Fortsæt med at spørge', + 'todoList': 'To-do liste', + 'extractConclusion': 'Udtræk konklusion', + 'generateKeyIndicators': 'Generer nøgleindikatorer', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Del link', + 'copyTranscript': 'Kopier transkription', + 'copySummary': 'Kopier sammendrag', + 'exportAudio': 'Eksportér lyd', + 'exportTranscript': 'Eksportér transkription', + 'shareMeetingAudio': 'Del mødelyd', + 'exportSummary': 'Eksportér sammendrag', + 'exportAs': 'Eksportér som', + 'exportingPDF': 'Eksporterer PDF...', + 'export': 'Eksportér', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Anvend på alle afsnit for denne taler', + 'summaryWillBeUpdatedAutomatically': + 'Resuméet opdateres automatisk ud fra skabelonen', + 'nameCurrentSpeaker': 'Navngiv nuværende taler', + 'recentlyUsedNames': 'Nyligt brugte navne', + 'applyToCurrentParagraph': 'Anvend på nuværende afsnit', + 'totalTime': 'Samlet tid', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Sammendragstalere vil blive opdateret automatisk', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synkroniser til skyen', + 'syncToCloudTip': + 'Synkroniser automatisk dine optagelser til skyen, du kan afspille, administrere og dele optagelser gennem enhver VOITRANS APP eller VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synkroniser VOITRANS APP', + 'transcriptionRecord': 'Transkriptionsoptagelse', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transkriptionsoptagelser', 'templateCommunity': 'Skabelonfællesskab', @@ -487,7 +668,7 @@ const Map daDK = { 'Bind Voitrans enhed for at aktivere Starter medlemskab', 'unlockNow': 'Lås op nu', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Sammenligning', 'detailedInfo': 'Detaljeret information', 'monthlyTranscriptionTime': 'Månedlig transskriptionstid', @@ -523,8 +704,6 @@ const Map daDK = { 'Importer nemt lydfiler fra lokale eller tredjepartsapplikationer, såsom stemmenotater, Google Drive osv.', 'multipleExportFormatsDesc': 'Eksportér dine lydoptagelser, transkriptionstekst og sammendrag i forskellige formater (TXT, PDF, JPEG) for at opfylde dine behov.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Opgrader dit medlemskab', 'yearlySubscription': 'Årligt abonnement', 'monthlySubscription': 'Månedligt abonnement', @@ -553,106 +732,26 @@ const Map daDK = { 'validityNote': 'Aktiveret straks efter køb, gyldig i 2 år efter aktivering.', 'purchase': 'Køb', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Vælg sammendragsskabelon', - 'useThisTemplate': 'Brug denne skabelon', - 'lastUsed': 'Sidst brugt', - 'viewAll': 'Se alle', - 'recordingLanguage': 'Optagelsessprog', - 'chineseSimplified': 'Kinesisk Mandarin (Forenklet)', - 'meetingGenerateNow': 'Generer nu', - 'keyEventsAnalyzed': 'Analyserede {count} nøglebegivenheder.', - 'aiAnalysisDesc': - 'AI-analyse identificerer nøglebegivenheder i optagelser, så du kan vælge vigtige begivenheder til AI-generering.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importerer...', - 'batchImporting': 'Batchimporterer...', - 'importingLocalRecordings': 'Importerer lokale optagelser...', - 'importFailed': 'Import af fil mislykkedes: {filePath}, fejl: {error}', - 'importSuccess': 'Importerede succesfuldt {count} lokale optagelser', - 'importError': 'Import mislykkedes: {error}', - 'pleaseSelectAudioFile': 'Vælg venligst lydfil', - 'shareAudio': 'Del mødelyd', - 'shareComplete': 'Deling fuldført!', - 'shareFailed': 'Deling mislykkedes: {error}', - 'fileProcessingFailed': - 'Filbehandling mislykkedes: {filePath}, fejl: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Ukendt sprog', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Lagerplads', - 'meetingStoragePermissionExplanation': - 'Vi har brug for adgang til lagertilladelser, så du kan vælge og uploade lydfiler.', - 'meetingStoragePermissionPermanentDenial': - 'Detekteret at du permanent har nægtet lagertilladelse. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Del mindmap', - 'shareSuccess': 'Deling succes', - - // Meeting模块 - AI相关 - 'askAI': 'Spørg AI ...', - 'askAIPrompt': 'Hvad kan jeg hjælpe dig med i dag?', - 'continueAsk': 'Fortsæt med at spørge', - 'todoList': 'To-do liste', - 'extractConclusion': 'Udtræk konklusion', - 'generateKeyIndicators': 'Generer nøgleindikatorer', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Gen-sammendrag', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Optagelsessprog', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Kantonesisk', 'sichuan': 'Sichuan dialekt', 'shanghai': 'Shanghai dialekt', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Del link', - 'copyTranscript': 'Kopier transkription', - 'copySummary': 'Kopier sammendrag', - 'exportAudio': 'Eksportér lyd', - 'exportTranscript': 'Eksportér transkription', - 'shareMeetingAudio': 'Del mødelyd', - 'exportSummary': 'Eksportér sammendrag', - 'exportAs': 'Eksportér som', - 'exportingPDF': 'Eksporterer PDF...', - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Anvend på alle afsnit for denne taler', - 'summaryWillBeUpdatedAutomatically': - 'Resuméet opdateres automatisk ud fra skabelonen', - 'nameCurrentSpeaker': 'Navngiv nuværende taler', - 'recentlyUsedNames': 'Nyligt brugte navne', - 'applyToCurrentParagraph': 'Anvend på nuværende afsnit', - 'totalTime': 'Samlet tid', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Sammendragstalere vil blive opdateret automatisk', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Synkroniser til skyen', - 'syncToCloudTip': - 'Synkroniser automatisk dine optagelser til skyen, du kan afspille, administrere og dele optagelser gennem enhver VOITRANS APP eller VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Synkroniser VOITRANS APP', - 'transcriptionRecord': 'Transkriptionsoptagelse', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Dato & Tid', - 'location': 'Lokation', - 'attendees': 'Deltagere', - 'inputLocation': 'Indtast lokation', - 'inputAttendees': 'Indtast deltagere', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Ukendt sprog', + 'analysisFailed': 'Analyse mislykkedes, prøv igen senere', + 'transcriptionFailed': 'Transskription mislykkedes, prøv igen senere', + 'summaryFailed': 'Sammenfatning mislykkedes, prøv igen senere', + 'summaryFailedShort': 'Sammenfatning mislykkedes', + 'transcriptionFailedShort': 'Transskription mislykkedes', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Lydafspilleren er ikke klar, vent venligst', + 'playFailed': 'Afspilning mislykkedes', + 'audioFileNotFound': 'Lydfil ikke fundet', + 'fetchingAudio': 'Henter lyd fra skyen...', + 'playerLoadFailed': 'Lydafspilleren kunne ikke indlæses', // 设置页 "systemSettings": "Systemindstillinger", @@ -661,10 +760,10 @@ 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": - "First bind device reward has been issued. Tap OK to close.", + "Belønning for første enhedsbinding er udstedt. Tryk OK for at lukke.", "joinDevice": "Tilsluttet enhed:", "accountId": "Konto-ID:", "systemSetting": "Systemindstillinger", @@ -680,7 +779,7 @@ const Map daDK = { "permissionManagementInfo": "Administrer app tilladelsesindstillinger", // 管理应用权限设置 "aboutApplication": "Om app", - "versions": "Version", + "versions": 'Version', "checkUpdates": "Tjek for opdateringer", "selectLanguage": "Vælg sprog", "voiceService": "Stemmetjeneste", @@ -705,46 +804,34 @@ const Map daDK = { "bleHeadsetFirmwareUpgrade": "BLE øretelefon firmware opgradering", "deviceManagement": "Enhedsstyring", "manageConnectedDevices": "Administrer tilsluttede Bluetooth enheder", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'I øjeblikket nyeste version {version}', 'checkUpdateFailed': 'Kontrol af opdateringer mislykkedes', 'networkErrorRetry': 'Netværksfejl, prøv venligst igen senere', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtids stemmechat", "realtimeVoiceChatInfo": "Oplev intelligent stemmeinteraktionsfunktion (funktionsforhåndsvisning)", "loading": "Indlæser...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Ukendt enhed", + "deviceTypeClassicBluetoothHeadset": "Klassisk Bluetooth-headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset", + "deviceTypeSmartVoiceRecorder": "Smart stemmeoptager", + "deviceTypeSmartEye": "Smarte briller", "unbind": "Afbind", - "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 enheder bundet endnu", + "pleaseBindDeviceFirst": "Bind venligst en enhed først for at administrere", + "noMacAddress": "Ingen MAC-adresse", + "licenseCode": "Licensnøgle", + "confirmUnbind": "Bekræft afbinding", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Er du sikker på, at du vil afbinde enheden \"{deviceName}\"?", + "confirmUnbindAction": "Bekræft afbinding", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Ryd chathistorik", - "online": "Online", + "online": 'Online', "ttsSpeed": "Talefart", "ttsSpeedDefaultHint": "Standard +25%", "inputMessage": "Indtast besked...", @@ -769,22 +856,24 @@ const Map daDK = { "loadMoreMessages": "Indlæs flere beskeder...", "loadFailedClickRetry": "Indlæsning mislykkedes, klik for at prøve igen", "swipeUpForMore": "Stryg op for mere", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Jeg hjælper dig, vent venligst!", // 正在帮您,请稍等! + "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": "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": "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' '• Besvare spørgsmål og give information\n\n' '• Realtids stemmeoversættelse\n\n' @@ -804,18 +893,17 @@ const Map daDK = { 'startVoiceInput': 'Start stemmeinput', 'startPhoneCallMode': 'Start telefonopkaldstilstand, start stemmeinput', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Indtast din besked her...', // 全屏编辑器输入提示 'characterCount': '{count} tegn', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopier', 'copySuccess': 'Kopieret succesfuldt', 'report': 'Rapporter', 'submitSuccess': 'Indsendt succesfuldt', 'submitFailed': 'Indsendelse mislykkedes', 'reportSubmitted': 'Rapport indsendt, vi vil behandle det hurtigst muligt', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadelig/usikker', 'pornographicVulgar': 'Pornografisk/vulgær', 'misleadingAttack': 'Vildledende angreb', @@ -825,17 +913,21 @@ const Map daDK = { 'other': 'Andet', 'reportDescriptionHint': 'Vi vil gerne vide årsagen til din rapport, du kan beskrive problemet du stødte på.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Genereret af AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Værktøjskald', + 'noResult': 'Intet resultat', + 'noToolCallContentToCopy': 'Intet værktøjskald at kopiere', + 'toolCallDetails': 'Værktøjskaldsdetaljer:', + 'toolCallContentCopied': 'Værktøjskald kopieret til udklipsholder', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Her er nogle anbefalede musikker:', 'playList': 'Afspilningsliste', 'moreMusic': 'Mere musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometer', // 公里单位 'meters': 'meter', // 米单位 'hours': 'timer', // 小时单位 @@ -850,7 +942,30 @@ const Map daDK = { "bicycling": "Cykling", "tsransit": "Offentlig transport", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Vælg navigationsapp', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigér med Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigér med Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigér med Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigér med Apple Maps', + 'builtInNavigation': 'Indbygget navigation', + 'useBuiltInNavigation': 'Navigér med indbygget kort', + 'navigationStartFailed': 'Kunne ikke starte navigation', + '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', + 'pleaseInstallBaiduMapApp': 'Installér Baidu Maps-appen først', + 'appleMapStartFailed': 'Apple Maps kunne ikke starte', + 'appleMapUnavailable': 'Apple Maps er ikke tilgængeligt', + 'openAppleMapError': 'Fejl ved åbning af Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Vejrforespørgsel:', 'highest': 'Højeste', 'lowest': 'Laveste', @@ -880,18 +995,8 @@ const Map daDK = { "friday": "Fredag", "saturday": "Lørdag", "sunday": "Søndag", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Solrigt", "partlyCloudy": "Delvis skyet", "partlySunny": "Delvis solrigt", @@ -912,9 +1017,144 @@ const Map daDK = { "haze": "Dis", "strongWind": "Kraftig vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Billedoversættelse", + "textTranslation": "Tekstoversættelse", + + // 翻译模块 - 主页 + "translationHistory": "Oversættelseshistorik", + "enableRecording": "Aktiver optagelse", + "viewAudioFiles": "Se lydfiler", + "headsetUser": "Øretelefon bruger", + "phoneUser": "Telefon bruger", + "selectSourceLanguage": "Vælg kildesprog", + "selectTargetLanguage": "Vælg målsprog", + "me": "Mig", + "counterPart": "Modpart", + "bluetoothCallStateError": + "Sørg venligst for, at Bluetooth-headsettet er forbundet til telefonen og i opkaldstilstand", + "autoDetect": "Automatisk registrering", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Sprogregistrering mislykkedes", + + // 翻译模块 - 悬浮窗与权限 + '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', + "translationFailed": "Oversættelse mislykkedes", + "translating": "Oversætter", + "translate": "Oversæt", + "pleaseInputText": "Indtast venligst tekst", + "inputTextToTranslate": "Indtast venligst teksten, der skal oversættes", + "textTooLong": "Teksten er for lang, maks. 5000 tegn", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen oversættelseshistorik", + "historyRecords": "Historik", + "clearResults": "Ryd resultater", + "clearHistory": "Ryd historik", + "clearHistoryConfirm": + "Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.", + "unknownLanguage": "Ukendt sprog", + "deleteSessionRecord": "Slet sessionsoptegnelse", + "deleteSessionConfirm": + "Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Vælg billedkilde", + "imagePreview": "Billedforhåndsvisning", + "translationResult": "Oversættelsesresultat", + "recognitionResult": "Genkendelseresultat", + "translatedImagePreview": "Forhåndsvisning af oversat billede", + "translatedImageLoadFailed": "Kunne ikke indlæse oversat billede", + "pleaseSelectImage": "Vælg venligst et billede", + "imageLoadFailed": "Billedindlæsning mislykkedes", + "imageQuality": "Billedkvalitet", + "maxSize": "Maks. størrelse", + "close": "Luk", + "setImageQuality": "Indstil billedkvalitet", + "currentQuality": "Nuværende kvalitet: @value%", + "setMaxSize": "Indstil maks. størrelse", + "currentMaxSize": "Nuværende: @pxpx", + "waitingForAction": "Venter på handling", + "pleaseSelectImageToStart": "Vælg venligst et billede for at starte", + "chooseImage": "Vælg billede", + "openingCamera": "Åbner kamera...", + "openingPhotoAlbum": "Åbner fotoalbum...", + "cancelled": "Annulleret", + "userCancelledSelection": "Bruger annullerede valget", + "translatingImage": "Oversætter billede", + "callingImageTranslateService": "Kalder billedoversættelsestjeneste...", + "savingRecord": "Gemmer optegnelse", + "savingTranslationResult": "Gemmer oversættelsesresultat...", + "translationCompleted": "Oversættelse fuldført", + "allStepsCompleted": "Alle trin fuldført", + "processingFailed": "Behandling mislykkedes", + "imageProcessingOrTranslationFailed": + "Billedbehandling eller oversættelse mislykkedes. Prøv venligst igen.\nFejl: {error}", + "imageTooLarge": "Billedstørrelse overstiger 4 MB-grænsen", + "imageTooLargeHint": + "Billedstørrelse overstiger 4 MB. Reducer kvalitet eller dimensioner og prøv igen", + "emptyTranslationResult": "Billedoversættelses-API returnerede tomt resultat", + "imageTranslationFailedTryLater": + "Billedoversættelse mislykkedes. Netværksproblem eller hastighedsbegrænsning. Prøv venligst igen senere", + "imageTranslationApiException": + "Billedoversættelses-API undtagelse. Kontroller netværket og prøv igen", + "permissionRequired": "Tilladelse påkrævet", + "cameraPermissionRequired": "Kameratilladelse kræves for at tage billeder", + "photoAlbumPermissionRequired": + "Fotoalbumtilladelse kræves for at vælge billeder", + "translationDetails": "Oversættelsesdetaljer", + "originalImage": "Originalt billede", + "sourceLanguage": "Kildesprog", + "targetLanguage": "Målsprog", + "translationTime": "Oversættelsestid", + "shareInDevelopment": "Delingsfunktion er under udvikling", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Oversæt lydfiler", + "noAudioFiles": "Ingen lydfiler", + "calculating": "Beregner...", + "playing": "Afspiller...", + "paused": "Sat på pause", + "clickToPlay": "Klik for at afspille", + "rename": "Omdøb", + "smartTranscription": "Smart transskription", + "renameAudioFile": "Omdøb lydfil", + "enterNewFileName": "Indtast venligst nyt filnavn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Original optegnelse", + "recordSummary": "Optegnelsessammendrag", + "clickToGenerateSummary": + "Klik på knappen nedenfor for at generere sessionssammendrag", + "summaryContent": "Sammendragsindhold", + "copied": "Kopieret", + "summaryCopiledToClipboard": "Sammendrag kopieret til udklipsholder", + "extractSummary": "Udtræk sammendrag", + "summaryGenerated": "Sammendrag genereret", + "generating": "Genererer...", + "regenerate": "Regenerer", + "summaryTimeoutMessage": + "Anmodning om sammendragsgenerering udløbet, muligvis på grund af netværksproblem eller serveroverbelastning.", + "deleteTranslationRecord": "Slet oversættelsesoptegnelse", + "deleteTranslationConfirm": + "Er du sikker på, at du vil slette denne oversættelsesoptegnelse? Denne handling kan ikke fortrydes.", + "originalText": "Original tekst", + "translatedText": "Oversat tekst", + "sessionSummary": "Sessionssammendrag", + "cannotShare": "Kan ikke dele", + "generateSummaryFirst": "Generer venligst sammendrag først", + "translationSessionRecord": "Oversættelsessessionsoptegnelse", + + // 个人资料模块 "editProfile": "Rediger personlige oplysninger", - "avatar": "Avatar", + "avatar": "Profilbillede", "nickname": "Kaldenavn", "save": "Gem", "about": "Om", @@ -926,10 +1166,8 @@ const Map daDK = { 'deleteAccount': 'Slet konto', 'deleteAccountTips': 'Er du sikker på, at du vil slette din konto permanent? Denne handling kan ikke fortrydes', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Ryd cache', + 'cleanTips': 'Er du sikker på, at du vil rydde din personlige cache?', 'networkConnectionFailed': 'Netværksforbindelse mislykkedes, tjek venligst netværksindstillinger og prøv igen', 'serverTemporarilyUnavailable': @@ -946,10 +1184,6 @@ const Map daDK = { 'Netværksforbindelse mislykkedes, tjek venligst netværksindstillinger', 'serverInternalErrorRetryLater': 'Server intern fejl, prøv venligst igen senere', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Billedkomprimering mislykkedes', 'avatarUpdateFailed': 'Avatar opdatering mislykkedes', 'usernameCannotBeEmpty': 'Brugernavn kan ikke være tomt', @@ -961,8 +1195,6 @@ const Map daDK = { 'accountPermanentlyDeleted': 'Konto permanent slettet', 'deleteAccountFailedRetry': 'Sletning af konto mislykkedes, prøv venligst igen', - - // 账号服务相关 'clearUserDataFailed': 'Rydning af brugerdata mislykkedes', // 清理用户数据失败 'deleteUserDataFailed': 'Sletning af brugerdata mislykkedes', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Tredjepartslogout succesfuldt', // 第三方登录退出成功 @@ -974,7 +1206,12 @@ const Map daDK = { 'accountServiceInitialized': 'AccountService initialiseret', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Lagerplads', + 'meetingStoragePermissionExplanation': + 'Vi har brug for adgang til lagertilladelser, så du kan vælge og uploade lydfiler.', + 'meetingStoragePermissionPermanentDenial': + 'Detekteret at du permanent har nægtet lagertilladelse. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', 'getPermissionStatusFailed': 'Hentning af tilladelsestatus mislykkedes', 'communicationPermissions': 'Kommunikationstilladelser', 'bluetoothPermissions': 'Bluetooth-tilladelser', @@ -987,7 +1224,6 @@ const Map daDK = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Kontakter', - //'bluetooth': '蓝牙', 'notification': 'Notifikation', 'alarm': 'Alarm', 'calendarWrite': 'Kalender skrivning', @@ -1044,9 +1280,7 @@ const Map daDK = { 'permanentDenialText': 'Du har permanent nægtet {permission} tilladelse, gå venligst til app-indstillinger for at aktivere det', 'goToSettings': 'Gå til indstillinger', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', + 'bluetoothScan': 'Bluetooth-scanning', 'bluetoothConnect': 'Bluetooth Forbindelse', 'bluetoothScanExplanation': 'Appen har brug for Bluetooth-scanningstilladelse til at scanne efter Bluetooth-enheder i nærheden.', @@ -1070,7 +1304,6 @@ const Map daDK = { 'Du har permanent afvist notifikationstilladelse, gå venligst til indstillinger for at aktivere det.', 'locationPermissionPermanentDenial': 'Du har permanent afvist placeringstilladelse, gå venligst til indstillinger for at aktivere det.', -//'microphonePermission': '录音', 'storagePermission': 'Lagerplads', 'microphonePermissionExplanation': 'Vi har brug for mikrofontilladelse til at optage lydindhold.', @@ -1080,8 +1313,6 @@ const Map daDK = { 'Mikrofontilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere mikrofontilladelse manuelt.', 'storagePermissionPermanentDenial': 'Lagertilladelse er blevet permanent afvist. For at fortsætte med at bruge denne funktion, skal du gå til app-indstillinger for at aktivere lagertilladelse manuelt.', - - //permission_util.dart 'permissionUtilNeed': 'Mangler ', 'permissionUtilPermission': ' tilladelse', 'permissionUtilRestricted': ' tilladelse begrænset', @@ -1089,7 +1320,21 @@ const Map daDK = { 'Denne funktion er utilgængelig eller begrænset på den nuværende enhed, tjek venligst enhedsindstillinger eller systembegrænsninger', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigation i gang', + 'native.notification.navigation.keepRunning': 'Navigerer, hold appen kørende', + 'native.notification.bleAgent.running': 'Stemmeassistenten kører', + 'native.notification.audioRecording.recording': + 'Optager lyd, tryk for at vende tilbage til appen', + 'native.notification.music.waiting': 'Venter på afspilning', + 'native.notification.music.previous': 'Forrige', + 'native.notification.music.next': 'Næste', + 'native.notification.music.play': 'Afspil', + 'native.notification.music.pause': 'Pause', + 'native.notification.qqMusic.playing': 'Afspiller musik', + + // 版本更新 'newVersionFound': 'Ny version fundet', // 版本更新对话框标题 'remindLater': 'Påmind senere', // 稍后提醒按钮 'updateNow': 'Opdater nu', // 立即更新按钮 @@ -1100,269 +1345,20 @@ const Map daDK = { 'updateErrorRetry': 'Der opstod en fejl under opdateringen, prøv venligst igen senere', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Kina", - "美国": "USA", - "加拿大": "Canada", - "俄罗斯": "Rusland", - "英国": "Storbritannien", - "德国": "Tyskland", - "意大利": "Italien", - "法国": "Frankrig", - "西班牙": "Spanien", - "南非": "Sydafrika", - "沙特阿拉伯": "Saudi-Arabien", - "土耳其": "Tyrkiet", - "日本": "Japan", - "韩国": "Sydkorea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "Indien", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippinerne", - "印度尼西亚": "Indonesien", - "阿联酋": "UAE", - "墨西哥": "Mexico", - "巴西": "Brasilien", - "阿根廷": "Argentina", - "澳大利亚": "Australien", - "新西兰": "New Zealand", - "中国香港": "Hong Kong", - "中国澳门": "Macao", - "中国台湾": "Taiwan", - "埃及": "Egypten", - "希腊": "Grækenland", - "荷兰": "Holland", - "比利时": "Belgien", - "匈牙利": "Ungarn", - "罗马尼亚": "Rumænien", - "瑞士": "Schweiz", - "奥地利": "Østrig", - "丹麦": "Danmark", - "瑞典": "Sverige", - "挪威": "Norge", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albanien", - "马耳他": "Malta", - "塞浦路斯": "Cypern", - "芬兰": "Finland", - "保加利亚": "Bulgarien", - "立陶宛": "Litauen", - "拉脱维亚": "Letland", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbien", - "克罗地亚": "Kroatien", - "斯洛文尼亚": "Slovenien", - "捷克": "Tjekkiet", - "斯洛伐克": "Slovakiet", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algeriet", - "突尼斯": "Tunesien", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopien", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongoliet", - "柬埔寨": "Cambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Østtimor", - "斐济": "Fiji", - "所罗门群岛": "Salomonøerne", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Oversættelseshistorik", - "enableRecording": "Aktiver optagelse", - "viewAudioFiles": "Se lydfiler", - "headsetUser": "Øretelefon bruger", - "phoneUser": "Telefon bruger", - "selectSourceLanguage": "Vælg kildesprog", - "selectTargetLanguage": "Vælg målsprog", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen oversættelseshistorik", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Ryd historik", - "clearHistoryConfirm": - "Er du sikker på, at du vil rydde hele oversættelseshistorikken? Denne handling kan ikke fortrydes.", - "unknownLanguage": "Ukendt sprog", - "deleteSessionRecord": "Slet sessionsoptegnelse", - "deleteSessionConfirm": - "Er du sikker på, at du vil slette alle oversættelsesoptegnelser for denne session? Denne handling kan ikke fortrydes.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Oversæt lydfiler", - "noAudioFiles": "Ingen lydfiler", - "calculating": "Beregner...", - "playing": "Afspiller...", - "paused": "Sat på pause", - "clickToPlay": "Klik for at afspille", - "rename": "Omdøb", - "smartTranscription": "Smart transskription", - "renameAudioFile": "Omdøb lydfil", - "enterNewFileName": "Indtast venligst nyt filnavn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Original optegnelse", - "recordSummary": "Optegnelsessammendrag", - "clickToGenerateSummary": - "Klik på knappen nedenfor for at generere sessionssammendrag", - "summaryContent": "Sammendragsindhold", - "copied": "Kopieret", - "summaryCopiledToClipboard": "Sammendrag kopieret til udklipsholder", - "extractSummary": "Udtræk sammendrag", - "summaryGenerated": "Sammendrag genereret", - "generating": "Genererer...", - "regenerate": "Regenerer", - "summaryTimeoutMessage": - "Anmodning om sammendragsgenerering udløbet, muligvis på grund af netværksproblem eller serveroverbelastning.", - "deleteTranslationRecord": "Slet oversættelsesoptegnelse", - "deleteTranslationConfirm": - "Er du sikker på, at du vil slette denne oversættelsesoptegnelse? Denne handling kan ikke fortrydes.", - "originalText": "Original tekst", - "translatedText": "Oversat tekst", - "sessionSummary": "Sessionssammendrag", - "cannotShare": "Kan ikke dele", - "generateSummaryFirst": "Generer venligst sammendrag først", - "translationSessionRecord": "Oversættelsessessionsoptegnelse", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Enhedsparring", "connectYourDeepSoundHeadset": "Tilslut dine Voitrans øretelefoner", - "bind": "Bind", + "bind": 'Tilknyt', "authorizeBind": "Autoriser binding", "enterCode": "Indtast venligst kode", "autoInputCode": "Automatisk kodeinput", "skipBinding": "Spring binding over", "rescan": "Scan igen", - "verifyingDevice": "Verificerer enhed...", "confirmBinding": "Bekræft binding", "associatingDevice": "Associerer enhed...", "goToBluetoothSettings": "Gå til Bluetooth indstillinger", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klar til parring", "preparingPairingEnvironment": "Forbereder parringsmiljø...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1368,6 @@ const Map daDK = { "waitingCompletePairing": "Vent venligst, fuldfører parring...", "pairingSuccessRedirecting": "Parring succesfuld! Omdirigerer til hovedside...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sørg venligst for at den tilsluttede enhed er Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1386,19 +1380,12 @@ const Map daDK = { "authorizationFailedCheckCode": "Autorisation mislykkedes, tjek venligst om autorisationskoden er korrekt", "pairingFailedRetry": "Parring mislykkedes, prøv venligst igen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Aktiver venligst Bluetooth', 'deviceDisconnected': 'Enhed afbrudt', 'readyToStartPairing': 'Klar til at starte parring', 'checkingEnvironment': 'Kontrollerer miljø...', 'ensureHeadsetOnAndPairingMode': 'Sørg venligst for at øretelefonerne er tændt og i parringstilstand', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Etablerer sikker forbindelse...', 'needManualBindingAuthCode': 'Har brug for manuel bindingsautorisationskode...', @@ -1420,8 +1407,6 @@ const Map daDK = { 'bleConnectionFailed': 'BLE forbindelse mislykkedes', 'deviceAuthorizationFailedCheckCode': 'Enhedsautorisation mislykkedes, tjek venligst autorisationskode', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manuel Bluetooth-aktivering påkrævet', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Følg venligst disse trin:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1434,7 +1419,18 @@ const Map daDK = { 'Tip: Du kan også trykke længe på Bluetooth-ikonet i Kontrolcenter for hurtigt at få adgang til Bluetooth-indstillinger', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'Jeg ved det', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "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", + + // 用户反馈模块 "feedback": "Brugerfeedback", 'feedbackInfo': 'Giv feedback eller forslag', 'feedbackDescription': 'Beskriv venligst dit problem eller forslag', @@ -1476,7 +1472,60 @@ const Map daDK = { "removeEarbudsEnsureBattery": "Tag begge øretelefoner ud og sørg for at batteriet på begge er over 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Ny version @version fundet', + 'otaConfirmUpdateNow': 'Opdatér nu?', + 'otaUpdate': 'Opdatér', + 'otaUpgradeSuccess': 'Opgradering gennemført', + 'otaUpgradeCompleteRepair': + 'Firmware-opgradering fuldført!\n\nEnheden skal parres igen. Gå til parringssiden?', + 'otaPairLater': 'Par senere', + 'otaPairNow': 'Par nu', + 'okConfirm': 'OK', + + // 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', + 'otaDeviceInfoUnavailableTitle': 'Enhedsinfo utilgængelig', + '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', + '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', + 'otaBatteryCheckFailed': 'Batterikontrol mislykkedes', + + // OTA升级模块 - 升级状态 + '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', + 'otaDownloadFailed': 'Download mislykkedes', + 'otaPreparingConnection': 'Forbereder enhedsforbindelse...', + 'otaConnectingDevice': 'Forbinder til enhed...', + 'otaUpgradeStarted': 'OTA-opgradering startet...', + 'otaUpgradeProgressWithPercent': 'Opgraderingsforløb: @percent%', + 'otaUpgradeSuccessComplete': 'Opgradering gennemført', + 'otaUpgradeFailedWithCode': 'Opgradering mislykkedes, fejlkode: @code', + 'otaUpgradeFailedTitle': 'Opgradering mislykkedes', + 'otaUpgradeFailedDesc': + 'Kontrollér forbindelse eller opdateringspakke, fejlkode: @code', + 'otaDeviceDisconnected': 'Enhed frakoblet', + 'otaDeviceConnected': 'Enhed forbundet', + + // 音乐模块 "noMusic": "Ingen musik", // 暂无音乐 "noPlayingMusic": "Ingen musik afspilles", // 暂无播放音乐 "unknownSong": "Ukendt sang", // 未知歌曲 @@ -1510,36 +1559,136 @@ const Map daDK = { "克罗地亚语": "Kroatisk", "加泰隆语": "Catalansk", "阿拉伯语": "Arabisk", - "泰语": "Thai", + "泰语": 'Thai', "越南语": "Vietnamesisk", "印尼语": "Indonesisk", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Tyrkisk", "马来语": "Malaysisk", - "孟加拉语": "Bengali", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", + "孟加拉语": 'Bengali', + "泰米尔语": 'Tamil', + "泰卢固语": 'Telugu', + "马拉提语": 'Marathi', + "乌尔都语": 'Urdu', "波斯语": "Persisk", - "斯瓦希里语": "Swahili", + "斯瓦希里语": 'Swahili', - // 时间相关 - "justNow": "Lige nu", - "minutesAgo": "for @minutes minutter siden", - "yesterday": "I går", - // 时间扩展(图片翻译模块使用) - "daysAgo": "for @days dage siden", - "hoursAgo": "for @hours timer siden", - - //补充 - "insufficientIntegral": "Utilstrækkelige point", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Utilstrækkelig saldo, gå venligst til den tilsvarende genopfyldningsside for at genopfylde.', - "recharge": 'Gå til genopfyldning', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI medlemskab udløbet, gå venligst til medlemskabsgenopfyldningssiden for at forny.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Kina", + "美国": "USA", + "加拿大": 'Canada', + "俄罗斯": "Rusland", + "英国": "Storbritannien", + "德国": "Tyskland", + "意大利": "Italien", + "法国": "Frankrig", + "西班牙": "Spanien", + "南非": "Sydafrika", + "沙特阿拉伯": "Saudi-Arabien", + "土耳其": "Tyrkiet", + "日本": 'Japan', + "韩国": "Sydkorea", + "新加坡": 'Singapore', + "马来西亚": 'Malaysia', + "泰国": 'Thailand', + "越南": 'Vietnam', + "印度": "Indien", + "巴基斯坦": 'Pakistan', + "菲律宾": "Filippinerne", + "印度尼西亚": "Indonesien", + "阿联酋": "UAE", + "墨西哥": "Mexico", + "巴西": "Brasilien", + "阿根廷": 'Argentina', + "澳大利亚": "Australien", + "新西兰": 'New Zealand', + "中国香港": "Hong Kong", + "中国澳门": "Macao", + "中国台湾": "Taiwan", + "埃及": "Egypten", + "希腊": "Grækenland", + "荷兰": "Holland", + "比利时": "Belgien", + "匈牙利": "Ungarn", + "罗马尼亚": "Rumænien", + "瑞士": "Schweiz", + "奥地利": "Østrig", + "丹麦": "Danmark", + "瑞典": "Sverige", + "挪威": "Norge", + "波兰": "Polen", + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": 'Colombia', + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": 'Luxembourg', + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albanien", + "马耳他": 'Malta', + "塞浦路斯": "Cypern", + "芬兰": 'Finland', + "保加利亚": "Bulgarien", + "立陶宛": "Litauen", + "拉脱维亚": "Letland", + "爱沙尼亚": "Estland", + "乌克兰": 'Ukraine', + "塞尔维亚": "Serbien", + "克罗地亚": "Kroatien", + "斯洛文尼亚": "Slovenien", + "捷克": "Tjekkiet", + "斯洛伐克": "Slovakiet", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": 'Bolivia', + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Marokko", + "阿尔及利亚": "Algeriet", + "突尼斯": "Tunesien", + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Etiopien", + "肯尼亚": 'Kenya', + "坦桑尼亚": 'Tanzania', + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": 'Israel', + "黎巴嫩": "Libanon", + "约旦": 'Jordan', + "伊拉克": "Irak", + "科威特": 'Kuwait', + "巴林": 'Bahrain', + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": "Mongoliet", + "柬埔寨": "Cambodja", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Østtimor", + "斐济": 'Fiji', + "所罗门群岛": "Salomonøerne", + "刚果民主共和国": "Den Demokratiske Republik Congo", + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": "Maldiverne", + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": 'Jamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": "Papua Ny Guinea", + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/de_de.dart b/lib/core/translations/language/de_de.dart index 79c91fb0a..442f04e2c 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', @@ -18,6 +19,11 @@ const Map deDE = { "unknownError": "Unbekannter Fehler", "asrConnectionFailed": "Verbindung zum Spracherkennungsdienst fehlgeschlagen. Bitte Netzwerk prüfen oder es später erneut versuchen.", + "justNow": "Gerade eben", + "minutesAgo": "vor @minutes Minuten", + "yesterday": "Gestern", + "daysAgo": "vor @days Tagen", + "hoursAgo": "vor @hours Stunden", // 启动页 "slogan": "Die Welt verbinden, jenseits der Stimme", @@ -28,7 +34,7 @@ const Map deDE = { "explore": "Entdecken", "settings": "Einstellungen", - // 语言 + // 语言列表 "followingSystem": "Systemeinstellung folgen", "chinese": "Chinesisch", "english": "Englisch", @@ -43,13 +49,13 @@ const Map deDE = { "russian": "Russisch", "vietnamese": "Vietnamesisch", "italian": "Italienisch", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonesisch", "thai": "Thailändisch", "malay": "Malaiisch", "turkish": "Türkisch", "polish": "Polnisch", - "filipino": "Filipino", + "filipino": 'Filipino', "dutch": "Niederländisch", "swedish": "Schwedisch", "danish": "Dänisch", @@ -72,7 +78,7 @@ const Map deDE = { "arabic": "Arabisch", "persian": "Farsisch", - // 登录页 + // 登录模块 "welcome": "Willkommen", "loginTips": "Bitte melden Sie sich mit Ihrer Telefonnummer oder E-Mail an/registrieren Sie sich", @@ -102,13 +108,9 @@ const Map deDE = { "resendVerificationCode": "Bestätigungscode erneut senden", "login": "Anmelden", "usePasswordLogin": "Passwort-Anmeldung verwenden", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Erklärung", // Voitrans 声明 "welcomeToThisApp": "Willkommen bei Voitrans, bitte lesen Sie sorgfältig", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Durch Klicken auf 'Zustimmen und Eingeben' zeigen Sie an, dass Sie die oben genannten Vereinbarungen vollständig gelesen und ihnen zugestimmt haben. Durch Klicken auf 'Nicht zustimmen' wird die Anwendung beendet.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nicht zustimmen", // 不同意 @@ -119,7 +121,7 @@ const Map deDE = { "reconnect": "Erneut verbinden", "connectingDevice": "Gerät wird verbunden...", "connectedTo": "Verbunden mit", - "signal": "Signal", + "signal": 'Signal', "deviceId": "Geräte-ID", "firmwareVersion": "Firmware-Version", "disconnectedDevice": @@ -168,7 +170,31 @@ const Map deDE = { 'right': 'Rechts', 'checkConnectionStatusFailed': 'Verbindungsstatus-Überprüfung fehlgeschlagen', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth-Initialisierung fehlgeschlagen: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth- und Standortberechtigungen werden zum Scannen benoetigt', + 'permissionRequestFailedWithError': + 'Berechtigungsanfrage fehlgeschlagen: @error', + 'needPermission': 'Berechtigung erforderlich', + 'blePermissionDialogContent': + 'Die App benoetigt Bluetooth- und Standortberechtigungen zum Scannen von Geraeten. Bitte aktivieren Sie diese in den Einstellungen.', + 'needEnableBluetooth': 'Bluetooth aktivieren', + 'enableBluetoothDialogContent': + 'Bitte aktivieren Sie Bluetooth zum Scannen und Verbinden von Geraeten.', + 'bleScanFailedWithError': 'Scan fehlgeschlagen: @error', + 'bleConnectionSuccess': 'Verbindung erfolgreich', + 'bleConnectedToDevice': 'Verbunden mit @device', + 'bleConnectionFailedWithError': 'Verbindung fehlgeschlagen: @error', + 'bleDisconnected': 'Getrennt', + 'bleDeviceDisconnected': 'Geraet getrennt', + 'bleDisconnectFailedWithError': 'Trennung fehlgeschlagen: @error', + 'signalStrong': 'Stark', + 'signalMedium': 'Mittel', + 'signalWeak': 'Schwach', + 'signalVeryWeak': 'Sehr schwach', + + // 发现页 "searchAi": "KI-Funktionen suchen...", "exploreSlogan": "Intelligente Kopfhörer, unendliche Möglichkeiten", "exploreSlogan1": "Intelligente Begleitung, unendliche Möglichkeiten", @@ -193,6 +219,7 @@ const Map deDE = { "usageStatsInfo": "Sehen Sie sich die Statistiken für die Benutzung der App an", "scene": "Szenarien", + // 用量统计模块 "aiChat": "KI-Chat", "translationStats": "Übersetzungsstatistik", @@ -213,7 +240,6 @@ const Map deDE = { "translationApi": "Übersetzungs-API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Datenvolumen-Statistik", "sourceTextCharacters": "Quelltext-Zeichen", "ttsTextCharacters": "TTS-Text-Zeichen", @@ -230,7 +256,6 @@ const Map deDE = { "totalAudioDuration": "Gesamte Audiodauer", "audioFileSize": "Audiodateigröße", "transcriptBytes": "Transkript-Bytes", - // 通知文案 "loadFailed": "Laden fehlgeschlagen", "statsLoadFailedTryLater": "Statistik konnte nicht geladen werden. Bitte versuchen Sie es später erneut.", @@ -239,72 +264,113 @@ const Map deDE = { "exportFeature": "Exportfunktion", "exportInDevelopment": "Datenexport ist in Entwicklung", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Verfügbare Pakete', 'remainingQuota': 'Verbleibendes Kontingent', 'totalQuota': 'Gesamtkontingent', 'remaining': 'Verbleibend', 'featureDescription': 'Funktionsbeschreibung', - // AI 功能卡片 + 'paymentSuccess': 'Zahlung erfolgreich', + 'paymentFailed': 'Zahlung fehlgeschlagen', + 'gotIt': 'Verstanden', + 'paymentFailedTryAgain': + 'Zahlung fehlgeschlagen. Bitte versuchen Sie es erneut.', + 'selectPaymentMethod': 'Zahlungsmethode auswählen', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat-Bestellung konnte nicht erstellt werden', + 'alipayOrderCreateFailed': 'Alipay-Bestellung konnte nicht erstellt werden', + 'appleOrderCreateFailed': 'Apple-Bestellung konnte nicht erstellt werden', + 'googleOrderCreateFailed': 'Google-Bestellung konnte nicht erstellt werden', + 'paypalOrderCreateFailed': 'PayPal-Bestellung konnte nicht erstellt werden', + 'paymentException': 'Zahlungsausnahme', + 'paymentLaunchFailed': 'Zahlungsstart fehlgeschlagen', + 'paymentExceptionWithError': 'Zahlungsausnahme: @error', + 'paymentProcessingCheckLater': + 'Ihre Bestellung wird bearbeitet. Bitte überprüfen Sie es später.', + 'paymentResultQueryException': + 'Abfrage des Zahlungsergebnisses fehlgeschlagen: @error', + 'orderConfirmedQuotaRefreshed': + 'Bestellung bestätigt. Ihr Kontingent wurde aktualisiert.', + 'paymentCompletedConfirming': 'Zahlung abgeschlossen. Bestätigung läuft…', + 'paymentCancelled': 'Zahlung abgebrochen', + 'paypalOpenedCompleteInBrowser': + 'PayPal geöffnet. Bitte schließen Sie die Zahlung in Ihrem Browser ab.', + 'paypalOpenFailed': 'PayPal-Zahlungsseite konnte nicht geöffnet werden', + 'paymentTestTitle': 'Zahlungstest', + 'paymentTestOrderInfo': 'Testbestellungsinformationen', + 'paymentTestProductId': 'Produkt-ID', + 'paymentTestProductDescription': 'Produktbeschreibung', + 'paymentTestWechatDescription': 'WeChat Pay-Zahlungstest', + 'paymentTestAlipayDescription': 'Alipay-Zahlungstest', + 'paymentTestAmount': 'Betrag', + 'paymentTestSelectAmount': 'Testbetrag auswählen', + 'paying': 'Zahlung wird durchgeführt...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Zahlungsstatus', + 'errorInfoWithMessage': 'Fehler: @message', + 'retest': 'Erneut testen', + 'paymentTestInstructionsTitle': 'Anleitung', + 'paymentTestInstructionsContent': + '1. Wählen Sie einen Testbetrag (empfohlen: ¥0,01)\n2. Klicken Sie auf die Zahlungsschaltfläche, um zu starten\n3. Schließen Sie die Zahlung in der Zahlungs-App ab\n4. Kehren Sie zurück, um das Ergebnis zu überprüfen', + 'startingWechatPayment': 'WeChat Pay wird gestartet...', + 'startingAlipayPayment': 'Alipay wird gestartet...', + 'wechatPaymentSuccess': 'WeChat Pay-Zahlung erfolgreich!', + 'wechatPaymentFailed': 'WeChat Pay-Zahlung fehlgeschlagen', + 'wechatPaymentLaunchFailed': 'WeChat Pay konnte nicht gestartet werden', + 'cannotLaunchWechatPayment': 'WeChat Pay kann nicht gestartet werden', + 'wechatPaymentException': 'WeChat Pay-Ausnahme', + 'wechatPaymentTestCompleted': 'WeChat Pay-Zahlungstest abgeschlossen', + 'alipayPaymentSuccess': 'Alipay-Zahlung erfolgreich!', + 'alipayPaymentFailed': 'Alipay-Zahlung fehlgeschlagen', + 'alipayPaymentLaunchFailed': 'Alipay konnte nicht gestartet werden', + 'cannotLaunchAlipayPayment': 'Alipay kann nicht gestartet werden', + 'alipayPaymentException': 'Alipay-Ausnahme', + "insufficientIntegral": "Nicht genügend Punkte", + "insufficientBalanceDesc": + 'Unzureichendes Guthaben, bitte gehen Sie zur entsprechenden Aufladeseite, um aufzuladen.', + "recharge": 'Aufladen', + "aiMemberExpiredDesc": + 'Die KI-Mitgliedschaft ist abgelaufen, bitte gehen Sie zur Mitgliedschafts-Aufladeseite, um zu verlängern.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Musik & Empfehlung', 'navigationAndRoutes': 'Navigation & Routen', 'nearbySearch': 'Suche in der Nähe', 'newsInformation': 'Nachrichten', 'communicationAssistant': 'Kommunikationsassistent', - // 翻译功能卡片 + 'aiHeaderDesc1': + 'Längeres Gesprächskontingent, mehr Tool-Aufrufe, längerer Kontext.', + 'aiHeaderDesc2': + 'Geeignet für Agent-Q&A, Zusammenfassungen, Analysen und Aufgaben.', + 'musicSearchPlaybackControl': + 'Musikbibliothek durchsuchen und Wiedergabe steuern', + 'smartPlaylistAndSimilarRecommendations': + 'Smarte Playlists und Empfehlungen ähnlicher Songs', + 'routePlanningAndCongestionAvoidance': 'Routenplanung und Stauvermeidung', + 'voiceBroadcastAndWaypoints': 'Sprachansagen und Zwischenziele', + 'realTimeWeatherForecast': 'Echtzeit-Wetter und Vorhersage', + 'clothingAdviceAndTravelReminders': 'Kleidungstipps und Reisehinweise', + 'poiSearchFoodGasParking': 'POI-Suche: Essen / Tanken / Parken', + 'ratingsHoursAndDirectRoutes': + 'Bewertungen, Öffnungszeiten und direkte Routen', + 'hotNewsAndTopicOverview': 'Top-Nachrichten und Themenübersicht', + 'longArticleSummariesAndKeyPoints': + 'Zusammenfassungen langer Artikel und Kernpunkte', + 'helpCallAndSMS': 'Hilfe bei Anrufen und SMS', + 'templatedMessagesAndScheduleReminders': + 'Vorlagen-Nachrichten und Termin-Erinnerungen', + 'aiDisclaimer': + 'Funktionen hängen von Geräteberechtigungen, Dienstverfügbarkeit und Netzwerkbedingungen ab.', + + // 商品模块 - 翻译商品页 'realtimeTranscription': 'Echtzeit-Transkription', - // 'textTranslation' 已存在 'sceneLexicon': 'Szenarien-Glossar', 'subtitleDisplay': 'Untertitel', - // 会议功能卡片 - 'meetingRecording': 'Meeting-Aufnahme', - 'transcriptionAndSummary': 'Transkription & Zusammenfassung', - 'keywordSearch': 'Stichwortsuche', - 'collaborationSharing': 'Zusammenarbeit & Teilen', - // 商品名称(按ID) - 'ai_001_name': 'KI Basic 100', - 'ai_002_name': 'KI Basic 500', - 'ai_003_name': 'KI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Übersetzung Basis 100', - 'trans_002_name': 'Übersetzung Basis 500', - 'trans_003_name': 'Übersetzung Basis 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Enthält 100 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'ai_002_desc': 'Enthält 500 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'ai_003_desc': 'Enthält 1000 Nutzungen. Zugriff auf Kern-KI-Funktionen.', - 'meet_001_desc': 'Enthält 100 Meeting-Aufnahmen/Transkriptionen.', - 'meet_002_desc': 'Enthält 500 Meeting-Aufnahmen/Transkriptionen.', - 'meet_003_desc': 'Enthält 1000 Meeting-Aufnahmen/Transkriptionen.', - 'trans_001_desc': 'Enthält 100 Übersetzungen (Stimme/Text).', - 'trans_002_desc': 'Enthält 500 Übersetzungen (Stimme/Text).', - 'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 'transHeaderDesc1': 'Echtzeit-Simultandolmetschen und Textübersetzung mit Sprachwiedergabe bei niedriger Latenz.', 'transHeaderDesc2': 'Geeignet für Reisen, Geschäft, Reden und Lehre.', @@ -320,30 +386,27 @@ const Map deDE = { 'transDisclaimer': 'Die Übersetzungsleistung hängt von Mikrofon, Netzwerklatenz und Umgebungsgeräuschen ab.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting-Aufnahme', + 'transcriptionAndSummary': 'Transkription & Zusammenfassung', + 'keywordSearch': 'Stichwortsuche', + 'collaborationSharing': 'Zusammenarbeit & Teilen', + 'meetingHeaderDesc1': + 'Audioaufzeichnung, Transkription, Stichwortsuche und automatische Zusammenfassung zur Steigerung der Meeting-Effizienz.', + 'meetingHeaderDesc2': + 'Geeignet für Geschäftsmeetings, Unterrichtsnotizen und Interviewprotokolle.', + 'meetingAutoRecording': 'Automatische Aufnahme und Segmentierung', + 'meetingSpeakerTagging': 'Sprecherkennzeichnung', + 'meetingLongAudioTranscription': 'Transkription langer Audios', + 'meetingKeyPointSummary': 'Kernpunkte extrahieren', + 'meetingTopicNameSearch': 'Suche nach Thema/Name', + 'meetingTimelineJump': 'Sprung in der Timeline', + 'meetingExportSummary': 'Protokoll exportieren', + 'meetingMultiPlatformShare': 'Plattformübergreifend teilen', + 'meetingDisclaimer': + 'In ruhiger Umgebung verwenden; Leistung hängt von Mikrofon und Netzwerk ab.', - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Übersicht der Vorteile', 'higherQuota': 'Höheres Nutzungskontingent', 'lowerUnitPrice': 'Niedrigerer Stückpreis', @@ -359,7 +422,32 @@ const Map deDE = { 'vipDisclaimer': 'Die tatsächlichen Vorteile hängen von den Paketdetails ab und können sich mit Versionen ändern.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'KI Basic 100', + 'ai_002_name': 'KI Basic 500', + 'ai_003_name': 'KI Basic 1000', + 'meet_001_name': 'Meeting Basis 100', + 'meet_002_name': 'Meeting Basis 500', + 'meet_003_name': 'Meeting Basis 1000', + 'trans_001_name': 'Übersetzung Basis 100', + 'trans_002_name': 'Übersetzung Basis 500', + 'trans_003_name': 'Übersetzung Basis 1000', + 'ai_001_desc': 'Enthält 100 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'ai_002_desc': 'Enthält 500 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'ai_003_desc': 'Enthält 1000 Nutzungen. Zugriff auf Kern-KI-Funktionen.', + 'meet_001_desc': 'Enthält 100 Meeting-Aufnahmen/Transkriptionen.', + 'meet_002_desc': 'Enthält 500 Meeting-Aufnahmen/Transkriptionen.', + 'meet_003_desc': 'Enthält 1000 Meeting-Aufnahmen/Transkriptionen.', + 'trans_001_desc': 'Enthält 100 Übersetzungen (Stimme/Text).', + 'trans_002_desc': 'Enthält 500 Übersetzungen (Stimme/Text).', + 'trans_003_desc': 'Enthält 1000 Übersetzungen (Stimme/Text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Bereitgestellt von: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP-Kundendienst QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Überspringen", 'next': 'Weiter', 'sayLilyHint': "Sagen Sie \"Lily Lily\" ins Mikrofon", @@ -371,7 +459,6 @@ const Map deDE = { 'guideAwakenSuccess': "Großartig! Lily ist wach – bitten Sie sie um Hilfe.", 'confirmInput': "Eingabe bestätigen", 'guideClickSendPrefix': "Senden tippen, ", - // AI 引导步骤 'guideWeatherStart': "Sagen Sie Lily: „Wie ist das Wetter heute?“", 'guideWeatherInput': "Wie ist das Wetter heute?", 'guideWeatherSend': "Lily wird das Wetter in Echtzeit berichten", @@ -400,7 +487,7 @@ const Map deDE = { 'guideSmsSend': "Lily wird die Nachricht senden", 'guideSmsEnd': "Nachricht gesendet – Sprachsteuerung ist bequem", - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Meeting starten", 'edit': 'Bearbeiten', 'delete': 'Löschen', @@ -412,8 +499,6 @@ const Map deDE = { 'recordingDetails': 'Aufnahme-Details', 'aiSummary': 'KI-Zusammenfassung', 'meetingTranscript': 'Meeting-Transkript', - - // Meeting模块 - 导航和基础功能 'files': 'Dateien', 'mine': 'Mein', 'connect': 'Verbinden', @@ -475,7 +560,6 @@ const Map deDE = { 'summarizing': 'Zusammenfassen...', 'analyzing': 'Analysieren...', 'summaryComplete': 'Zusammenfassung abgeschlossen', - //'generating': '正在生成...', 'generate': 'Generieren', 'overview': 'Übersicht', 'transcription': 'Transkription', @@ -484,6 +568,99 @@ const Map deDE = { 'editSpeaker': 'Bearbeiten', 'nameSpeaker': 'Sprecher benennen', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Erneut zusammenfassen', + 'dateAndTime': 'Datum & Uhrzeit', + 'location': 'Ort', + 'attendees': 'Teilnehmer', + 'inputLocation': 'Ort eingeben', + 'inputAttendees': 'Teilnehmer eingeben', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen', + 'useThisTemplate': 'Diese Vorlage verwenden', + 'lastUsed': 'Zuletzt verwendet', + 'create': 'Erstellen', + 'templateDetails': 'Vorlagendetails', + 'tag': 'Schlagwort', + 'description': 'Beschreibung', + 'template': 'Vorlage', + 'deleteTemplate': 'Vorlage löschen', + 'deleteTemplateConfirm': 'Möchten Sie diese Vorlage wirklich löschen?', + 'editTemplate': 'Vorlage bearbeiten', + 'createTemplate': 'Vorlage erstellen', + 'name': 'Name', + 'templateContentHint': + 'Bitte geben Sie den Vorlageninhalt ein! Tipp: Klicken Sie oben auf die KI-Schaltfläche, um schnell Vorlageninhalt basierend auf dem eingegebenen Namen und der Beschreibung zu generieren', + 'inputNameHint': 'Bitte Namen eingeben', + 'inputDescHint': 'Bitte Beschreibung eingeben', + 'custom': 'Benutzerdefiniert', + 'pleaseEnter': 'Bitte eingeben', + 'viewAll': 'Alle anzeigen', + 'recordingLanguage': 'Aufnahmesprache', + 'chineseSimplified': 'Chinesisch (Vereinfacht)', + 'meetingGenerateNow': 'Jetzt generieren', + 'keyEventsAnalyzed': '{count} Schlüsselereignisse analysiert.', + 'aiAnalysisDesc': + 'Die KI-Analyse identifiziert Schlüsselereignisse in Aufnahmen, sodass Sie wichtige Ereignisse für die KI-Generierung auswählen können.', + + // Meeting模块 - 文件操作 + 'importing': 'Importiere...', + 'batchImporting': 'Batch-Import...', + 'importingLocalRecordings': 'Importiere lokale Aufnahmen...', + 'importFailed': 'Dateiimport fehlgeschlagen: {filePath}, Fehler: {error}', + 'importSuccess': '{count} lokale Aufnahmen erfolgreich importiert', + 'importError': 'Import fehlgeschlagen: {error}', + 'pleaseSelectAudioFile': 'Bitte Audiodatei auswählen', + 'shareAudio': 'Meeting-Audio teilen', + 'shareComplete': 'Teilen abgeschlossen!', + 'shareFailed': 'Teilen fehlgeschlagen: {error}', + 'fileProcessingFailed': + 'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Mindmap speichern', + 'shareMindMap': 'Mindmap teilen', + 'shareSuccess': 'Teilen erfolgreich', + + // Meeting模块 - AI问答 + 'askAI': 'KI fragen...', + 'askAIPrompt': 'Wobei kann ich Ihnen heute helfen?', + 'continueAsk': 'Weiter fragen', + 'todoList': 'To-Do-Liste', + 'extractConclusion': 'Fazit extrahieren', + 'generateKeyIndicators': 'Schlüsselindikatoren generieren', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Link teilen', + 'copyTranscript': 'Transkript kopieren', + 'copySummary': 'Zusammenfassung kopieren', + 'exportAudio': 'Audio exportieren', + 'exportTranscript': 'Transkript exportieren', + 'shareMeetingAudio': 'Meeting-Audio teilen', + 'exportSummary': 'Zusammenfassung exportieren', + 'exportAs': 'Exportieren als', + 'exportingPDF': 'Exportiere PDF...', + 'export': 'Exportieren', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden', + 'summaryWillBeUpdatedAutomatically': + 'Die Zusammenfassung wird basierend auf der Vorlage automatisch aktualisiert', + 'nameCurrentSpeaker': 'Aktuellen Sprecher benennen', + 'recentlyUsedNames': 'Zuletzt verwendete Namen', + 'applyToCurrentParagraph': 'Auf aktuellen Absatz anwenden', + 'totalTime': 'Gesamt', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Sprecher in der Zusammenfassung werden automatisch aktualisiert', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Mit Cloud synchronisieren', + 'syncToCloudTip': + 'Synchronisieren Sie Ihre Aufnahmen automatisch mit der Cloud. Sie können Aufnahmen über jede VOITRANS APP oder VOITRANS Web (web.voitrans.com) abspielen, verwalten und teilen.', + 'syncToVoitransApp': 'VOITRANS APP synchronisieren', + 'transcriptionRecord': 'Transkriptionsaufzeichnung', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transkriptionsaufzeichnungen', 'templateCommunity': 'Vorlagen-Community', @@ -503,7 +680,7 @@ const Map deDE = { 'Voitrans-Gerät binden, um Starter-Mitgliedschaft zu aktivieren', 'unlockNow': 'Jetzt freischalten', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Vergleich', 'detailedInfo': 'Detaillierte Informationen', 'monthlyTranscriptionTime': 'Monatliche Transkriptionszeit', @@ -539,8 +716,6 @@ const Map deDE = { 'Importieren Sie einfach Audiodateien aus lokalen oder Drittanbieter-Anwendungen wie Sprachmemos, Google Drive usw.', 'multipleExportFormatsDesc': 'Exportieren Sie Ihre Audioaufnahmen, Transkriptionstexte und Zusammenfassungen in verschiedenen Formaten (TXT, PDF, JPEG), um Ihre Anforderungen zu erfüllen.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Mitgliedschaft upgraden', 'yearlySubscription': 'Jahresabo', 'monthlySubscription': 'Monatsabo', @@ -570,106 +745,29 @@ const Map deDE = { 'Sofort nach Kauf aktiviert, 2 Jahre nach Aktivierung gültig.', 'purchase': 'Kaufen', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Zusammenfassungsvorlage auswählen', - 'useThisTemplate': 'Diese Vorlage verwenden', - 'lastUsed': 'Zuletzt verwendet', - 'viewAll': 'Alle anzeigen', - 'recordingLanguage': 'Aufnahmesprache', - 'chineseSimplified': 'Chinesisch (Vereinfacht)', - 'meetingGenerateNow': 'Jetzt generieren', - 'keyEventsAnalyzed': '{count} Schlüsselereignisse analysiert.', - 'aiAnalysisDesc': - 'Die KI-Analyse identifiziert Schlüsselereignisse in Aufnahmen, sodass Sie wichtige Ereignisse für die KI-Generierung auswählen können.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importiere...', - 'batchImporting': 'Batch-Import...', - 'importingLocalRecordings': 'Importiere lokale Aufnahmen...', - 'importFailed': 'Dateiimport fehlgeschlagen: {filePath}, Fehler: {error}', - 'importSuccess': '{count} lokale Aufnahmen erfolgreich importiert', - 'importError': 'Import fehlgeschlagen: {error}', - 'pleaseSelectAudioFile': 'Bitte Audiodatei auswählen', - 'shareAudio': 'Meeting-Audio teilen', - 'shareComplete': 'Teilen abgeschlossen!', - 'shareFailed': 'Teilen fehlgeschlagen: {error}', - 'fileProcessingFailed': - 'Dateiverarbeitung fehlgeschlagen: {filePath}, Fehler: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unbekannte Sprache', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Speicher', - 'meetingStoragePermissionExplanation': - 'Wir benötigen Zugriff auf Speicherberechtigungen, damit Sie Audiodateien auswählen und hochladen können.', - 'meetingStoragePermissionPermanentDenial': - 'Sie haben die Speicherberechtigung dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, aktivieren Sie die Speicherberechtigung bitte manuell in den App-Einstellungen.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Mindmap teilen', - 'shareSuccess': 'Teilen erfolgreich', - - // Meeting模块 - AI相关 - 'askAI': 'KI fragen...', - 'askAIPrompt': 'Wobei kann ich Ihnen heute helfen?', - 'continueAsk': 'Weiter fragen', - 'todoList': 'To-Do-Liste', - 'extractConclusion': 'Fazit extrahieren', - 'generateKeyIndicators': 'Schlüsselindikatoren generieren', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Erneut zusammenfassen', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Aufnahmesprache', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Kantonesisch', 'sichuan': 'Sichuan-Dialekt', 'shanghai': 'Shanghai-Dialekt', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Link teilen', - 'copyTranscript': 'Transkript kopieren', - 'copySummary': 'Zusammenfassung kopieren', - 'exportAudio': 'Audio exportieren', - 'exportTranscript': 'Transkript exportieren', - 'shareMeetingAudio': 'Meeting-Audio teilen', - 'exportSummary': 'Zusammenfassung exportieren', - 'exportAs': 'Exportieren als', - 'exportingPDF': 'Exportiere PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Auf alle Absätze dieses Sprechers anwenden', - 'summaryWillBeUpdatedAutomatically': - 'Die Zusammenfassung wird basierend auf der Vorlage automatisch aktualisiert', - 'nameCurrentSpeaker': 'Aktuellen Sprecher benennen', - 'recentlyUsedNames': 'Zuletzt verwendete Namen', - 'applyToCurrentParagraph': 'Auf aktuellen Absatz anwenden', - 'totalTime': 'Gesamt', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Sprecher in der Zusammenfassung werden automatisch aktualisiert', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Mit Cloud synchronisieren', - 'syncToCloudTip': - 'Synchronisieren Sie Ihre Aufnahmen automatisch mit der Cloud. Sie können Aufnahmen über jede VOITRANS APP oder VOITRANS Web (web.voitrans.com) abspielen, verwalten und teilen.', - 'syncToVoitransApp': 'VOITRANS APP synchronisieren', - 'transcriptionRecord': 'Transkriptionsaufzeichnung', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Datum & Uhrzeit', - 'location': 'Ort', - 'attendees': 'Teilnehmer', - 'inputLocation': 'Ort eingeben', - 'inputAttendees': 'Teilnehmer eingeben', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unbekannte Sprache', + 'analysisFailed': + 'Analyse fehlgeschlagen, bitte versuchen Sie es später erneut', + 'transcriptionFailed': + 'Transkription fehlgeschlagen, bitte versuchen Sie es später erneut', + 'summaryFailed': + 'Zusammenfassung fehlgeschlagen, bitte versuchen Sie es später erneut', + 'summaryFailedShort': 'Zusammenfassung fehlgeschlagen', + 'transcriptionFailedShort': 'Transkription fehlgeschlagen', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audioplayer ist nicht bereit, bitte warten', + 'playFailed': 'Wiedergabe fehlgeschlagen', + 'audioFileNotFound': 'Audiodatei nicht gefunden', + 'fetchingAudio': 'Audio wird aus der Cloud abgerufen...', + 'playerLoadFailed': 'Audioplayer konnte nicht geladen werden', // 设置页 "systemSettings": "Systemeinstellungen", @@ -678,10 +776,10 @@ const Map deDE = { "translationRecharge": "Übersetzungs-Recharge", "meetingAssistantRecharge": "Meeting-Assistent-Recharge", "cloudSync": "Cloud-Synchronisierung-Recharge", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Mitgliederservice", + "bindRewardTitle": "Belohnungen", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Die Prämie für die erste Gerätebindung wurde ausgegeben. Tippen Sie auf OK, um zu schließen.", "joinDevice": "Verbundenes Gerät:", "accountId": "Konto-ID:", "systemSetting": "Systemeinstellungen", @@ -697,7 +795,7 @@ const Map deDE = { "permissionManagementInfo": "App-Berechtigungseinstellungen verwalten", // 管理应用权限设置 "aboutApplication": "Über", - "versions": "Version", + "versions": 'Version', "checkUpdates": "Updates prüfen", "selectLanguage": "Sprache auswählen", "voiceService": "Sprachdienst", @@ -722,26 +820,15 @@ const Map deDE = { "bleHeadsetFirmwareUpgrade": "BLE-Kopfhörer Firmware-Upgrade", "deviceManagement": "Geräteverwaltung", "manageConnectedDevices": "Verbundene Bluetooth-Geräte verwalten", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aktuelle Version ist bereits die neueste {version}', 'checkUpdateFailed': 'Update-Prüfung fehlgeschlagen', 'networkErrorRetry': 'Netzwerkfehler, bitte später versuchen', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'Echtzeit-Sprachgespräch', "realtimeVoiceChatInfo": 'Intelligente Sprachinteraktionsfunktionen erleben (Vorschau)', "loading": 'Laden...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unbekanntes Gerät", "deviceTypeClassicBluetoothHeadset": "Klassisches Bluetooth-Headset", "deviceTypeBleBluetoothHeadset": "BLE-Bluetooth-Headset", @@ -758,11 +845,10 @@ const Map deDE = { "Sind Sie sicher, dass Sie die Bindung des Geräts \"{deviceName}\" aufheben möchten?", "confirmUnbindAction": "Bindung aufheben bestätigen", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Chat-Verlauf löschen", - "online": "Online", + "online": 'Online', "ttsSpeed": "Sprachgeschwindigkeit", "ttsSpeedDefaultHint": "Standard +25 %", "inputMessage": "Nachricht eingeben...", @@ -789,8 +875,10 @@ const Map deDE = { "swipeUpForMore": "Nach oben wischen für mehr", "callingTool": "Ich helfe Ihnen, bitte warten!", // 正在帮您,请稍等! "voice_interrupt": "Unterbrechen", // 语音打断 + 'voice_interrupt_tip': + 'Wenn aktiviert: Die KI wird nicht durch Ihre Stimme unterbrochen, während sie spricht, und kann nur eine Gesprächsrunde gleichzeitig bearbeiten. Um eine neue Runde zu starten, sagen Sie einfach das Aktivierungswort.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Musik abspielen", // 来点音乐 "presetNavigation": "Navigieren zu", // 导航 "presetWeather": "Wetter heute", // 今日天气 @@ -802,7 +890,7 @@ const Map deDE = { "todayNews": "Was sind die Nachrichten heute?", // 今日新闻 "nearbyFood": "Welches leckere Essen gibt es in der Nähe?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hallo! Ich bin **Lily**, ich kann Ihnen helfen:\n\n' '• Fragen beantworten und Informationen bereitstellen\n\n' '• Echtzeit-Sprachübersetzung\n\n' @@ -822,11 +910,11 @@ const Map deDE = { 'startVoiceInput': 'Spracheingabe starten', 'startPhoneCallMode': 'Anrufmodus starten, Spracheingabe beginnen', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Geben Sie hier Ihre Nachricht ein...', // 全屏编辑器输入提示 'characterCount': '{count} Zeichen', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopieren', 'copySuccess': 'Erfolgreich kopiert', 'report': 'Melden', @@ -834,7 +922,6 @@ const Map deDE = { 'submitFailed': 'Übermittlung fehlgeschlagen', 'reportSubmitted': 'Meldung übermittelt, wir werden sie so schnell wie möglich bearbeiten', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Schädlich/Unsicher', 'pornographicVulgar': 'Pornografisch/Vulgär', 'misleadingAttack': 'Irreführend/Angriff', @@ -845,17 +932,21 @@ const Map deDE = { 'other': 'Andere', 'reportDescriptionHint': 'Wir möchten den Grund für Ihre Meldung wissen, Sie können das Problem beschreiben, das Sie erlebt haben.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Von KI generiert', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Werkzeugaufruf', + 'noResult': 'Kein Ergebnis', + 'noToolCallContentToCopy': 'Kein Werkzeugaufruf-Inhalt zum Kopieren', + 'toolCallDetails': 'Werkzeugaufruf-Details:', + 'toolCallContentCopied': 'Werkzeugaufruf-Inhalt in Zwischenablage kopiert', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hier sind einige empfohlene Musik:', 'playList': 'Wiedergabeliste', 'moreMusic': 'Mehr Musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'Stunden', // 小时单位 @@ -870,7 +961,31 @@ const Map deDE = { "bicycling": "Radfahren", "tsransit": "ÖPNV", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Navigations-App waehlen', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Mit Amap navigieren', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Mit Baidu Maps navigieren', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Mit Google Maps navigieren', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Mit Apple Maps navigieren', + 'builtInNavigation': 'Integrierte Navigation', + 'useBuiltInNavigation': 'Mit integrierter Karte navigieren', + 'navigationStartFailed': 'Navigation konnte nicht gestartet werden', + 'cannotPlayMusicListRetryLater': + 'Musikliste kann nicht abgespielt werden, bitte spaeter erneut versuchen', + 'cannotPlaySong': 'Lied kann nicht abgespielt werden', + 'openMapError': 'Fehler beim Oeffnen der Karte', + 'pleaseInstallAmapApp': 'Bitte installieren Sie zuerst die Amap-App', + 'pleaseInstallBaiduMapApp': + 'Bitte installieren Sie zuerst die Baidu Maps-App', + 'appleMapStartFailed': 'Apple Maps konnte nicht gestartet werden', + 'appleMapUnavailable': 'Apple Maps nicht verfuegbar', + 'openAppleMapError': 'Fehler beim Oeffnen von Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Wetterabfrage:', 'highest': 'Höchste', 'lowest': 'Niedrigste', @@ -900,18 +1015,8 @@ const Map deDE = { "friday": "Fr", "saturday": "Sa", "sunday": "So", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Willkommensbonus", - "firstBindRewardDesc": "Sie haben Bindungsprämien erhalten.", - "vipLevelLabel": "VIP-Level:", - "expiryLabel": "Ablaufdatum:", - "notActivated": "Nicht aktiviert", - "aiChatCreditsLabel": "KI-Chat-Guthaben:", - "translationCreditsLabel": "Übersetzungsguthaben:", - "meetingCreditsLabel": "Meeting-Guthaben:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sonnig", "partlyCloudy": "Teilweise bewölkt", "partlySunny": "Teilweise sonnig", @@ -932,48 +1037,178 @@ const Map deDE = { "haze": "Dunst", "strongWind": "Starker Wind", - //编辑个人信息页 - "editProfile": "Profil bearbeiten", - "avatar": "Avatar", - "nickname": "Spitzname", - "save": "Speichern", - "about": "Über", - "enterNickname": "Bitte geben Sie Ihren Spitznamen ein", - "notSet": "Nicht festgelegt", - "accountSetting": "Kontoeinstellungen", - "logout": "Abmelden", - "logoutTips": - "Sind Sie sicher, dass Sie sich vom aktuellen Konto abmelden möchten?", - 'deleteAccount': 'Konto löschen', - 'deleteAccountTips': - 'Sind Sie sicher, dass Sie Ihr Konto dauerhaft löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.', - 'clean': 'Cache leeren', - 'cleanTips': - 'Sind Sie sicher, dass Sie den persönlichen Cache leeren möchten?', + // 翻译模块 - 中间层 + "pictureTranslation": "Bildübersetzung", + "textTranslation": "Textübersetzung", - // Profile 错误信息 - 'networkConnectionFailed': - 'Netzwerkverbindung fehlgeschlagen, bitte überprüfen Sie die Netzwerkeinstellungen und versuchen Sie es erneut', - 'serverTemporarilyUnavailable': - 'Server vorübergehend nicht verfügbar, bitte versuchen Sie es später erneut', - 'loginExpiredPleaseRelogin': - 'Anmeldung abgelaufen, bitte melden Sie sich erneut an', - 'noPermissionForThisOperation': 'Keine Berechtigung für diese Operation', - 'requestedResourceNotFound': 'Angeforderte Ressource nicht gefunden', - 'imageProcessingFailedPleaseReselect': - 'Bildverarbeitung fehlgeschlagen, bitte wählen Sie das Bild erneut aus', - 'operationFailedPleaseRetry': - 'Operation fehlgeschlagen, bitte versuchen Sie es erneut', + // 翻译模块 - 主页 + "translationHistory": "Übersetzungsverlauf", + "enableRecording": "Aufnahme aktivieren", + "viewAudioFiles": "Audiodateien anzeigen", + "headsetUser": "Kopfhörer-Benutzer", + "phoneUser": "Telefon-Benutzer", + "selectSourceLanguage": "Quellsprache auswählen", + "selectTargetLanguage": "Zielsprache auswählen", + "me": "Ich", + "counterPart": "Gegenüber", + "bluetoothCallStateError": + "Bitte stellen Sie sicher, dass das Bluetooth-Headset mit dem Telefon verbunden ist und sich in einem Anrufzustand befindet", + "autoDetect": "Automatische Erkennung", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Spracherkennung fehlgeschlagen", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Schwebendes Fenster deaktivieren', + 'enableFloatingWindow': 'Schwebendes Fenster aktivieren', + 'permissionTip': 'Berechtigungshinweis', + 'micPermissionRequiredForRecording': + 'Mikrofonberechtigung fuer Aufnahme erforderlich', + 'deleteTranslationRecordError': + 'Fehler beim Loeschen des Uebersetzungsdatensatzes: @error', + "translationFailed": "Übersetzung fehlgeschlagen", + "translating": "Wird uebersetzt", + "translate": "Uebersetzen", + "pleaseInputText": "Bitte Text eingeben", + "inputTextToTranslate": "Bitte geben Sie den zu übersetzenden Text ein", + "textTooLong": "Text zu lang, max. 5000 Zeichen", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Kein Übersetzungsverlauf", + "historyRecords": "Verlaufsaufzeichnungen", + "clearResults": "Ergebnisse löschen", + "clearHistory": "Verlauf löschen", + "clearHistoryConfirm": + "Sind Sie sicher, dass Sie den gesamten Übersetzungsverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "unknownLanguage": "Unbekannte Sprache", + "deleteSessionRecord": "Sitzungsaufzeichnung löschen", + "deleteSessionConfirm": + "Sind Sie sicher, dass Sie alle Übersetzungsaufzeichnungen für diese Sitzung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Bildquelle auswählen", + "imagePreview": "Bildvorschau", + "translationResult": "Übersetzungsergebnis", + "recognitionResult": "Erkennungsergebnis", + "translatedImagePreview": "Übersetzte Bildvorschau", + "translatedImageLoadFailed": "Laden des übersetzten Bildes fehlgeschlagen", + "pleaseSelectImage": "Bitte wählen Sie ein Bild aus", + "imageLoadFailed": "Bild laden fehlgeschlagen", + "imageQuality": "Bildqualität", + "maxSize": "Maximale Größe", + "close": "Schließen", + "setImageQuality": "Bildqualität einstellen", + "currentQuality": "Aktuelle Qualität: @value%", + "setMaxSize": "Maximale Größe einstellen", + "currentMaxSize": "Aktuell: @pxpx", + "waitingForAction": "Warte auf Aktion", + "pleaseSelectImageToStart": "Bitte wählen Sie ein Bild aus, um zu beginnen", + "chooseImage": "Bild auswählen", + "openingCamera": "Kamera öffnen...", + "openingPhotoAlbum": "Fotoalbum öffnen...", + "cancelled": "Abgebrochen", + "userCancelledSelection": "Benutzer hat die Auswahl abgebrochen", + "translatingImage": "Bild wird übersetzt", + "callingImageTranslateService": "Rufe Bildübersetzungsdienst auf...", + "savingRecord": "Speichere Datensatz", + "savingTranslationResult": "Speichere Übersetzungsergebnis...", + "translationCompleted": "Übersetzung abgeschlossen", + "allStepsCompleted": "Alle Schritte abgeschlossen", + "processingFailed": "Verarbeitung fehlgeschlagen", + "imageProcessingOrTranslationFailed": + "Bildverarbeitung oder Übersetzung fehlgeschlagen. Bitte erneut versuchen.\nFehler: {error}", + "imageTooLarge": "Bildgröße überschreitet 4MB-Limit", + "imageTooLargeHint": + "Bildgröße überschreitet 4MB. Qualität oder Abmessungen reduzieren und erneut versuchen", + "emptyTranslationResult": "Bildübersetzungs-API gab leeres Ergebnis zurück", + "imageTranslationFailedTryLater": + "Bildübersetzung fehlgeschlagen. Netzwerkproblem oder Ratenbegrenzung. Bitte später versuchen", + "imageTranslationApiException": + "Bildübersetzungs-API Ausnahme. Netzwerk prüfen und erneut versuchen", + "permissionRequired": "Berechtigung erforderlich", + "cameraPermissionRequired": + "Kameraberechtigung erforderlich, um Fotos aufzunehmen", + "photoAlbumPermissionRequired": + "Fotoalbum-Berechtigung erforderlich, um Bilder auszuwählen", + "translationDetails": "Übersetzungsdetails", + "originalImage": "Originalbild", + "sourceLanguage": "Quellsprache", + "targetLanguage": "Zielsprache", + "translationTime": "Übersetzungszeit", + "shareInDevelopment": "Teilen-Funktion in Entwicklung", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Audiodateien übersetzen", + "noAudioFiles": "Keine Audiodateien", + "calculating": "Berechnung läuft...", + "playing": "Wiedergabe läuft...", + "paused": "Pausiert", + "clickToPlay": "Zum Abspielen klicken", + "rename": "Umbenennen", + "smartTranscription": "Intelligente Transkription", + "renameAudioFile": "Audiodatei umbenennen", + "enterNewFileName": "Bitte geben Sie den neuen Dateinamen ein", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalaufzeichnung", + "recordSummary": "Aufzeichnungszusammenfassung", + "clickToGenerateSummary": + "Klicken Sie auf die Schaltfläche unten, um eine Sitzungszusammenfassung zu generieren", + "summaryContent": "Zusammenfassungsinhalt", + "copied": "Kopiert", + "summaryCopiledToClipboard": "Zusammenfassung in die Zwischenablage kopiert", + "extractSummary": "Zusammenfassung extrahieren", + "summaryGenerated": "Zusammenfassung generiert", + "generating": "Generierung läuft...", + "regenerate": "Neu generieren", + "summaryTimeoutMessage": + "Zusammenfassungsgenerierung-Anfrage ist abgelaufen, möglicherweise aufgrund von Netzwerkproblemen oder Server-Überlastung.", + "deleteTranslationRecord": "Übersetzungsaufzeichnung löschen", + "deleteTranslationConfirm": + "Sind Sie sicher, dass Sie diese Übersetzungsaufzeichnung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", + "originalText": "Originaltext", + "translatedText": "Übersetzter Text", + "sessionSummary": "Sitzungszusammenfassung", + "cannotShare": "Kann nicht teilen", + "generateSummaryFirst": "Bitte generieren Sie zuerst eine Zusammenfassung", + "translationSessionRecord": "Übersetzungssitzungsaufzeichnung", + + // 个人资料模块 + "editProfile": "Profil bearbeiten", + "avatar": 'Avatar', + "nickname": "Spitzname", + "save": "Speichern", + "about": "Über", + "enterNickname": "Bitte geben Sie Ihren Spitznamen ein", + "notSet": "Nicht festgelegt", + "accountSetting": "Kontoeinstellungen", + "logout": "Abmelden", + "logoutTips": + "Sind Sie sicher, dass Sie sich vom aktuellen Konto abmelden möchten?", + 'deleteAccount': 'Konto löschen', + 'deleteAccountTips': + 'Sind Sie sicher, dass Sie Ihr Konto dauerhaft löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.', + 'clean': 'Cache leeren', + 'cleanTips': + 'Sind Sie sicher, dass Sie den persönlichen Cache leeren möchten?', + 'networkConnectionFailed': + 'Netzwerkverbindung fehlgeschlagen, bitte überprüfen Sie die Netzwerkeinstellungen und versuchen Sie es erneut', + 'serverTemporarilyUnavailable': + 'Server vorübergehend nicht verfügbar, bitte versuchen Sie es später erneut', + 'loginExpiredPleaseRelogin': + 'Anmeldung abgelaufen, bitte melden Sie sich erneut an', + 'noPermissionForThisOperation': 'Keine Berechtigung für diese Operation', + 'requestedResourceNotFound': 'Angeforderte Ressource nicht gefunden', + 'imageProcessingFailedPleaseReselect': + 'Bildverarbeitung fehlgeschlagen, bitte wählen Sie das Bild erneut aus', + 'operationFailedPleaseRetry': + 'Operation fehlgeschlagen, bitte versuchen Sie es erneut', 'serverReturnedError': 'Server hat einen Fehler zurückgegeben', 'serverError': 'Serverfehler', 'networkConnectionFailedCheckSettings': 'Netzwerkverbindung fehlgeschlagen, bitte überprüfen Sie die Netzwerkeinstellungen', 'serverInternalErrorRetryLater': 'Interner Serverfehler, bitte versuchen Sie es später erneut', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildkomprimierung fehlgeschlagen', 'avatarUpdateFailed': 'Avatar-Update fehlgeschlagen', 'usernameCannotBeEmpty': 'Benutzername darf nicht leer sein', @@ -986,8 +1221,6 @@ const Map deDE = { 'accountPermanentlyDeleted': 'Konto dauerhaft gelöscht', 'deleteAccountFailedRetry': 'Konto löschen fehlgeschlagen, bitte versuchen Sie es erneut', - - // 账号服务相关 'clearUserDataFailed': 'Benutzerdaten löschen fehlgeschlagen', // 清理用户数据失败 'deleteUserDataFailed': 'Benutzerdaten löschen fehlgeschlagen', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Drittanbieter-Abmeldung erfolgreich', // 第三方登录退出成功 @@ -1002,7 +1235,12 @@ const Map deDE = { 'accountServiceInitialized': 'AccountService initialisiert', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Speicher', + 'meetingStoragePermissionExplanation': + 'Wir benötigen Zugriff auf Speicherberechtigungen, damit Sie Audiodateien auswählen und hochladen können.', + 'meetingStoragePermissionPermanentDenial': + 'Sie haben die Speicherberechtigung dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, aktivieren Sie die Speicherberechtigung bitte manuell in den App-Einstellungen.', 'getPermissionStatusFailed': 'Berechtigungsstatus abrufen fehlgeschlagen', 'communicationPermissions': 'Kommunikationsberechtigungen', 'bluetoothPermissions': 'Bluetooth-Berechtigungen', @@ -1015,7 +1253,6 @@ const Map deDE = { 'phone': 'Telefon', 'sms': 'SMS', 'contacts': 'Kontakte', - //'bluetooth': '蓝牙', 'notification': 'Benachrichtigung', 'alarm': 'Alarm', 'calendarWrite': 'Kalender schreiben', @@ -1075,8 +1312,6 @@ const Map deDE = { 'permanentDenialText': 'Sie haben die {permission}-Berechtigung dauerhaft verweigert, bitte gehen Sie zu den App-Einstellungen, um sie zu aktivieren', 'goToSettings': 'Zu Einstellungen gehen', - - // 权限申请 'bluetoothScan': 'Bluetooth-Scan', 'bluetoothConnect': 'Bluetooth-Verbindung', 'bluetoothScanExplanation': @@ -1101,7 +1336,6 @@ const Map deDE = { 'Sie haben die Benachrichtigungsberechtigung dauerhaft verweigert, bitte gehen Sie zu den Einstellungen, um sie zu aktivieren.', 'locationPermissionPermanentDenial': 'Sie haben die Standortberechtigung dauerhaft verweigert, bitte gehen Sie zu den Einstellungen, um sie zu aktivieren.', -//'microphonePermission': '录音', 'storagePermission': 'Speicher', 'microphonePermissionExplanation': 'Wir benötigen Mikrofonberechtigung, um Audioinhalte aufzunehmen.', @@ -1111,6 +1345,12 @@ const Map deDE = { 'Mikrofonberechtigung wurde dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, gehen Sie bitte zu den App-Einstellungen, um die Mikrofonberechtigung manuell zu aktivieren.', 'storagePermissionPermanentDenial': 'Speicherberechtigung wurde dauerhaft verweigert. Um diese Funktion weiterhin nutzen zu können, gehen Sie bitte zu den App-Einstellungen, um die Speicherberechtigung manuell zu aktivieren.', + 'permissionUtilNeed': 'Benötige ', + 'permissionUtilPermission': ' Berechtigung', + 'permissionUtilRestricted': ' Berechtigung eingeschränkt', + 'permissionUtilRestrictedMessage': + 'Diese Funktion ist auf dem aktuellen Gerät nicht verfügbar oder eingeschränkt, bitte überprüfen Sie die Geräteeinstellungen oder Systemeinschränkungen', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1127,15 +1367,7 @@ const Map deDE = { 'native.notification.music.pause': 'Pause', // 暂停 'native.notification.qqMusic.playing': 'Musik wird wiedergegeben', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Benötige ', - 'permissionUtilPermission': ' Berechtigung', - 'permissionUtilRestricted': ' Berechtigung eingeschränkt', - 'permissionUtilRestrictedMessage': - 'Diese Funktion ist auf dem aktuellen Gerät nicht verfügbar oder eingeschränkt, bitte überprüfen Sie die Geräteeinstellungen oder Systemeinschränkungen', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Neue Version gefunden', // 版本更新对话框标题 'remindLater': 'Später erinnern', // 稍后提醒按钮 'updateNow': 'Jetzt aktualisieren', // 立即更新按钮 @@ -1146,254 +1378,7 @@ const Map deDE = { 'updateErrorRetry': 'Fehler beim Update-Prozess aufgetreten, bitte versuchen Sie es später erneut', // 更新错误重试提示 - //国家列表 - "邮箱": "E-Mail", - "中国": "China", - "美国": "Vereinigte Staaten", - "加拿大": "Kanada", - "俄罗斯": "Russland", - "英国": "Vereinigtes Königreich", - "德国": "Deutschland", - "意大利": "Italien", - "法国": "Frankreich", - "西班牙": "Spanien", - "南非": "Südafrika", - "沙特阿拉伯": "Saudi-Arabien", - "土耳其": "Türkei", - "日本": "Japan", - "韩国": "Südkorea", - "新加坡": "Singapur", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "Indien", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippinen", - "印度尼西亚": "Indonesien", - "阿联酋": "Vereinigte Arabische Emirate", - "墨西哥": "Mexiko", - "巴西": "Brasilien", - "阿根廷": "Argentinien", - "澳大利亚": "Australien", - "新西兰": "Neuseeland", - "中国香港": "Hongkong, China", - "中国澳门": "Macau, China", - "中国台湾": "Taiwan, China", - "埃及": "Ägypten", - "希腊": "Griechenland", - "荷兰": "Niederlande", - "比利时": "Belgien", - "匈牙利": "Ungarn", - "罗马尼亚": "Rumänien", - "瑞士": "Schweiz", - "奥地利": "Österreich", - "丹麦": "Dänemark", - "瑞典": "Schweden", - "挪威": "Norwegen", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbien", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albanien", - "马耳他": "Malta", - "塞浦路斯": "Zypern", - "芬兰": "Finnland", - "保加利亚": "Bulgarien", - "立陶宛": "Litauen", - "拉脱维亚": "Lettland", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbien", - "克罗地亚": "Kroatien", - "斯洛文尼亚": "Slowenien", - "捷克": "Tschechische Republik", - "斯洛伐克": "Slowakei", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivien", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerien", - "突尼斯": "Tunesien", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Äthiopien", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tansania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesch", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordanien", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolei", - "柬埔寨": "Kambodscha", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Osttimor", - "斐济": "Fidschi", - "所罗门群岛": "Salomonen", - "刚果民主共和国": "Demokratische Republik Kongo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Malediven", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaika", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua-Neuguinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Bildübersetzung", - "textTranslation": "Textübersetzung", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Übersetzungsverlauf", - "enableRecording": "Aufnahme aktivieren", - "viewAudioFiles": "Audiodateien anzeigen", - "headsetUser": "Kopfhörer-Benutzer", - "phoneUser": "Telefon-Benutzer", - "selectSourceLanguage": "Quellsprache auswählen", - "selectTargetLanguage": "Zielsprache auswählen", - "me": "Ich", - "counterPart": "Gegenüber", - "bluetoothCallStateError": - "Bitte stellen Sie sicher, dass das Bluetooth-Headset mit dem Telefon verbunden ist und sich in einem Anrufzustand befindet", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Automatische Erkennung", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Spracherkennung fehlgeschlagen", - "translationFailed": "Übersetzung fehlgeschlagen", - "pleaseInputText": "Bitte Text eingeben", - "textTooLong": "Text zu lang, max. 5000 Zeichen", - - // 翻译历史页 - "noTranslationHistory": "Kein Übersetzungsverlauf", - "historyRecords": "Verlaufsaufzeichnungen", - "clearResults": "Ergebnisse löschen", - "clearHistory": "Verlauf löschen", - "clearHistoryConfirm": - "Sind Sie sicher, dass Sie den gesamten Übersetzungsverlauf löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "unknownLanguage": "Unbekannte Sprache", - "deleteSessionRecord": "Sitzungsaufzeichnung löschen", - "deleteSessionConfirm": - "Sind Sie sicher, dass Sie alle Übersetzungsaufzeichnungen für diese Sitzung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Bildquelle auswählen", - "imagePreview": "Bildvorschau", - "translationResult": "Übersetzungsergebnis", - "recognitionResult": "Erkennungsergebnis", - "translatedImagePreview": "Übersetzte Bildvorschau", - "translatedImageLoadFailed": "Laden des übersetzten Bildes fehlgeschlagen", - "pleaseSelectImage": "Bitte wählen Sie ein Bild aus", - "imageLoadFailed": "Bild laden fehlgeschlagen", - "imageQuality": "Bildqualität", - "maxSize": "Maximale Größe", - "close": "Schließen", - "setImageQuality": "Bildqualität einstellen", - "currentQuality": "Aktuelle Qualität: @value%", - "setMaxSize": "Maximale Größe einstellen", - "currentMaxSize": "Aktuell: @pxpx", - "waitingForAction": "Warte auf Aktion", - "pleaseSelectImageToStart": "Bitte wählen Sie ein Bild aus, um zu beginnen", - "chooseImage": "Bild auswählen", - "openingCamera": "Kamera öffnen...", - "openingPhotoAlbum": "Fotoalbum öffnen...", - "cancelled": "Abgebrochen", - "userCancelledSelection": "Benutzer hat die Auswahl abgebrochen", - "translatingImage": "Bild wird übersetzt", - "callingImageTranslateService": "Rufe Bildübersetzungsdienst auf...", - "savingRecord": "Speichere Datensatz", - "savingTranslationResult": "Speichere Übersetzungsergebnis...", - "translationCompleted": "Übersetzung abgeschlossen", - "allStepsCompleted": "Alle Schritte abgeschlossen", - "processingFailed": "Verarbeitung fehlgeschlagen", - "imageProcessingOrTranslationFailed": - "Bildverarbeitung oder Übersetzung fehlgeschlagen. Bitte erneut versuchen.\nFehler: {error}", - "imageTooLarge": "Bildgröße überschreitet 4MB-Limit", - "imageTooLargeHint": - "Bildgröße überschreitet 4MB. Qualität oder Abmessungen reduzieren und erneut versuchen", - "emptyTranslationResult": "Bildübersetzungs-API gab leeres Ergebnis zurück", - "imageTranslationFailedTryLater": - "Bildübersetzung fehlgeschlagen. Netzwerkproblem oder Ratenbegrenzung. Bitte später versuchen", - "imageTranslationApiException": - "Bildübersetzungs-API Ausnahme. Netzwerk prüfen und erneut versuchen", - "permissionRequired": "Berechtigung erforderlich", - "cameraPermissionRequired": - "Kameraberechtigung erforderlich, um Fotos aufzunehmen", - "photoAlbumPermissionRequired": - "Fotoalbum-Berechtigung erforderlich, um Bilder auszuwählen", - "translationDetails": "Übersetzungsdetails", - "originalImage": "Originalbild", - "sourceLanguage": "Quellsprache", - "targetLanguage": "Zielsprache", - "translationTime": "Übersetzungszeit", - "shareInDevelopment": "Teilen-Funktion in Entwicklung", - - // 翻译录音文件列表页 - "translateAudioFiles": "Audiodateien übersetzen", - "noAudioFiles": "Keine Audiodateien", - "calculating": "Berechnung läuft...", - "playing": "Wiedergabe läuft...", - "paused": "Pausiert", - "clickToPlay": "Zum Abspielen klicken", - "rename": "Umbenennen", - "smartTranscription": "Intelligente Transkription", - "renameAudioFile": "Audiodatei umbenennen", - "enterNewFileName": "Bitte geben Sie den neuen Dateinamen ein", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalaufzeichnung", - "recordSummary": "Aufzeichnungszusammenfassung", - "clickToGenerateSummary": - "Klicken Sie auf die Schaltfläche unten, um eine Sitzungszusammenfassung zu generieren", - "summaryContent": "Zusammenfassungsinhalt", - "copied": "Kopiert", - "summaryCopiledToClipboard": "Zusammenfassung in die Zwischenablage kopiert", - "extractSummary": "Zusammenfassung extrahieren", - "summaryGenerated": "Zusammenfassung generiert", - "generating": "Generierung läuft...", - "regenerate": "Neu generieren", - "summaryTimeoutMessage": - "Zusammenfassungsgenerierung-Anfrage ist abgelaufen, möglicherweise aufgrund von Netzwerkproblemen oder Server-Überlastung.", - "deleteTranslationRecord": "Übersetzungsaufzeichnung löschen", - "deleteTranslationConfirm": - "Sind Sie sicher, dass Sie diese Übersetzungsaufzeichnung löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", - "originalText": "Originaltext", - "translatedText": "Übersetzter Text", - "sessionSummary": "Sitzungszusammenfassung", - "cannotShare": "Kann nicht teilen", - "generateSummaryFirst": "Bitte generieren Sie zuerst eine Zusammenfassung", - "translationSessionRecord": "Übersetzungssitzungsaufzeichnung", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Gerätekopplung", "connectYourDeepSoundHeadset": "Verbinden Sie Ihr Voitrans-Headset", "bind": "Binden", @@ -1402,14 +1387,11 @@ const Map deDE = { "autoInputCode": "Code automatisch eingeben", "skipBinding": "Bindung überspringen", "rescan": "Erneut scannen", - "verifyingDevice": "Gerät wird verifiziert...", "confirmBinding": "Bindung bestätigen", "associatingDevice": "Gerät wird zugeordnet...", "goToBluetoothSettings": "Zu Bluetooth-Einstellungen gehen", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Bereit zum Koppeln", "preparingPairingEnvironment": "Kopplungsumgebung wird vorbereitet...", "connectDeepSoundViaSystemBluetooth": @@ -1419,8 +1401,6 @@ const Map deDE = { "waitingCompletePairing": "Bitte warten, Kopplung wird abgeschlossen...", "pairingSuccessRedirecting": "Kopplung erfolgreich! Weiterleitung zur Startseite...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Bitte stellen Sie sicher, dass das verbundene Gerät Voitrans ist", "deviceAlreadyBoundToOtherAccount": @@ -1434,19 +1414,12 @@ const Map deDE = { "Autorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode", "pairingFailedRetry": "Kopplung fehlgeschlagen, bitte versuchen Sie es erneut", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Bitte aktivieren Sie Bluetooth', 'deviceDisconnected': 'Gerät getrennt', 'readyToStartPairing': 'Bereit zum Starten der Kopplung', 'checkingEnvironment': 'Umgebung wird überprüft...', 'ensureHeadsetOnAndPairingMode': 'Bitte stellen Sie sicher, dass das Headset eingeschaltet und im Kopplungsmodus ist', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Sichere Verbindung wird hergestellt...', 'needManualBindingAuthCode': 'Manuelle Bindung des Autorisierungscodes erforderlich...', @@ -1472,22 +1445,32 @@ const Map deDE = { 'bleConnectionFailed': 'BLE-Verbindung fehlgeschlagen', 'deviceAuthorizationFailedCheckCode': 'Geräteautorisierung fehlgeschlagen, bitte überprüfen Sie den Autorisierungscode', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Manuelle Bluetooth-Aktivierung erforderlich', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Bitte folgen Sie diesen Schritten:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Bluetooth aktivieren: Einstellungen → Bluetooth → Einschalten', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Gerät verbinden: Finden Sie Ihr Gerät unter „Meine Geräte“ und tippen Sie zum Verbinden', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Zur App zurückkehren, um den Kopplungsvorgang fortzusetzen', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tipp: Sie können das Bluetooth-Symbol im Kontrollzentrum auch lange drücken, um schnell zu den Bluetooth-Einstellungen zu gelangen', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Verstanden', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Willkommensbonus", + "firstBindRewardDesc": "Sie haben Bindungsprämien erhalten.", + "vipLevelLabel": "VIP-Level:", + "expiryLabel": "Ablaufdatum:", + "notActivated": "Nicht aktiviert", + "aiChatCreditsLabel": "KI-Chat-Guthaben:", + "translationCreditsLabel": "Übersetzungsguthaben:", + "meetingCreditsLabel": "Meeting-Guthaben:", + "ok": "OK", - //用户反馈页 - "feedback": "Feedback", + // 用户反馈模块 + "feedback": 'Feedback', 'feedbackInfo': 'Feedback oder Vorschläge geben', 'feedbackDescription': 'Bitte beschreiben Sie Ihr Problem oder Ihren Vorschlag', @@ -1514,13 +1497,14 @@ const Map deDE = { "connectionFailed": "Verbindung fehlgeschlagen", "retryConnection": "Verbindung wiederholen", "ota_updateNow": "Jetzt aktualisieren", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Versioninformationen konnten nicht abgerufen werden. Bitte versuchen Sie es später erneut.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Geräteinformationen konnten nicht abgerufen werden. Bitte prüfen Sie die Verbindung und versuchen Sie es erneut.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Das Gerät konnte nicht erkannt werden. Bitte verbinden Sie es erneut und versuchen Sie es erneut.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Die Firmware-Version ist ungültig. Bitte verbinden Sie das Gerät erneut und versuchen Sie es erneut.", "keepConnectedDontClose": "Bitte halten Sie das Gerät verbunden, schließen Sie die App nicht", "doNotDisconnect": "Nicht trennen", @@ -1529,7 +1513,62 @@ const Map deDE = { "removeEarbudsEnsureBattery": "Entfernen Sie beide Ohrhörer und stellen Sie sicher, dass der Batteriestand über 20% liegt", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Neue Version @version gefunden', + 'otaConfirmUpdateNow': 'Jetzt aktualisieren?', + 'otaUpdate': 'Aktualisieren', + 'otaUpgradeSuccess': 'Upgrade erfolgreich', + 'otaUpgradeCompleteRepair': + 'Firmware-Upgrade abgeschlossen!\n\nDas Geraet muss neu gekoppelt werden. Zur Kopplungsseite wechseln?', + 'otaPairLater': 'Spaeter koppeln', + 'otaPairNow': 'Jetzt koppeln', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Fehler bei der BLE-Verbindungspruefung: @error', + 'otaBleNotConnected': 'BLE-Geraet nicht verbunden', + 'otaBleNeedConnection': + 'Firmware-Upgrade erfordert BLE-Verbindung\nBitte Geraet verbinden und erneut versuchen', + 'otaDeviceInfoUnavailableTitle': 'Geraeteinformationen nicht verfuegbar', + 'otaCannotGetDeviceInfo': + 'Geräteinformationen konnten nicht abgerufen werden\nBitte verbinden Sie das Gerät erneut oder versuchen Sie es später erneut', + 'otaBleCheckFailed': 'BLE-Verbindungspruefung fehlgeschlagen', + 'otaCannotGetDeviceInfoCheckConnection': + 'Geraeteinformationen nicht verfuegbar, bitte Verbindung pruefen', + 'otaCannotGetProductInfoWithName': + 'Produktinformationen nicht verfuegbar, Geraetename: @deviceName', + 'otaCannotGetBatteryInfo': 'Keine gueltigen Batterieinformationen verfuegbar', + 'otaLowBattery': 'Niedriger Akkustand', + 'otaSingleBatteryLow': + 'Akku zu schwach fuer Firmware-Upgrade\nAnforderung: Akku ueber 20%\nAktuell: @ear @battery%\nBitte laden und erneut versuchen', + 'otaDoubleBatteryLow': + 'Akku zu schwach fuer Firmware-Upgrade\nAnforderung: Beide Ohrhoerer ueber 20%\nAktuell: Links @left%, Rechts @right%\nBitte laden und erneut versuchen', + 'otaBatteryCheckFailed': 'Batteriepruefung fehlgeschlagen', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Dieses Update enthaelt Leistungsoptimierungen und Fehlerbehebungen.', + 'otaGetLatestVersionFailed': + 'Neueste Versionsinformationen konnten nicht abgerufen werden', + 'otaGetVersionInfoFailed': + 'Versionsinformationen konnten nicht abgerufen werden', + 'otaCheckingDeviceStatus': 'Geraetestatus wird geprueft...', + 'otaDownloadFailedCheckNetwork': + 'Download fehlgeschlagen, bitte Netzwerkverbindung pruefen', + 'otaDownloadFailed': 'Download fehlgeschlagen', + 'otaPreparingConnection': 'Geraeteverbindung wird vorbereitet...', + 'otaConnectingDevice': 'Verbindung zum Geraet wird hergestellt...', + 'otaUpgradeStarted': 'OTA-Upgrade gestartet...', + 'otaUpgradeProgressWithPercent': 'Upgrade-Fortschritt: @percent%', + 'otaUpgradeSuccessComplete': 'Upgrade erfolgreich abgeschlossen', + 'otaUpgradeFailedWithCode': 'Upgrade fehlgeschlagen, Fehlercode: @code', + 'otaUpgradeFailedTitle': 'Upgrade fehlgeschlagen', + 'otaUpgradeFailedDesc': + 'Bitte Geraeteverbindung oder Update-Paket pruefen, Fehlercode: @code', + 'otaDeviceDisconnected': 'Geraet getrennt', + 'otaDeviceConnected': 'Geraet verbunden', + + // 音乐模块 "noMusic": "Keine Musik", // 暂无音乐 "noPlayingMusic": "Keine Musik wird abgespielt", // 暂无播放音乐 "unknownSong": "Unbekanntes Lied", // 未知歌曲 @@ -1563,36 +1602,136 @@ const Map deDE = { "克罗地亚语": "Kroatisch", "加泰隆语": "Katalanisch", "阿拉伯语": "Arabisch", - "泰语": "Thai", + "泰语": 'Thailändisch', "越南语": "Vietnamesisch", "印尼语": "Indonesisch", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Türkisch", "马来语": "Malaiisch", "孟加拉语": "Bengalisch", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", + "泰米尔语": 'Tamil', + "泰卢固语": 'Telugu', + "马拉提语": 'Marathi', + "乌尔都语": 'Urdu', "波斯语": "Persisch", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "斯瓦希里语": 'Suaheli', - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-Mail", + "中国": 'China', + "美国": "Vereinigte Staaten", + "加拿大": "Kanada", + "俄罗斯": "Russland", + "英国": "Vereinigtes Königreich", + "德国": "Deutschland", + "意大利": "Italien", + "法国": "Frankreich", + "西班牙": "Spanien", + "南非": "Südafrika", + "沙特阿拉伯": "Saudi-Arabien", + "土耳其": "Türkei", + "日本": 'Japan', + "韩国": "Südkorea", + "新加坡": "Singapur", + "马来西亚": 'Malaysia', + "泰国": 'Thailand', + "越南": 'Vietnam', + "印度": "Indien", + "巴基斯坦": 'Pakistan', + "菲律宾": "Philippinen", + "印度尼西亚": "Indonesien", + "阿联酋": "Vereinigte Arabische Emirate", + "墨西哥": "Mexiko", + "巴西": "Brasilien", + "阿根廷": "Argentinien", + "澳大利亚": "Australien", + "新西兰": "Neuseeland", + "中国香港": "Hongkong, China", + "中国澳门": 'Macau, China', + "中国台湾": 'Taiwan, China', + "埃及": "Ägypten", + "希腊": "Griechenland", + "荷兰": "Niederlande", + "比利时": "Belgien", + "匈牙利": "Ungarn", + "罗马尼亚": "Rumänien", + "瑞士": "Schweiz", + "奥地利": "Österreich", + "丹麦": "Dänemark", + "瑞典": "Schweden", + "挪威": "Norwegen", + "波兰": "Polen", + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": "Kolumbien", + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": "Luxemburg", + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": "Albanien", + "马耳他": 'Malta', + "塞浦路斯": "Zypern", + "芬兰": "Finnland", + "保加利亚": "Bulgarien", + "立陶宛": "Litauen", + "拉脱维亚": "Lettland", + "爱沙尼亚": "Estland", + "乌克兰": 'Ukraine', + "塞尔维亚": "Serbien", + "克罗地亚": "Kroatien", + "斯洛文尼亚": "Slowenien", + "捷克": "Tschechische Republik", + "斯洛伐克": "Slowakei", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": "Bolivien", + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Marokko", + "阿尔及利亚": "Algerien", + "突尼斯": "Tunesien", + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Äthiopien", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tansania", + "乌干达": 'Uganda', + "孟加拉国": "Bangladesch", + "以色列": 'Israel', + "黎巴嫩": "Libanon", + "约旦": "Jordanien", + "伊拉克": "Irak", + "科威特": 'Kuwait', + "巴林": 'Bahrain', + "卡塔尔": "Katar", + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": "Mongolei", + "柬埔寨": "Kambodscha", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Osttimor", + "斐济": "Fidschi", + "所罗门群岛": "Salomonen", + "刚果民主共和国": "Demokratische Republik Kongo", + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": "Malediven", + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": "Jamaika", + "巴哈马": 'Bahamas', + "巴布亚新几内亚": "Papua-Neuguinea", + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/el_gr.dart b/lib/core/translations/language/el_gr.dart index 0c94da52a..1eb06f635 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': 'Συνέχεια', @@ -18,6 +19,11 @@ const Map elGR = { "unknownError": "Άγνωστο σφάλμα", "asrConnectionFailed": "Η σύνδεση με την υπηρεσία αναγνώρισης ομιλίας απέτυχε. Ελέγξτε το δίκτυο ή δοκιμάστε ξανά αργότερα.", + "justNow": "Μόλις τώρα", + "minutesAgo": "Πριν @minutes λεπτά", + "yesterday": "Χθες", + "daysAgo": "Πριν @days ημέρες", + "hoursAgo": "Πριν @hours ώρες", // 启动页 "slogan": "Συνδέοντας τον κόσμο, πέρα από τον ήχο", @@ -28,7 +34,7 @@ const Map elGR = { "explore": "Εξερεύνηση", "settings": "Ρυθμίσεις", - // 语言 + // 语言列表 "followingSystem": "Ακολουθώντας το σύστημα", "chinese": "Κινέζικα", "english": "Αγγλικά", @@ -72,7 +78,7 @@ const Map elGR = { "arabic": "Αραβικά", "persian": "Φαρασικά", - // 登录页 + // 登录模块 "welcome": "Καλώς ήρθατε", "loginTips": "Συνδεθείτε ή εγγραφείτε με αριθμό τηλεφώνου ή email", "accountNumber": "Αριθμός τηλεφώνου ή email", @@ -100,13 +106,9 @@ const Map elGR = { "resendVerificationCode": "Επαναποστολή κωδικού επαλήθευσης", "login": "Σύνδεση", "usePasswordLogin": "Χρήση σύνδεσης με κωδικό", - - // 隐私政策弹窗 "loginDeclaration": "Δήλωση Voitrans", // Voitrans 声明 "welcomeToThisApp": "Καλώς ήρθατε στο Voitrans, διαβάστε προσεκτικά", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Κάνοντας κλικ στο 'Συμφωνώ και εισέρχομαι' δηλώνετε ότι έχετε διαβάσει πλήρως και συμφωνείτε με τις παραπάνω συμφωνίες. Κάνοντας κλικ στο 'Δεν συμφωνώ' θα κλείσει η εφαρμογή.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Δεν συμφωνώ", // 不同意 @@ -166,7 +168,30 @@ const Map elGR = { 'right': 'Δεξιά', 'checkConnectionStatusFailed': 'Αποτυχία ελέγχου κατάστασης σύνδεσης', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Αποτυχία αρχικοποίησης Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Απαιτούνται δικαιώματα Bluetooth και τοποθεσίας για σάρωση συσκευών', + 'permissionRequestFailedWithError': 'Αποτυχία αιτήματος δικαιώματος: @error', + 'needPermission': 'Απαιτείται δικαίωμα', + 'blePermissionDialogContent': + 'Αυτή η εφαρμογή χρειάζεται δικαιώματα Bluetooth και τοποθεσίας για σάρωση συσκευών. Ενεργοποιήστε τα στις Ρυθμίσεις.', + 'needEnableBluetooth': 'Ενεργοποίηση Bluetooth', + 'enableBluetoothDialogContent': + 'Ενεργοποιήστε το Bluetooth για σάρωση και σύνδεση συσκευών.', + 'bleScanFailedWithError': 'Αποτυχία σάρωσης: @error', + 'bleConnectionSuccess': 'Επιτυχής σύνδεση', + 'bleConnectedToDevice': 'Συνδέθηκε με @device', + 'bleConnectionFailedWithError': 'Αποτυχία σύνδεσης: @error', + 'bleDisconnected': 'Αποσυνδέθηκε', + 'bleDeviceDisconnected': 'Η συσκευή αποσυνδέθηκε', + 'bleDisconnectFailedWithError': 'Αποτυχία αποσύνδεσης: @error', + 'signalStrong': 'Δυνατό', + 'signalMedium': 'Μέτριο', + 'signalWeak': 'Αδύναμο', + 'signalVeryWeak': 'Πολύ αδύναμο', + + // 发现页 "searchAi": "Αναζήτηση λειτουργιών AI...", "exploreSlogan": "Έξυπνα ακουστικά, απεριόριστες δυνατότητες", "exploreSlogan1": "Έξυπνος σύντροφος, απεριόριστες δυνατότητες", @@ -190,8 +215,9 @@ const Map elGR = { "usageStats": "Στατιστικά χρήσης", "usageStatsInfo": "Δείτε τα στατιστικά χρήσης της εφαρμογής", "scene": "Σενάρια", + // 用量统计模块 - "aiChat": "AI Chat", + "aiChat": "Συνομιλία AI", "translationStats": "Στατιστικά Μετάφρασης", "meetingStats": "Στατιστικά Συνάντησης", "today": "Σήμερα", @@ -210,7 +236,6 @@ const Map elGR = { "translationApi": "API Μετάφρασης", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", "dataVolumeStats": "Στατιστικά όγκου δεδομένων", "sourceTextCharacters": "Χαρακτήρες πηγαίου κειμένου", "ttsTextCharacters": "Χαρακτήρες κειμένου TTS", @@ -227,7 +252,6 @@ const Map elGR = { "totalAudioDuration": "Συνολική διάρκεια ήχου", "audioFileSize": "Μέγεθος αρχείου ήχου", "transcriptBytes": "Bytes απομαγνητοφώνησης", - // 通知文案 "loadFailed": "Αποτυχία φόρτωσης", "statsLoadFailedTryLater": "Αποτυχία φόρτωσης στατιστικών. Δοκιμάστε ξανά αργότερα.", @@ -236,93 +260,84 @@ const Map elGR = { "exportFeature": "Λειτουργία εξαγωγής", "exportInDevelopment": "Η εξαγωγή δεδομένων είναι υπό ανάπτυξη", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Διαθέσιμα πακέτα', 'remainingQuota': 'Υπόλοιπο όριο', 'totalQuota': 'Συνολικό όριο', 'remaining': 'Υπόλοιπο', 'featureDescription': 'Περιγραφή λειτουργίας', - // AI 功能卡片 + 'paymentSuccess': 'Πληρωμή επιτυχής', + 'paymentFailed': 'Αποτυχία πληρωμής', + 'gotIt': 'Κατάλαβα', + 'paymentFailedTryAgain': 'Η πληρωμή απέτυχε. Παρακαλώ δοκιμάστε ξανά.', + 'selectPaymentMethod': 'Επιλέξτε τρόπο πληρωμής', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας WeChat Pay', + 'alipayOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Alipay', + 'appleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Apple', + 'googleOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας Google', + 'paypalOrderCreateFailed': 'Αποτυχία δημιουργίας παραγγελίας PayPal', + 'paymentException': 'Εξαίρεση πληρωμής', + 'paymentLaunchFailed': 'Αποτυχία εκκίνησης πληρωμής', + 'paymentExceptionWithError': 'Εξαίρεση πληρωμής: @error', + 'paymentProcessingCheckLater': + 'Η παραγγελία σας επεξεργάζεται. Παρακαλώ ελέγξτε αργότερα.', + 'paymentResultQueryException': + 'Αποτυχία αναζήτησης αποτελέσματος πληρωμής: @error', + 'orderConfirmedQuotaRefreshed': + 'Η παραγγελία επιβεβαιώθηκε. Το όριό σας ανανεώθηκε.', + 'paymentCompletedConfirming': 'Η πληρωμή ολοκληρώθηκε. Επιβεβαίωση…', + 'paymentCancelled': 'Η πληρωμή ακυρώθηκε', + 'paypalOpenedCompleteInBrowser': + 'Το PayPal άνοιξε. Παρακαλώ ολοκληρώστε την πληρωμή στο πρόγραμμα περιήγησής σας.', + 'paypalOpenFailed': 'Αδυναμία ανοίγματος σελίδας πληρωμής PayPal', + 'paymentTestTitle': 'Δοκιμή Πληρωμής', + 'paymentTestOrderInfo': 'Πληροφορίες Δοκιμαστικής Παραγγελίας', + 'paymentTestProductId': 'Αναγνωριστικό Προϊόντος', + 'paymentTestProductDescription': 'Περιγραφή προϊόντος', + 'paymentTestWechatDescription': 'Δοκιμή πληρωμής WeChat Pay', + 'paymentTestAlipayDescription': 'Δοκιμή πληρωμής Alipay', + 'paymentTestAmount': 'Ποσό', + 'paymentTestSelectAmount': 'Επιλέξτε ποσό δοκιμής', + 'paying': 'Πληρωμή...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Κατάσταση πληρωμής', + 'errorInfoWithMessage': 'Σφάλμα: @message', + 'retest': 'Επανέλεγχος', + 'paymentTestInstructionsTitle': 'Οδηγίες', + 'paymentTestInstructionsContent': + '1. Επιλέξτε ένα ποσό δοκιμής (προτεινόμενο: ¥0,01)\n2. Κάντε κλικ στο κουμπί πληρωμής για να ξεκινήσετε\n3. Ολοκληρώστε την πληρωμή στην εφαρμογή πληρωμής\n4. Επιστρέψτε για να ελέγξετε το αποτέλεσμα', + 'startingWechatPayment': 'Εκκίνηση WeChat Pay...', + 'startingAlipayPayment': 'Εκκίνηση Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay επιτυχής!', + 'wechatPaymentFailed': 'Αποτυχία WeChat Pay', + 'wechatPaymentLaunchFailed': 'Αποτυχία εκκίνησης WeChat Pay', + 'cannotLaunchWechatPayment': 'Αδυναμία εκκίνησης WeChat Pay', + 'wechatPaymentException': 'Εξαίρεση WeChat Pay', + 'wechatPaymentTestCompleted': 'Η δοκιμή WeChat Pay ολοκληρώθηκε', + 'alipayPaymentSuccess': 'Alipay επιτυχής!', + 'alipayPaymentFailed': 'Αποτυχία Alipay', + 'alipayPaymentLaunchFailed': 'Αποτυχία εκκίνησης Alipay', + 'cannotLaunchAlipayPayment': 'Αδυναμία εκκίνησης Alipay', + 'alipayPaymentException': 'Εξαίρεση Alipay', + "insufficientIntegral": "Ανεπαρκείς πόντοι", + "insufficientBalanceDesc": + 'Ανεπαρκές υπόλοιπο, μεταβείτε στη σελίδα φόρτισης για ανανέωση.', + "recharge": 'Μετάβαση στην ανανέωση', + "aiMemberExpiredDesc": + 'Η συνδρομή AI έληξε, μεταβείτε στη σελίδα ανανέωσης συνδρομής.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Μουσική & Προτάσεις', 'navigationAndRoutes': 'Πλοήγηση & Διαδρομές', 'nearbySearch': 'Αναζήτηση κοντά', 'newsInformation': 'Ειδήσεις', 'communicationAssistant': 'Βοηθός επικοινωνίας', - // 翻译功能卡片 - 'realtimeTranscription': 'Απομαγνητοφώνηση σε πραγματικό χρόνο', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Γλωσσάρι σεναρίων', - 'subtitleDisplay': 'Υπότιτλοι', - // 会议功能卡片 - 'meetingRecording': 'Εγγραφή συνάντησης', - 'transcriptionAndSummary': 'Απομαγνητοφώνηση & Περίληψη', - 'keywordSearch': 'Αναζήτηση λέξεων-κλειδιών', - 'collaborationSharing': 'Συνεργασία & Κοινή χρήση', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': - 'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'ai_002_desc': - 'Περιλαμβάνει 500 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'ai_003_desc': - 'Περιλαμβάνει 1000 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', - 'meet_001_desc': 'Περιλαμβάνει 100 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'meet_002_desc': 'Περιλαμβάνει 500 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'meet_003_desc': 'Περιλαμβάνει 1000 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', - 'trans_001_desc': 'Περιλαμβάνει 100 μεταφράσεις (φωνή/κείμενο).', - 'trans_002_desc': 'Περιλαμβάνει 500 μεταφράσεις (φωνή/κείμενο).', - 'trans_003_desc': 'Περιλαμβάνει 1000 μεταφράσεις (φωνή/κείμενο).', - -// 商品页通用页脚 - 'appNameProvider': 'Εφαρμογή: VoiTrans · Παρέχεται από: VoiTrans', - 'iapCustomerServiceQQLabel': 'Εξυπηρέτηση πελατών IAP QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Εγγραφή ήχου, απομαγνητοφώνηση, αναζήτηση λέξεων-κλειδιών και αυτόματη περίληψη για ενίσχυση της αποδοτικότητας των συναντήσεων.', - 'meetingHeaderDesc2': - 'Κατάλληλο για επαγγελματικές συναντήσεις, σημειώσεις μαθημάτων και πρακτικά συνεντεύξεων.', - 'meetingAutoRecording': 'Αυτόματη εγγραφή και τμηματοποίηση', - 'meetingSpeakerTagging': 'Σήμανση ομιλητή', - 'meetingLongAudioTranscription': 'Απομαγνητοφώνηση μεγάλου ήχου', - 'meetingKeyPointSummary': 'Εξαγωγή βασικών σημείων', - 'meetingTopicNameSearch': 'Αναζήτηση με θέμα/όνομα', - 'meetingTimelineJump': 'Άλμα στη χρονογραμμή', - 'meetingExportSummary': 'Εξαγωγή πρακτικών', - 'meetingMultiPlatformShare': 'Κοινή χρήση σε πολλές πλατφόρμες', - 'meetingDisclaimer': - 'Χρήση σε ήσυχο περιβάλλον. Η απόδοση εξαρτάται από το μικρόφωνο και το δίκτυο.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Ταυτόχρονη διερμηνεία σε πραγματικό χρόνο και μετάφραση κειμένου με φωνή χαμηλής καθυστέρησης.', - 'transHeaderDesc2': - 'Κατάλληλο για ταξίδια, επιχειρήσεις, ομιλίες και διδασκαλία.', - 'translateZhEn': 'Μετάφραση Κινεζικά-Αγγλικά', - 'lowLatencyVoiceBroadcast': 'Φωνητική μετάδοση χαμηλής καθυστέρησης', - 'multiLangTextTranslation': 'Πολυγλωσσική μετάφραση κειμένου', - 'termOptimizationContextPreserve': - 'Βελτιστοποίηση ορολογίας και διατήρηση πλαισίου', - 'lexiconTourBusinessLife': 'Γλωσσάρια Ταξιδιού/Επιχειρήσεων/Ζωής', - 'personalVocabularyMemory': 'Προσωπική μνήμη λεξιλογίου', - 'conversationSubtitleLargeText': - 'Υπότιτλοι συνομιλίας / Λειτουργία μεγάλου κειμένου', - 'colorHighContrast': 'Υψηλή αντίθεση χρωμάτων', - 'transDisclaimer': - 'Η απόδοση μετάφρασης εξαρτάται από το μικρόφωνο, την καθυστέρηση δικτύου και τον θόρυβο περιβάλλοντος.', - - // AI 商品页描述 'aiHeaderDesc1': 'Μεγαλύτερο όριο συνομιλίας, περισσότερες κλήσεις εργαλείων, εκτεταμένο μήκος πλαισίου.', 'aiHeaderDesc2': @@ -350,7 +365,48 @@ const Map elGR = { 'aiDisclaimer': 'Οι λειτουργίες εξαρτώνται από τα δικαιώματα συσκευής, τη διαθεσιμότητα υπηρεσίας και τις συνθήκες δικτύου.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Απομαγνητοφώνηση σε πραγματικό χρόνο', + 'sceneLexicon': 'Γλωσσάρι σεναρίων', + 'subtitleDisplay': 'Υπότιτλοι', + 'transHeaderDesc1': + 'Ταυτόχρονη διερμηνεία σε πραγματικό χρόνο και μετάφραση κειμένου με φωνή χαμηλής καθυστέρησης.', + 'transHeaderDesc2': + 'Κατάλληλο για ταξίδια, επιχειρήσεις, ομιλίες και διδασκαλία.', + 'translateZhEn': 'Μετάφραση Κινεζικά-Αγγλικά', + 'lowLatencyVoiceBroadcast': 'Φωνητική μετάδοση χαμηλής καθυστέρησης', + 'multiLangTextTranslation': 'Πολυγλωσσική μετάφραση κειμένου', + 'termOptimizationContextPreserve': + 'Βελτιστοποίηση ορολογίας και διατήρηση πλαισίου', + 'lexiconTourBusinessLife': 'Γλωσσάρια Ταξιδιού/Επιχειρήσεων/Ζωής', + 'personalVocabularyMemory': 'Προσωπική μνήμη λεξιλογίου', + 'conversationSubtitleLargeText': + 'Υπότιτλοι συνομιλίας / Λειτουργία μεγάλου κειμένου', + 'colorHighContrast': 'Υψηλή αντίθεση χρωμάτων', + 'transDisclaimer': + 'Η απόδοση μετάφρασης εξαρτάται από το μικρόφωνο, την καθυστέρηση δικτύου και τον θόρυβο περιβάλλοντος.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Εγγραφή συνάντησης', + 'transcriptionAndSummary': 'Απομαγνητοφώνηση & Περίληψη', + 'keywordSearch': 'Αναζήτηση λέξεων-κλειδιών', + 'collaborationSharing': 'Συνεργασία & Κοινή χρήση', + 'meetingHeaderDesc1': + 'Εγγραφή ήχου, απομαγνητοφώνηση, αναζήτηση λέξεων-κλειδιών και αυτόματη περίληψη για ενίσχυση της αποδοτικότητας των συναντήσεων.', + 'meetingHeaderDesc2': + 'Κατάλληλο για επαγγελματικές συναντήσεις, σημειώσεις μαθημάτων και πρακτικά συνεντεύξεων.', + 'meetingAutoRecording': 'Αυτόματη εγγραφή και τμηματοποίηση', + 'meetingSpeakerTagging': 'Σήμανση ομιλητή', + 'meetingLongAudioTranscription': 'Απομαγνητοφώνηση μεγάλου ήχου', + 'meetingKeyPointSummary': 'Εξαγωγή βασικών σημείων', + 'meetingTopicNameSearch': 'Αναζήτηση με θέμα/όνομα', + 'meetingTimelineJump': 'Άλμα στη χρονογραμμή', + 'meetingExportSummary': 'Εξαγωγή πρακτικών', + 'meetingMultiPlatformShare': 'Κοινή χρήση σε πολλές πλατφόρμες', + 'meetingDisclaimer': + 'Χρήση σε ήσυχο περιβάλλον. Η απόδοση εξαρτάται από το μικρόφωνο και το δίκτυο.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Επισκόπηση προνομίων', 'higherQuota': 'Υψηλότερο όριο χρήσης', 'lowerUnitPrice': 'Χαμηλότερη τιμή μονάδας', @@ -366,7 +422,35 @@ const Map elGR = { 'vipDisclaimer': 'Τα πραγματικά προνόμια εξαρτώνται από τις λεπτομέρειες του πακέτου και μπορεί να αλλάξουν με τις εκδόσεις.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Βασικό 100', + 'ai_002_name': 'AI Βασικό 500', + 'ai_003_name': 'AI Βασικό 1000', + 'meet_001_name': 'Συνάντηση Βασικό 100', + 'meet_002_name': 'Συνάντηση Βασικό 500', + 'meet_003_name': 'Συνάντηση Βασικό 1000', + 'trans_001_name': 'Μετάφραση Basic 100', + 'trans_002_name': 'Μετάφραση Basic 500', + 'trans_003_name': 'Μετάφραση Basic 1000', + 'ai_001_desc': + 'Περιλαμβάνει 100 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'ai_002_desc': + 'Περιλαμβάνει 500 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'ai_003_desc': + 'Περιλαμβάνει 1000 χρήσεις. Πρόσβαση σε βασικές λειτουργίες AI.', + 'meet_001_desc': 'Περιλαμβάνει 100 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'meet_002_desc': 'Περιλαμβάνει 500 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'meet_003_desc': 'Περιλαμβάνει 1000 εγγραφές/απομαγνητοφωνήσεις συναντήσεων.', + 'trans_001_desc': 'Περιλαμβάνει 100 μεταφράσεις (φωνή/κείμενο).', + 'trans_002_desc': 'Περιλαμβάνει 500 μεταφράσεις (φωνή/κείμενο).', + 'trans_003_desc': 'Περιλαμβάνει 1000 μεταφράσεις (φωνή/κείμενο).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Εφαρμογή: VoiTrans · Παρέχεται από: VoiTrans', + 'iapCustomerServiceQQLabel': 'Εξυπηρέτηση πελατών IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Παράλειψη", 'next': 'Επόμενο', 'sayLilyHint': 'Πείτε "Lily Lily" στο μικρόφωνο', @@ -378,7 +462,6 @@ const Map elGR = { 'guideAwakenSuccess': 'Τέλεια! Η Lily είναι ξύπνια - ζητήστε της βοήθεια.', 'confirmInput': 'Επιβεβαίωση εισόδου', 'guideClickSendPrefix': 'Πατήστε αποστολή, ', - // AI 引导步骤 'guideWeatherStart': 'Πείτε στη Lily: "Τι καιρό κάνει σήμερα;"', 'guideWeatherInput': 'Τι καιρό κάνει σήμερα;', 'guideWeatherSend': 'Η Lily θα αναφέρει τον καιρό σε πραγματικό χρόνο', @@ -407,7 +490,7 @@ const Map elGR = { 'guideSmsSend': 'Η Lily θα στείλει το μήνυμα', 'guideSmsEnd': 'Το μήνυμα στάλθηκε - ο φωνητικός έλεγχος είναι βολικός', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Έναρξη συνάντησης", 'edit': 'Επεξεργασία', 'delete': 'Διαγραφή', @@ -419,8 +502,6 @@ const Map elGR = { 'recordingDetails': 'Λεπτομέρειες εγγραφής', 'aiSummary': 'Περίληψη AI', 'meetingTranscript': 'Απομαγνητοφώνηση συνάντησης', - - // Meeting模块 - 导航和基础功能 'files': 'Αρχεία', 'mine': 'Δικά μου', 'connect': 'Σύνδεση', @@ -458,21 +539,29 @@ const Map elGR = { 'meetingRecordExitMessage': 'Επιλέξτε τι θα κάνετε πριν φύγετε', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Τερματισμός και αποθήκευση', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Τερματισμός χωρίς αποθήκευση', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Συνέχιση εγγραφής στο παρασκήνιο', // 后台继续录音 - 'meetingRecordStopTimeout': 'Έληξε το χρονικό όριο διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Αποτυχία διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Αποτυχία αποθήκευσης της εγγραφής. Δοκιμάστε ξανά.', // 保存录音失败,请重试 - 'meetingRecordRecordingNotificationTitle': 'Η εγγραφή είναι σε εξέλιξη', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Γίνεται εγγραφή στο παρασκήνιο. Πατήστε για επιστροφή στην εφαρμογή.', // 正在后台录音,点击返回应用 + 'meetingRecordContinueInBackground': + 'Συνέχιση εγγραφής στο παρασκήνιο', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Έληξε το χρονικό όριο διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Αποτυχία διακοπής της εγγραφής. Δοκιμάστε ξανά.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Αποτυχία αποθήκευσης της εγγραφής. Δοκιμάστε ξανά.', // 保存录音失败,请重试 + 'meetingRecordRecordingNotificationTitle': + 'Η εγγραφή είναι σε εξέλιξη', // 录音进行中 + 'meetingRecordRecordingNotificationBody': + 'Γίνεται εγγραφή στο παρασκήνιο. Πατήστε για επιστροφή στην εφαρμογή.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Εμφάνιση πάνω από άλλες εφαρμογές', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Για να εμφανίζουμε τα αποτελέσματα μετάφρασης κατά τη διάρκεια κλήσεων ή μετάφρασης ήχου/βίντεο, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές. Έτσι θα βλέπετε μεταφράσεις σε πραγματικό χρόνο ενώ χρησιμοποιείτε άλλες εφαρμογές.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Για να εμφανίζουμε την αιωρούμενη μπάρα εγγραφής (χρονομετρητής/παύση/συνέχιση) κατά την εγγραφή, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Δεν ήταν δυνατή η αυτόματη μετάβαση στις ρυθμίσεις συστήματος. Ανοίξτε τις Ρυθμίσεις και ενεργοποιήστε χειροκίνητα την άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'overlayPermissionTranslationDesc': + 'Για να εμφανίζουμε τα αποτελέσματα μετάφρασης κατά τη διάρκεια κλήσεων ή μετάφρασης ήχου/βίντεο, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές. Έτσι θα βλέπετε μεταφράσεις σε πραγματικό χρόνο ενώ χρησιμοποιείτε άλλες εφαρμογές.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Για να εμφανίζουμε την αιωρούμενη μπάρα εγγραφής (χρονομετρητής/παύση/συνέχιση) κατά την εγγραφή, χρειαζόμαστε άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Δεν ήταν δυνατή η αυτόματη μετάβαση στις ρυθμίσεις συστήματος. Ανοίξτε τις Ρυθμίσεις και ενεργοποιήστε χειροκίνητα την άδεια εμφάνισης πάνω από άλλες εφαρμογές.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 'transcribing': 'Απομαγνητοφώνηση...', 'summarizing': 'Δημιουργία περίληψης...', 'analyzing': 'Ανάλυση...', 'summaryComplete': 'Περίληψη ολοκληρώθηκε', - //'generating': '正在生成...', 'generate': 'Δημιουργία', 'overview': 'Επισκόπηση', 'transcription': 'Απομαγνητοφώνηση', @@ -481,6 +570,100 @@ const Map elGR = { 'editSpeaker': 'Επεξεργασία', 'nameSpeaker': 'Ονομασία ομιλητή', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Επανασύνοψη', + 'dateAndTime': 'Ημερομηνία & Ώρα', + 'location': 'Τοποθεσία', + 'attendees': 'Παρευρισκόμενοι', + 'inputLocation': 'Εισαγωγή τοποθεσίας', + 'inputAttendees': 'Εισαγωγή παρευρισκομένων', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης', + 'useThisTemplate': 'Χρήση αυτού του προτύπου', + 'lastUsed': 'Τελευταία χρήση', + 'create': 'Δημιουργία', + 'templateDetails': 'Λεπτομέρειες Προτύπου', + 'tag': 'Ετικέτα', + 'description': 'Περιγραφή', + 'template': 'Πρότυπο', + 'deleteTemplate': 'Διαγραφή Προτύπου', + 'deleteTemplateConfirm': + 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το πρότυπο;', + 'editTemplate': 'Επεξεργασία Προτύπου', + 'createTemplate': 'Δημιουργία Προτύπου', + 'name': 'Όνομα', + 'templateContentHint': + 'Παρακαλώ εισάγετε περιεχόμενο προτύπου! Συμβουλή: Κάντε κλικ στο κουμπί AI παραπάνω για γρήγορη δημιουργία περιεχομένου προτύπου βάσει του ονόματος και της περιγραφής που εισάγατε', + 'inputNameHint': 'Παρακαλώ εισάγετε όνομα', + 'inputDescHint': 'Παρακαλώ εισάγετε περιγραφή', + 'custom': 'Προσαρμοσμένο', + 'pleaseEnter': 'Παρακαλώ εισάγετε', + 'viewAll': 'Προβολή όλων', + 'recordingLanguage': 'Γλώσσα εγγραφής', + 'chineseSimplified': 'Κινέζικα (Απλοποιημένα)', + 'meetingGenerateNow': 'Δημιουργία τώρα', + 'keyEventsAnalyzed': 'Αναλύθηκαν {count} βασικά γεγονότα.', + 'aiAnalysisDesc': + 'Η ανάλυση AI εντοπίζει βασικά γεγονότα στις εγγραφές, επιτρέποντάς σας να επιλέξετε σημαντικά γεγονότα για δημιουργία AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Εισαγωγή...', + 'batchImporting': 'Μαζική εισαγωγή...', + 'importingLocalRecordings': 'Εισαγωγή τοπικών εγγραφών...', + 'importFailed': 'Αποτυχία εισαγωγής αρχείου: {filePath}, σφάλμα: {error}', + 'importSuccess': 'Επιτυχής εισαγωγή {count} τοπικών εγγραφών', + 'importError': 'Αποτυχία εισαγωγής: {error}', + 'pleaseSelectAudioFile': 'Παρακαλώ επιλέξτε αρχείο ήχου', + 'shareAudio': 'Κοινοποίηση ήχου συνάντησης', + 'shareComplete': 'Η κοινοποίηση ολοκληρώθηκε!', + 'shareFailed': 'Αποτυχία κοινοποίησης: {error}', + 'fileProcessingFailed': + 'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Αποθήκευση Νοητικού Χάρτη', + 'shareMindMap': 'Κοινοποίηση χάρτη μυαλού', + 'shareSuccess': 'Επιτυχής κοινοποίηση', + + // Meeting模块 - AI问答 + 'askAI': 'Ρωτήστε το AI ...', + 'askAIPrompt': 'Πώς μπορώ να σας βοηθήσω σήμερα;', + 'continueAsk': 'Συνεχίστε να ρωτάτε', + 'todoList': 'Λίστα εργασιών', + 'extractConclusion': 'Εξαγωγή συμπεράσματος', + 'generateKeyIndicators': 'Δημιουργία βασικών δεικτών', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Κοινοποίηση συνδέσμου', + 'copyTranscript': 'Αντιγραφή απομαγνητοφώνησης', + 'copySummary': 'Αντιγραφή περίληψης', + 'exportAudio': 'Εξαγωγή ήχου', + 'exportTranscript': 'Εξαγωγή απομαγνητοφώνησης', + 'shareMeetingAudio': 'Κοινοποίηση ήχου συνάντησης', + 'exportSummary': 'Εξαγωγή περίληψης', + 'exportAs': 'Εξαγωγή ως', + 'exportingPDF': 'Εξαγωγή PDF...', + 'export': 'Εξαγωγή', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή', + 'summaryWillBeUpdatedAutomatically': + 'Η σύνοψη θα ενημερώνεται αυτόματα βάσει του προτύπου', + 'nameCurrentSpeaker': 'Ονοματοδοσία τρέχοντος ομιλητή', + 'recentlyUsedNames': 'Πρόσφατα χρησιμοποιημένα ονόματα', + 'applyToCurrentParagraph': 'Εφαρμογή στην τρέχουσα παράγραφο', + 'totalTime': 'Σύνολο', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Οι ομιλητές στη σύνοψη θα ενημερώνονται αυτόματα', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Συγχρονισμός στο cloud', + 'syncToCloudTip': + 'Συγχρονίστε αυτόματα τις εγγραφές σας στο cloud, μπορείτε να αναπαράγετε, να διαχειριστείτε και να μοιραστείτε εγγραφές μέσω οποιασδήποτε εφαρμογής VOITRANS ή VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Συγχρονισμός VOITRANS APP', + 'transcriptionRecord': 'Αρχείο απομαγνητοφώνησης', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Αρχεία απομαγνητοφώνησης', 'templateCommunity': 'Κοινότητα προτύπων', @@ -500,7 +683,7 @@ const Map elGR = { 'Συνδέστε συσκευή Voitrans για ενεργοποίηση Starter μέλους', 'unlockNow': 'Ξεκλείδωμα τώρα', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Σύγκριση', 'detailedInfo': 'Λεπτομερείς πληροφορίες', 'monthlyTranscriptionTime': 'Μηνιαίος χρόνος απομαγνητοφώνησης', @@ -536,8 +719,6 @@ const Map elGR = { 'Εύκολη εισαγωγή αρχείων ήχου από τοπικές ή τρίτες εφαρμογές, όπως φωνητικά σημειώματα, Google Drive, κ.λπ.', 'multipleExportFormatsDesc': 'Εξάγετε τις ηχογραφήσεις σας, το κείμενο απομαγνητοφώνησης και τις περιλήψεις σε διάφορες μορφές (TXT, PDF, JPEG) για να καλύψετε τις ανάγκες σας.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Αναβάθμιση συνδρομής', 'yearlySubscription': 'Ετήσια συνδρομή', 'monthlySubscription': 'Μηνιαία συνδρομή', @@ -567,106 +748,28 @@ const Map elGR = { 'Ενεργοποιείται αμέσως μετά την αγορά, ισχύει για 2 χρόνια μετά την ενεργοποίηση.', 'purchase': 'Αγορά', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Επιλογή προτύπου περίληψης', - 'useThisTemplate': 'Χρήση αυτού του προτύπου', - 'lastUsed': 'Τελευταία χρήση', - 'viewAll': 'Προβολή όλων', - 'recordingLanguage': 'Γλώσσα εγγραφής', - 'chineseSimplified': 'Κινέζικα (Απλοποιημένα)', - 'meetingGenerateNow': 'Δημιουργία τώρα', - 'keyEventsAnalyzed': 'Αναλύθηκαν {count} βασικά γεγονότα.', - 'aiAnalysisDesc': - 'Η ανάλυση AI εντοπίζει βασικά γεγονότα στις εγγραφές, επιτρέποντάς σας να επιλέξετε σημαντικά γεγονότα για δημιουργία AI.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Εισαγωγή...', - 'batchImporting': 'Μαζική εισαγωγή...', - 'importingLocalRecordings': 'Εισαγωγή τοπικών εγγραφών...', - 'importFailed': 'Αποτυχία εισαγωγής αρχείου: {filePath}, σφάλμα: {error}', - 'importSuccess': 'Επιτυχής εισαγωγή {count} τοπικών εγγραφών', - 'importError': 'Αποτυχία εισαγωγής: {error}', - 'pleaseSelectAudioFile': 'Παρακαλώ επιλέξτε αρχείο ήχου', - 'shareAudio': 'Κοινοποίηση ήχου συνάντησης', - 'shareComplete': 'Η κοινοποίηση ολοκληρώθηκε!', - 'shareFailed': 'Αποτυχία κοινοποίησης: {error}', - 'fileProcessingFailed': - 'Αποτυχία επεξεργασίας αρχείου: {filePath}, σφάλμα: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Άγνωστη γλώσσα', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Αποθήκευση', - 'meetingStoragePermissionExplanation': - 'Χρειαζόμαστε πρόσβαση στα δικαιώματα αποθήκευσης για να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.', - 'meetingStoragePermissionPermanentDenial': - 'Εντοπίστηκε ότι έχετε αρνηθεί μόνιμα το δικαίωμα αποθήκευσης. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, παρακαλώ μεταβείτε στις ρυθμίσεις εφαρμογής για να ενεργοποιήσετε χειροκίνητα το δικαίωμα αποθήκευσης.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Κοινοποίηση χάρτη μυαλού', - 'shareSuccess': 'Επιτυχής κοινοποίηση', - - // Meeting模块 - AI相关 - 'askAI': 'Ρωτήστε το AI ...', - 'askAIPrompt': 'Πώς μπορώ να σας βοηθήσω σήμερα;', - 'continueAsk': 'Συνεχίστε να ρωτάτε', - 'todoList': 'Λίστα εργασιών', - 'extractConclusion': 'Εξαγωγή συμπεράσματος', - 'generateKeyIndicators': 'Δημιουργία βασικών δεικτών', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Επανασύνοψη', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'Γλώσσα εγγραφής', - // 'chinese': '中文普通话(简体)', 'cantonese': 'Καντονέζικα', 'sichuan': 'Διάλεκτος Σετσουάν', 'shanghai': 'Διάλεκτος Σαγκάης', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Κοινοποίηση συνδέσμου', - 'copyTranscript': 'Αντιγραφή απομαγνητοφώνησης', - 'copySummary': 'Αντιγραφή περίληψης', - 'exportAudio': 'Εξαγωγή ήχου', - 'exportTranscript': 'Εξαγωγή απομαγνητοφώνησης', - 'shareMeetingAudio': 'Κοινοποίηση ήχου συνάντησης', - 'exportSummary': 'Εξαγωγή περίληψης', - 'exportAs': 'Εξαγωγή ως', - 'exportingPDF': 'Εξαγωγή PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Εφαρμογή σε όλες τις παραγράφους αυτού του ομιλητή', - 'summaryWillBeUpdatedAutomatically': - 'Η σύνοψη θα ενημερώνεται αυτόματα βάσει του προτύπου', - 'nameCurrentSpeaker': 'Ονοματοδοσία τρέχοντος ομιλητή', - 'recentlyUsedNames': 'Πρόσφατα χρησιμοποιημένα ονόματα', - 'applyToCurrentParagraph': 'Εφαρμογή στην τρέχουσα παράγραφο', - 'totalTime': 'Σύνολο', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Οι ομιλητές στη σύνοψη θα ενημερώνονται αυτόματα', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Συγχρονισμός στο cloud', - 'syncToCloudTip': - 'Συγχρονίστε αυτόματα τις εγγραφές σας στο cloud, μπορείτε να αναπαράγετε, να διαχειριστείτε και να μοιραστείτε εγγραφές μέσω οποιασδήποτε εφαρμογής VOITRANS ή VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Συγχρονισμός VOITRANS APP', - 'transcriptionRecord': 'Αρχείο απομαγνητοφώνησης', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Ημερομηνία & Ώρα', - 'location': 'Τοποθεσία', - 'attendees': 'Παρευρισκόμενοι', - 'inputLocation': 'Εισαγωγή τοποθεσίας', - 'inputAttendees': 'Εισαγωγή παρευρισκομένων', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Άγνωστη γλώσσα', + 'analysisFailed': 'Η ανάλυση απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'transcriptionFailed': + 'Η μεταγραφή απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'summaryFailed': 'Η σύνοψη απέτυχε, παρακαλώ δοκιμάστε ξανά αργότερα', + 'summaryFailedShort': 'Αποτυχία σύνοψης', + 'transcriptionFailedShort': 'Αποτυχία μεταγραφής', + + // Meeting模块 - 播放器 + 'playerNotReady': + 'Ο αναπαραγωγέας ήχου δεν είναι έτοιμος, παρακαλώ περιμένετε', + 'playFailed': 'Αποτυχία αναπαραγωγής', + 'audioFileNotFound': 'Το αρχείο ήχου δεν βρέθηκε', + 'fetchingAudio': 'Λήψη ήχου από το cloud...', + 'playerLoadFailed': 'Αποτυχία φόρτωσης αναπαραγωγέα ήχου', // 设置页 "systemSettings": "Ρυθμίσεις συστήματος", @@ -675,10 +778,10 @@ const Map elGR = { "translationRecharge": "Περιορέωση μετάφρασης", "meetingAssistantRecharge": "Περιορέωση βοηθού συνάντησης", "cloudSync": "Περιορέωση συγχρονισμού στο cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Υπηρεσία μελών", + "bindRewardTitle": "Ανταμοιβές", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Η ανταμοιβή πρώτης σύνδεσης συσκευής εκδόθηκε. Πατήστε OK για κλείσιμο.", "joinDevice": "Συνδεδεμένη συσκευή:", "accountId": "ID λογαριασμού:", "systemSetting": "Ρυθμίσεις συστήματος", @@ -719,43 +822,31 @@ const Map elGR = { "bleHeadsetFirmwareUpgrade": "Αναβάθμιση firmware ακουστικών BLE", "deviceManagement": "Διαχείριση συσκευών", "manageConnectedDevices": "Διαχείριση συνδεδεμένων συσκευών Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Αυτή τη στιγμή η τελευταία έκδοση {version}', 'checkUpdateFailed': 'Αποτυχία ελέγχου ενημερώσεων', 'networkErrorRetry': 'Σφάλμα δικτύου, δοκιμάστε ξανά αργότερα', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Φωνητική συνομιλία σε πραγματικό χρόνο", "realtimeVoiceChatInfo": "Δοκιμάστε τη λειτουργία έξυπνης φωνητικής αλληλεπίδρασης (προεπισκόπηση λειτουργίας)", "loading": "Φόρτωση...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", + "noDevicesBound": "Δεν υπάρχουν συνδεδεμένες συσκευές", + "pleaseBindDeviceFirst": "Συνδέστε πρώτα μια συσκευή για διαχείριση", + "noMacAddress": "Χωρίς διεύθυνση MAC", + "licenseCode": "Κωδικός άδειας", + "confirmUnbind": "Επιβεβαίωση αποσύνδεσης", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Είστε βέβαιοι ότι θέλετε να αποσυνδέσετε τη συσκευή \"{deviceName}\";", + "confirmUnbindAction": "Επιβεβαίωση αποσύνδεσης", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Εκκαθάριση ιστορικού συνομιλίας", "online": "Σε σύνδεση", @@ -783,22 +874,24 @@ const Map elGR = { "loadMoreMessages": "Φόρτωση περισσότερων μηνυμάτων...", "loadFailedClickRetry": "Αποτυχία φόρτωσης, κάντε κλικ για επανάληψη", "swipeUpForMore": "Σύρετε προς τα πάνω για περισσότερα", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Σας βοηθάω, παρακαλώ περιμένετε!", // 正在帮您,请稍等! + "voice_interrupt": "Διακοπή", // 语音打断 + 'voice_interrupt_tip': + 'Όταν είναι ενεργοποιημένο: Η AI δεν θα διακοπεί από τη φωνή σας κατά τη διάρκεια της ομιλίας και μπορεί να χειριστεί μόνο έναν γύρο συνομιλίας τη φορά. Για να ξεκινήσετε νέο γύρο, απλά πείτε τη λέξη αφύπνισης.', + + // Agent模块 - 预设提示词 + "presetMusic": "Παίξε μουσική", // 来点音乐 + "presetNavigation": "Πλοήγηση σε", // 导航 + "presetWeather": "Καιρός σήμερα", // 今日天气 + "presetNews": "Ειδήσεις σήμερα", // 今日新闻 + "presetFood": "Φαγητό κοντά", // 美食 + "playSomeMusic": "Παίξε δημοφιλή μουσική", // 播放一些流行音乐 + "navigationTo": "Βοηθήστε με να πλοηγηθώ στο", // 导航到 + "todayWeather": "Πώς είναι ο καιρός σήμερα;", // 今日天气 + "todayNews": "Ποια είναι τα νέα σήμερα;", // 今日新闻 + "nearbyFood": "Τι νόστιμο φαγητό υπάρχει κοντά;", // 美食 + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Γεια σας! Είμαι ο **Lily**, μπορώ να σας βοηθήσω με:\n\n' '• Απάντηση σε ερωτήσεις και παροχή πληροφοριών\n\n' '• Μετάφραση φωνής σε πραγματικό χρόνο\n\n' @@ -819,11 +912,11 @@ const Map elGR = { 'startPhoneCallMode': 'Έναρξη λειτουργίας τηλεφωνικής κλήσης, έναρξη φωνητικής εισόδου', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Εισάγετε το μήνυμά σας εδώ...', // 全屏编辑器输入提示 'characterCount': '{count} χαρακτήρες', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Αντιγραφή', 'copySuccess': 'Επιτυχής αντιγραφή', 'report': 'Αναφορά', @@ -831,7 +924,6 @@ const Map elGR = { 'submitFailed': 'Αποτυχία υποβολής', 'reportSubmitted': 'Η αναφορά υποβλήθηκε, θα την επεξεργαστούμε το συντομότερο δυνατό', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Επιβλαβές/μη ασφαλές', 'pornographicVulgar': 'Πορνογραφικό/χυδαίο', 'misleadingAttack': 'Παραπλανητική επίθεση', @@ -841,17 +933,23 @@ const Map elGR = { 'other': 'Άλλο', 'reportDescriptionHint': 'Θέλουμε να γνωρίζουμε τον λόγο της αναφοράς σας, μπορείτε να περιγράψετε το πρόβλημα που αντιμετωπίσατε.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Δημιουργήθηκε από AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Κλήση εργαλείου', + 'noResult': 'Κανένα αποτέλεσμα', + 'noToolCallContentToCopy': + 'Δεν υπάρχει περιεχόμενο κλήσης εργαλείου για αντιγραφή', + 'toolCallDetails': 'Λεπτομέρειες κλήσης εργαλείου:', + 'toolCallContentCopied': + 'Το περιεχόμενο κλήσης εργαλείου αντιγράφηκε στο πρόχειρο', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ορίστε μερικές προτεινόμενες μουσικές:', 'playList': 'Λίστα αναπαραγωγής', 'moreMusic': 'Περισσότερη μουσική', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'χιλιόμετρα', // 公里单位 'meters': 'μέτρα', // 米单位 'hours': 'ώρες', // 小时单位 @@ -866,7 +964,30 @@ const Map elGR = { "bicycling": "Ποδηλασία", "tsransit": "Δημόσια συγκοινωνία", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Επιλογή εφαρμογής πλοήγησης', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Πλοήγηση με Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Πλοήγηση με Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Πλοήγηση με Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Πλοήγηση με Apple Maps', + 'builtInNavigation': 'Ενσωματωμένη πλοήγηση', + 'useBuiltInNavigation': 'Πλοήγηση με ενσωματωμένο χάρτη', + 'navigationStartFailed': 'Αποτυχία εκκίνησης πλοήγησης', + 'cannotPlayMusicListRetryLater': + 'Δεν είναι δυνατή η αναπαραγωγή της λίστας μουσικής, δοκιμάστε ξανά αργότερα', + 'cannotPlaySong': 'Δεν είναι δυνατή η αναπαραγωγή τραγουδιού', + 'openMapError': 'Σφάλμα κατά το άνοιγμα του χάρτη', + 'pleaseInstallAmapApp': 'Εγκαταστήστε πρώτα την εφαρμογή Amap', + 'pleaseInstallBaiduMapApp': 'Εγκαταστήστε πρώτα την εφαρμογή Baidu Maps', + 'appleMapStartFailed': 'Αποτυχία εκκίνησης Apple Maps', + 'appleMapUnavailable': 'Τα Apple Maps δεν είναι διαθέσιμα', + 'openAppleMapError': 'Σφάλμα κατά το άνοιγμα των Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Ερώτημα καιρού:', 'highest': 'Υψηλότερη', 'lowest': 'Χαμηλότερη', @@ -896,18 +1017,8 @@ const Map elGR = { "friday": "Παρασκευή", "saturday": "Σάββατο", "sunday": "Κυριακή", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ηλιόλουστος", "partlyCloudy": "Μερικώς συννεφιασμένος", "partlySunny": "Μερικώς ηλιόλουστος", @@ -928,7 +1039,144 @@ const Map elGR = { "haze": "Καταχνιά", "strongWind": "Δυνατός άνεμος", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Μετάφραση εικόνας", + "textTranslation": "Μετάφραση κειμένου", + + // 翻译模块 - 主页 + "translationHistory": "Ιστορικό μεταφράσεων", + "enableRecording": "Ενεργοποίηση εγγραφής", + "viewAudioFiles": "Προβολή αρχείων ήχου", + "headsetUser": "Χρήστης ακουστικών", + "phoneUser": "Χρήστης τηλεφώνου", + "selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης", + "selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού", + "me": "Εγώ", + "counterPart": "Συνομιλητής", + "bluetoothCallStateError": + "Βεβαιωθείτε ότι τα ακουστικά Bluetooth είναι συνδεδεμένα στο τηλέφωνο και σε κατάσταση κλήσης", + "autoDetect": "Αυτόματη ανίχνευση", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Αποτυχία ανίχνευσης γλώσσας", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Απενεργοποίηση αιωρούμενου παραθύρου', + 'enableFloatingWindow': 'Ενεργοποίηση αιωρούμενου παραθύρου', + 'permissionTip': 'Υπόδειξη δικαιώματος', + 'micPermissionRequiredForRecording': + 'Απαιτείται δικαίωμα μικροφώνου για εγγραφή', + 'deleteTranslationRecordError': + 'Σφάλμα κατά τη διαγραφή εγγραφής μετάφρασης: @error', + "translationFailed": "Αποτυχία μετάφρασης", + "translating": "Μετάφραση σε εξέλιξη", + "translate": "Μετάφραση", + "pleaseInputText": "Εισαγάγετε κείμενο", + "inputTextToTranslate": "Παρακαλώ εισαγάγετε το κείμενο προς μετάφραση", + "textTooLong": "Το κείμενο είναι πολύ μεγάλο, μέγιστο 5000 χαρακτήρες", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων", + "historyRecords": "Ιστορικό εγγραφών", + "clearResults": "Εκκαθάριση αποτελεσμάτων", + "clearHistory": "Εκκαθάριση ιστορικού", + "clearHistoryConfirm": + "Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + "unknownLanguage": "Άγνωστη γλώσσα", + "deleteSessionRecord": "Διαγραφή εγγραφής συνεδρίας", + "deleteSessionConfirm": + "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Επιλογή πηγής εικόνας", + "imagePreview": "Προεπισκόπηση εικόνας", + "translationResult": "Αποτέλεσμα μετάφρασης", + "recognitionResult": "Αποτέλεσμα αναγνώρισης", + "translatedImagePreview": "Προεπισκόπηση μεταφρασμένης εικόνας", + "translatedImageLoadFailed": "Αποτυχία φόρτωσης μεταφρασμένης εικόνας", + "pleaseSelectImage": "Επιλέξτε μια εικόνα", + "imageLoadFailed": "Αποτυχία φόρτωσης εικόνας", + "imageQuality": "Ποιότητα εικόνας", + "maxSize": "Μέγιστο μέγεθος", + "close": "Κλείσιμο", + "setImageQuality": "Ρύθμιση ποιότητας εικόνας", + "currentQuality": "Τρέχουσα ποιότητα: @value%", + "setMaxSize": "Ρύθμιση μέγιστου μεγέθους", + "currentMaxSize": "Τρέχον: @pxpx", + "waitingForAction": "Αναμονή ενέργειας", + "pleaseSelectImageToStart": "Επιλέξτε μια εικόνα για να ξεκινήσετε", + "chooseImage": "Επιλογή εικόνας", + "openingCamera": "Άνοιγμα κάμερας...", + "openingPhotoAlbum": "Άνοιγμα άλμπουμ φωτογραφιών...", + "cancelled": "Ακυρώθηκε", + "userCancelledSelection": "Ο χρήστης ακύρωσε την επιλογή", + "translatingImage": "Μετάφραση εικόνας", + "callingImageTranslateService": "Κλήση υπηρεσίας μετάφρασης εικόνας...", + "savingRecord": "Αποθήκευση εγγραφής", + "savingTranslationResult": "Αποθήκευση αποτελέσματος μετάφρασης...", + "translationCompleted": "Η μετάφραση ολοκληρώθηκε", + "allStepsCompleted": "Όλα τα βήματα ολοκληρώθηκαν", + "processingFailed": "Αποτυχία επεξεργασίας", + "imageProcessingOrTranslationFailed": + "Αποτυχία επεξεργασίας ή μετάφρασης εικόνας. Δοκιμάστε ξανά.\nΣφάλμα: {error}", + "imageTooLarge": "Το μέγεθος εικόνας υπερβαίνει το όριο των 4MB", + "imageTooLargeHint": + "Το μέγεθος εικόνας υπερβαίνει τα 4MB. Μειώστε την ποιότητα ή τις διαστάσεις και δοκιμάστε ξανά", + "emptyTranslationResult": + "Το API μετάφρασης εικόνας επέστρεψε κενό αποτέλεσμα", + "imageTranslationFailedTryLater": + "Αποτυχία μετάφρασης εικόνας. Πρόβλημα δικτύου ή όριο αιτημάτων. Δοκιμάστε αργότερα", + "imageTranslationApiException": + "Εξαίρεση API μετάφρασης εικόνας. Ελέγξτε το δίκτυο και δοκιμάστε ξανά", + "permissionRequired": "Απαιτείται δικαίωμα", + "cameraPermissionRequired": + "Απαιτείται δικαίωμα κάμερας για λήψη φωτογραφιών", + "photoAlbumPermissionRequired": + "Απαιτείται δικαίωμα άλμπουμ φωτογραφιών για επιλογή εικόνων", + "translationDetails": "Λεπτομέρειες μετάφρασης", + "originalImage": "Αρχική εικόνα", + "sourceLanguage": "Γλώσσα προέλευσης", + "targetLanguage": "Γλώσσα προορισμού", + "translationTime": "Χρόνος μετάφρασης", + "shareInDevelopment": "Η λειτουργία κοινοποίησης βρίσκεται υπό ανάπτυξη", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Μετάφραση αρχείων ήχου", + "noAudioFiles": "Δεν υπάρχουν αρχεία ήχου", + "calculating": "Υπολογισμός...", + "playing": "Αναπαραγωγή...", + "paused": "Σε παύση", + "clickToPlay": "Κάντε κλικ για αναπαραγωγή", + "rename": "Μετονομασία", + "smartTranscription": "Έξυπνη μεταγραφή", + "renameAudioFile": "Μετονομασία αρχείου ήχου", + "enterNewFileName": "Εισάγετε νέο όνομα αρχείου", + + // 翻译模块 - 翻译详情 + "originalRecord": "Αρχική εγγραφή", + "recordSummary": "Περίληψη εγγραφής", + "clickToGenerateSummary": + "Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε περίληψη συνεδρίας", + "summaryContent": "Περιεχόμενο περίληψης", + "copied": "Αντιγράφηκε", + "summaryCopiledToClipboard": "Η περίληψη αντιγράφηκε στο πρόχειρο", + "extractSummary": "Εξαγωγή περίληψης", + "summaryGenerated": "Η περίληψη δημιουργήθηκε", + "generating": "Δημιουργία...", + "regenerate": "Αναδημιουργία", + "summaryTimeoutMessage": + "Το αίτημα δημιουργίας περίληψης έληξε, πιθανώς λόγω προβλήματος δικτύου ή υπερφόρτωσης διακομιστή.", + "deleteTranslationRecord": "Διαγραφή εγγραφής μετάφρασης", + "deleteTranslationConfirm": + "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή την εγγραφή μετάφρασης; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", + "originalText": "Αρχικό κείμενο", + "translatedText": "Μεταφρασμένο κείμενο", + "sessionSummary": "Περίληψη συνεδρίας", + "cannotShare": "Δεν είναι δυνατή η κοινοποίηση", + "generateSummaryFirst": "Δημιουργήστε πρώτα περίληψη", + "translationSessionRecord": "Εγγραφή συνεδρίας μετάφρασης", + + // 个人资料模块 "editProfile": "Επεξεργασία προσωπικών στοιχείων", "avatar": "Avatar", "nickname": "Ψευδώνυμο", @@ -943,10 +1191,9 @@ const Map elGR = { 'deleteAccount': 'Διαγραφή λογαριασμού', 'deleteAccountTips': 'Είστε βέβαιοι ότι θέλετε να διαγράψετε μόνιμα τον λογαριασμό σας; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Εκκαθάριση προσωρινής μνήμης', + 'cleanTips': + 'Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε την προσωπική προσωρινή μνήμη;', 'networkConnectionFailed': 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου και δοκιμάστε ξανά', 'serverTemporarilyUnavailable': @@ -963,10 +1210,6 @@ const Map elGR = { 'Αποτυχία σύνδεσης δικτύου, ελέγξτε τις ρυθμίσεις δικτύου', 'serverInternalErrorRetryLater': 'Εσωτερικό σφάλμα διακομιστή, δοκιμάστε ξανά αργότερα', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Αποτυχία συμπίεσης εικόνας', 'avatarUpdateFailed': 'Αποτυχία ενημέρωσης avatar', 'usernameCannotBeEmpty': 'Το όνομα χρήστη δεν μπορεί να είναι κενό', @@ -977,8 +1220,6 @@ const Map elGR = { 'logoutFailedRetry': 'Αποτυχία αποσύνδεσης, δοκιμάστε ξανά', 'accountPermanentlyDeleted': 'Ο λογαριασμός διαγράφηκε μόνιμα', 'deleteAccountFailedRetry': 'Αποτυχία διαγραφής λογαριασμού, δοκιμάστε ξανά', - - // 账号服务相关 'clearUserDataFailed': 'Αποτυχία εκκαθάρισης δεδομένων χρήστη', // 清理用户数据失败 'deleteUserDataFailed': 'Αποτυχία διαγραφής δεδομένων χρήστη', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Επιτυχής αποσύνδεση τρίτου μέρους', // 第三方登录退出成功 @@ -992,22 +1233,26 @@ const Map elGR = { 'accountServiceInitialized': 'Το AccountService αρχικοποιήθηκε', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Αποθήκευση', + 'meetingStoragePermissionExplanation': + 'Χρειαζόμαστε πρόσβαση στα δικαιώματα αποθήκευσης για να μπορείτε να επιλέξετε και να ανεβάσετε αρχεία ήχου.', + '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', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Επαφές', + 'notification': 'Ειδοποίηση', + 'alarm': 'Ξυπνητήρι', 'calendarWrite': 'Εγγραφή ημερολογίου', 'calendarFullAccess': 'Πλήρης πρόσβαση ημερολογίου', 'locationInfo': 'Πληροφορίες τοποθεσίας', @@ -1015,7 +1260,7 @@ const Map elGR = { 'Χρησιμοποιείται για τη λειτουργία τηλεφωνικών κλήσεων', 'smsPermissionDesc': 'Χρησιμοποιείται για τη λειτουργία αποστολής SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Χρησιμοποιείται για τη ρύθμιση ακριβών ξυπνητηριών ώστε οι υπενθυμίσεις να ενεργοποιούνται έγκαιρα', 'calendarWritePermissionDesc': 'Χρησιμοποιείται για τη δημιουργία γεγονότων και υπενθυμίσεων ημερολογίου', 'calendarFullAccessPermissionDesc': @@ -1036,80 +1281,94 @@ const Map elGR = { '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 για σάρωση κοντινών συσκευών 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.', -//'microphonePermission': '录音', - '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': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Το δικαίωμα μικροφώνου έχει απορριφθεί μόνιμα. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, μεταβείτε στις ρυθμίσεις εφαρμογής για χειροκίνητη ενεργοποίηση.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Το δικαίωμα αποθήκευσης έχει απορριφθεί μόνιμα. Για να συνεχίσετε να χρησιμοποιείτε αυτή τη λειτουργία, μεταβείτε στις ρυθμίσεις εφαρμογής για χειροκίνητη ενεργοποίηση.', + 'permissionUtilNeed': 'Απαιτείται ', + 'permissionUtilPermission': ' Δικαίωμα', + 'permissionUtilRestricted': ' Δικαίωμα περιορισμένο', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Αυτή η λειτουργία δεν είναι διαθέσιμη ή είναι περιορισμένη στην τρέχουσα συσκευή, ελέγξτε τις ρυθμίσεις συσκευής ή τους περιορισμούς συστήματος', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Πλοήγηση σε εξέλιξη', + 'native.notification.navigation.keepRunning': + 'Πλοήγηση σε εξέλιξη, διατηρήστε την εφαρμογή ανοιχτή', + 'native.notification.bleAgent.running': 'Ο φωνητικός βοηθός εκτελείται', + 'native.notification.audioRecording.recording': + 'Εγγραφή ήχου, πατήστε για επιστροφή στην εφαρμογή', + 'native.notification.music.waiting': 'Αναμονή αναπαραγωγής', + 'native.notification.music.previous': 'Προηγούμενο', + 'native.notification.music.next': 'Επόμενο', + 'native.notification.music.play': 'Αναπαραγωγή', + 'native.notification.music.pause': 'Παύση', + 'native.notification.qqMusic.playing': 'Αναπαραγωγή μουσικής', + + // 版本更新 'newVersionFound': 'Βρέθηκε νέα έκδοση', // 版本更新对话框标题 'remindLater': 'Υπενθύμιση αργότερα', // 稍后提醒按钮 'updateNow': 'Ενημέρωση τώρα', // 立即更新按钮 @@ -1120,253 +1379,7 @@ const Map elGR = { 'updateErrorRetry': 'Παρουσιάστηκε σφάλμα κατά την ενημέρωση, δοκιμάστε ξανά αργότερα', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Κίνα", - "美国": "ΗΠΑ", - "加拿大": "Καναδάς", - "俄罗斯": "Ρωσία", - "英国": "Ηνωμένο Βασίλειο", - "德国": "Γερμανία", - "意大利": "Ιταλία", - "法国": "Γαλλία", - "西班牙": "Ισπανία", - "南非": "Νότια Αφρική", - "沙特阿拉伯": "Σαουδική Αραβία", - "土耳其": "Τουρκία", - "日本": "Ιαπωνία", - "韩国": "Νότια Κορέα", - "新加坡": "Σιγκαπούρη", - "马来西亚": "Μαλαισία", - "泰国": "Ταϊλάνδη", - "越南": "Βιετνάμ", - "印度": "Ινδία", - "巴基斯坦": "Πακιστάν", - "菲律宾": "Φιλιππίνες", - "印度尼西亚": "Ινδονησία", - "阿联酋": "ΗΑΕ", - "墨西哥": "Μεξικό", - "巴西": "Βραζιλία", - "阿根廷": "Αργεντινή", - "澳大利亚": "Αυστραλία", - "新西兰": "Νέα Ζηλανδία", - "中国香港": "Χονγκ Κονγκ", - "中国澳门": "Μακάο", - "中国台湾": "Ταϊβάν", - "埃及": "Αίγυπτος", - "希腊": "Ελλάδα", - "荷兰": "Ολλανδία", - "比利时": "Βέλγιο", - "匈牙利": "Ουγγαρία", - "罗马尼亚": "Ρουμανία", - "瑞士": "Ελβετία", - "奥地利": "Αυστρία", - "丹麦": "Δανία", - "瑞典": "Σουηδία", - "挪威": "Νορβηγία", - "波兰": "Πολωνία", - "秘鲁": "Περού", - "智利": "Χιλή", - "哥伦比亚": "Κολομβία", - "委内瑞拉": "Βενεζουέλα", - "葡萄牙": "Πορτογαλία", - "卢森堡": "Λουξεμβούργο", - "爱尔兰": "Ιρλανδία", - "冰岛": "Ισλανδία", - "阿尔巴尼亚": "Αλβανία", - "马耳他": "Μάλτα", - "塞浦路斯": "Κύπρος", - "芬兰": "Φινλανδία", - "保加利亚": "Βουλγαρία", - "立陶宛": "Λιθουανία", - "拉脱维亚": "Λετονία", - "爱沙尼亚": "Εσθονία", - "乌克兰": "Ουκρανία", - "塞尔维亚": "Σερβία", - "克罗地亚": "Κροατία", - "斯洛文尼亚": "Σλοβενία", - "捷克": "Τσεχία", - "斯洛伐克": "Σλοβακία", - "危地马拉": "Γουατεμάλα", - "萨尔瓦多": "Ελ Σαλβαδόρ", - "洪都拉斯": "Ονδούρα", - "尼加拉瓜": "Νικαράγουα", - "哥斯达黎加": "Κόστα Ρίκα", - "巴拿马": "Παναμάς", - "海地": "Αϊτή", - "玻利维亚": "Βολιβία", - "厄瓜多尔": "Ισημερινός", - "巴拉圭": "Παραγουάη", - "乌拉圭": "Ουρουγουάη", - "摩洛哥": "Μαρόκο", - "阿尔及利亚": "Αλγερία", - "突尼斯": "Τυνησία", - "尼日利亚": "Νιγηρία", - "加纳": "Γκάνα", - "埃塞俄比亚": "Αιθιοπία", - "肯尼亚": "Κένυα", - "坦桑尼亚": "Τανζανία", - "乌干达": "Ουγκάντα", - "孟加拉国": "Μπανγκλαντές", - "以色列": "Ισραήλ", - "黎巴嫩": "Λίβανος", - "约旦": "Ιορδανία", - "伊拉克": "Ιράκ", - "科威特": "Κουβέιτ", - "巴林": "Μπαχρέιν", - "卡塔尔": "Κατάρ", - "阿曼": "Ομάν", - "阿富汗": "Αφγανιστάν", - "斯里兰卡": "Σρι Λάνκα", - "缅甸": "Μιανμάρ", - "尼泊尔": "Νεπάλ", - "蒙古": "Μογγολία", - "柬埔寨": "Καμπότζη", - "老挝": "Λάος", - "文莱": "Μπρουνέι", - "东帝汶": "Ανατολικό Τιμόρ", - "斐济": "Φίτζι", - "所罗门群岛": "Νησιά Σολομώντα", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Ιστορικό μεταφράσεων", - "enableRecording": "Ενεργοποίηση εγγραφής", - "viewAudioFiles": "Προβολή αρχείων ήχου", - "headsetUser": "Χρήστης ακουστικών", - "phoneUser": "Χρήστης τηλεφώνου", - "selectSourceLanguage": "Επιλέξτε γλώσσα προέλευσης", - "selectTargetLanguage": "Επιλέξτε γλώσσα προορισμού", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Δεν υπάρχει ιστορικό μεταφράσεων", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Εκκαθάριση ιστορικού", - "clearHistoryConfirm": - "Είστε βέβαιοι ότι θέλετε να εκκαθαρίσετε όλο το ιστορικό μεταφράσεων; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - "unknownLanguage": "Άγνωστη γλώσσα", - "deleteSessionRecord": "Διαγραφή εγγραφής συνεδρίας", - "deleteSessionConfirm": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε όλες τις εγγραφές μεταφράσεων για αυτή τη συνεδρία; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Μετάφραση αρχείων ήχου", - "noAudioFiles": "Δεν υπάρχουν αρχεία ήχου", - "calculating": "Υπολογισμός...", - "playing": "Αναπαραγωγή...", - "paused": "Σε παύση", - "clickToPlay": "Κάντε κλικ για αναπαραγωγή", - "rename": "Μετονομασία", - "smartTranscription": "Έξυπνη μεταγραφή", - "renameAudioFile": "Μετονομασία αρχείου ήχου", - "enterNewFileName": "Εισάγετε νέο όνομα αρχείου", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Αρχική εγγραφή", - "recordSummary": "Περίληψη εγγραφής", - "clickToGenerateSummary": - "Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε περίληψη συνεδρίας", - "summaryContent": "Περιεχόμενο περίληψης", - "copied": "Αντιγράφηκε", - "summaryCopiledToClipboard": "Η περίληψη αντιγράφηκε στο πρόχειρο", - "extractSummary": "Εξαγωγή περίληψης", - "summaryGenerated": "Η περίληψη δημιουργήθηκε", - "generating": "Δημιουργία...", - "regenerate": "Αναδημιουργία", - "summaryTimeoutMessage": - "Το αίτημα δημιουργίας περίληψης έληξε, πιθανώς λόγω προβλήματος δικτύου ή υπερφόρτωσης διακομιστή.", - "deleteTranslationRecord": "Διαγραφή εγγραφής μετάφρασης", - "deleteTranslationConfirm": - "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή την εγγραφή μετάφρασης; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί.", - "originalText": "Αρχικό κείμενο", - "translatedText": "Μεταφρασμένο κείμενο", - "sessionSummary": "Περίληψη συνεδρίας", - "cannotShare": "Δεν είναι δυνατή η κοινοποίηση", - "generateSummaryFirst": "Δημιουργήστε πρώτα περίληψη", - "translationSessionRecord": "Εγγραφή συνεδρίας μετάφρασης", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Σύζευξη συσκευής", "connectYourDeepSoundHeadset": "Συνδέστε τα ακουστικά Voitrans", "bind": "Σύνδεση", @@ -1375,14 +1388,11 @@ const Map elGR = { "autoInputCode": "Αυτόματη εισαγωγή κωδικού", "skipBinding": "Παράλειψη σύνδεσης", "rescan": "Επανάληψη σάρωσης", - "verifyingDevice": "Επαλήθευση συσκευής...", "confirmBinding": "Επιβεβαίωση σύνδεσης", "associatingDevice": "Συσχέτιση συσκευής...", "goToBluetoothSettings": "Μετάβαση στις ρυθμίσεις Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Έτοιμο για σύζευξη", "preparingPairingEnvironment": "Προετοιμασία περιβάλλοντος σύζευξης...", "connectDeepSoundViaSystemBluetooth": @@ -1392,8 +1402,6 @@ const Map elGR = { "waitingCompletePairing": "Περιμένετε, ολοκλήρωση σύζευξης...", "pairingSuccessRedirecting": "Επιτυχής σύζευξη! Ανακατεύθυνση στην αρχική σελίδα...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Βεβαιωθείτε ότι η συνδεδεμένη συσκευή είναι Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1405,19 +1413,12 @@ const Map elGR = { "authorizationFailedCheckCode": "Αποτυχία εξουσιοδότησης, ελέγξτε αν ο κωδικός εξουσιοδότησης είναι σωστός", "pairingFailedRetry": "Αποτυχία σύζευξης, δοκιμάστε ξανά", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Ενεργοποιήστε το Bluetooth', 'deviceDisconnected': 'Η συσκευή αποσυνδέθηκε', 'readyToStartPairing': 'Έτοιμο για έναρξη σύζευξης', 'checkingEnvironment': 'Έλεγχος περιβάλλοντος...', 'ensureHeadsetOnAndPairingMode': 'Βεβαιωθείτε ότι τα ακουστικά είναι ενεργοποιημένα και σε λειτουργία σύζευξης', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Δημιουργία ασφαλούς σύνδεσης...', 'needManualBindingAuthCode': 'Απαιτείται χειροκίνητος κωδικός εξουσιοδότησης σύνδεσης...', @@ -1439,21 +1440,31 @@ const Map elGR = { 'bleConnectionFailed': 'Αποτυχία σύνδεσης BLE', 'deviceAuthorizationFailedCheckCode': 'Αποτυχία εξουσιοδότησης συσκευής, ελέγξτε τον κωδικό εξουσιοδότησης', - - ///iOS蓝牙引导窗 - '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": "Ανταμοιβή καλωσορίσματος", + "firstBindRewardDesc": "Λάβατε ανταμοιβές σύνδεσης.", + "vipLevelLabel": "Επίπεδο VIP:", + "expiryLabel": "Λήξη:", + "notActivated": "Δεν έχει ενεργοποιηθεί", + "aiChatCreditsLabel": "Πόντοι συνομιλίας AI:", + "translationCreditsLabel": "Πόντοι μετάφρασης:", + "meetingCreditsLabel": "Πόντοι συνάντησης:", + "ok": "OK", - //用户反馈页 + // 用户反馈模块 "feedback": "Σχόλια χρήστη", 'feedbackInfo': 'Παρέχετε σχόλια ή προτάσεις', 'feedbackDescription': 'Περιγράψτε το πρόβλημα ή την πρότασή σας', @@ -1479,13 +1490,14 @@ const Map elGR = { "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.", + "Η έκδοση firmware είναι μη κανονική. Επανασυνδέστε και δοκιμάστε ξανά.", "keepConnectedDontClose": "Διατηρήστε τη συσκευή συνδεδεμένη, μην κλείσετε την εφαρμογή", "doNotDisconnect": "Μην αποσυνδέσετε", @@ -1494,7 +1506,59 @@ const Map elGR = { "removeEarbudsEnsureBattery": "Αφαιρέστε και τα δύο ακουστικά και βεβαιωθείτε ότι η μπαταρία και των δύο είναι πάνω από 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Βρέθηκε νέα έκδοση @version', + 'otaConfirmUpdateNow': 'Ενημέρωση τώρα;', + 'otaUpdate': 'Ενημέρωση', + 'otaUpgradeSuccess': 'Επιτυχής αναβάθμιση', + 'otaUpgradeCompleteRepair': + 'Η αναβάθμιση firmware ολοκληρώθηκε!\n\nΗ συσκευή χρειάζεται εκ νέου σύζευξη για σωστή λειτουργία. Μετάβαση στη σελίδα σύζευξης τώρα;', + 'otaPairLater': 'Σύζευξη αργότερα', + 'otaPairNow': 'Σύζευξη τώρα', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Σφάλμα ελέγχου σύνδεσης BLE: @error', + 'otaBleNotConnected': 'Η συσκευή BLE δεν είναι συνδεδεμένη', + 'otaBleNeedConnection': + 'Η αναβάθμιση firmware απαιτεί σύνδεση συσκευής BLE\nΒεβαιωθείτε ότι η συσκευή είναι σωστά συνδεδεμένη και δοκιμάστε ξανά', + 'otaDeviceInfoUnavailableTitle': 'Πληροφορίες συσκευής μη διαθέσιμες', + 'otaCannotGetDeviceInfo': + 'Αδυναμία λήψης πληροφοριών συσκευής\nΕπανασυνδέστε τη συσκευή ή δοκιμάστε αργότερα', + 'otaBleCheckFailed': 'Αποτυχία ελέγχου σύνδεσης BLE', + 'otaCannotGetDeviceInfoCheckConnection': + 'Αδυναμία λήψης πληροφοριών συσκευής, ελέγξτε τη σύνδεση συσκευής', + 'otaCannotGetProductInfoWithName': + 'Αδυναμία λήψης πληροφοριών προϊόντος, όνομα συσκευής: @deviceName', + 'otaCannotGetBatteryInfo': 'Αδυναμία λήψης έγκυρων πληροφοριών μπαταρίας', + 'otaLowBattery': 'Χαμηλή μπαταρία', + 'otaSingleBatteryLow': + 'Η μπαταρία της συσκευής είναι πολύ χαμηλή για αναβάθμιση firmware\nΑπαίτηση: η μπαταρία πρέπει να είναι πάνω από 20%\nΤρέχον: @ear @battery%\nΦορτίστε και δοκιμάστε ξανά', + 'otaDoubleBatteryLow': + 'Η μπαταρία της συσκευής είναι πολύ χαμηλή για αναβάθμιση firmware\nΑπαίτηση: και τα δύο ακουστικά πρέπει να είναι πάνω από 20%\nΤρέχον: Αριστερό @left%, Δεξί @right%\nΦορτίστε και δοκιμάστε ξανά', + 'otaBatteryCheckFailed': 'Αποτυχία ελέγχου μπαταρίας', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Αυτή η ενημέρωση περιλαμβάνει βελτιστοποιήσεις απόδοσης και διορθώσεις σφαλμάτων.', + 'otaGetLatestVersionFailed': 'Αποτυχία λήψης πληροφοριών τελευταίας έκδοσης', + 'otaGetVersionInfoFailed': 'Αποτυχία λήψης πληροφοριών έκδοσης', + 'otaCheckingDeviceStatus': 'Έλεγχος κατάστασης συσκευής...', + 'otaDownloadFailedCheckNetwork': 'Αποτυχία λήψης, ελέγξτε τη σύνδεση δικτύου', + 'otaDownloadFailed': 'Αποτυχία λήψης', + 'otaPreparingConnection': 'Προετοιμασία σύνδεσης συσκευής...', + 'otaConnectingDevice': 'Σύνδεση στη συσκευή...', + 'otaUpgradeStarted': 'Η αναβάθμιση OTA ξεκίνησε...', + 'otaUpgradeProgressWithPercent': 'Πρόοδος αναβάθμισης: @percent%', + 'otaUpgradeSuccessComplete': 'Η αναβάθμιση ολοκληρώθηκε επιτυχώς', + 'otaUpgradeFailedWithCode': 'Αποτυχία αναβάθμισης, κωδικός σφάλματος: @code', + 'otaUpgradeFailedTitle': 'Αποτυχία αναβάθμισης', + 'otaUpgradeFailedDesc': + 'Ελέγξτε τη σύνδεση συσκευής ή το πακέτο ενημέρωσης, κωδικός σφάλματος: @code', + 'otaDeviceDisconnected': 'Η συσκευή αποσυνδέθηκε', + 'otaDeviceConnected': 'Η συσκευή συνδέθηκε', + + // 音乐模块 "noMusic": "Δεν υπάρχει μουσική", // 暂无音乐 "noPlayingMusic": "Δεν παίζει μουσική", // 暂无播放音乐 "unknownSong": "Άγνωστο τραγούδι", // 未知歌曲 @@ -1542,22 +1606,122 @@ const Map elGR = { "波斯语": "Περσικά", "斯瓦希里语": "Σουαχίλι", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "Κίνα", + "美国": "ΗΠΑ", + "加拿大": "Καναδάς", + "俄罗斯": "Ρωσία", + "英国": "Ηνωμένο Βασίλειο", + "德国": "Γερμανία", + "意大利": "Ιταλία", + "法国": "Γαλλία", + "西班牙": "Ισπανία", + "南非": "Νότια Αφρική", + "沙特阿拉伯": "Σαουδική Αραβία", + "土耳其": "Τουρκία", + "日本": "Ιαπωνία", + "韩国": "Νότια Κορέα", + "新加坡": "Σιγκαπούρη", + "马来西亚": "Μαλαισία", + "泰国": "Ταϊλάνδη", + "越南": "Βιετνάμ", + "印度": "Ινδία", + "巴基斯坦": "Πακιστάν", + "菲律宾": "Φιλιππίνες", + "印度尼西亚": "Ινδονησία", + "阿联酋": "ΗΑΕ", + "墨西哥": "Μεξικό", + "巴西": "Βραζιλία", + "阿根廷": "Αργεντινή", + "澳大利亚": "Αυστραλία", + "新西兰": "Νέα Ζηλανδία", + "中国香港": "Χονγκ Κονγκ", + "中国澳门": "Μακάο", + "中国台湾": "Ταϊβάν", + "埃及": "Αίγυπτος", + "希腊": "Ελλάδα", + "荷兰": "Ολλανδία", + "比利时": "Βέλγιο", + "匈牙利": "Ουγγαρία", + "罗马尼亚": "Ρουμανία", + "瑞士": "Ελβετία", + "奥地利": "Αυστρία", + "丹麦": "Δανία", + "瑞典": "Σουηδία", + "挪威": "Νορβηγία", + "波兰": "Πολωνία", + "秘鲁": "Περού", + "智利": "Χιλή", + "哥伦比亚": "Κολομβία", + "委内瑞拉": "Βενεζουέλα", + "葡萄牙": "Πορτογαλία", + "卢森堡": "Λουξεμβούργο", + "爱尔兰": "Ιρλανδία", + "冰岛": "Ισλανδία", + "阿尔巴尼亚": "Αλβανία", + "马耳他": "Μάλτα", + "塞浦路斯": "Κύπρος", + "芬兰": "Φινλανδία", + "保加利亚": "Βουλγαρία", + "立陶宛": "Λιθουανία", + "拉脱维亚": "Λετονία", + "爱沙尼亚": "Εσθονία", + "乌克兰": "Ουκρανία", + "塞尔维亚": "Σερβία", + "克罗地亚": "Κροατία", + "斯洛文尼亚": "Σλοβενία", + "捷克": "Τσεχία", + "斯洛伐克": "Σλοβακία", + "危地马拉": "Γουατεμάλα", + "萨尔瓦多": "Ελ Σαλβαδόρ", + "洪都拉斯": "Ονδούρα", + "尼加拉瓜": "Νικαράγουα", + "哥斯达黎加": "Κόστα Ρίκα", + "巴拿马": "Παναμάς", + "海地": "Αϊτή", + "玻利维亚": "Βολιβία", + "厄瓜多尔": "Ισημερινός", + "巴拉圭": "Παραγουάη", + "乌拉圭": "Ουρουγουάη", + "摩洛哥": "Μαρόκο", + "阿尔及利亚": "Αλγερία", + "突尼斯": "Τυνησία", + "尼日利亚": "Νιγηρία", + "加纳": "Γκάνα", + "埃塞俄比亚": "Αιθιοπία", + "肯尼亚": "Κένυα", + "坦桑尼亚": "Τανζανία", + "乌干达": "Ουγκάντα", + "孟加拉国": "Μπανγκλαντές", + "以色列": "Ισραήλ", + "黎巴嫩": "Λίβανος", + "约旦": "Ιορδανία", + "伊拉克": "Ιράκ", + "科威特": "Κουβέιτ", + "巴林": "Μπαχρέιν", + "卡塔尔": "Κατάρ", + "阿曼": "Ομάν", + "阿富汗": "Αφγανιστάν", + "斯里兰卡": "Σρι Λάνκα", + "缅甸": "Μιανμάρ", + "尼泊尔": "Νεπάλ", + "蒙古": "Μογγολία", + "柬埔寨": "Καμπότζη", + "老挝": "Λάος", + "文莱": "Μπρουνέι", + "东帝汶": "Ανατολικό Τιμόρ", + "斐济": "Φίτζι", + "所罗门群岛": "Νησιά Σολομώντα", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/en_us.dart b/lib/core/translations/language/en_us.dart index aacf26599..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', @@ -18,6 +19,11 @@ const Map enUS = { "unknownError": "Unknown error", "asrConnectionFailed": "Speech recognition service connection failed. Please check network and try again.", + "justNow": "Just now", + "minutesAgo": "@minutes minutes ago", + "yesterday": "Yesterday", + "daysAgo": "@days days ago", + "hoursAgo": "@hours hours ago", // 启动页 "slogan": "Connect the World, Beyond Voice", @@ -28,7 +34,7 @@ const Map enUS = { "explore": "Explore", "settings": "Settings", - // 语言 + // 语言列表 "followingSystem": "Following system", "chinese": "Chinese", "english": "English", @@ -72,7 +78,7 @@ const Map enUS = { "arabic": "Arabic", "persian": "Persian", - // 登录页 + // 登录模块 "welcome": "Welcome", "loginTips": "Please sign in or create an account using your phone number or email", @@ -101,13 +107,9 @@ const Map enUS = { "resendVerificationCode": "Resend verification code", "login": "Login", "usePasswordLogin": "Use password login", - -// 隐私政策弹窗 "loginDeclaration": "Voitrans Declaration", // Voitrans 声明 "welcomeToThisApp": "Welcome to Voitrans, please read carefully ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "Privacy Policy", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "User Agreement", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". By clicking \"Agree and Enter\", you indicate that you have fully read and agree to the above agreements. Clicking \"Disagree\" will exit the application.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Disagree", // 不同意 @@ -127,7 +129,8 @@ const Map enUS = { "aiAssistant": "AI Assistant", "aiAssistantInfo": "24/7 personal consultant for questions and advice", "interpretation": "Translation", - "simultaneousInterpretationInfo": "Real-time translation for multiple languages", + "simultaneousInterpretationInfo": + "Real-time translation for multiple languages", "aiCompanion": "Parent-child bonding", "aiCompanionInfo": "Understands you and provides warm companionship", "homeSlogan": "Connect the World, Beyond Sound", @@ -164,6 +167,29 @@ const Map enUS = { 'right': 'Right', 'checkConnectionStatusFailed': 'Failed to check connection status', + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth initialization failed: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth and location permissions are required to scan devices', + 'permissionRequestFailedWithError': 'Permission request failed: @error', + 'needPermission': 'Permission Required', + 'blePermissionDialogContent': + 'This app requires Bluetooth and location permissions to scan devices. Please enable them in Settings.', + 'needEnableBluetooth': 'Enable 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', + // 发现页 "searchAi": "Search AI features...", "exploreSlogan": "Smart Earbuds, Infinite Possibilities", @@ -189,7 +215,7 @@ const Map enUS = { "usageStatsInfo": "View Your Usage Statistics", "scene": "Scenarios", - /// 用量统计模块 + // 用量统计模块 "aiChat": "AI Chat", "translationStats": "Translation Statistics", "meetingStats": "Meeting Statistics", @@ -209,7 +235,6 @@ const Map enUS = { "translationApi": "Translation API", "asr": "ASR", "tts": "TTS", - // "aiSummary": "AI Summary", "dataVolumeStats": "Data Volume Stats", "sourceTextCharacters": "Source Text Characters", "ttsTextCharacters": "TTS Text Characters", @@ -226,7 +251,6 @@ const Map enUS = { "totalAudioDuration": "Total Audio Duration", "audioFileSize": "Audio File Size", "transcriptBytes": "Transcript Bytes", - //通知文案 "loadFailed": "Load Failed", "statsLoadFailedTryLater": "Statistics failed to load. Please try again later.", @@ -235,7 +259,7 @@ const Map enUS = { "exportFeature": "Export Feature", "exportInDevelopment": "Data export is under development", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': 'Available Packages', 'remainingQuota': 'Remaining Quota', 'totalQuota': 'Total Quota', @@ -304,82 +328,19 @@ const Map enUS = { 'alipayPaymentLaunchFailed': 'Failed to launch Alipay', 'cannotLaunchAlipayPayment': 'Unable to launch Alipay', 'alipayPaymentException': 'Alipay exception', - // AI 功能卡片 + "insufficientIntegral": "Insufficient integral", + "insufficientBalanceDesc": + 'Insufficient balance, please go to the corresponding recharge page to recharge.', + "recharge": 'Go to Recharge', + "aiMemberExpiredDesc": + 'AI membership expired, please go to the membership recharge page to renew.', + + // 商品模块 - AI商品页 'musicAndRecommendation': 'Music & Recommendation', 'navigationAndRoutes': 'Navigation & Routes', 'nearbySearch': 'Nearby Search', 'newsInformation': 'News', 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' exists - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - - // 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', 'aiHeaderDesc2': @@ -402,7 +363,46 @@ const Map enUS = { 'aiDisclaimer': 'Features depend on device permissions, service availability, and network conditions.', - // 会员商品页 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time Transcription', + 'sceneLexicon': 'Scenario Glossary', + 'subtitleDisplay': 'Subtitles', + 'transHeaderDesc1': + 'Real-time simultaneous interpretation and text translation with low-latency voice.', + 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', + 'translateZhEn': 'Chinese-English translation', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Multilingual text translation', + 'termOptimizationContextPreserve': + 'Terminology optimization and context preservation', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal vocabulary memory', + 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', + 'colorHighContrast': 'High color contrast', + 'transDisclaimer': + 'Translation performance depends on microphone, network latency, and ambient noise.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Meeting Recording', + 'transcriptionAndSummary': 'Transcription & Summary', + 'keywordSearch': 'Keyword Search', + 'collaborationSharing': 'Collaboration & Sharing', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', + 'meetingHeaderDesc2': + 'Suitable for business meetings, class notes, and interview minutes.', + 'meetingAutoRecording': 'Auto recording and segmentation', + 'meetingSpeakerTagging': 'Speaker labeling', + 'meetingLongAudioTranscription': 'Long audio transcription', + 'meetingKeyPointSummary': 'Key point extraction', + 'meetingTopicNameSearch': 'Search by topic/name', + 'meetingTimelineJump': 'Timeline jump', + 'meetingExportSummary': 'Export minutes', + 'meetingMultiPlatformShare': 'Share across platforms', + 'meetingDisclaimer': + 'Use in quiet environments; performance depends on microphone and network.', + + // 商品模块 - VIP会员页 'benefitsOverview': 'Benefits overview', 'higherQuota': 'Higher usage quota', 'lowerUnitPrice': 'Lower unit price', @@ -418,7 +418,32 @@ const Map enUS = { 'vipDisclaimer': 'Actual benefits depend on the package details and may change with versions.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basic 100', + 'ai_002_name': 'AI Basic 500', + 'ai_003_name': 'AI Basic 1000', + 'meet_001_name': 'Meeting Basic 100', + 'meet_002_name': 'Meeting Basic 500', + 'meet_003_name': 'Meeting Basic 1000', + 'trans_001_name': 'Translation Basic 100', + 'trans_002_name': 'Translation Basic 500', + 'trans_003_name': 'Translation Basic 1000', + 'ai_001_desc': 'Includes 100 uses. Access core AI features.', + 'ai_002_desc': 'Includes 500 uses. Access core AI features.', + 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', + 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', + 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', + 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', + 'trans_001_desc': 'Includes 100 translations (voice/text).', + 'trans_002_desc': 'Includes 500 translations (voice/text).', + 'trans_003_desc': 'Includes 1000 translations (voice/text).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Skip', 'next': 'Next', 'sayLilyHint': 'Say "Lily Lily" to the mic', @@ -429,7 +454,6 @@ const Map enUS = { 'guideAwakenSuccess': 'Great! Lily is awake—ask it to help.', 'confirmInput': 'Confirm Input', 'guideClickSendPrefix': 'Tap send, ', - // AI 引导步骤 'guideWeatherStart': 'Tell Lily: “What’s the weather today?”', 'guideWeatherInput': 'What’s the weather today?', 'guideWeatherSend': 'Lily will report the weather in real time', @@ -456,7 +480,7 @@ const Map enUS = { 'guideSmsSend': 'Lily will send the message', 'guideSmsEnd': 'Message sent—voice control is convenient', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "Start Meeting", 'edit': 'Edit', 'delete': 'Delete', @@ -468,8 +492,6 @@ const Map enUS = { 'recordingDetails': 'Recording Details', 'aiSummary': 'AI Summary', 'meetingTranscript': 'Meeting Transcript', - - // Meeting模块 - 导航和基础功能 'files': 'Files', 'mine': 'Mine', 'connect': 'Connect', @@ -528,7 +550,6 @@ const Map enUS = { 'summarizing': 'Summarizing...', 'analyzing': 'Analyzing...', 'summaryComplete': 'Summary Complete', - //'generating': 'Generating...', 'generate': 'Generate', 'overview': 'Overview', 'transcription': 'Transcription', @@ -537,6 +558,98 @@ const Map enUS = { 'editSpeaker': 'Edit', 'nameSpeaker': 'Name Speaker', + // Meeting模块 - 转写与总结 + 'reSummarize': 'Re-summarize', + 'dateAndTime': 'Date & Time', + 'location': 'Location', + 'attendees': 'Attendees', + 'inputLocation': 'Enter Location', + 'inputAttendees': 'Enter Attendees', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Select Summary Template', + 'useThisTemplate': 'Use This Template', + 'lastUsed': 'Last Used', + 'create': 'Create', + 'templateDetails': 'Template Details', + 'tag': 'Tag', + 'description': 'Description', + 'template': 'Template', + 'deleteTemplate': 'Delete Template', + 'deleteTemplateConfirm': 'Are you sure you want to delete this template?', + 'editTemplate': 'Edit Template', + 'createTemplate': 'Create Template', + 'name': 'Name', + 'templateContentHint': + 'Please enter template content! Tip: Click the AI button above to quickly generate template content based on the name and description you entered', + 'inputNameHint': 'Please enter name', + 'inputDescHint': 'Please enter description', + 'custom': 'Custom', + 'pleaseEnter': 'Please enter ', + 'viewAll': 'View All', + 'recordingLanguage': 'Recording Language', + 'chineseSimplified': 'Chinese Mandarin (Simplified)', + 'meetingGenerateNow': 'Generate Now', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Importing...', + 'batchImporting': 'Batch importing...', + 'importingLocalRecordings': 'Importing local recordings...', + 'importFailed': 'Import file failed: {filePath}, error: {error}', + 'importSuccess': 'Successfully imported {count} local recordings', + 'importError': 'Import failed: {error}', + 'pleaseSelectAudioFile': 'Please select audio file', + 'shareAudio': 'Share Meeting Audio', + 'shareComplete': 'Share complete!', + 'shareFailed': 'Share failed: {error}', + 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Save Mind Map', + 'shareMindMap': 'Share Mind Map', + 'shareSuccess': 'Share Success', + + // Meeting模块 - AI问答 + 'askAI': 'Ask AI ...', + 'askAIPrompt': 'What can I help you with today?', + 'continueAsk': 'Continue Asking', + 'todoList': 'To-Do List', + 'extractConclusion': 'Extract Conclusion', + 'generateKeyIndicators': 'Generate Key Indicators', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Share Link', + 'copyTranscript': 'Copy Transcript', + 'copySummary': 'Copy Summary', + 'exportAudio': 'Export Audio', + 'exportTranscript': 'Export Transcript', + 'shareMeetingAudio': 'Share Meeting Audio', + 'exportSummary': 'Export Summary', + 'exportAs': 'Export As', + 'exportingPDF': 'Exporting PDF...', + 'export': 'Export', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Apply to All Paragraphs of This Speaker', + 'summaryWillBeUpdatedAutomatically': + 'Summary will be updated automatically based on the template', + 'nameCurrentSpeaker': 'Name Current Speaker', + 'recentlyUsedNames': 'Recently Used Names', + 'applyToCurrentParagraph': 'Apply to Current Paragraph', + 'totalTime': 'Total Time', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Summary speakers will be updated automatically', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sync to Cloud', + 'syncToCloudTip': + 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sync VOITRANS APP', + 'transcriptionRecord': 'Transcription Record', + // Meeting模块 - 我的页面 'transcriptionRecords': 'Transcription Records', 'templateCommunity': 'Template Community', @@ -555,7 +668,7 @@ const Map enUS = { 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', 'unlockNow': 'Unlock Now', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'Comparison', 'detailedInfo': 'Detailed Information', 'monthlyTranscriptionTime': 'Monthly Transcription Time', @@ -591,8 +704,6 @@ const Map enUS = { 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', 'multipleExportFormatsDesc': 'Export your audio recordings, transcription text and summaries in various formats (TXT, PDF, JPEG) to meet your needs.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'Upgrade Your Membership', 'yearlySubscription': 'Yearly Subscription', 'monthlySubscription': 'Monthly Subscription', @@ -621,138 +732,28 @@ const Map enUS = { 'Activated immediately after purchase, valid for 2 years after activation.', 'purchase': 'Purchase', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'create': 'Create', - 'templateDetails': 'Template Details', - 'tag': 'Tag', - 'description': 'Description', - 'template': 'Template', - 'deleteTemplate': 'Delete Template', - 'deleteTemplateConfirm': 'Are you sure you want to delete this template?', - 'editTemplate': 'Edit Template', - 'createTemplate': 'Create Template', - 'name': 'Name', - 'templateContentHint': - 'Please enter template content! Tip: Click the AI button above to quickly generate template content based on the name and description you entered', - 'inputNameHint': 'Please enter name', - 'inputDescHint': 'Please enter description', - 'custom': 'Custom', - 'pleaseEnter': 'Please enter ', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Recording Language', + 'cantonese': 'Cantonese', + 'sichuan': 'Sichuan Dialect', + 'shanghai': 'Shanghai Dialect', - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': 'Save Mind Map', - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 错误提示相关 'analysisFailed': 'Analysis failed, please try again later', 'transcriptionFailed': 'Transcription failed, please try again later', 'summaryFailed': 'Summary failed, please try again later', 'summaryFailedShort': 'Summary failed', 'transcriptionFailedShort': 'Transcription failed', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': 'Audio player is not ready, please wait', 'playFailed': 'Playback failed', 'audioFileNotFound': 'Audio file not found', - 'fetchingAudio': 'Fetching audio from cloud...', // Prompt shown when local audio file is missing and downloading from cloud + 'fetchingAudio': + 'Fetching audio from cloud...', // Prompt shown when local audio file is missing and downloading from cloud 'playerLoadFailed': 'Audio player failed to load', - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': 'Chinese Mandarin (Simplified)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': 'English', - // 'japanese': 'Japanese', - // 'korean': 'Korean', - // 'french': 'French', - // 'spanish': 'Spanish', - // 'portuguese': 'Portuguese', - // 'indonesian': 'Indonesian', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - 'export': 'Export', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Apply to All Paragraphs of This Speaker', - 'summaryWillBeUpdatedAutomatically': - 'Summary will be updated automatically based on the template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', - // 设置页 "systemSettings": "System Settings", //系统设置 "vipRecharge": "VIP Recharge", //会员充值 @@ -803,27 +804,15 @@ const Map enUS = { "bleHeadsetFirmwareUpgrade": "BLE Headset Firmware Upgrade", // BLE耳机固件版本升级 "deviceManagement": "Device Management", // 设备管理 "manageConnectedDevices": "Manage Connected Bluetooth Devices", // 管理已绑定的蓝牙设备 - -//设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Current version is already the latest {version}', 'checkUpdateFailed': 'Check update failed', 'networkErrorRetry': 'Network error, please try again later', - -// 设备管理相关 - // 'clearPairedDevices': 'Clear Paired Devices', - // 'clearPairedDevicesConfirm': - // 'Are you sure you want to clear all paired devices?', - // 'clearPairedDevicesSuccess': 'Clear paired devices successfully', - // 'clearPairedDevicesFailed': 'Clear paired devices failed', - - // 设置页面 - 实时语音对话 'realtimeVoiceChat': 'Real-time Voice Chat', 'realtimeVoiceChatInfo': 'Experience intelligent voice interaction features (Preview)', 'loading': 'Loading...', -//设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "Unknown Device", "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", @@ -839,8 +828,7 @@ const Map enUS = { "Are you sure you want to unbind device \"{deviceName}\"?", "confirmUnbindAction": "Confirm Unbind", -// Agent模块 - //Agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Clear Chat History", "online": "Online", @@ -873,7 +861,7 @@ const Map enUS = { "voice_interrupt_tip": "When enabled: The AI won't be interrupted by your voice while speaking and can only handle one conversation round at a time. To start a new round, just say the wake-up word.", // 开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词开启新一轮对话。关闭后:播报期间保持拾音,可能出现回声或误触发。 - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "Play some music", "presetNavigation": "Navigation to", "presetWeather": "Today's weather", @@ -885,7 +873,7 @@ const Map enUS = { "todayNews": "What's the news today?", // 今日新闻 "nearbyFood": "What delicious food is nearby?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Hello! I\'m **Lily**, I can help you:\n\n' '• Answer questions and provide information\n\n' '• Real-time voice translation\n\n' @@ -905,18 +893,17 @@ const Map enUS = { 'startVoiceInput': 'Start voice input', 'startPhoneCallMode': 'Start phone call mode, begin voice input', - //Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Type your message here...', // 全屏编辑器输入提示 'characterCount': '{count} characters', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copy', 'copySuccess': 'Copy successful', 'report': 'Report', 'submitSuccess': 'Submit successful', 'submitFailed': 'Submit failed', 'reportSubmitted': 'Report submitted, we will process it as soon as possible', - //'networkError': 'Network error, please try again later', 'harmfulUnsafe': 'Harmful/Unsafe', 'pornographicVulgar': 'Pornographic/Vulgar', 'misleadingAttack': 'Misleading/Attack', @@ -926,17 +913,21 @@ const Map enUS = { 'other': 'Other', 'reportDescriptionHint': 'We want to know the reason for your report, you can describe the problem you encountered.', - //'submit': 'Submit', - - //Message_bubble 'generatedByAi': 'Generated by AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Tool Call', + 'noResult': 'No Result', + 'noToolCallContentToCopy': 'No tool call content to copy', + 'toolCallDetails': 'Tool Call Details:', + 'toolCallContentCopied': 'Tool call content copied to clipboard', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Here are some recommended music:', 'playList': 'Playlist', 'moreMusic': 'More music', -//导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': ' km', // 公里单位 'meters': ' m', // 米单位 'hours': ' hours', // 小时单位 @@ -951,8 +942,31 @@ const Map enUS = { "bicycling": "Cycling", // 骑行 "tsransit": "Transit", // 公交 - //天气卡片 weather_card + // Agent模块 - 天气卡片 'weatherQuery': 'Weather Query:', + + // 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', + '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', 'highest': 'High', 'lowest': 'Low', 'futureForecast': 'Future Forecast', @@ -981,18 +995,8 @@ const Map enUS = { "friday": "Fri", "saturday": "Sat", "sunday": "Sun", - // First bind rewards dialog - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sunny", "partlyCloudy": "Partly Cloudy", "partlySunny": "Partly Sunny", @@ -1013,7 +1017,141 @@ const Map enUS = { "haze": "Haze", "strongWind": "Strong Wind", - // 编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Picture Translation", + "textTranslation": "Text Translation", + + // 翻译模块 - 主页 + "translationHistory": "Translation History", + "enableRecording": "Enable Recording", + "viewAudioFiles": "View Audio Files", + "headsetUser": "Headset User", + "phoneUser": "Phone User", + "selectSourceLanguage": "Select Source Language", + "selectTargetLanguage": "Select Target Language", + "me": "Me", + "counterPart": "Counterpart", + "bluetoothCallStateError": + "Please make sure the Bluetooth headset is connected to the phone and in a call state", + "autoDetect": "Auto Detect", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Language detection failed", + "inputTextToTranslate": "Please enter the text to translate", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Disable Floating Window', + 'enableFloatingWindow': 'Enable Floating Window', + 'permissionTip': 'Permission Tip', + 'micPermissionRequiredForRecording': + 'Microphone permission is required for recording', + 'deleteTranslationRecordError': 'Error deleting translation record: @error', + "translationFailed": "Translation failed", + "translating": "Translating", + "translate": "Translate", + "pleaseInputText": "Please input text", + "textTooLong": "Text too long, max 5000 characters", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "No translation history", + "historyRecords": "History Records", + "clearResults": "Clear Results", + "clearHistory": "Clear History", + "clearHistoryConfirm": + "Are you sure you want to clear all translation history? This action cannot be undone.", + "unknownLanguage": "Unknown Language", + "deleteSessionRecord": "Delete Session Record", + "deleteSessionConfirm": + "Are you sure you want to delete all translation records for this session? This action cannot be undone.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Select Image Source", + "imagePreview": "Image Preview", + "translationResult": "Translation Result", + "recognitionResult": "Recognition Result", + "translatedImagePreview": "Translated Image Preview", + "translatedImageLoadFailed": "Failed to load translated image", + "pleaseSelectImage": "Please select an image", + "imageLoadFailed": "Image load failed", + "imageQuality": "Image Quality", + "maxSize": "Max Size", + "close": "Close", + "setImageQuality": "Set Image Quality", + "currentQuality": "Current quality: @value%", + "setMaxSize": "Set Max Size", + "currentMaxSize": "Current: @pxpx", + "waitingForAction": "Waiting for action", + "pleaseSelectImageToStart": "Please select an image to start", + "chooseImage": "Choose Image", + "openingCamera": "Opening camera...", + "openingPhotoAlbum": "Opening photo album...", + "cancelled": "Cancelled", + "userCancelledSelection": "User cancelled selection", + "translatingImage": "Translating Image", + "callingImageTranslateService": "Calling image translation service...", + "savingRecord": "Saving Record", + "savingTranslationResult": "Saving translation result...", + "translationCompleted": "Translation Completed", + "allStepsCompleted": "All steps completed", + "processingFailed": "Processing Failed", + "imageProcessingOrTranslationFailed": + "Image processing or translation failed. Please retry.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "Image translation API returned empty result", + "imageTranslationFailedTryLater": + "Image translation failed. Network issue or rate limit. Please try later", + "imageTranslationApiException": + "Image translation API exception. Check network and retry", + "permissionRequired": "Permission Required", + "cameraPermissionRequired": "Camera permission required to take photos", + "photoAlbumPermissionRequired": + "Photo album permission required to pick images", + "translationDetails": "Translation Details", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Translation Time", + "shareInDevelopment": "Sharing feature under development", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Translate Audio Files", + "noAudioFiles": "No audio files", + "calculating": "Calculating...", + "playing": "Playing...", + "paused": "Paused", + "clickToPlay": "Click to play", + "rename": "Rename", + "smartTranscription": "Smart Transcription", + "renameAudioFile": "Rename Audio File", + "enterNewFileName": "Please enter new file name", + + // 翻译模块 - 翻译详情 + "originalRecord": "Original Record", + "recordSummary": "Record Summary", + "clickToGenerateSummary": + "Click the button below to generate session summary", + "summaryContent": "Summary Content", + "copied": "Copied", + "summaryCopiledToClipboard": "Summary copied to clipboard", + "extractSummary": "Extract Summary", + "summaryGenerated": "Summary generated", + "generating": "Generating...", + "regenerate": "Regenerate", + "summaryTimeoutMessage": + "Summary generation request timed out, possibly due to network issues or server busy.", + "deleteTranslationRecord": "Delete Translation Record", + "deleteTranslationConfirm": + "Are you sure you want to delete this translation record? This action cannot be undone.", + "originalText": "Original Text", + "translatedText": "Translated Text", + "sessionSummary": "Session Summary", + "cannotShare": "Cannot Share", + "generateSummaryFirst": "Please generate summary first", + "translationSessionRecord": "Translation Session Record", + + // 个人资料模块 "editProfile": "Edit Profile", "avatar": "Avatar", "nickname": "Nickname", @@ -1029,8 +1167,6 @@ const Map enUS = { 'Are you sure you want to permanently delete your account? This action cannot be undone.', 'clean': 'Clear Cache', // 清除缓存 'cleanTips': 'Are you sure you want to clear personal cache?', // 确定要清除个人缓存吗? - - //Profile 错误信息 'networkConnectionFailed': 'Network connection failed, please check network settings and try again', 'serverTemporarilyUnavailable': @@ -1047,10 +1183,6 @@ const Map enUS = { 'Network connection failed, please check network settings', 'serverInternalErrorRetryLater': 'Server internal error, please try again later', - -//Profile 用户交互 -//'error': 'Error', -//'success': 'Success', 'imageCompressionFailed': 'Image compression failed', 'avatarUpdateFailed': 'Avatar update failed', 'usernameCannotBeEmpty': 'Username cannot be empty', @@ -1061,8 +1193,6 @@ const Map enUS = { 'logoutFailedRetry': 'Logout failed, please try again', 'accountPermanentlyDeleted': 'Account permanently deleted', 'deleteAccountFailedRetry': 'Delete account failed, please try again', - - // 账号服务相关 'clearUserDataFailed': 'Failed to clear user data', // 清理用户数据失败 'deleteUserDataFailed': 'Failed to delete user data', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Third-party logout successful', // 第三方登录退出成功 @@ -1075,7 +1205,12 @@ const Map enUS = { 'accountServiceInitialized': 'AccountService initialized', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + 'meetingStoragePermissionExplanation': + 'We need access to storage permissions so you can select and upload audio files.', + 'meetingStoragePermissionPermanentDenial': + 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', 'getPermissionStatusFailed': 'Failed to get permission status', 'communicationPermissions': 'Communication Permissions', 'bluetoothPermissions': 'Bluetooth Permissions', @@ -1088,7 +1223,6 @@ const Map enUS = { 'phone': 'Phone', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': 'Bluetooth', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Calendar Write', @@ -1143,8 +1277,6 @@ const Map enUS = { 'permanentDenialText': 'You have permanently denied {permission} permission, please go to app settings to enable it', 'goToSettings': 'Go to Settings', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', 'bluetoothConnect': 'Bluetooth Connect', 'bluetoothScanExplanation': @@ -1169,7 +1301,6 @@ const Map enUS = { 'You have permanently denied notification permission, please go to settings to enable it.', 'locationPermissionPermanentDenial': 'You have permanently denied location permission, please go to settings to enable it.', - //'microphonePermission': 'Microphone', 'storagePermission': 'Storage', 'microphonePermissionExplanation': 'We need microphone permission to record audio content.', @@ -1179,6 +1310,12 @@ const Map enUS = { 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', 'storagePermissionPermanentDenial': 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'permissionUtilNeed': 'Need ', + 'permissionUtilPermission': ' Permission', + 'permissionUtilRestricted': ' Permission Restricted', + 'permissionUtilRestrictedMessage': + 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1196,15 +1333,7 @@ const Map enUS = { 'native.notification.music.pause': 'Pause', // 暂停 'native.notification.qqMusic.playing': 'Playing music', // 正在播放音乐 -//permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'New Version Found', // 版本更新对话框标题 'remindLater': 'Remind Later', // 稍后提醒按钮 'updateNow': 'Update Now', // 立即更新按钮 @@ -1215,253 +1344,7 @@ const Map enUS = { 'updateErrorRetry': 'Error occurred during update, please try again later', // 更新错误重试提示 - // 国家列表 - "邮箱": "Email", - "中国": "China", - "美国": "United States", - "加拿大": "Canada", - "俄罗斯": "Russia", - "英国": "United Kingdom", - "德国": "Germany", - "意大利": "Italy", - "法国": "France", - "西班牙": "Spain", - "南非": "South Africa", - "沙特阿拉伯": "Saudi Arabia", - "土耳其": "Turkey", - "日本": "Japan", - "韩国": "South Korea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonesia", - "阿联酋": "United Arab Emirates", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hong Kong, China", - "中国澳门": "Macau, China", - "中国台湾": "Taiwan, China", - "埃及": "Egypt", - "希腊": "Greece", - "荷兰": "Netherlands", - "比利时": "Belgium", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Switzerland", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Sweden", - "挪威": "Norway", - "波兰": "Poland", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Lithuania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Czech Republic", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Morocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "East Timor", - "斐济": "Fiji", - "所罗门群岛": "Solomon Islands", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Translation History", - "enableRecording": "Enable Recording", - "viewAudioFiles": "View Audio Files", - "headsetUser": "Headset User", - "phoneUser": "Phone User", - "selectSourceLanguage": "Select Source Language", - "selectTargetLanguage": "Select Target Language", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // Text translation & language detection - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "No translation history", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Clear History", - "clearHistoryConfirm": - "Are you sure you want to clear all translation history? This action cannot be undone.", - "unknownLanguage": "Unknown Language", - "deleteSessionRecord": "Delete Session Record", - "deleteSessionConfirm": - "Are you sure you want to delete all translation records for this session? This action cannot be undone.", - - // Picture Translation module - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Translate Audio Files", - "noAudioFiles": "No audio files", - "calculating": "Calculating...", - "playing": "Playing...", - "paused": "Paused", - "clickToPlay": "Click to play", - "rename": "Rename", - "smartTranscription": "Smart Transcription", - "renameAudioFile": "Rename Audio File", - "enterNewFileName": "Please enter new file name", - - // 翻译详情页(translation_detail_view.dart) - "originalRecord": "Original Record", - "recordSummary": "Record Summary", - "clickToGenerateSummary": - "Click the button below to generate session summary", - "summaryContent": "Summary Content", - "copied": "Copied", - "summaryCopiledToClipboard": "Summary copied to clipboard", - "extractSummary": "Extract Summary", - "summaryGenerated": "Summary generated", - "generating": "Generating...", - "regenerate": "Regenerate", - "summaryTimeoutMessage": - "Summary generation request timed out, possibly due to network issues or server busy.", - "deleteTranslationRecord": "Delete Translation Record", - "deleteTranslationConfirm": - "Are you sure you want to delete this translation record? This action cannot be undone.", - "originalText": "Original Text", - "translatedText": "Translated Text", - "sessionSummary": "Session Summary", - "cannotShare": "Cannot Share", - "generateSummaryFirst": "Please generate summary first", - "translationSessionRecord": "Translation Session Record", - // 配对模块 - // 配对页面 "devicePairing": "Device Pairing", "connectYourDeepSoundHeadset": "Connect Your Voitrans Headset", "bind": "Bind", @@ -1470,14 +1353,11 @@ const Map enUS = { "autoInputCode": "Auto Input Code", "skipBinding": "Skip Binding", "rescan": "Rescan", - "verifyingDevice": "Verifying device...", "confirmBinding": "Confirm Binding", "associatingDevice": "Associating device...", "goToBluetoothSettings": "Go to Bluetooth Settings", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Ready to pair", "preparingPairingEnvironment": "Preparing pairing environment...", "connectDeepSoundViaSystemBluetooth": @@ -1487,8 +1367,6 @@ const Map enUS = { "waitingCompletePairing": "Please wait, completing pairing...", "pairingSuccessRedirecting": "Pairing successful! Redirecting to home page...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Please ensure connected device is Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1500,19 +1378,12 @@ const Map enUS = { "authorizationFailedCheckCode": "Authorization failed, please check authorization code", "pairingFailedRetry": "Pairing failed, please retry", - -//配对控制器相关 - //'connectDevice': 'Connect Device', 'pleaseEnableBluetooth': 'Please enable Bluetooth', 'deviceDisconnected': 'Device disconnected', 'readyToStartPairing': 'Ready to start pairing', 'checkingEnvironment': 'Checking environment...', 'ensureHeadsetOnAndPairingMode': 'Please ensure headset is on and in pairing mode', - //'goToBluetoothSettings': 'Go to Bluetooth Settings', - //'verifyingDevice': 'Verifying device...', - //'confirmBinding': 'Confirm Binding', - //'associatingDevice': 'Associating device...', 'establishingSecureConnection': 'Establishing secure connection...', 'needManualBindingAuthCode': 'Manual binding authorization code required...', 'pairingSuccessful': 'Pairing successful!', @@ -1533,8 +1404,6 @@ const Map enUS = { 'bleConnectionFailed': 'BLE connection failed', 'deviceAuthorizationFailedCheckCode': 'Device authorization failed, please check authorization code', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1547,7 +1416,18 @@ const Map enUS = { 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'I Know', // 我知道了 - // 用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Welcome Reward", + "firstBindRewardDesc": "You've received binding rewards.", + "vipLevelLabel": "VIP Level:", + "expiryLabel": "Expiration:", + "notActivated": "Not activated", + "aiChatCreditsLabel": "AI Chat Credits:", + "translationCreditsLabel": "Translation Credits:", + "meetingCreditsLabel": "Meeting Credits:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Feedback", 'feedbackInfo': 'Provide feedback or suggestions', 'feedbackDescription': 'Please describe your issue or suggestion', @@ -1588,7 +1468,60 @@ const Map enUS = { "removeEarbudsEnsureBattery": "Remove both earbuds and ensure battery level is above 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'New version @version found', + 'otaConfirmUpdateNow': 'Update now?', + 'otaUpdate': 'Update', + 'otaUpgradeSuccess': 'Upgrade Successful', + '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', + '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', + + // 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', + + // 音乐模块 "noMusic": "No Music", // 暂无音乐 "noPlayingMusic": "No Playing Music", // 暂无播放音乐 "unknownSong": "Unknown Song", // 未知歌曲 @@ -1636,22 +1569,122 @@ const Map enUS = { "波斯语": "Persian", "斯瓦希里语": "Swahili", - // Time related - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // Time extensions (used by picture translation) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示(中文注释) - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "China", + "美国": "United States", + "加拿大": "Canada", + "俄罗斯": "Russia", + "英国": "United Kingdom", + "德国": "Germany", + "意大利": "Italy", + "法国": "France", + "西班牙": "Spain", + "南非": "South Africa", + "沙特阿拉伯": "Saudi Arabia", + "土耳其": "Turkey", + "日本": "Japan", + "韩国": "South Korea", + "新加坡": "Singapore", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Philippines", + "印度尼西亚": "Indonesia", + "阿联酋": "United Arab Emirates", + "墨西哥": "Mexico", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "New Zealand", + "中国香港": "Hong Kong, China", + "中国澳门": "Macau, China", + "中国台湾": "Taiwan, China", + "埃及": "Egypt", + "希腊": "Greece", + "荷兰": "Netherlands", + "比利时": "Belgium", + "匈牙利": "Hungary", + "罗马尼亚": "Romania", + "瑞士": "Switzerland", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Sweden", + "挪威": "Norway", + "波兰": "Poland", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxembourg", + "爱尔兰": "Ireland", + "冰岛": "Iceland", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Finland", + "保加利亚": "Bulgaria", + "立陶宛": "Lithuania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraine", + "塞尔维亚": "Serbia", + "克罗地亚": "Croatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Czech Republic", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Morocco", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Ethiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Jordan", + "伊拉克": "Iraq", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afghanistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Cambodia", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "East Timor", + "斐济": "Fiji", + "所罗门群岛": "Solomon Islands", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/es_es.dart b/lib/core/translations/language/es_es.dart index 23aa0d7e5..777d4f997 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...', @@ -18,6 +19,11 @@ const Map esES = { "unknownError": "Error desconocido", "asrConnectionFailed": "La conexión con el servicio de reconocimiento de voz ha fallado. Comprueba la red o inténtalo de nuevo más tarde.", + "justNow": "Hace un momento", + "minutesAgo": "Hace @minutes minutos", + "yesterday": "Ayer", + "daysAgo": "Hace @days días", + "hoursAgo": "Hace @hours horas", // 启动页 "slogan": "Conectando el mundo, más allá del sonido", @@ -28,7 +34,7 @@ const Map esES = { "explore": "Explorar", "settings": "Configuración", - // 语言 + // 语言列表 "followingSystem": "Seguir sistema", "chinese": "Chino", "english": "Inglés", @@ -72,7 +78,7 @@ const Map esES = { "arabic": "Arabés", "persian": "Persio", - // 登录页 + // 登录模块 "welcome": "Bienvenido", "loginTips": "Inicia sesión o regístrate con número de teléfono o email", "accountNumber": "Número de teléfono o email", @@ -100,13 +106,9 @@ const Map esES = { "resendVerificationCode": "Reenviar código de verificación", "login": "Iniciar sesión", "usePasswordLogin": "Usar inicio de sesión con contraseña", - - // 隐私政策弹窗 "loginDeclaration": "Declaración de Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bienvenido a Voitrans, lee cuidadosamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Al hacer clic en 'Acepto y continúo' indicas que has leído completamente y aceptas los acuerdos anteriores. Al hacer clic en 'No acepto' se cerrará la aplicación.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "No acepto", // 不同意 @@ -166,7 +168,31 @@ const Map esES = { 'right': 'Derecha', 'checkConnectionStatusFailed': 'Fallo al verificar estado de conexión', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Error al inicializar Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Se necesitan permisos de Bluetooth y ubicacion para escanear dispositivos', + 'permissionRequestFailedWithError': + 'Error en la solicitud de permisos: @error', + 'needPermission': 'Permiso requerido', + 'blePermissionDialogContent': + 'Esta aplicacion necesita permisos de Bluetooth y ubicacion para escanear dispositivos. Por favor, activelos en Ajustes.', + 'needEnableBluetooth': 'Activar Bluetooth', + 'enableBluetoothDialogContent': + 'Por favor, active Bluetooth para escanear y conectar dispositivos.', + 'bleScanFailedWithError': 'Error en el escaneo: @error', + 'bleConnectionSuccess': 'Conexion exitosa', + 'bleConnectedToDevice': 'Conectado a @device', + 'bleConnectionFailedWithError': 'Error de conexion: @error', + 'bleDisconnected': 'Desconectado', + 'bleDeviceDisconnected': 'Dispositivo desconectado', + 'bleDisconnectFailedWithError': 'Error al desconectar: @error', + 'signalStrong': 'Fuerte', + 'signalMedium': 'Media', + 'signalWeak': 'Debil', + 'signalVeryWeak': 'Muy debil', + + // 发现页 "searchAi": "Buscar funciones de IA...", "exploreSlogan": "Auriculares inteligentes, posibilidades infinitas", "exploreSlogan1": "Compañero inteligente, posibilidades infinitas", @@ -191,211 +217,279 @@ const Map esES = { "usageStats": "Estadísticas de uso", "usageStatsInfo": "Consulte las estadísticas de uso de la aplicación", "scene": "Escenarios", + // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "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": "Estadísticas de traducción", + "meetingStats": "Estadísticas de reuniones", + "today": "Hoy", + "thisWeek": "Esta semana", + "thisMonth": "Este mes", + "history": "Historial", + "currentSessionStats": "Estadísticas de la sesión actual", + "translationCount": "Cantidad de traducciones", + "sessionDuration": "Duración de la sesión", + "characters": "Caracteres", + "recordingDuration": "Duración de la grabación", + "totalApiCalls": "Total de llamadas API", + "sessionCount": "Número de sesiones", + "totalCharacters": "Total de caracteres", + "apiCallStats": "Estadísticas de llamadas API", + "translationApi": "API de traducción", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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": "Estadísticas de volumen de datos", + "sourceTextCharacters": "Caracteres del texto fuente", + "ttsTextCharacters": "Caracteres de texto TTS", + "effectiveAudioDuration": "Duración de audio efectiva", + "totalSessionDuration": "Duración total de la sesión", + "costStats": "Estadísticas de coste", + "estimatedCost": "Coste estimado", + "dailyCostThreshold": "Umbral de coste diario", + "monthlyCostThreshold": "Umbral de costo mensual", + "usageBehaviorStats": "Estadísticas de comportamiento de uso", + "mostUsedLanguagePair": "Par de idiomas más usado", + "mostUsedMode": "Modo más usado", + "asrApiCalls": "Llamadas ASR", + "totalAudioDuration": "Duración total de audio", + "audioFileSize": "Tamaño del archivo de audio", + "transcriptBytes": "Bytes de transcripción", + "loadFailed": "Error al cargar", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "No se pudieron cargar las estadísticas. Inténtalo de nuevo más tarde.", + "cleanupComplete": "Limpieza completada", + "cleanedOldData": "Datos de más de 90 días eliminados", + "exportFeature": "Función de exportación", + "exportInDevelopment": "La exportación de datos está en desarrollo", + + // 商品模块 - 通用 + 'availablePackages': 'Paquetes disponibles', + 'remainingQuota': 'Cuota restante', + 'totalQuota': 'Cuota total', + 'remaining': 'Restante', + 'featureDescription': 'Descripción de función', + 'paymentSuccess': 'Pago exitoso', + 'paymentFailed': 'Pago fallido', + 'gotIt': 'Entendido', + 'paymentFailedTryAgain': 'Pago fallido. Por favor, intente de nuevo.', + 'selectPaymentMethod': 'Seleccione el método de pago', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Error al crear el pedido de WeChat', + 'alipayOrderCreateFailed': 'Error al crear el pedido de Alipay', + 'appleOrderCreateFailed': 'Error al crear el pedido de Apple', + 'googleOrderCreateFailed': 'Error al crear el pedido de Google', + 'paypalOrderCreateFailed': 'Error al crear el pedido de PayPal', + 'paymentException': 'Excepción de pago', + 'paymentLaunchFailed': 'Error al iniciar el pago', + 'paymentExceptionWithError': 'Excepción de pago: @error', + 'paymentProcessingCheckLater': + 'Su pedido está siendo procesado. Por favor, verifique más tarde.', + 'paymentResultQueryException': + 'Error al consultar el resultado del pago: @error', + 'orderConfirmedQuotaRefreshed': + 'Pedido confirmado. Su cuota ha sido actualizada.', + 'paymentCompletedConfirming': 'Pago completado. Confirmando…', + 'paymentCancelled': 'Pago cancelado', + 'paypalOpenedCompleteInBrowser': + 'PayPal abierto. Por favor, complete el pago en su navegador.', + 'paypalOpenFailed': 'No se puede abrir la página de pago de PayPal', + 'paymentTestTitle': 'Prueba de pago', + 'paymentTestOrderInfo': 'Información del pedido de prueba', + 'paymentTestProductId': 'ID del producto', + 'paymentTestProductDescription': 'Descripción del producto', + 'paymentTestWechatDescription': 'Prueba de pago con WeChat', + 'paymentTestAlipayDescription': 'Prueba de pago con Alipay', + 'paymentTestAmount': 'Monto', + 'paymentTestSelectAmount': 'Seleccione el monto de prueba', + 'paying': 'Pagando...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Estado del pago', + 'errorInfoWithMessage': 'Fallo: @message', + 'retest': 'Volver a probar', + 'paymentTestInstructionsTitle': 'Instrucciones', + 'paymentTestInstructionsContent': + '1. Seleccione un monto de prueba (recomendado: ¥0.01)\n2. Haga clic en el botón de pago para iniciar\n3. Complete el pago en la aplicación de pago\n4. Regrese para verificar el resultado', + 'startingWechatPayment': 'Iniciando WeChat Pay...', + 'startingAlipayPayment': 'Iniciando Alipay...', + 'wechatPaymentSuccess': '¡Pago con WeChat Pay exitoso!', + 'wechatPaymentFailed': 'Fallo de WeChat Pay', + 'wechatPaymentLaunchFailed': 'Error al iniciar WeChat Pay', + 'cannotLaunchWechatPayment': 'No se puede iniciar WeChat Pay', + 'wechatPaymentException': 'Excepción de WeChat Pay', + 'wechatPaymentTestCompleted': 'Prueba de WeChat Pay completada', + 'alipayPaymentSuccess': '¡Pago con Alipay exitoso!', + 'alipayPaymentFailed': 'Fallo de Alipay', + 'alipayPaymentLaunchFailed': 'Error al iniciar Alipay', + 'cannotLaunchAlipayPayment': 'No se puede iniciar Alipay', + 'alipayPaymentException': 'Excepción de Alipay', + "insufficientIntegral": "Puntos insuficientes", + "insufficientBalanceDesc": + 'Saldo insuficiente, ve a la página de recarga correspondiente para recargar.', + "recharge": 'Ir a recargar', + "aiMemberExpiredDesc": + 'La suscripción de IA ha caducado, ve a la página de recarga de membresía para renovarla.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Música y recomendaciones', + 'navigationAndRoutes': 'Navegación y rutas', + 'nearbySearch': 'Búsqueda cercana', + 'newsInformation': 'Noticias', + 'communicationAssistant': 'Asistente de comunicación', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Mayor cuota de conversación, más llamadas de herramientas, mayor longitud de contexto.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Ideal para preguntas de agente, resúmenes, análisis y ejecución de tareas.', + 'musicSearchPlaybackControl': + 'Búsqueda en biblioteca musical y control de reproducción', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Lista de reproducción inteligente y recomendaciones de canciones similares', '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', + 'Planificación de rutas y evitación de congestión', + 'voiceBroadcastAndWaypoints': + 'Emisión de voz y configuración de puntos de paso', + 'realTimeWeatherForecast': 'Tiempo en tiempo real y previsión meteorológica', + 'clothingAdviceAndTravelReminders': + 'Consejos de ropa y recordatorios de viaje', + 'poiSearchFoodGasParking': + 'Búsqueda de POI: restaurantes / gasolineras / aparcamiento', + 'ratingsHoursAndDirectRoutes': + 'Valoraciones, horarios de apertura y ruta directa', + 'hotNewsAndTopicOverview': 'Noticias destacadas y resumen de temas', + 'longArticleSummariesAndKeyPoints': + 'Resúmenes de artículos largos y puntos clave', + 'helpCallAndSMS': 'Ayuda con llamadas y SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Mensajes de plantilla y recordatorios programados', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Las funciones dependen de los permisos del dispositivo, la disponibilidad del servicio y las condiciones de la red.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transcripción en tiempo real', + 'sceneLexicon': 'Glosario de escenarios', + 'subtitleDisplay': 'Subtítulos', + 'transHeaderDesc1': + 'Interpretación simultánea en tiempo real y traducción de texto con voz de baja latencia.', + 'transHeaderDesc2': 'Ideal para viajes, negocios, conferencias y enseñanza.', + 'translateZhEn': 'Traducción chino–inglés', + 'lowLatencyVoiceBroadcast': 'Emisión de voz de baja latencia', + 'multiLangTextTranslation': 'Traducción de texto multilingüe', + 'termOptimizationContextPreserve': + 'Optimización de terminología y preservación del contexto', + 'lexiconTourBusinessLife': 'Léxicos de viaje/negocios/vida cotidiana', + 'personalVocabularyMemory': 'Memoria de vocabulario personal', + 'conversationSubtitleLargeText': + 'Subtítulos de conversación / Modo texto grande', + 'colorHighContrast': 'Alto contraste de color', + 'transDisclaimer': + 'El rendimiento de la traducción depende del micrófono, la latencia de la red y el ruido ambiental.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Grabación de reuniones', + 'transcriptionAndSummary': 'Transcripción y resumen', + 'keywordSearch': 'Búsqueda por palabra clave', + 'collaborationSharing': 'Colaboración y uso compartido', + 'meetingHeaderDesc1': + 'Grabación de audio, transcripción, búsqueda por palabras clave y resumen automático para mejorar la eficiencia de las reuniones.', + 'meetingHeaderDesc2': + 'Ideal para reuniones de negocios, apuntes de clase y actas de entrevistas.', + 'meetingAutoRecording': 'Grabación y segmentación automática', + 'meetingSpeakerTagging': 'Etiquetado de hablantes', + 'meetingLongAudioTranscription': 'Transcripción de audio largo', + 'meetingKeyPointSummary': 'Extracción de puntos clave', + 'meetingTopicNameSearch': 'Búsqueda por tema/nombre', + 'meetingTimelineJump': 'Salto en la línea de tiempo', + 'meetingExportSummary': 'Exportar actas', + 'meetingMultiPlatformShare': 'Compartir en múltiples plataformas', + 'meetingDisclaimer': + 'Úsalo en entornos silenciosos; el rendimiento depende del micrófono y la red.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Resumen de beneficios', + 'higherQuota': 'Mayor cuota de uso', + 'lowerUnitPrice': 'Menor precio unitario', + 'priorityService': 'Servicio prioritario', + 'exclusiveSupportChannel': 'Canal de soporte exclusivo', + 'fastResponse': 'Respuesta rápida a incidencias', + 'eventsAndDiscounts': 'Eventos y descuentos', + 'memberExclusiveEvents': 'Eventos exclusivos para miembros', + 'longTermDiscountPlan': 'Plan de descuento a largo plazo', + 'generalPrivileges': 'Privilegios generales', + 'earlyAccessNewFeatures': 'Acceso anticipado a nuevas funciones', + 'crossDeviceSync': 'Sincronización entre dispositivos', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', - - // 新手引导 / Onboarding - 'skip': "Omitir", - '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, ", - // AI 引导步骤 - '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", + 'Los beneficios reales dependen de los detalles del paquete y pueden variar con las versiones.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'IA Básico 100', + 'ai_002_name': 'IA Básico 500', + 'ai_003_name': 'IA Básico 1000', + 'meet_001_name': 'Reunión Básica 100', + 'meet_002_name': 'Reunión Básica 500', + 'meet_003_name': 'Reunión Básica 1000', + 'trans_001_name': 'Traducción Básica 100', + 'trans_002_name': 'Traducción Básica 500', + 'trans_003_name': 'Traducción Básica 1000', + 'ai_001_desc': 'Incluye 100 usos. Accede a las funciones principales de IA.', + 'ai_002_desc': 'Incluye 500 usos. Accede a las funciones principales de IA.', + 'ai_003_desc': 'Incluye 1000 usos. Accede a las funciones principales de IA.', + 'meet_001_desc': 'Incluye 100 grabaciones/transcripciones de reuniones.', + 'meet_002_desc': 'Incluye 500 grabaciones/transcripciones de reuniones.', + 'meet_003_desc': 'Incluye 1000 grabaciones/transcripciones de reuniones.', + 'trans_001_desc': 'Incluye 100 traducciones (voz/texto).', + 'trans_002_desc': 'Incluye 500 traducciones (voz/texto).', + 'trans_003_desc': 'Incluye 1000 traducciones (voz/texto).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 + 'skip': 'Omitir', + 'next': 'Siguiente', + 'sayLilyHint': 'Di “Lily Lily” al micrófono', + 'imHere': 'Aquí estoy~', + 'guideWelcomeWakeAI': + 'Bienvenido a Voitrans! Primero, despierta a tu IA “Lily”.', + 'aiReplyCompleted': 'Lily ha terminado de responder!', + 'aiThinking': 'Lily está pensando...', + 'guideAwakenSuccess': 'Genial! Lily está despierta—pídele ayuda.', + 'confirmInput': 'Confirmar entrada', + 'guideClickSendPrefix': 'Toca enviar, ', + 'guideWeatherStart': 'Dile a Lily: “¿Qué tiempo hace hoy?”', + 'guideWeatherInput': '¿Qué tiempo hace hoy?', + 'guideWeatherSend': 'Lily te informará del tiempo en tiempo real', + 'guideWeatherEnd': + 'Lily puede informar del tiempo en vivo—prueba otros comandos', + 'guideMusicStart': 'Dile a Lily: “Pon algo de rock”', + 'guideMusicInput': 'Pon algo de rock', + 'guideMusicSend': 'Lily buscará música para ti', + 'guideMusicEnd': 'Lily encontró música—prueba otros comandos', + 'guideNavStart': 'Dile a Lily: “Navega al Aeropuerto de Barajas”', + 'guideNavInput': 'Navega al Aeropuerto de Barajas', + 'guideNavSend': 'Lily planificará la ruta', + 'guideNavEnd': 'Navegación configurada—prueba otros comandos', '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", - - // 商务会议助手页 + 'Dile a Lily: “Crea un recordatorio de reunión para mañana a las 15:00”', + 'guideMeetingInput': + 'Crea un recordatorio de reunión para mañana a las 15:00', + 'guideMeetingSend': 'Lily creará un recordatorio de reunión', + 'guideMeetingEnd': 'Recordatorio creado—prueba otros comandos', + 'guidePhoneStart': 'Dile a Lily: “Llama a mamá”', + 'guidePhoneInput': 'Llama a mamá', + 'guidePhoneSend': 'Lily realizará la llamada', + 'guidePhoneEnd': 'Llamada realizada—prueba otros comandos', + 'guideSmsStart': 'Dile a Lily: “Envía un mensaje a papá: Llego a cenar”', + 'guideSmsInput': 'Mensaje a papá: Llego a cenar', + 'guideSmsSend': 'Lily enviará el mensaje', + 'guideSmsEnd': 'Mensaje enviado—el control por voz es muy cómodo', + + // Meeting模块 - 首页与导航 "startMeeting": "Iniciar reunión", 'edit': 'Editar', 'delete': 'Eliminar', @@ -407,250 +501,271 @@ const Map esES = { 'recordingDetails': 'Detalles de grabación', 'aiSummary': 'Resumen de IA', 'meetingTranscript': 'Transcripción de reunión', - - // Meeting模块 - 导航和基础功能 - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - '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': 'Archivos', + 'mine': 'Míos', + 'connect': 'Conectar', + 'allFiles': 'Todos los archivos', + 'searchInAllFiles': 'Buscar en todos los archivos', + 'from': 'Desde', + 'sortBy': 'Ordenar por', + 'creationTime': 'Hora de creación', + 'bluetoothConnection': 'Conexión Bluetooth', + 'meetingReconnect': 'Reconectar', + 'searching': 'Buscando...', + 'searchFailed': 'La búsqueda falló, comprueba si Bluetooth está activado', + 'aiPenNotFound': 'Dispositivo AI PEN no encontrado', + 'connectedToAiPen': 'Conectado al dispositivo AI PEN', + 'checkingNewFiles': 'Comprobando archivos nuevos para importar', + 'startingWifi': 'Iniciando Wi‑Fi...', + 'newFilesDetected': + 'Se han detectado nuevos archivos, preparando la importación', + 'noNewFiles': 'No hay archivos nuevos para importar', + 'connectingWifi': 'Conectando a la red Wi‑Fi...', + 'wifiConnected': 'Conexión Wi‑Fi realizada correctamente', + 'downloadingFiles': 'Descargando archivos...', + 'downloadingFileProgress': + 'Total {total} archivos, descargando archivo {current}', + 'downloadComplete': 'Descarga completada', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Descarga completada, {count} archivos en total, volviendo automáticamente en 2 segundos', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Iniciar grabación', + 'liveRecording': 'Grabación en vivo', + 'audioVideoRecording': 'Grabación de audio/vídeo', + 'callRecording': 'Grabación de llamadas', + 'importAudio': 'Importar audio', 'meetingRecordExitTitle': 'Salir de la grabación', // 退出录音 'meetingRecordExitMessage': 'Elige qué hacer antes de salir', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Finalizar y guardar', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Finalizar sin guardar', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Continuar grabando en segundo plano', // 后台继续录音 - 'meetingRecordStopTimeout': 'Se agotó el tiempo para detener la grabación. Inténtalo de nuevo.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'No se pudo detener la grabación. Inténtalo de nuevo.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'No se pudo guardar la grabación. Inténtalo de nuevo.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Continuar grabando en segundo plano', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Se agotó el tiempo para detener la grabación. Inténtalo de nuevo.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'No se pudo detener la grabación. Inténtalo de nuevo.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'No se pudo guardar la grabación. Inténtalo de nuevo.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Grabación en curso', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Grabando en segundo plano. Toca para volver a la aplicación.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Grabando en segundo plano. Toca para volver a la aplicación.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Mostrar sobre otras apps', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Para mostrar los resultados de la traducción durante llamadas o traducción de audio/vídeo, necesitamos el permiso de superposición. Esto te permite ver traducciones en tiempo real mientras usas otras apps.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Para mostrar la barra flotante de grabación (temporizador/pausa/reanudar) durante la grabación, necesitamos el permiso de superposición.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'No se pueden abrir los ajustes del sistema automáticamente. Abre Ajustes y habilita manualmente el permiso de superposición.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Para mostrar los resultados de la traducción durante llamadas o traducción de audio/vídeo, necesitamos el permiso de superposición. Esto te permite ver traducciones en tiempo real mientras usas otras apps.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Para mostrar la barra flotante de grabación (temporizador/pausa/reanudar) durante la grabación, necesitamos el permiso de superposición.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'No se pueden abrir los ajustes del sistema automáticamente. Abre Ajustes y habilita manualmente el permiso de superposición.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Transcribiendo...', + 'summarizing': 'Resumiendo...', + 'analyzing': 'Analizando...', + 'summaryComplete': 'Resumen completado', + 'generate': 'Generar', + 'overview': 'Vista general', + 'transcription': 'Transcripción', + 'summary': 'Resumen', + 'mindMap': 'Mapa mental', + 'editSpeaker': 'Editar', + 'nameSpeaker': 'Nombrar al orador', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Volver a resumir', + 'dateAndTime': 'Fecha y hora', + 'location': 'Ubicación', + 'attendees': 'Asistentes', + 'inputLocation': 'Introducir ubicación', + 'inputAttendees': 'Introducir asistentes', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Seleccionar plantilla de resumen', + 'useThisTemplate': 'Usar esta plantilla', + 'lastUsed': 'Último uso', + 'create': 'Crear', + 'templateDetails': 'Detalles de la plantilla', + 'tag': 'Etiqueta', + 'description': 'Descripción', + 'template': 'Plantilla', + 'deleteTemplate': 'Eliminar plantilla', + 'deleteTemplateConfirm': '¿Está seguro de que desea eliminar esta plantilla?', + 'editTemplate': 'Editar plantilla', + 'createTemplate': 'Crear plantilla', + 'name': 'Nombre', + 'templateContentHint': + 'Por favor, introduzca el contenido de la plantilla. Consejo: Haga clic en el botón de AI de arriba para generar rápidamente el contenido de la plantilla según el nombre y la descripción que ingresó', + 'inputNameHint': 'Por favor, introduzca el nombre', + 'inputDescHint': 'Por favor, introduzca la descripción', + 'custom': 'Personalizado', + 'pleaseEnter': 'Por favor ingrese', + 'viewAll': 'Ver todo', + 'recordingLanguage': 'Idioma de grabación', + 'chineseSimplified': 'Chino mandarín (simplificado)', + 'meetingGenerateNow': 'Generar ahora', + 'keyEventsAnalyzed': 'Se han analizado {count} eventos clave.', + 'aiAnalysisDesc': + 'El análisis de IA identifica eventos clave en las grabaciones, lo que te permite seleccionar los más importantes para la generación por IA.', + + // Meeting模块 - 文件操作 + 'importing': 'Importando...', + 'batchImporting': 'Importando en lote...', + 'importingLocalRecordings': 'Importando grabaciones locales...', + 'importFailed': 'Error al importar el archivo: {filePath}, error: {error}', + 'importSuccess': 'Se han importado correctamente {count} grabaciones locales', + 'importError': 'Error de importación: {error}', + 'pleaseSelectAudioFile': 'Selecciona un archivo de audio', + 'shareAudio': 'Compartir audio de la reunión', + 'shareComplete': 'Compartido correctamente', + 'shareFailed': 'Error al compartir: {error}', + 'fileProcessingFailed': + 'Error al procesar el archivo: {filePath}, error: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Guardar mapa mental', + 'shareMindMap': 'Compartir mapa mental', + 'shareSuccess': 'Compartido correctamente', + + // Meeting模块 - AI问答 + 'askAI': 'Preguntar a la IA...', + 'askAIPrompt': '¿En qué puedo ayudarte hoy?', + 'continueAsk': 'Seguir preguntando', + 'todoList': 'Lista de tareas', + 'extractConclusion': 'Extraer conclusiones', + 'generateKeyIndicators': 'Generar indicadores clave', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Compartir enlace', + 'copyTranscript': 'Copiar transcripción', + 'copySummary': 'Copiar resumen', + 'exportAudio': 'Exportar audio', + 'exportTranscript': 'Exportar transcripción', + 'shareMeetingAudio': 'Compartir audio de la reunión', + 'exportSummary': 'Exportar resumen', + 'exportAs': 'Exportar como', + 'exportingPDF': 'Exportando PDF...', + 'export': 'Exportar', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Aplicar a todos los párrafos de este orador', + 'summaryWillBeUpdatedAutomatically': + 'El resumen se actualizará automáticamente según la plantilla', + 'nameCurrentSpeaker': 'Nombrar al orador actual', + 'recentlyUsedNames': 'Nombres usados recientemente', + 'applyToCurrentParagraph': 'Aplicar al párrafo actual', + 'totalTime': 'Tiempo total', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Los oradores del resumen se actualizarán automáticamente', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sincronizar en la nube', + 'syncToCloudTip': + 'Sincroniza automáticamente tus grabaciones en la nube; puedes reproducir, gestionar y compartir grabaciones desde cualquier VOITRANS APP o VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sincronizar VOITRANS APP', + 'transcriptionRecord': 'Registro de transcripción', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Registros de transcripción', + 'templateCommunity': 'Comunidad de plantillas', + 'comingSoon': 'Próximamente', + 'integration': 'Integración', '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', - - // 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', + 'enabled': 'Activado', + 'disabled': 'Desactivado', + 'myVoitransDevice': 'Mi dispositivo VOITRANS', + 'helpAndFeedback': 'Ayuda y comentarios', + 'aboutVoitrans': 'Acerca de VOITRANS', + 'meetingDays': 'Días', + 'meetingHours': 'Horas', + 'voitransAiMember': 'Miembro de Voitrans AI', + 'unlockStarterMember': 'Desbloquear miembro inicial', + 'bindDeviceToActivate': + 'Vincula un dispositivo Voitrans para activar la membresía Starter', + 'unlockNow': 'Desbloquear ahora', + + // Meeting模块 - 会员与升级 + 'comparison': 'Comparación', + 'detailedInfo': 'Información detallada', + 'monthlyTranscriptionTime': 'Tiempo de transcripción mensual', + 'unlimited': 'Ilimitado', + 'professionalTemplates': 'Plantillas profesionales', + 'limited': 'Limitado', + 'fullTemplates': 'Plantillas completas', + 'professionalTerms': 'Términos profesionales', + 'customTemplates': 'Plantillas personalizadas', + 'visualMindMap': 'Mapa mental visual', + 'speakerIdentification': 'Identificación de hablantes', + 'aiVoiceEnhancement': 'Mejora de voz por IA', + 'audioImport': 'Importación de audio', + 'multipleExportFormats': 'Varios formatos de exportación', + 'professionalSummaryTemplates': 'Plantillas de resumen profesionales', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Diseño de plantillas profesionales para mejorar tu eficiencia de trabajo. Personalizadas según las necesidades del sector.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Puedes personalizar indicaciones de resumen según tus necesidades y utilizarlas para generar los resúmenes necesarios.', '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.', + 'Extrae de forma inteligente información más profunda de las grabaciones; genera tablas de datos, conclusiones clave de discusión, listas de tareas, correos de informe y otros contenidos formateados con un solo clic.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Más allá de los resúmenes: organiza y visualiza los puntos clave con mapas mentales para comprender el texto completo de forma más eficaz.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Descubre, comparte e inspírate en la biblioteca de plantillas creada por los usuarios.', '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 transcripción de audio admitirá la identificación de hablantes, lo que restaurará de forma más intuitiva el contenido de reuniones o llamadas telefónicas y hará que el resumen sea más preciso.', '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.', + 'Tus grabaciones y transcripciones se almacenarán de forma segura en servidores en la nube dedicados, con cifrado completo durante la carga y descarga para garantizar la privacidad y la seguridad.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'La mejora de voz por IA admite varios ajustes de reducción de ruido, elimina inteligentemente el ruido de fondo, mejora la claridad de la voz y mejora la calidad de reproducción de audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importa fácilmente archivos de audio desde aplicaciones locales o de terceros, como notas de voz, 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', + 'Exporta tus grabaciones de audio, textos de transcripción y resúmenes en varios formatos (TXT, PDF, JPEG) según tus necesidades.', + 'upgradeMembership': 'Actualiza tu membresía', + 'yearlySubscription': 'Suscripción anual', + 'monthlySubscription': 'Suscripción mensual', + 'proMonthly': 'Pro ¥60/mes', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Prueba gratuita de 7 días, luego ¥800/año. Cancela en cualquier momento antes de que finalice la prueba.', + 'sevenDayTrial': 'Prueba gratuita de 7 días', + 'unlimitedMonthly': 'Ilimitado ¥120/mes', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Prueba gratuita de 7 días, luego ¥1600/año. Cancela en cualquier momento antes de que finalice la prueba.', + 'trialNote': + '*Prueba gratuita durante 7 días; luego se cobra anualmente. Cancela en cualquier momento.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/mes', + 'subscribe': 'Suscribirse', + 'unlimitedPrice': 'Ilimitado ¥198', + 'unlimitedMonthlyPrice': '¥198/mes', '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: ', + '*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 minutos', + 'threeThousandMinutes': '3.000 minutos', + 'sixHundredMinutes': '600 minutos', + 'oneHundredTwentyMinutes': '120 minutos', + 'validityPeriod': '*Período de validez: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplicar a todos los párrafos de este orador', - 'summaryWillBeUpdatedAutomatically': - 'El resumen se actualizará automáticamente según la plantilla', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + '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', + 'cantonese': 'Cantonés', + 'sichuan': 'Dialecto de Sichuan', + 'shanghai': 'Dialecto de Shanghái', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Idioma desconocido', + 'analysisFailed': 'Análisis fallido, por favor intente más tarde', + 'transcriptionFailed': 'Transcripción fallida, por favor intente más tarde', + 'summaryFailed': 'Resumen fallido, por favor intente más tarde', + 'summaryFailedShort': 'Resumen fallido', + 'transcriptionFailedShort': 'Transcripción fallida', + + // Meeting模块 - 播放器 + 'playerNotReady': 'El reproductor de audio no está listo, por favor espere', + 'playFailed': 'Reproducción fallida', + 'audioFileNotFound': 'Archivo de audio no encontrado', + 'fetchingAudio': 'Obteniendo audio desde la nube...', + 'playerLoadFailed': 'Error al cargar el reproductor de audio', // 设置页 "systemSettings": "Configuración del sistema", @@ -659,10 +774,10 @@ const Map esES = { "translationRecharge": "Recarga de traducción", "meetingAssistantRecharge": "Recarga de asistente de reunión", "cloudSync": "Recarga de sincronización en la nube", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Servicio para miembros", + "bindRewardTitle": "Recompensas", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Se ha emitido la recompensa por vincular el dispositivo por primera vez. Toca OK para cerrar.", "joinDevice": "Dispositivo conectado:", "accountId": "ID de cuenta:", "systemSetting": "Configuración del sistema", @@ -704,43 +819,31 @@ const Map esES = { "bleHeadsetFirmwareUpgrade": "Actualización de firmware de auriculares BLE", "deviceManagement": "Gestión de dispositivos", "manageConnectedDevices": "Gestionar dispositivos Bluetooth conectados", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Actualmente la última versión {version}', 'checkUpdateFailed': 'Fallo al verificar actualizaciones', 'networkErrorRetry': 'Error de red, inténtalo de nuevo más tarde', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat de voz en tiempo real", "realtimeVoiceChatInfo": "Experimenta la función de interacción de voz inteligente (vista previa de función)", "loading": "Cargando...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Dispositivo desconocido", + "deviceTypeClassicBluetoothHeadset": "Auriculares Bluetooth clásicos", + "deviceTypeBleBluetoothHeadset": "Auriculares Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Grabadora de voz inteligente", + "deviceTypeSmartEye": "Gafas 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": "Aún no hay dispositivos vinculados", + "pleaseBindDeviceFirst": "Vincula primero un dispositivo para gestionarlo", + "noMacAddress": "Sin dirección MAC", + "licenseCode": "Código de licencia", + "confirmUnbind": "Confirmar desvinculación", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "¿Seguro que quieres desvincular el dispositivo \"{deviceName}\"?", + "confirmUnbindAction": "Confirmar desvinculación", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Limpiar historial de chat", "online": "En línea", @@ -768,22 +871,24 @@ const Map esES = { "loadMoreMessages": "Cargar más mensajes...", "loadFailedClickRetry": "Carga fallida, haz clic para reintentar", "swipeUpForMore": "Desliza hacia arriba para más", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Estoy ayudándote, por favor espera.", // 正在帮您,请稍等! + "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.', + + // Agent模块 - 预设提示词 + "presetMusic": "Pon algo de música", // 来点音乐 + "presetNavigation": "Navegar a", // 导航 + "presetWeather": "El tiempo de hoy", // 今日天气 + "presetNews": "Noticias de hoy", // 今日新闻 + "presetFood": "Comida cercana", // 美食 + "playSomeMusic": "Pon algo de música popular", // 播放一些流行音乐 + "navigationTo": "Ayúdame a navegar a", // 导航到 + "todayWeather": "¿Qué tiempo hace hoy?", // 今日天气 + "todayNews": "¿Qué noticias hay hoy?", // 今日新闻 + "nearbyFood": "¿Qué comida rica hay cerca?", // 美食 + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '¡Hola! Soy **Lily**, puedo ayudarte con:\n\n' '• Responder preguntas y proporcionar información\n\n' '• Traducción de voz en tiempo real\n\n' @@ -804,18 +909,17 @@ const Map esES = { 'startPhoneCallMode': 'Iniciar modo de llamada telefónica, iniciar entrada de voz', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ingresa tu mensaje aquí...', // 全屏编辑器输入提示 'characterCount': '{count} caracteres', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiar', 'copySuccess': 'Copiado exitosamente', 'report': 'Reportar', 'submitSuccess': 'Enviado exitosamente', 'submitFailed': 'Fallo al enviar', 'reportSubmitted': 'Reporte enviado, lo procesaremos lo antes posible', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dañino/inseguro', 'pornographicVulgar': 'Pornográfico/vulgar', 'misleadingAttack': 'Ataque engañoso', @@ -825,17 +929,22 @@ const Map esES = { 'other': 'Otro', 'reportDescriptionHint': 'Queremos conocer la razón de tu reporte, puedes describir el problema que encontraste.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generado por IA', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Llamada de herramienta', + 'noResult': 'Sin resultado', + 'noToolCallContentToCopy': + 'No hay contenido de llamada de herramienta para copiar', + 'toolCallDetails': 'Detalles de la llamada de herramienta:', + 'toolCallContentCopied': 'Contenido de la llamada copiado al portapapeles', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Aquí tienes algunas músicas recomendadas:', 'playList': 'Lista de reproducción', 'moreMusic': 'Más música', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilómetros', // 公里单位 'meters': 'metros', // 米单位 'hours': 'horas', // 小时单位 @@ -850,7 +959,31 @@ const Map esES = { "bicycling": "Ciclismo", "tsransit": "Transporte público", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Seleccionar aplicacion de navegacion', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navegar con Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navegar con Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navegar con Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navegar con Apple Maps', + 'builtInNavigation': 'Navegacion integrada', + 'useBuiltInNavigation': 'Navegar con mapa integrado', + 'navigationStartFailed': 'Error al iniciar la navegacion', + 'cannotPlayMusicListRetryLater': + 'No se puede reproducir la lista de musica, intentelo mas tarde', + 'cannotPlaySong': 'No se puede reproducir la cancion', + 'openMapError': 'Error al abrir el mapa', + 'pleaseInstallAmapApp': 'Por favor, instale primero la aplicacion Amap', + 'pleaseInstallBaiduMapApp': + 'Por favor, instale primero la aplicacion Baidu Maps', + 'appleMapStartFailed': 'Error al iniciar Apple Maps', + 'appleMapUnavailable': 'Apple Maps no disponible', + 'openAppleMapError': 'Error al abrir Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Consulta del clima:', 'highest': 'Máxima', 'lowest': 'Mínima', @@ -880,18 +1013,8 @@ const Map esES = { "friday": "Viernes", "saturday": "Sábado", "sunday": "Domingo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soleado", "partlyCloudy": "Parcialmente nublado", "partlySunny": "Parcialmente soleado", @@ -912,7 +1035,144 @@ const Map esES = { "haze": "Neblina", "strongWind": "Viento fuerte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Traducción de imágenes", + "textTranslation": "Traducción de texto", + + // 翻译模块 - 主页 + "translationHistory": "Historial de traducción", + "enableRecording": "Habilitar grabación", + "viewAudioFiles": "Ver archivos de audio", + "headsetUser": "Usuario de auriculares", + "phoneUser": "Usuario de teléfono", + "selectSourceLanguage": "Seleccionar idioma origen", + "selectTargetLanguage": "Seleccionar idioma destino", + "me": "Yo", + "counterPart": "Interlocutor", + "bluetoothCallStateError": + "Asegúrate de que los auriculares Bluetooth estén conectados al teléfono y en una llamada", + "autoDetect": "Detección automática", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Error en la detección de idioma", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Desactivar ventana flotante', + 'enableFloatingWindow': 'Activar ventana flotante', + 'permissionTip': 'Aviso de permiso', + 'micPermissionRequiredForRecording': + 'Se necesita permiso de microfono para grabar', + 'deleteTranslationRecordError': + 'Error al eliminar el registro de traduccion: @error', + "translationFailed": "La traducción ha fallado", + "translating": "Traduciendo", + "translate": "Traducir", + "pleaseInputText": "Introduce texto", + "inputTextToTranslate": "Por favor, introduzca el texto a traducir", + "textTooLong": "El texto es demasiado largo, máximo 5000 caracteres", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Sin historial de traducción", + "historyRecords": "Registros históricos", + "clearResults": "Borrar resultados", + "clearHistory": "Limpiar historial", + "clearHistoryConfirm": + "¿Estás seguro de que quieres limpiar todo el historial de traducción? Esta operación no se puede deshacer.", + "unknownLanguage": "Idioma desconocido", + "deleteSessionRecord": "Eliminar registro de sesión", + "deleteSessionConfirm": + "¿Estás seguro de que quieres eliminar todos los registros de traducción de esta sesión? Esta operación no se puede deshacer.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Seleccionar origen de la imagen", + "imagePreview": "Vista previa de la imagen", + "translationResult": "Resultado de la traducción", + "recognitionResult": "Resultado del reconocimiento", + "translatedImagePreview": "Vista previa de la imagen traducida", + "translatedImageLoadFailed": "Error al cargar la imagen traducida", + "pleaseSelectImage": "Selecciona una imagen", + "imageLoadFailed": "Error al cargar la imagen", + "imageQuality": "Calidad de imagen", + "maxSize": "Tamaño máximo", + "close": "Cerrar", + "setImageQuality": "Configurar calidad de imagen", + "currentQuality": "Calidad actual: @value%", + "setMaxSize": "Configurar tamaño máximo", + "currentMaxSize": "Actual: @pxpx", + "waitingForAction": "Esperando acción", + "pleaseSelectImageToStart": "Selecciona una imagen para comenzar", + "chooseImage": "Elegir imagen", + "openingCamera": "Abriendo cámara...", + "openingPhotoAlbum": "Abriendo álbum de fotos...", + "cancelled": "Cancelado", + "userCancelledSelection": "El usuario canceló la selección", + "translatingImage": "Traduciendo imagen", + "callingImageTranslateService": + "Llamando al servicio de traducción de imágenes...", + "savingRecord": "Guardando registro", + "savingTranslationResult": "Guardando resultado de la traducción...", + "translationCompleted": "Traducción completada", + "allStepsCompleted": "Todos los pasos completados", + "processingFailed": "El procesamiento ha fallado", + "imageProcessingOrTranslationFailed": + "El procesamiento de la imagen o la traducción ha fallado. Inténtalo de nuevo.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": + "La API de traducción de imágenes devolvió un resultado vacío", + "imageTranslationFailedTryLater": + "La traducción de la imagen ha fallado. Problema de red o límite de frecuencia. Inténtalo más tarde", + "imageTranslationApiException": + "Excepción de la API de traducción de imágenes. Comprueba la red e inténtalo de nuevo", + "permissionRequired": "Permiso requerido", + "cameraPermissionRequired": "Se necesita permiso de cámara para hacer fotos", + "photoAlbumPermissionRequired": + "Se necesita permiso del álbum de fotos para seleccionar imágenes", + "translationDetails": "Detalles de la traducción", + "originalImage": "Imagen original", + "sourceLanguage": "Idioma origen", + "targetLanguage": "Idioma destino", + "translationTime": "Tiempo de traducción", + "shareInDevelopment": "La función de compartir está en desarrollo", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traducir archivos de audio", + "noAudioFiles": "Sin archivos de audio", + "calculating": "Calculando...", + "playing": "Reproduciendo...", + "paused": "Pausado", + "clickToPlay": "Haz clic para reproducir", + "rename": "Renombrar", + "smartTranscription": "Transcripción inteligente", + "renameAudioFile": "Renombrar archivo de audio", + "enterNewFileName": "Ingresa nuevo nombre de archivo", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registro original", + "recordSummary": "Resumen del registro", + "clickToGenerateSummary": + "Haz clic en el botón de abajo para generar resumen de sesión", + "summaryContent": "Contenido del resumen", + "copied": "Copiado", + "summaryCopiledToClipboard": "Resumen copiado al portapapeles", + "extractSummary": "Extraer resumen", + "summaryGenerated": "Resumen generado", + "generating": "Generando...", + "regenerate": "Regenerar", + "summaryTimeoutMessage": + "Solicitud de generación de resumen expirada, posiblemente debido a problema de red o sobrecarga del servidor.", + "deleteTranslationRecord": "Eliminar registro de traducción", + "deleteTranslationConfirm": + "¿Estás seguro de que quieres eliminar este registro de traducción? Esta operación no se puede deshacer.", + "originalText": "Texto original", + "translatedText": "Texto traducido", + "sessionSummary": "Resumen de sesión", + "cannotShare": "No se puede compartir", + "generateSummaryFirst": "Genera resumen primero", + "translationSessionRecord": "Registro de sesión de traducción", + + // 个人资料模块 "editProfile": "Editar información personal", "avatar": "Avatar", "nickname": "Apodo", @@ -929,8 +1189,6 @@ const Map esES = { '¿Estás seguro de que quieres eliminar permanentemente tu cuenta? Esta acción no se puede deshacer', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Fallo de conexión de red, verifica la configuración de red e inténtalo de nuevo', 'serverTemporarilyUnavailable': @@ -947,10 +1205,6 @@ const Map esES = { 'Fallo de conexión de red, verifica la configuración de red', 'serverInternalErrorRetryLater': 'Error interno del servidor, inténtalo de nuevo más tarde', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Fallo en la compresión de imagen', 'avatarUpdateFailed': 'Fallo en la actualización del avatar', 'usernameCannotBeEmpty': 'El nombre de usuario no puede estar vacío', @@ -961,8 +1215,6 @@ const Map esES = { 'logoutFailedRetry': 'Fallo al cerrar sesión, inténtalo de nuevo', 'accountPermanentlyDeleted': 'Cuenta eliminada permanentemente', 'deleteAccountFailedRetry': 'Fallo al eliminar cuenta, inténtalo nuevo', - - // 账号服务相关 'clearUserDataFailed': 'Fallo al limpiar datos de usuario', // 清理用户数据失败 'deleteUserDataFailed': 'Fallo al eliminar datos de usuario', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -978,20 +1230,24 @@ const Map esES = { 'accountServiceInitialized': 'AccountService inicializado', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Almacenamiento', + 'meetingStoragePermissionExplanation': + 'Necesitamos permisos de almacenamiento para que puedas seleccionar y subir archivos de audio.', + 'meetingStoragePermissionPermanentDenial': + 'Se ha detectado que has denegado permanentemente el permiso de almacenamiento. Para seguir usando esta función, ve a la configuración de la aplicación y habilita el permiso de almacenamiento manualmente.', 'getPermissionStatusFailed': 'Fallo al obtener estado de permisos', 'communicationPermissions': 'Permisos de comunicación', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Permisos de Bluetooth', + 'notificationPermissions': 'Permisos de notificaciones', + 'storagePermissions': 'Permisos de almacenamiento', + 'microphonePermissions': 'Permisos de micrófono', + 'alarmPermissions': 'Permisos de alarma', 'calendarPermissions': 'Permisos de calendario', 'locationPermissions': 'Permisos de ubicación', 'phone': 'Teléfono', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'Escritura de calendario', @@ -1000,7 +1256,7 @@ const Map esES = { 'phonePermissionDesc': 'Se usa para la función de llamadas telefónicas', 'smsPermissionDesc': 'Se usa para la función de envío de SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Se usa para configurar alarmas precisas y garantizar que los recordatorios se activen a tiempo', 'calendarWritePermissionDesc': 'Se usa para crear eventos y recordatorios del calendario', 'calendarFullAccessPermissionDesc': @@ -1021,80 +1277,93 @@ const Map esES = { 'smsPermissionDetailDesc': 'La función de envío de SMS necesita permiso de SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Este permiso es necesario para configurar alarmas precisas y garantizar que los recordatorios se activen a tiempo', 'calendarWritePermissionDetailDesc': 'La creación de eventos del calendario necesita permiso de escritura del calendario', 'calendarFullAccessPermissionDetailDesc': 'La gestión de eventos del calendario necesita permiso completo del calendario', 'locationPermissionDetailDesc': 'Obtener información de ubicación necesita permiso de ubicación', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Se usa para acceder a la información de contactos', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Las funciones de llamadas telefónicas y SMS necesitan permiso de contactos para seleccionar contactos', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Se usa para conectar y gestionar dispositivos Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'La conexión a auriculares Bluetooth y otros dispositivos requiere permiso de Bluetooth', + 'bluetoothScanPermissionDesc': + 'Se usa para escanear dispositivos Bluetooth cercanos', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'El escaneo de dispositivos Bluetooth cercanos requiere permiso de escaneo Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Se usa para conectarse a dispositivos Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Conectarse a dispositivos Bluetooth requiere permiso de conexión Bluetooth', + 'notificationPermissionDesc': 'Se usa para enviar mensajes de notificación', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'La aplicación necesita permiso de notificaciones para enviarte alertas y mensajes importantes', 'appNeedsPermissionForFullFunction': 'La aplicación necesita este permiso para proporcionar funcionalidad completa', 'permanentDenialText': 'Has denegado permanentemente el permiso {permission}, ve a la configuración de la aplicación para habilitarlo', 'goToSettings': 'Ir a configuración', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Escaneo Bluetooth', + 'bluetoothConnect': 'Conexión Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'La aplicación necesita permiso de escaneo Bluetooth para detectar dispositivos Bluetooth cercanos.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'La aplicación necesita permiso de conexión Bluetooth para conectarse a dispositivos Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'La aplicación necesita permiso de ubicación para escanear dispositivos Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'El permiso de escaneo Bluetooth se ha denegado permanentemente; ve a los ajustes para habilitarlo manualmente.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'El permiso de conexión Bluetooth se ha denegado permanentemente; ve a los ajustes para habilitarlo manualmente.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'El permiso de ubicación se ha denegado permanentemente; ve a los ajustes para habilitarlo manualmente.', + 'notificationPermission': 'Notificaciones', + 'locationPermission': 'Ubicación', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Se necesita permiso de notificaciones para mostrar el estado de reproducción de música.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Se necesita permiso de ubicación para obtener la ubicación actual.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Has denegado permanentemente el permiso de notificaciones; ve a los ajustes para habilitarlo.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Has denegado permanentemente el permiso de ubicación; ve a los ajustes para habilitarlo.', + 'storagePermission': 'Almacenamiento', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Necesitamos permiso de micrófono para grabar contenido de audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Necesitamos permiso de almacenamiento para que puedas seleccionar y subir archivos de audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'El permiso de micrófono se ha denegado permanentemente. Para seguir usando esta función, ve a la configuración de la aplicación y habilita el permiso de micrófono manualmente.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'El permiso de almacenamiento se ha denegado permanentemente. Para seguir usando esta función, ve a la configuración de la aplicación y habilita el permiso de almacenamiento manualmente.', + 'permissionUtilNeed': 'Necesita ', + 'permissionUtilPermission': ' permiso', + 'permissionUtilRestricted': ' permiso restringido', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Esta función no está disponible o está restringida en el dispositivo actual; comprueba los ajustes del dispositivo o las restricciones del sistema', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navegación en curso', + 'native.notification.navigation.keepRunning': + 'Navegando, mantenga la aplicación en ejecución', + 'native.notification.bleAgent.running': + 'El asistente de voz está en funcionamiento', + 'native.notification.audioRecording.recording': + 'Grabando audio, toque para volver a la aplicación', + 'native.notification.music.waiting': 'Esperando para reproducir', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Siguiente', + 'native.notification.music.play': 'Reproducir', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'Reproduciendo música', + + // 版本更新 'newVersionFound': 'Nueva versión encontrada', // 版本更新对话框标题 'remindLater': 'Recordar más tarde', // 稍后提醒按钮 'updateNow': 'Actualizar ahora', // 立即更新按钮 @@ -1105,253 +1374,7 @@ const Map esES = { 'updateErrorRetry': 'Ocurrió un error durante la actualización, inténtalo de nuevo más tarde', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "China", - "美国": "Estados Unidos", - "加拿大": "Canadá", - "俄罗斯": "Rusia", - "英国": "Reino Unido", - "德国": "Alemania", - "意大利": "Italia", - "法国": "Francia", - "西班牙": "España", - "南非": "Sudáfrica", - "沙特阿拉伯": "Arabia Saudí", - "土耳其": "Turquía", - "日本": "Japón", - "韩国": "Corea del Sur", - "新加坡": "Singapur", - "马来西亚": "Malasia", - "泰国": "Tailandia", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistán", - "菲律宾": "Filipinas", - "印度尼西亚": "Indonesia", - "阿联酋": "EAU", - "墨西哥": "México", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Nueva Zelanda", - "中国香港": "Hong Kong", - "中国澳门": "Macao", - "中国台湾": "Taiwán", - "埃及": "Egipto", - "希腊": "Grecia", - "荷兰": "Países Bajos", - "比利时": "Bélgica", - "匈牙利": "Hungría", - "罗马尼亚": "Rumania", - "瑞士": "Suiza", - "奥地利": "Austria", - "丹麦": "Dinamarca", - "瑞典": "Suecia", - "挪威": "Noruega", - "波兰": "Polonia", - "秘鲁": "Perú", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Chipre", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Letonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucrania", - "塞尔维亚": "Serbia", - "克罗地亚": "Croacia", - "斯洛文尼亚": "Eslovenia", - "捷克": "República Checa", - "斯洛伐克": "Eslovaquia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panamá", - "海地": "Haití", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marruecos", - "阿尔及利亚": "Argelia", - "突尼斯": "Túnez", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopía", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Líbano", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Baréin", - "卡塔尔": "Catar", - "阿曼": "Omán", - "阿富汗": "Afganistán", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Camboya", - "老挝": "Laos", - "文莱": "Brunéi", - "东帝汶": "Timor Oriental", - "斐济": "Fiyi", - "所罗门群岛": "Islas Salomón", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historial de traducción", - "enableRecording": "Habilitar grabación", - "viewAudioFiles": "Ver archivos de audio", - "headsetUser": "Usuario de auriculares", - "phoneUser": "Usuario de teléfono", - "selectSourceLanguage": "Seleccionar idioma origen", - "selectTargetLanguage": "Seleccionar idioma destino", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Sin historial de traducción", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Limpiar historial", - "clearHistoryConfirm": - "¿Estás seguro de que quieres limpiar todo el historial de traducción? Esta operación no se puede deshacer.", - "unknownLanguage": "Idioma desconocido", - "deleteSessionRecord": "Eliminar registro de sesión", - "deleteSessionConfirm": - "¿Estás seguro de que quieres eliminar todos los registros de traducción de esta sesión? Esta operación no se puede deshacer.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traducir archivos de audio", - "noAudioFiles": "Sin archivos de audio", - "calculating": "Calculando...", - "playing": "Reproduciendo...", - "paused": "Pausado", - "clickToPlay": "Haz clic para reproducir", - "rename": "Renombrar", - "smartTranscription": "Transcripción inteligente", - "renameAudioFile": "Renombrar archivo de audio", - "enterNewFileName": "Ingresa nuevo nombre de archivo", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registro original", - "recordSummary": "Resumen del registro", - "clickToGenerateSummary": - "Haz clic en el botón de abajo para generar resumen de sesión", - "summaryContent": "Contenido del resumen", - "copied": "Copiado", - "summaryCopiledToClipboard": "Resumen copiado al portapapeles", - "extractSummary": "Extraer resumen", - "summaryGenerated": "Resumen generado", - "generating": "Generando...", - "regenerate": "Regenerar", - "summaryTimeoutMessage": - "Solicitud de generación de resumen expirada, posiblemente debido a problema de red o sobrecarga del servidor.", - "deleteTranslationRecord": "Eliminar registro de traducción", - "deleteTranslationConfirm": - "¿Estás seguro de que quieres eliminar este registro de traducción? Esta operación no se puede deshacer.", - "originalText": "Texto original", - "translatedText": "Texto traducido", - "sessionSummary": "Resumen de sesión", - "cannotShare": "No se puede compartir", - "generateSummaryFirst": "Genera resumen primero", - "translationSessionRecord": "Registro de sesión de traducción", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Emparejamiento de dispositivo", "connectYourDeepSoundHeadset": "Conecta tus auriculares Voitrans", "bind": "Vincular", @@ -1360,14 +1383,11 @@ const Map esES = { "autoInputCode": "Entrada automática de código", "skipBinding": "Omitir vinculación", "rescan": "Volver a escanear", - "verifyingDevice": "Verificando dispositivo...", "confirmBinding": "Confirmar vinculación", "associatingDevice": "Asociando dispositivo...", "goToBluetoothSettings": "Ir a configuración de Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Listo para emparejar", "preparingPairingEnvironment": "Preparando entorno de emparejamiento...", "connectDeepSoundViaSystemBluetooth": @@ -1377,8 +1397,6 @@ const Map esES = { "waitingCompletePairing": "Espera por favor, completando emparejamiento...", "pairingSuccessRedirecting": "¡Emparejamiento exitoso! Redirigiendo a página principal...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Asegúrate de que el dispositivo conectado sea Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1409,12 @@ const Map esES = { "authorizationFailedCheckCode": "Fallo en la autorización, verifica si el código de autorización es correcto", "pairingFailedRetry": "Fallo en el emparejamiento, inténtalo de nuevo", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Habilita Bluetooth por favor', 'deviceDisconnected': 'Dispositivo desconectado', 'readyToStartPairing': 'Listo para iniciar emparejamiento', 'checkingEnvironment': 'Verificando entorno...', 'ensureHeadsetOnAndPairingMode': 'Asegúrate de que los auriculares estén encendidos y en modo de emparejamiento', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Estableciendo conexión segura...', 'needManualBindingAuthCode': 'Necesita código de autorización de vinculación manual...', @@ -1426,21 +1437,31 @@ const Map esES = { 'bleConnectionFailed': 'Fallo en la conexión BLE', 'deviceAuthorizationFailedCheckCode': 'Fallo en la autorización del dispositivo, verifica el código de autorización', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Es necesario activar Bluetooth manualmente', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Sigue estos pasos:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Activa Bluetooth: Ajustes → Bluetooth → Activar', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Conecta el dispositivo: busca tu dispositivo en "Mis dispositivos" y tócala para conectar', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Vuelve a la aplicación para continuar el proceso de emparejamiento', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Consejo: también puedes mantener pulsado el icono de Bluetooth en el Centro de control para acceder rápidamente a los ajustes de Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Entendido', // 我知道了 + + // 配对模块 - 绑定奖励 + "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Comentarios del usuario", 'feedbackInfo': 'Proporciona comentarios o sugerencias', 'feedbackDescription': 'Describe tu problema o sugerencia', @@ -1467,13 +1488,14 @@ const Map esES = { "connectionFailed": "Fallo de conexión", "retryConnection": "Reintentar conexión", "ota_updateNow": "Actualizar ahora", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "No se pudo obtener la información de la versión. Inténtalo de nuevo más tarde.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "No se pudo obtener la información del dispositivo. Comprueba la conexión e inténtalo de nuevo.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "No se pudo identificar el dispositivo. Vuelve a conectarlo e inténtalo de nuevo.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "La versión del firmware es anómala. Vuelve a conectar el dispositivo e inténtalo de nuevo.", "keepConnectedDontClose": "Mantén el dispositivo conectado, no cierres la aplicación", "doNotDisconnect": "No desconectes", @@ -1482,7 +1504,61 @@ const Map esES = { "removeEarbudsEnsureBattery": "Retira ambos auriculares y asegúrate de que la batería de ambos esté por encima del 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nueva version @version encontrada', + 'otaConfirmUpdateNow': 'Actualizar ahora?', + 'otaUpdate': 'Actualizar', + 'otaUpgradeSuccess': 'Actualizacion exitosa', + 'otaUpgradeCompleteRepair': + 'Actualizacion completada!\n\nEl dispositivo necesita reemparejarse. Ir a la pagina de emparejamiento?', + 'otaPairLater': 'Emparejar despues', + 'otaPairNow': 'Emparejar ahora', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Error al verificar la conexion BLE: @error', + 'otaBleNotConnected': 'Dispositivo BLE no conectado', + 'otaBleNeedConnection': + 'Se requiere conexion BLE\nAsegurese de que el dispositivo este conectado e intente de nuevo', + 'otaDeviceInfoUnavailableTitle': 'Informacion del dispositivo no disponible', + 'otaCannotGetDeviceInfo': + 'No se puede obtener información del dispositivo\nVuelve a conectar el dispositivo o inténtalo de nuevo más tarde', + 'otaBleCheckFailed': 'Verificacion de conexion BLE fallida', + 'otaCannotGetDeviceInfoCheckConnection': + 'No se puede obtener informacion del dispositivo, verifique la conexion', + 'otaCannotGetProductInfoWithName': + 'No se puede obtener informacion del producto, nombre: @deviceName', + 'otaCannotGetBatteryInfo': + 'No se puede obtener informacion de bateria valida', + 'otaLowBattery': 'Bateria baja', + 'otaSingleBatteryLow': + 'Bateria demasiado baja\nRequisito: superior al 20%\nActual: @ear @battery%\nCargue e intente de nuevo', + 'otaDoubleBatteryLow': + 'Bateria demasiado baja\nRequisito: ambos auriculares por encima del 20%\nActual: Izquierdo @left%, Derecho @right%\nCargue e intente de nuevo', + 'otaBatteryCheckFailed': 'Verificacion de bateria fallida', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Esta actualizacion incluye optimizaciones de rendimiento y correcciones de errores.', + 'otaGetLatestVersionFailed': 'Error al obtener la ultima version', + 'otaGetVersionInfoFailed': 'Error al obtener informacion de version', + 'otaCheckingDeviceStatus': 'Verificando estado del dispositivo...', + 'otaDownloadFailedCheckNetwork': + 'Descarga fallida, verifique la conexion de red', + 'otaDownloadFailed': 'Descarga fallida', + 'otaPreparingConnection': 'Preparando conexion del dispositivo...', + 'otaConnectingDevice': 'Conectando al dispositivo...', + 'otaUpgradeStarted': 'Actualizacion OTA iniciada...', + 'otaUpgradeProgressWithPercent': 'Progreso: @percent%', + 'otaUpgradeSuccessComplete': 'Actualizacion completada exitosamente', + 'otaUpgradeFailedWithCode': 'Actualizacion fallida, codigo de error: @code', + 'otaUpgradeFailedTitle': 'Actualizacion fallida', + 'otaUpgradeFailedDesc': + 'Verifique la conexion o el paquete de actualizacion, codigo: @code', + 'otaDeviceDisconnected': 'Dispositivo desconectado', + 'otaDeviceConnected': 'Dispositivo conectado', + + // 音乐模块 "noMusic": "Sin música", // 暂无音乐 "noPlayingMusic": "Sin música reproduciéndose", // 暂无播放音乐 "unknownSong": "Canción desconocida", // 未知歌曲 @@ -1530,22 +1606,122 @@ const Map esES = { "波斯语": "Persa", "斯瓦希里语": "Suajili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "China", + "美国": "Estados Unidos", + "加拿大": "Canadá", + "俄罗斯": "Rusia", + "英国": "Reino Unido", + "德国": "Alemania", + "意大利": "Italia", + "法国": "Francia", + "西班牙": "España", + "南非": "Sudáfrica", + "沙特阿拉伯": "Arabia Saudí", + "土耳其": "Turquía", + "日本": "Japón", + "韩国": "Corea del Sur", + "新加坡": "Singapur", + "马来西亚": "Malasia", + "泰国": "Tailandia", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistán", + "菲律宾": "Filipinas", + "印度尼西亚": "Indonesia", + "阿联酋": "EAU", + "墨西哥": "México", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Nueva Zelanda", + "中国香港": "Hong Kong", + "中国澳门": "Macao", + "中国台湾": "Taiwán", + "埃及": "Egipto", + "希腊": "Grecia", + "荷兰": "Países Bajos", + "比利时": "Bélgica", + "匈牙利": "Hungría", + "罗马尼亚": "Rumania", + "瑞士": "Suiza", + "奥地利": "Austria", + "丹麦": "Dinamarca", + "瑞典": "Suecia", + "挪威": "Noruega", + "波兰": "Polonia", + "秘鲁": "Perú", + "智利": "Chile", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luxemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Chipre", + "芬兰": "Finlandia", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Letonia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ucrania", + "塞尔维亚": "Serbia", + "克罗地亚": "Croacia", + "斯洛文尼亚": "Eslovenia", + "捷克": "República Checa", + "斯洛伐克": "Eslovaquia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panamá", + "海地": "Haití", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marruecos", + "阿尔及利亚": "Argelia", + "突尼斯": "Túnez", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopía", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Líbano", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Baréin", + "卡塔尔": "Catar", + "阿曼": "Omán", + "阿富汗": "Afganistán", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Camboya", + "老挝": "Laos", + "文莱": "Brunéi", + "东帝汶": "Timor Oriental", + "斐济": "Fiyi", + "所罗门群岛": "Islas Salomón", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/et_ee.dart b/lib/core/translations/language/et_ee.dart index d411ab144..b2694313d 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,6 +19,11 @@ const Map etEE = { "unknownError": "Tundmatu viga", "asrConnectionFailed": "Ühendus kõnetuvastusteenusega ebaõnnestus. Kontrollige võrku või proovige hiljem uuesti.", + "justNow": "Just praegu", + "minutesAgo": "@minutes min tagasi", + "yesterday": "Eile", + "daysAgo": "@days päeva tagasi", + "hoursAgo": "@hours h tagasi", // 启动页 "slogan": "Maailma ühendamine, heli tagant", @@ -28,7 +34,7 @@ const Map etEE = { "explore": "Avasta", "settings": "Seaded", - // 语言 + // 语言列表 "followingSystem": "Järgi süsteemi", "chinese": "Hiina", "english": "Inglise", @@ -72,7 +78,7 @@ const Map etEE = { "arabic": "Arabi", "persian": "Farsi", - // 登录页 + // 登录模块 "welcome": "Tere tulemast", "loginTips": "Logi sisse või registreeru telefoninumbri või e-mailiga", "accountNumber": "Telefoninumber või e-mail", @@ -100,13 +106,9 @@ const Map etEE = { "resendVerificationCode": "Saada kinnituskood uuesti", "login": "Logi sisse", "usePasswordLogin": "Kasuta parooli sisselogimist", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans avaldus", // Voitrans 声明 "welcomeToThisApp": "Tere tulemast Voitrans'i, loe hoolikalt", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". Klõpsates 'Nõustun ja sisenen' näitad, et oled täielikult lugenud ja nõustunud ülaltoodud lepingutega. Klõpsates 'Ei nõustu' rakendus sulgub.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ei nõustu", // 不同意 @@ -162,7 +164,30 @@ const Map etEE = { 'right': 'Parem', 'checkConnectionStatusFailed': 'Ühenduse oleku kontrollimine ebaõnnestus', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetoothi lähtestamine ebaõnnestus: @error', + 'needBluetoothAndLocationPermission': + 'Seadmete otsimiseks on vaja Bluetoothi ja asukoha luba', + 'permissionRequestFailedWithError': 'Loa taotlemine ebaõnnestus: @error', + 'needPermission': 'Luba on vajalik', + 'blePermissionDialogContent': + 'See rakendus vajab seadmete otsimiseks Bluetoothi ja asukoha luba. Lubage need seadetes.', + 'needEnableBluetooth': 'Lülita Bluetooth sisse', + 'enableBluetoothDialogContent': + '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...", "exploreSlogan": "Nutikad kõrvaklapid, lõputud võimalused", "exploreSlogan1": "Nutikas kaaslane, lõputud võimalused", @@ -184,213 +209,278 @@ const Map etEE = { "conferenceAssistantInfo": "Reaalajas protokolli salvestamine ja mitmekeelne tõlge", "usageStats": "Kasutamise statistika", - "usageStatsInfo": "Näita sovelluksen kasutamise statistikat", + "usageStatsInfo": "Kuva rakenduse kasutamise statistikat", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "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': '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', + 'paymentFailedTryAgain': 'Makse ebaõnnestus. Palun proovi uuesti.', + 'selectPaymentMethod': 'Vali makseviis', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay tellimuse loomine ebaõnnestus', + 'alipayOrderCreateFailed': 'Alipay tellimuse loomine ebaõnnestus', + 'appleOrderCreateFailed': 'Apple tellimuse loomine ebaõnnestus', + 'googleOrderCreateFailed': 'Google tellimuse loomine ebaõnnestus', + 'paypalOrderCreateFailed': 'PayPal tellimuse loomine ebaõnnestus', + 'paymentException': 'Makse erand', + 'paymentLaunchFailed': 'Makse käivitamine ebaõnnestus', + 'paymentExceptionWithError': 'Makse erand: @error', + 'paymentProcessingCheckLater': + 'Sinu tellimust töödeldakse. Palun kontrolli hiljem.', + 'paymentResultQueryException': 'Makse tulemuse päring ebaõnnestus: @error', + 'orderConfirmedQuotaRefreshed': + 'Tellimus kinnitatud. Sinu kvoot on värskendatud.', + 'paymentCompletedConfirming': 'Makse sooritatud. Kinnitamine…', + 'paymentCancelled': 'Makse tühistatud', + 'paypalOpenedCompleteInBrowser': + 'PayPal avatud. Palun vii makse lõpule brauseris.', + 'paypalOpenFailed': 'PayPal makseleht ei ava', + 'paymentTestTitle': 'Makse test', + 'paymentTestOrderInfo': 'Testtellimuse info', + 'paymentTestProductId': 'Toote ID', + 'paymentTestProductDescription': 'Toote kirjeldus', + 'paymentTestWechatDescription': 'WeChat Pay makse test', + 'paymentTestAlipayDescription': 'Alipay makse test', + 'paymentTestAmount': 'Summa', + 'paymentTestSelectAmount': 'Vali testisumma', + 'paying': 'Maksmine...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Makse olek', + 'errorInfoWithMessage': 'Viga: @message', + 'retest': 'Kordustest', + 'paymentTestInstructionsTitle': 'Juhised', + 'paymentTestInstructionsContent': + '1. Vali testisumma (soovitatud: ¥0,01)\n2. Klõpsa maksenupul alustamiseks\n3. Vii makse lõpule makserakenduses\n4. Naase tulemuse kontrollimiseks', + 'startingWechatPayment': 'WeChat Pay käivitamine...', + 'startingAlipayPayment': 'Alipay käivitamine...', + 'wechatPaymentSuccess': 'WeChat Pay edukas!', + 'wechatPaymentFailed': 'WeChat Pay ebaõnnestus', + 'wechatPaymentLaunchFailed': 'WeChat Pay käivitamine ebaõnnestus', + 'cannotLaunchWechatPayment': 'WeChat Pay käivitamine ei õnnestu', + 'wechatPaymentException': 'WeChat Pay erand', + 'wechatPaymentTestCompleted': 'WeChat Pay test lõpetatud', + 'alipayPaymentSuccess': 'Alipay edukas!', + 'alipayPaymentFailed': 'Alipay ebaõnnestus', + 'alipayPaymentLaunchFailed': 'Alipay käivitamine ebaõnnestus', + 'cannotLaunchAlipayPayment': 'Alipay käivitamine ei õnnestu', + 'alipayPaymentException': 'Alipay erand', + "insufficientIntegral": "Punkte ei jätku", + "insufficientBalanceDesc": + 'Kontojääk on ebapiisav, minge vastavale laadimislehele raha lisamiseks.', + "recharge": 'Mine laadimisele', + "aiMemberExpiredDesc": + 'AI liikmelisus on aegunud, minge liikmelisuse pikendamise lehele.', + + // 商品模块 - AI商品页 + '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.', - - // 会员商品页 - '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', + 'Funktsioonid sõltuvad seadme lubadest, teenuse saadavusest ja võrguoludest.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Reaalajas transkriptsioon', + 'sceneLexicon': 'Stsenaariumide sõnastik', + 'subtitleDisplay': 'Subtiitrid', + 'transHeaderDesc1': + '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': + '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': + 'Tõlke kvaliteet sõltub mikrofonist, võrgu latentsusest ja taustamürast.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Koosoleku salvestus', + 'transcriptionAndSummary': 'Transkriptsioon ja kokkuvõte', + 'keywordSearch': 'Märksõnaotsing', + 'collaborationSharing': 'Kollaboratsioon ja jagamine', + 'meetingHeaderDesc1': + 'Heli salvestamine, transkriptsioon, märksõnaotsing ja automaatne kokkuvõte koosoleku tõhususe suurendamiseks.', + 'meetingHeaderDesc2': + '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': + 'Kasutage vaikses keskkonnas; jõudlus sõltub mikrofonist ja võrgust.', + + // 商品模块 - VIP会员页 + '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 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': 'Rakendus: VoiTrans · Esitab: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP klienditeenindus QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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", 'edit': 'Muuda', 'delete': 'Kustuta', @@ -402,40 +492,40 @@ const Map etEE = { 'recordingDetails': 'Salvestuse üksikasjad', 'aiSummary': 'AI kokkuvõte', 'meetingTranscript': 'Koosoleku transkriptsioon', - - // Meeting模块 - 导航和基础功能 - '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', // 结束录音并保存 @@ -457,202 +547,215 @@ 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', - //'generating': '正在生成...', - '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': 'Genereeri kokkuvõte uuesti', + 'dateAndTime': 'Kuupäev ja kellaaeg', + 'location': 'Asukoht', + 'attendees': 'Osalejad', + 'inputLocation': 'Sisesta asukoht', + 'inputAttendees': 'Sisesta osalejad', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Vali kokkuvõtte mall', + 'useThisTemplate': 'Kasuta seda malli', + 'lastUsed': 'Viimati kasutatud', + 'create': 'Loo', + 'templateDetails': 'Malli üksikasjad', + 'tag': 'Silt', + 'description': 'Kirjeldus', + 'template': 'Mall', + 'deleteTemplate': 'Kustuta mall', + 'deleteTemplateConfirm': 'Kas oled kindel, et soovid selle malli kustutada?', + 'editTemplate': 'Muuda malli', + 'createTemplate': 'Loo mall', + 'name': 'Nimi', + 'templateContentHint': + 'Palun sisesta malli sisu! Vihje: Klõpsa ülaloleval AI nupul, et kiiresti genereerida malli sisu sisestatud nime ja kirjelduse põhjal', + 'inputNameHint': 'Palun sisesta nimi', + 'inputDescHint': 'Palun sisesta kirjeldus', + 'custom': 'Kohandatud', + 'pleaseEnter': 'Palun sisestage', + 'viewAll': 'Vaata kõiki', + 'recordingLanguage': 'Salvestuse keel', + 'chineseSimplified': 'Hiina mandariini (lihtsustatud)', + 'meetingGenerateNow': 'Genereeri nüüd', + 'keyEventsAnalyzed': 'Analüüsitud {count} olulist sündmust.', + 'aiAnalysisDesc': + 'AI analüüs tuvastab salvestustes olulised sündmused, võimaldades valida tähtsad sündmused AI genereerimiseks.', + + // Meeting模块 - 文件操作 + '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': 'Jaga mõttekaarti', + 'shareSuccess': 'Jagamine õnnestus', + + // Meeting模块 - AI问答 + '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': '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': 'Nimeta praegune kõneleja', + 'recentlyUsedNames': 'Hiljuti kasutatud nimed', + 'applyToCurrentParagraph': 'Rakenda praegusele lõigule', + 'totalTime': 'Koguaeg', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Kokkuvõtte kõnelejad uuendatakse automaatselt', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sünkrooni pilve', + 'syncToCloudTip': + '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', - - // 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', + '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': '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.', - - // Meeting模块 - 升级会员 - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Rakenda selle kõneleja kõigile lõikudele', - 'summaryWillBeUpdatedAutomatically': - 'Kokkuvõtet uuendatakse automaatselt malli alusel', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktiveeritakse kohe pärast ostu, kehtib 2 aastat pärast aktiveerimist.', + 'purchase': 'Osta', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Salvestuse keel', + 'cantonese': 'Kantoni', + 'sichuan': 'Sichuani murre', + 'shanghai': 'Shanghai murre', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailedShort': 'Kokkuvõte ebaõnnestus', + 'transcriptionFailedShort': 'Transkriptsioon ebaõnnestus', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Helipleier pole valmis, palun oota', + 'playFailed': 'Esitamine ebaõnnestus', + 'audioFileNotFound': 'Helifaili ei leitud', + 'fetchingAudio': 'Helifaili tõmbamine pilvest...', + 'playerLoadFailed': 'Helipleieri laadimine ebaõnnestus', // 设置页 "systemSettings": "Süsteemi seaded", @@ -660,11 +763,11 @@ const Map etEE = { "aiRecharge": "Premium liige", "translationRecharge": "Tõlke varundus", "meetingAssistantRecharge": "Koosoleku assistendi varundus", - "cloudSync": "Pääsyvaraus cloud-synkronointiin", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "cloudSync": "Pilvsünkroonimise varundus", + "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", @@ -704,43 +807,31 @@ const Map etEE = { "bleHeadsetFirmwareUpgrade": "BLE kõrvaklappide püsivara uuendus", "deviceManagement": "Seadmete haldamine", "manageConnectedDevices": "Halda ühendatud Bluetooth seadmeid", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Praegu viimane versioon {version}', 'checkUpdateFailed': 'Uuenduste kontrollimine ebaõnnestus', 'networkErrorRetry': 'Võrgu viga, proovi hiljem uuesti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reaalajas häälvestlus", "realtimeVoiceChatInfo": "Koge nutika häälinteraktsiooni funktsiooni (funktsiooni eelvaade)", "loading": "Laadimine...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tühjenda vestluse ajalugu", "online": "Võrgus", @@ -768,22 +859,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Küsimustele vastamine ja info andmine\n\n' '• Reaalajas häältõlge\n\n' @@ -803,18 +896,17 @@ const Map etEE = { 'startVoiceInput': 'Alusta häälsisestust', 'startPhoneCallMode': 'Alusta telefonikõne režiimi, alusta häälsisestust', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sisesta oma sõnum siia...', // 全屏编辑器输入提示 'characterCount': '{count} tähemärki', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopeeri', 'copySuccess': 'Edukalt kopeeritud', 'report': 'Teata', 'submitSuccess': 'Edukalt esitatud', 'submitFailed': 'Esitamine ebaõnnestus', 'reportSubmitted': 'Teade esitatud, töötleme selle võimalikult kiiresti', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Kahjulik/ohtlik', 'pornographicVulgar': 'Pornograafiline/vulgaarne', 'misleadingAttack': 'Eksitav rünnak', @@ -824,17 +916,21 @@ const Map etEE = { 'other': 'Muu', 'reportDescriptionHint': 'Tahame teada teate põhjust, võid kirjeldada probleemi, millega kokku puutusid.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI poolt genereeritud', - //音乐卡片 music_card + // Agent模块 - 工具调用 + '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:', 'playList': 'Esitusloend', 'moreMusic': 'Rohkem muusikat', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilomeetrit', // 公里单位 'meters': 'meetrit', // 米单位 'hours': 'tundi', // 小时单位 @@ -849,7 +945,30 @@ const Map etEE = { "bicycling": "Jalgrattasõit", "tsransit": "Ühistransport", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Vali navigeerimisrakendus', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigeeri Amapiga', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigeeri Baidu Mapsiga', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigeeri Google Mapsiga', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigeeri Apple Mapsiga', + 'builtInNavigation': 'Sisseehitatud navigatsioon', + 'useBuiltInNavigation': 'Navigeeri sisseehitatud kaardiga', + 'navigationStartFailed': 'Navigatsiooni käivitamine ebaõnnestus', + 'cannotPlayMusicListRetryLater': + '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:', 'highest': 'Kõrgeim', 'lowest': 'Madalaim', @@ -877,18 +996,8 @@ const Map etEE = { "friday": "Reede", "saturday": "Laupäev", "sunday": "Pühapäev", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Päikeseline", "partlyCloudy": "Osaliselt pilves", "partlySunny": "Osaliselt päikeseline", @@ -909,7 +1018,141 @@ const Map etEE = { "haze": "Vine", "strongWind": "Tugev tuul", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Pilditõlge", + "textTranslation": "Tekstitõlge", + + // 翻译模块 - 主页 + "translationHistory": "Tõlke ajalugu", + "enableRecording": "Luba salvestamine", + "viewAudioFiles": "Vaata helifaile", + "headsetUser": "Kõrvaklappide kasutaja", + "phoneUser": "Telefoni kasutaja", + "selectSourceLanguage": "Vali lähtekeel", + "selectTargetLanguage": "Vali sihtkeel", + "me": "Mina", + "counterPart": "Vestluspartner", + "bluetoothCallStateError": + "Veendu, et Bluetooth-peakomplekt on telefoniga ühendatud ja kõne on käimas", + "autoDetect": "Automaatne tuvastus", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Keele tuvastamine ebaõnnestus", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Keela ujuvaken', + 'enableFloatingWindow': 'Luba ujuvaken', + 'permissionTip': 'Lubade teade', + 'micPermissionRequiredForRecording': + '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": "Tekst on liiga pikk, maksimaalselt 5000 märki", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Tõlke ajalugu puudub", + "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.", + "unknownLanguage": "Tundmatu keel", + "deleteSessionRecord": "Kustuta seansi kirje", + "deleteSessionConfirm": + "Kas oled kindel, et tahad kõik selle seansi tõlke kirjed kustutada? Seda toimingut ei saa tagasi võtta.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Pildi töötlemine või tõlkimine ebaõnnestus. Proovi uuesti.\nViga: {error}", + "imageTooLarge": "Pildi suurus ületab 4 MB piiri", + "imageTooLargeHint": + "Pildi suurus ületab 4 MB. Vähenda kvaliteeti või mõõtmeid ja proovi uuesti", + "emptyTranslationResult": "Pilditõlke API tagastas tühja tulemuse", + "imageTranslationFailedTryLater": + "Pildi tõlkimine ebaõnnestus. Võrgu probleem või päringulimiit. Proovi hiljem", + "imageTranslationApiException": + "Pilditõlke API erand. Kontrolli võrku ja proovi uuesti", + "permissionRequired": "Luba on vajalik", + "cameraPermissionRequired": "Pildistamiseks on vajalik kaamera luba", + "photoAlbumPermissionRequired": + "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", + "noAudioFiles": "Helifaile pole", + "calculating": "Arvutamine...", + "playing": "Esitamine...", + "paused": "Peatatud", + "clickToPlay": "Klõpsa esitamiseks", + "rename": "Nimeta ümber", + "smartTranscription": "Nutikas transkriptsioon", + "renameAudioFile": "Nimeta helifail ümber", + "enterNewFileName": "Sisesta uus failinimi", + + // 翻译模块 - 翻译详情 + "originalRecord": "Algne kirje", + "recordSummary": "Kirje kokkuvõte", + "clickToGenerateSummary": + "Klõpsa alloleval nupul seansi kokkuvõtte genereerimiseks", + "summaryContent": "Kokkuvõtte sisu", + "copied": "Kopeeritud", + "summaryCopiledToClipboard": "Kokkuvõte kopeeritud lõikelauale", + "extractSummary": "Eralda kokkuvõte", + "summaryGenerated": "Kokkuvõte genereeritud", + "generating": "Genereerimine...", + "regenerate": "Genereeri uuesti", + "summaryTimeoutMessage": + "Kokkuvõtte genereerimise taotlus aegus, võimalik võrguprobleem või serveri ülekoormatus.", + "deleteTranslationRecord": "Kustuta tõlke kirje", + "deleteTranslationConfirm": + "Kas oled kindel, et tahad selle tõlke kirje kustutada? Seda toimingut ei saa tagasi võtta.", + "originalText": "Algne tekst", + "translatedText": "Tõlgitud tekst", + "sessionSummary": "Seansi kokkuvõte", + "cannotShare": "Ei saa jagada", + "generateSummaryFirst": "Genereeri esmalt kokkuvõte", + "translationSessionRecord": "Tõlke seansi kirje", + + // 个人资料模块 "editProfile": "Muuda isikuandmeid", "avatar": "Avatar", "nickname": "Hüüdnimi", @@ -923,10 +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?', - - // Profile 错误信息 + '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': @@ -943,10 +1184,6 @@ const Map etEE = { 'Võrguühendus ebaõnnestus, kontrolli võrgu seadeid', 'serverInternalErrorRetryLater': 'Serveri sisemine viga, proovi hiljem uuesti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Pildi tihendamine ebaõnnestus', 'avatarUpdateFailed': 'Avatari uuendamine ebaõnnestus', 'usernameCannotBeEmpty': 'Kasutajanimi ei saa olla tühi', @@ -957,8 +1194,6 @@ const Map etEE = { 'logoutFailedRetry': 'Väljalogimine ebaõnnestus, proovi uuesti', 'accountPermanentlyDeleted': 'Konto jäädavalt kustutatud', 'deleteAccountFailedRetry': 'Konto kustutamine ebaõnnestus, proovi uuesti', - - // 账号服务相关 'clearUserDataFailed': 'Kasutajaandmete tühjendamine ebaõnnestus', // 清理用户数据失败 'deleteUserDataFailed': 'Kasutajaandmete kustutamine ebaõnnestus', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -973,29 +1208,33 @@ const Map etEE = { 'accountServiceInitialized': 'AccountService lähtestatud', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Salvestusruum', + 'meetingStoragePermissionExplanation': + 'Vajame salvestusruumi luba, et saaksid valida ja üles laadida helifaile.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - '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': @@ -1012,79 +1251,91 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigeerimine käib', + 'native.notification.navigation.keepRunning': + 'Navigeerimine, hoia rakendust avatuna', + 'native.notification.bleAgent.running': 'Hääleassistendi agent töötab', + 'native.notification.audioRecording.recording': + 'Heli salvestamine, puuduta rakendusse naasmiseks', + 'native.notification.music.waiting': 'Ootab esitamist', + 'native.notification.music.previous': 'Eelmine', + 'native.notification.music.next': 'Järgmine', + 'native.notification.music.play': 'Esita', + 'native.notification.music.pause': 'Paus', + 'native.notification.qqMusic.playing': 'Muusika esitamine', + + // 版本更新 'newVersionFound': 'Leitud uus versioon', // 版本更新对话框标题 'remindLater': 'Tuleta hiljem meelde', // 稍后提醒按钮 'updateNow': 'Uuenda kohe', // 立即更新按钮 @@ -1095,253 +1346,7 @@ const Map etEE = { 'updateErrorRetry': 'Uuendamisel tekkis viga, proovi hiljem uuesti', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Hiina", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Venemaa", - "英国": "Suurbritannia", - "德国": "Saksamaa", - "意大利": "Itaalia", - "法国": "Prantsusmaa", - "西班牙": "Hispaania", - "南非": "Lõuna-Aafrika", - "沙特阿拉伯": "Saudi Araabia", - "土耳其": "Türgi", - "日本": "Jaapan", - "韩国": "Lõuna-Korea", - "新加坡": "Singapur", - "马来西亚": "Malaisia", - "泰国": "Tai", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipiinid", - "印度尼西亚": "Indoneesia", - "阿联酋": "AÜE", - "墨西哥": "Mehhiko", - "巴西": "Brasiilia", - "阿根廷": "Argentina", - "澳大利亚": "Austraalia", - "新西兰": "Uus-Meremaa", - "中国香港": "Hongkong", - "中国澳门": "Macau", - "中国台湾": "Taiwan", - "埃及": "Egiptus", - "希腊": "Kreeka", - "荷兰": "Holland", - "比利时": "Belgia", - "匈牙利": "Ungari", - "罗马尼亚": "Rumeenia", - "瑞士": "Šveits", - "奥地利": "Austria", - "丹麦": "Taani", - "瑞典": "Rootsi", - "挪威": "Norra", - "波兰": "Poola", - "秘鲁": "Peruu", - "智利": "Tšiili", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Iirimaa", - "冰岛": "Island", - "阿尔巴尼亚": "Albaania", - "马耳他": "Malta", - "塞浦路斯": "Küpros", - "芬兰": "Soome", - "保加利亚": "Bulgaaria", - "立陶宛": "Leedu", - "拉脱维亚": "Läti", - "爱沙尼亚": "Eesti", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Horvaatia", - "斯洛文尼亚": "Sloveenia", - "捷克": "Tšehhi", - "斯洛伐克": "Slovakkia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Boliivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžeeria", - "突尼斯": "Tuneesia", - "尼日利亚": "Nigeeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etioopia", - "肯尼亚": "Keenia", - "坦桑尼亚": "Tansaania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Iisrael", - "黎巴嫩": "Liibanon", - "约旦": "Jordaania", - "伊拉克": "Iraak", - "科威特": "Kuveit", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Omaan", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongoolia", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Ida-Timor", - "斐济": "Fidži", - "所罗门群岛": "Saalomoni Saared", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Tõlke ajalugu", - "enableRecording": "Luba salvestamine", - "viewAudioFiles": "Vaata helifaile", - "headsetUser": "Kõrvaklappide kasutaja", - "phoneUser": "Telefoni kasutaja", - "selectSourceLanguage": "Vali lähtekeel", - "selectTargetLanguage": "Vali sihtkeel", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Tõlke ajalugu puudub", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tühjenda ajalugu", - "clearHistoryConfirm": - "Kas oled kindel, et tahad kogu tõlke ajaloo tühjendada? Seda toimingut ei saa tagasi võtta.", - "unknownLanguage": "Tundmatu keel", - "deleteSessionRecord": "Kustuta seansi kirje", - "deleteSessionConfirm": - "Kas oled kindel, et tahad kõik selle seansi tõlke kirjed kustutada? Seda toimingut ei saa tagasi võtta.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tõlgi helifailid", - "noAudioFiles": "Helifaile pole", - "calculating": "Arvutamine...", - "playing": "Esitamine...", - "paused": "Peatatud", - "clickToPlay": "Klõpsa esitamiseks", - "rename": "Nimeta ümber", - "smartTranscription": "Nutikas transkriptsioon", - "renameAudioFile": "Nimeta helifail ümber", - "enterNewFileName": "Sisesta uus failinimi", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Algne kirje", - "recordSummary": "Kirje kokkuvõte", - "clickToGenerateSummary": - "Klõpsa alloleval nupul seansi kokkuvõtte genereerimiseks", - "summaryContent": "Kokkuvõtte sisu", - "copied": "Kopeeritud", - "summaryCopiledToClipboard": "Kokkuvõte kopeeritud lõikelauale", - "extractSummary": "Eralda kokkuvõte", - "summaryGenerated": "Kokkuvõte genereeritud", - "generating": "Genereerimine...", - "regenerate": "Genereeri uuesti", - "summaryTimeoutMessage": - "Kokkuvõtte genereerimise taotlus aegus, võimalik võrguprobleem või serveri ülekoormatus.", - "deleteTranslationRecord": "Kustuta tõlke kirje", - "deleteTranslationConfirm": - "Kas oled kindel, et tahad selle tõlke kirje kustutada? Seda toimingut ei saa tagasi võtta.", - "originalText": "Algne tekst", - "translatedText": "Tõlgitud tekst", - "sessionSummary": "Seansi kokkuvõte", - "cannotShare": "Ei saa jagada", - "generateSummaryFirst": "Genereeri esmalt kokkuvõte", - "translationSessionRecord": "Tõlke seansi kirje", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Seadme sidumine", "connectYourDeepSoundHeadset": "Ühenda oma Voitrans kõrvaklapid", "bind": "Seo", @@ -1350,14 +1355,11 @@ const Map etEE = { "autoInputCode": "Automaatne koodi sisestus", "skipBinding": "Jäta sidumine vahele", "rescan": "Skaneeri uuesti", - "verifyingDevice": "Seadme kontrollimine...", "confirmBinding": "Kinnita sidumine", "associatingDevice": "Seadme seostamine...", "goToBluetoothSettings": "Mine Bluetooth seadetesse", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Valmis sidumiseks", "preparingPairingEnvironment": "Sidumiskeskkonna ettevalmistamine...", "connectDeepSoundViaSystemBluetooth": @@ -1366,8 +1368,6 @@ const Map etEE = { "establishingDeviceAssociation": "Seadme seose loomine...", "waitingCompletePairing": "Palun oota, sidumise lõpetamine...", "pairingSuccessRedirecting": "Sidumine õnnestus! Suunamine avalehele...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Veendu, et ühendatud seade on Voitrans", "deviceAlreadyBoundToOtherAccount": "See seade on juba seotud teise kontoga", "deviceAssociationFailed": "Seadme seostamine ebaõnnestus, proovi uuesti", @@ -1377,19 +1377,12 @@ const Map etEE = { "authorizationFailedCheckCode": "Autoriseerimine ebaõnnestus, kontrolli, kas autoriseerimiskood on õige", "pairingFailedRetry": "Sidumine ebaõnnestus, proovi uuesti", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Luba Bluetooth', 'deviceDisconnected': 'Seade lahti ühendatud', 'readyToStartPairing': 'Valmis sidumist alustama', 'checkingEnvironment': 'Keskkonna kontrollimine...', 'ensureHeadsetOnAndPairingMode': 'Veendu, et kõrvaklapid on sisse lülitatud ja sidumisrežiimis', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Turvalise ühenduse loomine...', 'needManualBindingAuthCode': 'Vajab käsitsi sidumise autoriseerimiskoodi...', 'pairingSuccessful': 'Sidumine õnnestus!', @@ -1410,21 +1403,30 @@ const Map etEE = { 'bleConnectionFailed': 'BLE ühendus ebaõnnestus', 'deviceAuthorizationFailedCheckCode': 'Seadme autoriseerimine ebaõnnestus, kontrolli autoriseerimiskoodi', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Kasutaja tagasiside", 'feedbackInfo': 'Anna tagasisidet või ettepanekuid', 'feedbackDescription': 'Kirjelda oma probleemi või ettepanekut', @@ -1451,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", @@ -1465,7 +1468,60 @@ const Map etEE = { "removeEarbudsEnsureBattery": "Võta mõlemad kõrvaklapid välja ja veendu, et mõlema aku on üle 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Leiti uus versioon @version', + 'otaConfirmUpdateNow': 'Uuendada nüüd?', + 'otaUpdate': 'Uuenda', + 'otaUpgradeSuccess': 'Uuendus õnnestus', + 'otaUpgradeCompleteRepair': + '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': 'Viga BLE ühenduse kontrollimisel: @error', + 'otaBleNotConnected': 'BLE seade pole ühendatud', + 'otaBleNeedConnection': + 'Püsivara uuendus vajab BLE ühendust\nVeendu, et seade on õigesti ühendatud, ja proovi uuesti', + 'otaDeviceInfoUnavailableTitle': 'Seadme info pole saadaval', + 'otaCannotGetDeviceInfo': + 'Seadme infot ei saa hankida\nÜhenda seade uuesti või proovi hiljem', + 'otaBleCheckFailed': 'BLE ühenduse kontroll ebaõnnestus', + 'otaCannotGetDeviceInfoCheckConnection': + 'Seadme infot ei saa hankida, kontrolli ühendust', + 'otaCannotGetProductInfoWithName': + 'Toote infot ei saa hankida, seadme nimi: @deviceName', + 'otaCannotGetBatteryInfo': 'Kehtivat aku infot ei saa hankida', + 'otaLowBattery': 'Madal aku', + 'otaSingleBatteryLow': + 'Seadme aku on püsivara uuenduseks liiga madal\nNõue: aku peab olema üle 20%\nPraegu: @ear @battery%\nLae ja proovi uuesti', + 'otaDoubleBatteryLow': + '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': + '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': + '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': + 'Kontrolli seadme ühendust või uuenduspaketti, veakood: @code', + 'otaDeviceDisconnected': 'Seade ühendus katkestati', + 'otaDeviceConnected': 'Seade on ühendatud', + + // 音乐模块 "noMusic": "Muusikat pole", // 暂无音乐 "noPlayingMusic": "Muusikat ei esitata", // 暂无播放音乐 "unknownSong": "Tundmatu laul", // 未知歌曲 @@ -1513,22 +1569,122 @@ const Map etEE = { "波斯语": "Pärsia", "斯瓦希里语": "Suahiili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Hiina", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Venemaa", + "英国": "Suurbritannia", + "德国": "Saksamaa", + "意大利": "Itaalia", + "法国": "Prantsusmaa", + "西班牙": "Hispaania", + "南非": "Lõuna-Aafrika", + "沙特阿拉伯": "Saudi Araabia", + "土耳其": "Türgi", + "日本": "Jaapan", + "韩国": "Lõuna-Korea", + "新加坡": "Singapur", + "马来西亚": "Malaisia", + "泰国": "Tai", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipiinid", + "印度尼西亚": "Indoneesia", + "阿联酋": "AÜE", + "墨西哥": "Mehhiko", + "巴西": "Brasiilia", + "阿根廷": "Argentina", + "澳大利亚": "Austraalia", + "新西兰": "Uus-Meremaa", + "中国香港": "Hongkong", + "中国澳门": "Macau", + "中国台湾": "Taiwan", + "埃及": "Egiptus", + "希腊": "Kreeka", + "荷兰": "Holland", + "比利时": "Belgia", + "匈牙利": "Ungari", + "罗马尼亚": "Rumeenia", + "瑞士": "Šveits", + "奥地利": "Austria", + "丹麦": "Taani", + "瑞典": "Rootsi", + "挪威": "Norra", + "波兰": "Poola", + "秘鲁": "Peruu", + "智利": "Tšiili", + "哥伦比亚": "Colombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Iirimaa", + "冰岛": "Island", + "阿尔巴尼亚": "Albaania", + "马耳他": "Malta", + "塞浦路斯": "Küpros", + "芬兰": "Soome", + "保加利亚": "Bulgaaria", + "立陶宛": "Leedu", + "拉脱维亚": "Läti", + "爱沙尼亚": "Eesti", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Horvaatia", + "斯洛文尼亚": "Sloveenia", + "捷克": "Tšehhi", + "斯洛伐克": "Slovakkia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Boliivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžeeria", + "突尼斯": "Tuneesia", + "尼日利亚": "Nigeeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etioopia", + "肯尼亚": "Keenia", + "坦桑尼亚": "Tansaania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Iisrael", + "黎巴嫩": "Liibanon", + "约旦": "Jordaania", + "伊拉克": "Iraak", + "科威特": "Kuveit", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Omaan", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongoolia", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Ida-Timor", + "斐济": "Fidži", + "所罗门群岛": "Saalomoni Saared", + "刚果民主共和国": "Kongo Demokraatlik Vabariik", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldiivid", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahama", + "巴布亚新几内亚": "Paapua Uus-Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/fa_ir.dart b/lib/core/translations/language/fa_ir.dart index 6ecc6f7d0..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': 'ادامه', @@ -18,6 +19,11 @@ const Map faIR = { "unknownError": "خطای ناشناخته", "asrConnectionFailed": "اتصال به سرویس تشخیص گفتار ناموفق بود. لطفاً شبکه را بررسی کرده و بعداً دوباره تلاش کنید.", + "justNow": "همین الان", + "minutesAgo": "@minutes دقیقه پیش", + "yesterday": "دیروز", + "daysAgo": "@days روز پیش", + "hoursAgo": "@hours ساعت پیش", // 启动页 "slogan": "دنیا را متصل کن، فراتر از صدا", @@ -28,7 +34,7 @@ const Map faIR = { "explore": "کاوش", "settings": "تنظیمات", - // 语言 + // 语言列表 "followingSystem": "پیروی از سیستم", "chinese": "چینی", "english": "انگلیسی", @@ -72,7 +78,7 @@ const Map faIR = { "arabic": "عربی", "persian": "فارسی", - // 登录页 + // 登录模块 "welcome": "خوش آمدید", "loginTips": "لطفاً با شماره تلفن یا ایمیل خود وارد شوید یا حساب کاربری ایجاد کنید", @@ -101,13 +107,9 @@ const Map faIR = { "resendVerificationCode": "ارسال مجدد کد تأیید", "login": "ورود", "usePasswordLogin": "ورود با رمز عبور", - - // 隐私政策弹窗 "loginDeclaration": "بیانیه Voitrans", // Voitrans 声明 "welcomeToThisApp": "به Voitrans خوش آمدید، لطفاً با دقت بخوانید ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". با کلیک بر روی «موافقم و وارد می‌شوم»، شما تأیید می‌کنید که توافق‌نامه‌های فوق را به طور کامل مطالعه کرده و با آن‌ها موافقت نموده‌اید. کلیک بر روی «مخالفم» منجر به خروج از برنامه خواهد شد.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "مخالفم", // 不同意 @@ -164,7 +166,30 @@ const Map faIR = { 'right': 'راست', 'checkConnectionStatusFailed': 'بررسی وضعیت اتصال ناموفق بود', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'راه‌اندازی بلوتوث ناموفق بود: @error', + 'needBluetoothAndLocationPermission': + 'برای اسکن دستگاه‌ها به مجوزهای بلوتوث و موقعیت مکانی نیاز است', + 'permissionRequestFailedWithError': 'درخواست مجوز ناموفق بود: @error', + 'needPermission': 'مجوز مورد نیاز', + 'blePermissionDialogContent': + 'این برنامه برای اسکن دستگاه‌ها به مجوزهای بلوتوث و موقعیت مکانی نیاز دارد. لطفاً آن‌ها را در تنظیمات فعال کنید.', + 'needEnableBluetooth': 'فعال کردن بلوتوث', + 'enableBluetoothDialogContent': + 'لطفاً برای اسکن و اتصال دستگاه‌ها بلوتوث را فعال کنید.', + 'bleScanFailedWithError': 'اسکن ناموفق بود: @error', + 'bleConnectionSuccess': 'اتصال موفقیت‌آمیز', + 'bleConnectedToDevice': 'متصل به @device', + 'bleConnectionFailedWithError': 'اتصال ناموفق بود: @error', + 'bleDisconnected': 'قطع شد', + 'bleDeviceDisconnected': 'دستگاه قطع شد', + 'bleDisconnectFailedWithError': 'قطع اتصال ناموفق بود: @error', + 'signalStrong': 'قوی', + 'signalMedium': 'متوسط', + 'signalWeak': 'ضعیف', + 'signalVeryWeak': 'بسیار ضعیف', + + // 发现页 "searchAi": "جستجوی ویژگی‌های هوش مصنوعی...", "exploreSlogan": "ایربادهای هوشمند، امکانات بی‌پایان", "exploreSlogan1": "همراه هوشمند، امکانات بی‌پایان", @@ -187,211 +212,264 @@ const Map faIR = { "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", - "asr": "ASR", - "tts": "TTS", - //"aiSummary": "AI摘要", - "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", + "aiChat": "چت هوش مصنوعی", + "translationStats": "آمار ترجمه", + "meetingStats": "آمار جلسات", + "today": "امروز", + "thisWeek": "این هفته", + "thisMonth": "این ماه", + "history": "تاریخچه", + "currentSessionStats": "آمار جلسه فعلی", + "translationCount": "تعداد ترجمه‌ها", + "sessionDuration": "مدت جلسه", + "characters": "کاراکترها", + "recordingDuration": "مدت ضبط", + "totalApiCalls": "مجموع فراخوانی‌های API", + "sessionCount": "تعداد جلسات", + "totalCharacters": "مجموع کاراکترها", + "apiCallStats": "آمار فراخوانی API", + "translationApi": "API ترجمه", + "asr": "تشخیص گفتار", + "tts": "تبدیل متن به گفتار", + "dataVolumeStats": "آمار حجم داده", + "sourceTextCharacters": "کاراکترهای متن مبدأ", + "ttsTextCharacters": "کاراکترهای متن تبدیل به گفتار", + "effectiveAudioDuration": "مدت صوتی مؤثر", + "totalSessionDuration": "مجموع مدت جلسات", + "costStats": "آمار هزینه", + "estimatedCost": "هزینه تخمینی", + "dailyCostThreshold": "سقف هزینه روزانه", + "monthlyCostThreshold": "سقف هزینه ماهانه", + "usageBehaviorStats": "آمار رفتار استفاده", + "mostUsedLanguagePair": "پرکاربردترین جفت زبانی", + "mostUsedMode": "پرکاربردترین حالت", + "asrApiCalls": "فراخوانی‌های تشخیص گفتار", + "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "بارگذاری آمار ناموفق بود. لطفاً بعداً دوباره تلاش کنید.", + "cleanupComplete": "پاکسازی کامل شد", + "cleanedOldData": "داده‌های قدیمی‌تر از ۹۰ روز پاک شد", + "exportFeature": "قابلیت خروجی", + "exportInDevelopment": "خروجی داده‌ها در حال توسعه است", + + // 商品模块 - 通用 + 'availablePackages': 'بسته‌های موجود', + 'remainingQuota': 'سهمیه باقی‌مانده', + 'totalQuota': 'سهمیه کل', + 'remaining': 'باقی‌مانده', + 'featureDescription': 'توضیحات ویژگی', + 'paymentSuccess': 'پرداخت موفق', + 'paymentFailed': 'پرداخت ناموفق', + 'gotIt': 'متوجه شدم', + 'paymentFailedTryAgain': 'پرداخت ناموفق بود. لطفاً دوباره تلاش کنید.', + 'selectPaymentMethod': 'روش پرداخت را انتخاب کنید', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'ایجاد سفارش WeChat Pay ناموفق بود', + 'alipayOrderCreateFailed': 'ایجاد سفارش Alipay ناموفق بود', + 'appleOrderCreateFailed': 'ایجاد سفارش Apple ناموفق بود', + 'googleOrderCreateFailed': 'ایجاد سفارش Google ناموفق بود', + 'paypalOrderCreateFailed': 'ایجاد سفارش PayPal ناموفق بود', + 'paymentException': 'استثنای پرداخت', + 'paymentLaunchFailed': 'راه‌اندازی پرداخت ناموفق بود', + 'paymentExceptionWithError': 'استثنای پرداخت: @error', + 'paymentProcessingCheckLater': + 'سفارش شما در حال پردازش است. لطفاً بعداً بررسی کنید.', + 'paymentResultQueryException': 'استعلام نتیجه پرداخت ناموفق بود: @error', + 'orderConfirmedQuotaRefreshed': 'سفارش تأیید شد. سهمیه شما به‌روزرسانی شد.', + 'paymentCompletedConfirming': 'پرداخت انجام شد. در حال تأیید…', + 'paymentCancelled': 'پرداخت لغو شد', + 'paypalOpenedCompleteInBrowser': + 'PayPal باز شد. لطفاً پرداخت را در مرورگر خود تکمیل کنید.', + 'paypalOpenFailed': 'امکان باز کردن صفحه پرداخت PayPal وجود ندارد', + 'paymentTestTitle': 'تست پرداخت', + 'paymentTestOrderInfo': 'اطلاعات سفارش آزمایشی', + 'paymentTestProductId': 'شناسه محصول', + 'paymentTestProductDescription': 'توضیحات محصول', + 'paymentTestWechatDescription': 'تست پرداخت WeChat Pay', + 'paymentTestAlipayDescription': 'تست پرداخت Alipay', + 'paymentTestAmount': 'مبلغ', + 'paymentTestSelectAmount': 'مبلغ آزمایشی را انتخاب کنید', + 'paying': 'در حال پرداخت...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'وضعیت پرداخت', + 'errorInfoWithMessage': 'خطا: @message', + 'retest': 'آزمایش مجدد', + 'paymentTestInstructionsTitle': 'راهنما', + 'paymentTestInstructionsContent': + '1. یک مبلغ تست انتخاب کنید (پیشنهاد: ¥0.01)\n2. برای شروع روی دکمه پرداخت کلیک کنید\n3. پرداخت را در اپلیکیشن پرداخت تکمیل کنید\n4. برای بررسی نتیجه بازگردید', + 'startingWechatPayment': 'در حال راه‌اندازی WeChat Pay...', + 'startingAlipayPayment': 'در حال راه‌اندازی Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay موفق بود!', + 'wechatPaymentFailed': 'WeChat Pay ناموفق بود', + 'wechatPaymentLaunchFailed': 'راه‌اندازی WeChat Pay ناموفق بود', + 'cannotLaunchWechatPayment': 'امکان راه‌اندازی WeChat Pay وجود ندارد', + 'wechatPaymentException': 'استثنای WeChat Pay', + 'wechatPaymentTestCompleted': 'تست WeChat Pay تکمیل شد', + 'alipayPaymentSuccess': 'Alipay موفق بود!', + 'alipayPaymentFailed': 'Alipay ناموفق بود', + 'alipayPaymentLaunchFailed': 'راه‌اندازی Alipay ناموفق بود', + 'cannotLaunchAlipayPayment': 'امکان راه‌اندازی Alipay وجود ندارد', + 'alipayPaymentException': 'استثنای Alipay', + "insufficientIntegral": "اعتبار ناکافی", + "insufficientBalanceDesc": + 'موجودی ناکافی است، لطفاً به صفحه شارژ مربوطه بروید و شارژ کنید.', + "recharge": 'رفتن به شارژ', + "aiMemberExpiredDesc": + 'عضویت هوش مصنوعی منقضی شده است، لطفاً به صفحه شارژ عضویت بروید و تمدید کنید.', + + // 商品模块 - AI商品页 + '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', + 'سهمیه مکالمه بیشتر، فراخوانی ابزار بیشتر، طول متن گسترده‌تر.', + 'aiHeaderDesc2': 'مناسب برای پرسش و پاسخ، خلاصه‌سازی، تحلیل و اجرای وظایف.', + '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', + 'لیست پخش هوشمند و توصیه آهنگ‌های مشابه', + 'routePlanningAndCongestionAvoidance': 'برنامه‌ریزی مسیر و اجتناب از ترافیک', + 'voiceBroadcastAndWaypoints': 'راهنمای صوتی و تنظیمات نقاط مسیر', + 'realTimeWeatherForecast': 'آب و هوای بلادرنگ و پیش‌بینی', + 'clothingAdviceAndTravelReminders': 'توصیه پوشاک و یادآوری‌های سفر', + 'poiSearchFoodGasParking': 'جستجوی مکان: غذا / پمپ بنزین / پارکینگ', + 'ratingsHoursAndDirectRoutes': 'امتیازات، ساعات کاری و مسیریابی مستقیم', + 'hotNewsAndTopicOverview': 'اخبار داغ و مرور موضوعات', + 'longArticleSummariesAndKeyPoints': 'خلاصه مقالات طولانی و نکات کلیدی', + 'helpCallAndSMS': 'کمک در تماس و پیامک', + 'templatedMessagesAndScheduleReminders': 'پیام‌های الگو و یادآوری‌های برنامه', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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.', + 'ویژگی‌ها به مجوزهای دستگاه، در دسترس بودن سرویس و شرایط شبکه بستگی دارند.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'رونویسی بلادرنگ', + 'sceneLexicon': 'واژه‌نامه سناریویی', + 'subtitleDisplay': 'زیرنویس‌ها', + 'transHeaderDesc1': 'ترجمه همزمان بلادرنگ و ترجمه متن با صدای کم‌تأخیر.', + 'transHeaderDesc2': 'مناسب برای سفر، تجارت، سخنرانی و آموزش.', + 'translateZhEn': 'ترجمه چینی-انگلیسی', + 'lowLatencyVoiceBroadcast': 'پخش صوتی کم‌تأخیر', + 'multiLangTextTranslation': 'ترجمه متن چندزبانه', + 'termOptimizationContextPreserve': 'بهینه‌سازی اصطلاحات و حفظ زمینه', + 'lexiconTourBusinessLife': 'واژه‌نامه‌های سفر/تجارت/زندگی', + 'personalVocabularyMemory': 'حافظه واژگان شخصی', + 'conversationSubtitleLargeText': 'زیرنویس مکالمه / حالت متن بزرگ', + 'colorHighContrast': 'کنتراست رنگ بالا', + 'transDisclaimer': + 'عملکرد ترجمه به میکروفون، تأخیر شبکه و نویز محیط بستگی دارد.', - // 新手引导 / Onboarding + // 商品模块 - 会议商品页 + 'meetingRecording': 'ضبط جلسه', + 'transcriptionAndSummary': 'رونویسی و خلاصه', + 'keywordSearch': 'جستجوی کلمات کلیدی', + 'collaborationSharing': 'همکاری و اشتراک‌گذاری', + 'meetingHeaderDesc1': + 'ضبط صدا، رونویسی، جستجوی کلمات کلیدی و خلاصه خودکار برای افزایش بهره‌وری جلسات.', + 'meetingHeaderDesc2': + 'مناسب برای جلسات کاری، یادداشت کلاس و صورت‌جلسه مصاحبه.', + 'meetingAutoRecording': 'ضبط خودکار و بخش‌بندی', + 'meetingSpeakerTagging': 'برچسب‌گذاری گوینده', + 'meetingLongAudioTranscription': 'رونویسی صوتی طولانی', + 'meetingKeyPointSummary': 'استخراج نکات کلیدی', + 'meetingTopicNameSearch': 'جستجو بر اساس موضوع/نام', + 'meetingTimelineJump': 'پرش در خط زمانی', + 'meetingExportSummary': 'خروجی صورت‌جلسه', + 'meetingMultiPlatformShare': 'اشتراک‌گذاری بین پلتفرم‌ها', + 'meetingDisclaimer': + 'در محیط آرام استفاده کنید؛ عملکرد به میکروفون و شبکه بستگی دارد.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'مرور مزایا', + 'higherQuota': 'سهمیه استفاده بیشتر', + 'lowerUnitPrice': 'قیمت واحد کمتر', + 'priorityService': 'خدمات اولویت‌دار', + 'exclusiveSupportChannel': 'کانال پشتیبانی اختصاصی', + 'fastResponse': 'پاسخ سریع به مشکلات', + 'eventsAndDiscounts': 'رویدادها و تخفیف‌ها', + 'memberExclusiveEvents': 'رویدادهای ویژه اعضا', + 'longTermDiscountPlan': 'طرح تخفیف بلندمدت', + 'generalPrivileges': 'امتیازات عمومی', + 'earlyAccessNewFeatures': 'دسترسی زودهنگام به ویژگی‌های جدید', + 'crossDeviceSync': 'همگام‌سازی بین دستگاه‌ها', + 'vipDisclaimer': + 'مزایای واقعی به جزئیات بسته بستگی دارد و ممکن است با نسخه‌ها تغییر کند.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'هوش مصنوعی پایه ۱۰۰', + 'ai_002_name': 'هوش مصنوعی پایه ۵۰۰', + 'ai_003_name': 'هوش مصنوعی پایه ۱۰۰۰', + 'meet_001_name': 'جلسه پایه ۱۰۰', + 'meet_002_name': 'جلسه پایه ۵۰۰', + 'meet_003_name': 'جلسه پایه ۱۰۰۰', + 'trans_001_name': 'ترجمه پایه ۱۰۰', + 'trans_002_name': 'ترجمه پایه ۵۰۰', + 'trans_003_name': 'ترجمه پایه ۱۰۰۰', + 'ai_001_desc': 'شامل ۱۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.', + 'ai_002_desc': 'شامل ۵۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.', + 'ai_003_desc': 'شامل ۱۰۰۰ بار استفاده. دسترسی به ویژگی‌های اصلی هوش مصنوعی.', + 'meet_001_desc': 'شامل ۱۰۰ ضبط/رونویسی جلسه.', + 'meet_002_desc': 'شامل ۵۰۰ ضبط/رونویسی جلسه.', + 'meet_003_desc': 'شامل ۱۰۰۰ ضبط/رونویسی جلسه.', + 'trans_001_desc': 'شامل ۱۰۰ ترجمه (صوتی/متنی).', + 'trans_002_desc': 'شامل ۵۰۰ ترجمه (صوتی/متنی).', + 'trans_003_desc': 'شامل ۱۰۰۰ ترجمه (صوتی/متنی).', + + // 商品模块 - 页脚 + 'appNameProvider': 'برنامه: VoiTrans · ارائه‌دهنده: VoiTrans', + 'iapCustomerServiceQQLabel': 'خدمات مشتری IAP QQ: @qq', + 'copyrightVoitrans': '© ۲۰۲۵ Voitrans Technologies', + + // 新手引导 '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, ', - // AI 引导步骤 - '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': 'به میکروفون بگویید «لیلی لیلی»', + 'imHere': ' من اینجا هستم~', + 'guideWelcomeWakeAI': + 'به Voitrans خوش آمدید! ابتدا هوش مصنوعی «لیلی» را بیدار کنید.', + 'aiReplyCompleted': 'لیلی پاسخ را تمام کرد!', + 'aiThinking': 'لیلی در حال فکر کردن است…', + 'guideAwakenSuccess': 'عالی! لیلی بیدار شد—از او کمک بخواهید.', + 'confirmInput': 'تأیید ورودی', + 'guideClickSendPrefix': 'روی ارسال ضربه بزنید، ', + 'guideWeatherStart': 'به لیلی بگویید: «آب و هوای امروز چطور است؟»', + 'guideWeatherInput': 'آب و هوای امروز چطور است؟', + 'guideWeatherSend': 'لیلی آب و هوا را به صورت بلادرنگ گزارش می‌دهد', + 'guideWeatherEnd': + 'لیلی می‌تواند آب و هوا را گزارش دهد—دستورات دیگر را امتحان کنید', + 'guideMusicStart': 'به لیلی بگویید: «کمی موسیقی راک پخش کن»', + 'guideMusicInput': 'کمی موسیقی راک پخش کن', + 'guideMusicSend': 'لیلی برای شما موسیقی پیدا می‌کند', + 'guideMusicEnd': 'لیلی موسیقی پیدا کرد—دستورات دیگر را امتحان کنید', + 'guideNavStart': 'به لیلی بگویید: «مسیریابی به فرودگاه شنژن»', + 'guideNavInput': 'مسیریابی به فرودگاه شنژن', + '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', - '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', - - // 商务会议助手页 + 'به لیلی بگویید: «یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن»', + 'guideMeetingInput': 'یک یادآوری جلسه برای ساعت ۳ فردا ایجاد کن', + 'guideMeetingSend': 'لیلی یک یادآوری جلسه ایجاد می‌کند', + 'guideMeetingEnd': 'یادآوری ایجاد شد—دستورات دیگر را امتحان کنید', + 'guidePhoneStart': 'به لیلی بگویید: «به مادر زنگ بزن»', + 'guidePhoneInput': 'به مادر زنگ بزن', + 'guidePhoneSend': 'لیلی تماس می‌گیرد', + 'guidePhoneEnd': 'تماس برقرار شد—دستورات دیگر را امتحان کنید', + 'guideSmsStart': 'به لیلی بگویید: «به پدر پیامک بفرست: برای شام خانه هستم»', + 'guideSmsInput': 'به پدر پیامک بفرست: برای شام خانه هستم', + 'guideSmsSend': 'لیلی پیام را ارسال می‌کند', + 'guideSmsEnd': 'پیام ارسال شد—کنترل صوتی راحت است', + + // Meeting模块 - 首页与导航 "startMeeting": "شروع جلسه", 'edit': 'ویرایش', 'delete': 'حذف', @@ -403,8 +481,6 @@ const Map faIR = { 'recordingDetails': 'جزئیات ضبط', 'aiSummary': 'خلاصه هوش مصنوعی', 'meetingTranscript': 'متن جلسه', - - // Meeting模块 - 导航和基础功能 'files': 'فایل‌ها', 'mine': 'مال من', 'connect': 'اتصال', @@ -464,7 +540,6 @@ const Map faIR = { 'summarizing': 'در حال خلاصه‌سازی...', 'analyzing': 'در حال تجزیه و تحلیل...', 'summaryComplete': 'خلاصه‌سازی کامل شد', - //'generating': '正在生成...', 'generate': 'ایجاد', 'overview': 'نمای کلی', 'transcription': 'متن', @@ -473,6 +548,98 @@ const Map faIR = { 'editSpeaker': 'ویرایش', 'nameSpeaker': 'نام‌گذاری گوینده', + // Meeting模块 - 转写与总结 + 'reSummarize': 'خلاصه‌سازی مجدد', + 'dateAndTime': 'تاریخ و زمان', + 'location': 'مکان', + 'attendees': 'شرکت‌کنندگان', + 'inputLocation': 'ورود مکان', + 'inputAttendees': 'ورود شرکت‌کنندگان', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'انتخاب الگوی خلاصه', + 'useThisTemplate': 'استفاده از این الگو', + 'lastUsed': 'آخرین استفاده‌شده', + 'create': 'ایجاد', + 'templateDetails': 'جزئیات قالب', + 'tag': 'برچسب', + 'description': 'توضیحات', + 'template': 'قالب', + 'deleteTemplate': 'حذف قالب', + 'deleteTemplateConfirm': 'آیا مطمئن هستید که می‌خواهید این قالب را حذف کنید؟', + 'editTemplate': 'ویرایش قالب', + 'createTemplate': 'ایجاد قالب', + 'name': 'نام', + 'templateContentHint': + 'لطفاً محتوای قالب را وارد کنید! نکته: برای تولید سریع محتوای قالب بر اساس نام و توضیحاتی که وارد کرده‌اید، روی دکمه AI بالا کلیک کنید', + 'inputNameHint': 'لطفاً نام را وارد کنید', + 'inputDescHint': 'لطفاً توضیحات را وارد کنید', + 'custom': 'سفارشی', + 'pleaseEnter': 'لطفا وارد کنید', + 'viewAll': 'مشاهده همه', + 'recordingLanguage': 'زبان ضبط', + 'chineseSimplified': 'چینی ماندارین (ساده‌شده)', + 'meetingGenerateNow': 'اکنون ایجاد کن', + 'keyEventsAnalyzed': '{count} رویداد کلیدی تجزیه و تحلیل شد.', + 'aiAnalysisDesc': + 'تجزیه و تحلیل هوش مصنوعی رویدادهای کلیدی را در ضبط‌ها شناسایی می‌کند، به شما امکان می‌دهد رویدادهای مهم را برای ایجاد توسط هوش مصنوعی انتخاب کنید.', + + // Meeting模块 - 文件操作 + 'importing': 'در حال وارد کردن...', + 'batchImporting': 'در حال وارد کردن دسته‌ای...', + 'importingLocalRecordings': 'در حال وارد کردن ضبط‌های محلی...', + 'importFailed': 'وارد کردن فایل ناموفق بود: {filePath}, خطا: {error}', + 'importSuccess': '{count} ضبط محلی با موفقیت وارد شد', + 'importError': 'وارد کردن ناموفق بود: {error}', + 'pleaseSelectAudioFile': 'لطفاً فایل صوتی را انتخاب کنید', + 'shareAudio': 'اشتراک‌گذاری صدای جلسه', + 'shareComplete': 'اشتراک‌گذاری کامل شد!', + 'shareFailed': 'اشتراک‌گذاری ناموفق بود: {error}', + 'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'ذخیره نقشه ذهنی', + 'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی', + 'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود', + + // Meeting模块 - AI问答 + 'askAI': 'از هوش مصنوعی بپرس...', + 'askAIPrompt': 'امروز چه کمکی می‌توانم به شما بکنم؟', + 'continueAsk': 'ادامه پرسش', + 'todoList': 'لیست کارها', + 'extractConclusion': 'استخراج نتیجه', + 'generateKeyIndicators': 'ایجاد شاخص‌های کلیدی', + + // Meeting模块 - 分享与导出 + 'shareLink': 'اشتراک‌گذاری پیوند', + 'copyTranscript': 'کپی متن', + 'copySummary': 'کپی خلاصه', + 'exportAudio': 'خروجی صدا', + 'exportTranscript': 'خروجی متن', + 'shareMeetingAudio': 'اشتراک‌گذاری صدای جلسه', + 'exportSummary': 'خروجی خلاصه', + 'exportAs': 'خروجی به عنوان', + 'exportingPDF': 'در حال خروجی گرفتن PDF...', + 'export': 'صادر کردن', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده', + 'summaryWillBeUpdatedAutomatically': + 'خلاصه بر اساس قالب به‌صورت خودکار به‌روزرسانی می‌شود', + 'nameCurrentSpeaker': 'نام‌گذاری گوینده فعلی', + 'recentlyUsedNames': 'نام‌های اخیراً استفاده‌شده', + 'applyToCurrentParagraph': 'اعمال به پاراگراف فعلی', + 'totalTime': 'زمان کل', + 'summarySpeakerWillBeUpdatedAutomatically': + 'گویندگان خلاصه به طور خودکار به‌روزرسانی خواهند شد', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'همگام‌سازی با ابر', + 'syncToCloudTip': + 'ضبط‌های خود را به طور خودکار با ابر همگام‌سازی کنید، می‌توانید از طریق هر برنامه VOITRANS یا وب VOITRANS (web.voitrans.com) ضبط‌ها را پخش، مدیریت و به اشتراک بگذارید.', + 'syncToVoitransApp': 'همگام‌سازی برنامه VOITRANS', + 'transcriptionRecord': 'سوابق متن', + // Meeting模块 - 我的页面 'transcriptionRecords': 'سوابق متن', 'templateCommunity': 'انجمن الگوها', @@ -492,7 +659,7 @@ const Map faIR = { 'دستگاه Voitrans را برای فعال‌سازی عضویت Starter متصل کنید', 'unlockNow': 'اکنون باز کنید', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': 'مقایسه', 'detailedInfo': 'اطلاعات دقیق', 'monthlyTranscriptionTime': 'زمان ماهانه تبدیل متن', @@ -528,8 +695,6 @@ const Map faIR = { 'به راحتی فایل‌های صوتی را از برنامه‌های محلی یا شخص ثالث مانند یادداشت‌های صوتی، Google Drive و غیره وارد کنید.', 'multipleExportFormatsDesc': 'ضبط‌های صوتی، متن تبدیل‌شده و خلاصه‌های خود را در فرمت‌های مختلف (TXT، PDF، JPEG) برای رفع نیازهای خود خروجی بگیرید.', - - // Meeting模块 - 升级会员 'upgradeMembership': 'عضویت خود را ارتقا دهید', 'yearlySubscription': 'اشتراک سالانه', 'monthlySubscription': 'اشتراک ماهانه', @@ -559,105 +724,26 @@ const Map faIR = { 'بلافاصله پس از خرید فعال می‌شود، تا ۲ سال پس از فعال‌سازی معتبر است.', 'purchase': 'خرید', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'انتخاب الگوی خلاصه', - 'useThisTemplate': 'استفاده از این الگو', - 'lastUsed': 'آخرین استفاده‌شده', - 'viewAll': 'مشاهده همه', - 'recordingLanguage': 'زبان ضبط', - 'chineseSimplified': 'چینی ماندارین (ساده‌شده)', - 'meetingGenerateNow': 'اکنون ایجاد کن', - 'keyEventsAnalyzed': '{count} رویداد کلیدی تجزیه و تحلیل شد.', - 'aiAnalysisDesc': - 'تجزیه و تحلیل هوش مصنوعی رویدادهای کلیدی را در ضبط‌ها شناسایی می‌کند، به شما امکان می‌دهد رویدادهای مهم را برای ایجاد توسط هوش مصنوعی انتخاب کنید.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'در حال وارد کردن...', - 'batchImporting': 'در حال وارد کردن دسته‌ای...', - 'importingLocalRecordings': 'در حال وارد کردن ضبط‌های محلی...', - 'importFailed': 'وارد کردن فایل ناموفق بود: {filePath}, خطا: {error}', - 'importSuccess': '{count} ضبط محلی با موفقیت وارد شد', - 'importError': 'وارد کردن ناموفق بود: {error}', - 'pleaseSelectAudioFile': 'لطفاً فایل صوتی را انتخاب کنید', - 'shareAudio': 'اشتراک‌گذاری صدای جلسه', - 'shareComplete': 'اشتراک‌گذاری کامل شد!', - 'shareFailed': 'اشتراک‌گذاری ناموفق بود: {error}', - 'fileProcessingFailed': 'پردازش فایل ناموفق بود: {filePath}, خطا: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'زبان ناشناخته', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'ذخیره‌سازی', - 'meetingStoragePermissionExplanation': - 'ما به مجوزهای ذخیره‌سازی نیاز داریم تا شما بتوانید فایل‌های صوتی را انتخاب و آپلود کنید.', - 'meetingStoragePermissionPermanentDenial': - 'شناسایی شد که شما مجوز ذخیره‌سازی را برای همیشه رد کرده‌اید. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'اشتراک‌گذاری نقشه ذهنی', - 'shareSuccess': 'اشتراک‌گذاری موفقیت‌آمیز بود', - - // Meeting模块 - AI相关 - 'askAI': 'از هوش مصنوعی بپرس...', - 'askAIPrompt': 'امروز چه کمکی می‌توانم به شما بکنم؟', - 'continueAsk': 'ادامه پرسش', - 'todoList': 'لیست کارها', - 'extractConclusion': 'استخراج نتیجه', - 'generateKeyIndicators': 'ایجاد شاخص‌های کلیدی', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'خلاصه‌سازی مجدد', - - // Meeting模块 - 录音语言相关 + // Meeting模块 - 录音语言 'recordLanguage': 'زبان ضبط', - // 'chinese': '中文普通话(简体)', 'cantonese': 'کانتونی', 'sichuan': 'گویش سیچوان', 'shanghai': 'گویش شانگهایی', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'اشتراک‌گذاری پیوند', - 'copyTranscript': 'کپی متن', - 'copySummary': 'کپی خلاصه', - 'exportAudio': 'خروجی صدا', - 'exportTranscript': 'خروجی متن', - 'shareMeetingAudio': 'اشتراک‌گذاری صدای جلسه', - 'exportSummary': 'خروجی خلاصه', - 'exportAs': 'خروجی به عنوان', - 'exportingPDF': 'در حال خروجی گرفتن PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'اعمال روی همه پاراگراف‌های این گوینده', - 'summaryWillBeUpdatedAutomatically': - 'خلاصه بر اساس قالب به‌صورت خودکار به‌روزرسانی می‌شود', - 'nameCurrentSpeaker': 'نام‌گذاری گوینده فعلی', - 'recentlyUsedNames': 'نام‌های اخیراً استفاده‌شده', - 'applyToCurrentParagraph': 'اعمال به پاراگراف فعلی', - 'totalTime': 'زمان کل', - 'summarySpeakerWillBeUpdatedAutomatically': - 'گویندگان خلاصه به طور خودکار به‌روزرسانی خواهند شد', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'همگام‌سازی با ابر', - 'syncToCloudTip': - 'ضبط‌های خود را به طور خودکار با ابر همگام‌سازی کنید، می‌توانید از طریق هر برنامه VOITRANS یا وب VOITRANS (web.voitrans.com) ضبط‌ها را پخش، مدیریت و به اشتراک بگذارید.', - 'syncToVoitransApp': 'همگام‌سازی برنامه VOITRANS', - 'transcriptionRecord': 'سوابق متن', - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'تاریخ و زمان', - 'location': 'مکان', - 'attendees': 'شرکت‌کنندگان', - 'inputLocation': 'ورود مکان', - 'inputAttendees': 'ورود شرکت‌کنندگان', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'زبان ناشناخته', + 'analysisFailed': 'تحلیل ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'transcriptionFailed': 'رونویسی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'summaryFailed': 'خلاصه‌سازی ناموفق بود، لطفاً بعداً دوباره تلاش کنید', + 'summaryFailedShort': 'خلاصه‌سازی ناموفق', + 'transcriptionFailedShort': 'رونویسی ناموفق', + + // Meeting模块 - 播放器 + 'playerNotReady': 'پخش‌کننده صدا آماده نیست، لطفاً صبر کنید', + 'playFailed': 'پخش ناموفق بود', + 'audioFileNotFound': 'فایل صوتی یافت نشد', + 'fetchingAudio': 'در حال دریافت صدا از فضای ابری...', + 'playerLoadFailed': 'بارگذاری پخش‌کننده صدا ناموفق بود', // 设置页 "systemSettings": "تنظیمات سیستم", @@ -666,10 +752,10 @@ const Map faIR = { "translationRecharge": "شارژ ترجمه", "meetingAssistantRecharge": "شارژ کمک‌کننده جلسه", "cloudSync": "شارژ همگام‌سازی ابری", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "خدمات عضویت", + "bindRewardTitle": "جوایز", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "جایزه اولین اتصال دستگاه صادر شد. برای بستن روی تأیید ضربه بزنید.", "joinDevice": "دستگاه متصل:", "accountId": "شناسه حساب:", "systemSetting": "تنظیمات سیستم", @@ -708,25 +794,14 @@ const Map faIR = { "bleHeadsetFirmwareUpgrade": "ارتقاء سفت‌افزار هدست BLE", "deviceManagement": "مدیریت دستگاه", "manageConnectedDevices": "مدیریت دستگاه‌های بلوتوث متصل", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'نسخه فعلی در حال حاضر آخرین نسخه {version} است', 'checkUpdateFailed': 'بررسی به‌روزرسانی ناموفق بود', 'networkErrorRetry': 'خطای شبکه، لطفاً بعداً دوباره تلاش کنید', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'چت صوتی همزمان', "realtimeVoiceChatInfo": 'تجربه ویژگی‌های تعامل صوتی هوشمند (پیش‌نمایش)', "loading": 'در حال بارگیری...', - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "دستگاه ناشناخته", "deviceTypeClassicBluetoothHeadset": "هدست بلوتوث کلاسیک", "deviceTypeBleBluetoothHeadset": "هدست بلوتوث BLE", @@ -742,8 +817,7 @@ const Map faIR = { "آیا مطمئن هستید که می‌خواهید اتصال دستگاه «{deviceName}» را لغو کنید؟", "confirmUnbindAction": "تأیید لغو اتصال", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "پاک کردن تاریخچه چت", "online": "آنلاین", @@ -772,9 +846,11 @@ const Map faIR = { "loadFailedClickRetry": "بارگیری ناموفق بود، برای تلاش مجدد کلیک کنید", "swipeUpForMore": "برای مشاهده بیشتر به بالا بکشید", "callingTool": "در حال کمک به شما هستم، لطفاً صبر کنید!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 + "voice_interrupt": "قطع صدا", // 语音打断 + 'voice_interrupt_tip': + 'وقتی فعال است: هوش مصنوعی هنگام صحبت کردن توسط صدای شما قطع نمی‌شود و فقط می‌تواند یک دور مکالمه را در هر بار پردازش کند. برای شروع دور جدید، کافی است کلمه بیدارسازی را بگویید.', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "پخش موسیقی", // 来点音乐 "presetNavigation": "مسیریابی به", // 导航 "presetWeather": "آب و هوای امروز", // 今日天气 @@ -786,7 +862,7 @@ const Map faIR = { "todayNews": "اخبار امروز چیست؟", // 今日新闻 "nearbyFood": "چه غذاهای خوشمزه‌ای در این نزدیکی هست؟", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'سلام! من **شیائویان** هستم، می‌توانم به شما کمک کنم:\n\n' '• پاسخ به سوالات و ارائه اطلاعات\n\n' '• ترجمه صوتی همزمان\n\n' @@ -805,18 +881,17 @@ const Map faIR = { 'startVoiceInput': 'شروع ورودی صوتی', 'startPhoneCallMode': 'شروع حالت تماس تلفنی، شروع ورودی صوتی', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'پیام خود را اینجا تایپ کنید...', // 全屏编辑器输入提示 'characterCount': '{count} کاراکتر', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'کپی', 'copySuccess': 'کپی موفقیت‌آمیز بود', 'report': 'گزارش', 'submitSuccess': 'ارسال موفقیت‌آمیز بود', 'submitFailed': 'ارسال ناموفق بود', 'reportSubmitted': 'گزارش ارسال شد، در اسرع وقت آن را پردازش خواهیم کرد', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'مضر/ناامن', 'pornographicVulgar': 'مستهجن/ مبتذل', 'misleadingAttack': 'گمراه‌کننده/تهاجمی', @@ -826,17 +901,21 @@ const Map faIR = { 'other': 'دیگر', 'reportDescriptionHint': 'ما می‌خواهیم دلیل گزارش شما را بدانیم، می‌توانید مشکلی را که با آن مواجه شدید توصیف کنید.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'تولید شده توسط هوش مصنوعی', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'فراخوانی ابزار', + 'noResult': 'نتیجه‌ای یافت نشد', + 'noToolCallContentToCopy': 'محتوای فراخوانی ابزار برای کپی وجود ندارد', + 'toolCallDetails': 'جزئیات فراخوانی ابزار:', + 'toolCallContentCopied': 'محتوای فراخوانی ابزار در کلیپ‌بورد کپی شد', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'در اینجا چند موسیقی توصیه‌شده وجود دارد:', 'playList': 'لیست پخش', 'moreMusic': 'موسیقی بیشتر', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': ' کیلومتر', // 公里单位 'meters': ' متر', // 米单位 'hours': ' ساعت', // 小时单位 @@ -851,7 +930,30 @@ const Map faIR = { "bicycling": "دوچرخه‌سواری", "tsransit": "حمل و نقل عمومی", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'انتخاب برنامه مسیریابی', + 'amapMap': 'نقشه Amap', + 'useAmapNavigation': 'مسیریابی با Amap', + 'baiduMap': 'نقشه بایدو', + 'useBaiduNavigation': 'مسیریابی با نقشه بایدو', + 'googleMap': 'نقشه گوگل', + 'useGoogleNavigation': 'مسیریابی با نقشه گوگل', + 'appleMap': 'نقشه اپل', + 'useAppleNavigation': 'مسیریابی با نقشه اپل', + 'builtInNavigation': 'مسیریابی داخلی', + 'useBuiltInNavigation': 'مسیریابی با نقشه داخلی', + 'navigationStartFailed': 'شروع مسیریابی ناموفق بود', + 'cannotPlayMusicListRetryLater': + 'امکان پخش لیست موسیقی نیست، لطفاً بعداً دوباره تلاش کنید', + 'cannotPlaySong': 'امکان پخش آهنگ نیست', + 'openMapError': 'خطا در باز کردن نقشه', + 'pleaseInstallAmapApp': 'لطفاً ابتدا برنامه Amap را نصب کنید', + 'pleaseInstallBaiduMapApp': 'لطفاً ابتدا برنامه نقشه بایدو را نصب کنید', + 'appleMapStartFailed': 'شروع نقشه اپل ناموفق بود', + 'appleMapUnavailable': 'نقشه اپل در دسترس نیست', + 'openAppleMapError': 'خطا در باز کردن نقشه اپل', + + // Agent模块 - 天气卡片 'weatherQuery': 'استعلام آب و هوا:', 'highest': 'حداکثر', 'lowest': 'حداقل', @@ -881,18 +983,8 @@ const Map faIR = { "friday": "جمعه", "saturday": "شنبه", "sunday": "یکشنبه", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "آفتابی", "partlyCloudy": "کمی ابری", "partlySunny": "نیمه آفتابی", @@ -913,7 +1005,138 @@ const Map faIR = { "haze": "غبار", "strongWind": "باد شدید", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "ترجمه تصویر", + "textTranslation": "ترجمه متن", + + // 翻译模块 - 主页 + "translationHistory": "تاریخچه ترجمه", + "enableRecording": "فعال کردن ضبط", + "viewAudioFiles": "مشاهده فایل‌های صوتی", + "headsetUser": "کاربر هدست", + "phoneUser": "کاربر تلفن", + "selectSourceLanguage": "انتخاب زبان مبدأ", + "selectTargetLanguage": "انتخاب زبان مقصد", + "me": "من", + "counterPart": "طرف مقابل", + "bluetoothCallStateError": + "لطفاً مطمئن شوید هدست بلوتوث به تلفن متصل و در حالت تماس است", + "autoDetect": "تشخیص خودکار", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "تشخیص زبان ناموفق بود", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'غیرفعال کردن پنجره شناور', + 'enableFloatingWindow': 'فعال کردن پنجره شناور', + 'permissionTip': 'نکته مجوز', + 'micPermissionRequiredForRecording': 'مجوز میکروفون برای ضبط الزامی است', + 'deleteTranslationRecordError': 'خطا در حذف سابقه ترجمه: @error', + "translationFailed": "ترجمه ناموفق بود", + "translating": "در حال ترجمه", + "translate": "ترجمه", + "pleaseInputText": "لطفاً متن را وارد کنید", + "inputTextToTranslate": "لطفاً متن مورد نظر برای ترجمه را وارد کنید", + "textTooLong": "متن بیش از حد طولانی است، حداکثر ۵۰۰۰ کاراکتر", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "تاریخچه ترجمه وجود ندارد", + "historyRecords": "سوابق تاریخچه", + "clearResults": "پاک کردن نتایج", + "clearHistory": "پاک کردن تاریخچه", + "clearHistoryConfirm": + "آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.", + "unknownLanguage": "زبان ناشناخته", + "deleteSessionRecord": "حذف سابقه جلسه", + "deleteSessionConfirm": + "آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "انتخاب منبع تصویر", + "imagePreview": "پیش‌نمایش تصویر", + "translationResult": "نتیجه ترجمه", + "recognitionResult": "نتیجه تشخیص", + "translatedImagePreview": "پیش‌نمایش تصویر ترجمه‌شده", + "translatedImageLoadFailed": "بارگذاری تصویر ترجمه‌شده ناموفق بود", + "pleaseSelectImage": "لطفاً یک تصویر انتخاب کنید", + "imageLoadFailed": "بارگذاری تصویر ناموفق بود", + "imageQuality": "کیفیت تصویر", + "maxSize": "حداکثر اندازه", + "close": "بستن", + "setImageQuality": "تنظیم کیفیت تصویر", + "currentQuality": "کیفیت فعلی: @value%", + "setMaxSize": "تنظیم حداکثر اندازه", + "currentMaxSize": "فعلی: @pxpx", + "waitingForAction": "در انتظار اقدام", + "pleaseSelectImageToStart": "لطفاً برای شروع یک تصویر انتخاب کنید", + "chooseImage": "انتخاب تصویر", + "openingCamera": "در حال باز کردن دوربین...", + "openingPhotoAlbum": "در حال باز کردن آلبوم عکس...", + "cancelled": "لغو شد", + "userCancelledSelection": "کاربر انتخاب را لغو کرد", + "translatingImage": "در حال ترجمه تصویر", + "callingImageTranslateService": "در حال فراخوانی سرویس ترجمه تصویر...", + "savingRecord": "در حال ذخیره رکورد", + "savingTranslationResult": "در حال ذخیره نتیجه ترجمه...", + "translationCompleted": "ترجمه تکمیل شد", + "allStepsCompleted": "تمام مراحل تکمیل شد", + "processingFailed": "پردازش ناموفق بود", + "imageProcessingOrTranslationFailed": + "پردازش تصویر یا ترجمه ناموفق بود. لطفاً دوباره تلاش کنید.\nخطا: {error}", + "imageTooLarge": "حجم تصویر از محدودیت ۴ مگابایت بیشتر است", + "imageTooLargeHint": + "حجم تصویر از ۴ مگابایت بیشتر است. کیفیت یا ابعاد را کاهش دهید و دوباره تلاش کنید", + "emptyTranslationResult": "API ترجمه تصویر نتیجه‌ای خالی برگرداند", + "imageTranslationFailedTryLater": + "ترجمه تصویر ناموفق بود. مشکل شبکه یا محدودیت نرخ. لطفاً بعداً تلاش کنید", + "imageTranslationApiException": + "استثنای API ترجمه تصویر. شبکه را بررسی کنید و دوباره تلاش کنید", + "permissionRequired": "نیاز به مجوز", + "cameraPermissionRequired": "برای گرفتن عکس، مجوز دوربین لازم است", + "photoAlbumPermissionRequired": "برای انتخاب تصویر، مجوز آلبوم عکس لازم است", + "translationDetails": "جزئیات ترجمه", + "originalImage": "تصویر اصلی", + "sourceLanguage": "زبان مبدأ", + "targetLanguage": "زبان مقصد", + "translationTime": "زمان ترجمه", + "shareInDevelopment": "قابلیت اشتراک‌گذاری در حال توسعه است", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ترجمه فایل‌های صوتی", + "noAudioFiles": "فایل صوتی وجود ندارد", + "calculating": "در حال محاسبه...", + "playing": "در حال پخش...", + "paused": "متوقف شد", + "clickToPlay": "برای پخش کلیک کنید", + "rename": "تغییر نام", + "smartTranscription": "تبدیل متن هوشمند", + "renameAudioFile": "تغییر نام فایل صوتی", + "enterNewFileName": "لطفاً نام فایل جدید را وارد کنید", + + // 翻译模块 - 翻译详情 + "originalRecord": "سابقه اصلی", + "recordSummary": "خلاصه سابقه", + "clickToGenerateSummary": "برای ایجاد خلاصه جلسه، روی دکمه زیر کلیک کنید", + "summaryContent": "محتوای خلاصه", + "copied": "کپی شد", + "summaryCopiledToClipboard": "خلاصه در کلیپ‌بورد کپی شد", + "extractSummary": "استخراج خلاصه", + "summaryGenerated": "خلاصه ایجاد شد", + "generating": "در حال ایجاد...", + "regenerate": "ایجاد مجدد", + "summaryTimeoutMessage": + "درخواست ایجاد خلاصه به پایان رسید، احتمالاً به دلیل مشکلات شبکه یا مشغولی سرور.", + "deleteTranslationRecord": "حذف سابقه ترجمه", + "deleteTranslationConfirm": + "آیا مطمئن هستید که می‌خواهید این سابقه ترجمه را حذف کنید؟ این عمل قابل بازگشت نیست.", + "originalText": "متن اصلی", + "translatedText": "متن ترجمه‌شده", + "sessionSummary": "خلاصه جلسه", + "cannotShare": "نمی‌توان اشتراک‌گذاری کرد", + "generateSummaryFirst": "لطفاً ابتدا خلاصه را ایجاد کنید", + "translationSessionRecord": "سابقه جلسه ترجمه", + + // 个人资料模块 "editProfile": "ویرایش پروفایل", "avatar": "آواتار", "nickname": "نام مستعار", @@ -929,8 +1152,6 @@ const Map faIR = { 'آیا مطمئن هستید که می‌خواهید حساب خود را برای همیشه حذف کنید؟ این عمل قابل بازگشت نیست.', 'clean': 'پاک کردن حافظه پنهان', 'cleanTips': 'آیا مطمئن هستید که می‌خواهید حافظه پنهان شخصی را پاک کنید؟', - - // Profile 错误信息 'networkConnectionFailed': 'اتصال شبکه ناموفق بود، لطفاً تنظیمات شبکه را بررسی کرده و دوباره تلاش کنید', 'serverTemporarilyUnavailable': @@ -947,10 +1168,6 @@ const Map faIR = { 'اتصال شبکه ناموفق بود، لطفاً تنظیمات شبکه را بررسی کنید', 'serverInternalErrorRetryLater': 'خطای داخلی سرور، لطفاً بعداً دوباره تلاش کنید', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'فشرده‌سازی تصویر ناموفق بود', 'avatarUpdateFailed': 'به‌روزرسانی آواتار ناموفق بود', 'usernameCannotBeEmpty': 'نام کاربری نمی‌تواند خالی باشد', @@ -961,8 +1178,6 @@ const Map faIR = { 'logoutFailedRetry': 'خروج از حساب ناموفق بود، لطفاً دوباره تلاش کنید', 'accountPermanentlyDeleted': 'حساب برای همیشه حذف شد', 'deleteAccountFailedRetry': 'حذف حساب ناموفق بود، لطفاً دوباره تلاش کنید', - - // 账号服务相关 'clearUserDataFailed': 'پاک کردن داده‌های کاربر ناموفق بود', // 清理用户数据失败 'deleteUserDataFailed': 'حذف داده‌های کاربر ناموفق بود', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -977,7 +1192,12 @@ const Map faIR = { 'accountServiceInitialized': 'AccountService آماده‌سازی شد', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'ذخیره‌سازی', + 'meetingStoragePermissionExplanation': + 'ما به مجوزهای ذخیره‌سازی نیاز داریم تا شما بتوانید فایل‌های صوتی را انتخاب و آپلود کنید.', + 'meetingStoragePermissionPermanentDenial': + 'شناسایی شد که شما مجوز ذخیره‌سازی را برای همیشه رد کرده‌اید. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', 'getPermissionStatusFailed': 'دریافت وضعیت مجوز ناموفق بود', 'communicationPermissions': 'مجوزهای ارتباطی', 'bluetoothPermissions': 'مجوزهای بلوتوث', @@ -990,7 +1210,6 @@ const Map faIR = { 'phone': 'تلفن', 'sms': 'پیامک', 'contacts': 'مخاطبین', - //'bluetooth': '蓝牙', 'notification': 'اعلان', 'alarm': 'زنگ هشدار', 'calendarWrite': 'نوشتن در تقویم', @@ -1047,8 +1266,6 @@ const Map faIR = { 'permanentDenialText': 'شما مجوز {permission} را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات برنامه بروید', 'goToSettings': 'رفتن به تنظیمات', - - // 权限申请 'bluetoothScan': 'اسکن بلوتوث', 'bluetoothConnect': 'اتصال بلوتوث', 'bluetoothScanExplanation': @@ -1062,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': @@ -1073,7 +1290,6 @@ const Map faIR = { 'شما مجوز اعلان را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.', 'locationPermissionPermanentDenial': 'شما مجوز موقعیت مکانی را برای همیشه رد کرده‌اید، لطفاً برای فعال کردن آن به تنظیمات بروید.', -//'microphonePermission': '录音', 'storagePermission': 'ذخیره‌سازی', 'microphonePermissionExplanation': 'ما برای ضبط محتوای صوتی به مجوز میکروفون نیاز داریم.', @@ -1083,8 +1299,6 @@ const Map faIR = { 'مجوز میکروفون برای همیشه رد شده است. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز میکروفون را به صورت دستی فعال کنید.', 'storagePermissionPermanentDenial': 'مجوز ذخیره‌سازی برای همیشه رد شده است. برای ادامه استفاده از این ویژگی، لطفاً به تنظیمات برنامه بروید تا مجوز ذخیره‌سازی را به صورت دستی فعال کنید.', - - //permission_util.dart 'permissionUtilNeed': 'نیاز به مجوز ', 'permissionUtilPermission': ' ', 'permissionUtilRestricted': ' مجوز محدود شده است', @@ -1092,7 +1306,22 @@ const Map faIR = { 'این ویژگی در دستگاه فعلی در دسترس نیست یا محدود شده است، لطفاً تنظیمات دستگاه یا محدودیت‌های سیستم را بررسی کنید', 'permissionUtilConfirm': 'تأیید', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'مسیریابی در جریان است', + 'native.notification.navigation.keepRunning': + 'در حال مسیریابی، اپلیکیشن را باز نگه دارید', + 'native.notification.bleAgent.running': 'دستیار صوتی در حال اجراست', + 'native.notification.audioRecording.recording': + 'در حال ضبط صدا، برای بازگشت به اپلیکیشن ضربه بزنید', + 'native.notification.music.waiting': 'در انتظار پخش', + 'native.notification.music.previous': 'قبلی', + 'native.notification.music.next': 'بعدی', + 'native.notification.music.play': 'پخش', + 'native.notification.music.pause': 'توقف', + 'native.notification.qqMusic.playing': 'در حال پخش موسیقی', + + // 版本更新 'newVersionFound': 'نسخه جدید یافت شد', // 版本更新对话框标题 'remindLater': 'بعداً یادآوری کن', // 稍后提醒按钮 'updateNow': 'اکنون به‌روزرسانی کن', // 立即更新按钮 @@ -1103,252 +1332,7 @@ const Map faIR = { 'updateErrorRetry': 'خطا در طول به‌روزرسانی رخ داد، لطفاً بعداً دوباره تلاش کنید', // 更新错误重试提示 - //国家列表 - "邮箱": "ایمیل", - "中国": "چین", - "美国": "ایالات متحده", - "加拿大": "کانادا", - "俄罗斯": "روسیه", - "英国": "بریتانیا", - "德国": "آلمان", - "意大利": "ایتالیا", - "法国": "فرانسه", - "西班牙": "اسپانیا", - "南非": "آفریقای جنوبی", - "沙特阿拉伯": "عربستان سعودی", - "土耳其": "ترکیه", - "日本": "ژاپن", - "韩国": "کره جنوبی", - "新加坡": "سنگاپور", - "马来西亚": "مالزی", - "泰国": "تایلند", - "越南": "ویتنام", - "印度": "هند", - "巴基斯坦": "پاکستان", - "菲律宾": "فیلیپین", - "印度尼西亚": "اندونزی", - "阿联酋": "امارات متحده عربی", - "墨西哥": "مکزیک", - "巴西": "برزیل", - "阿根廷": "آرژانتین", - "澳大利亚": "استرالیا", - "新西兰": "نیوزیلند", - "中国香港": "هنگ کنگ، چین", - "中国澳门": "ماکائو، چین", - "中国台湾": "تایوان، چین", - "埃及": "مصر", - "希腊": "یونان", - "荷兰": "هلند", - "比利时": "بلژیک", - "匈牙利": "مجارستان", - "罗马尼亚": "رومانی", - "瑞士": "سوئیس", - "奥地利": "اتریش", - "丹麦": "دانمارک", - "瑞典": "سوئد", - "挪威": "نروژ", - "波兰": "لهستان", - "秘鲁": "پرو", - "智利": "شیلی", - "哥伦比亚": "کلمبیا", - "委内瑞拉": "ونزوئلا", - "葡萄牙": "پرتغال", - "卢森堡": "لوکزامبورگ", - "爱尔兰": "ایرلند", - "冰岛": "ایسلند", - "阿尔巴尼亚": "آلبانی", - "马耳他": "مالت", - "塞浦路斯": "قبرس", - "芬兰": "فنلاند", - "保加利亚": "بلغارستان", - "立陶宛": "لیتوانی", - "拉脱维亚": "لتونی", - "爱沙尼亚": "استونی", - "乌克兰": "اوکراین", - "塞尔维亚": "صربستان", - "克罗地亚": "کرواسی", - "斯洛文尼亚": "اسلوونی", - "捷克": "جمهوری چک", - "斯洛伐克": "اسلواکی", - "危地马拉": "گواتمالا", - "萨尔瓦多": "السالوادور", - "洪都拉斯": "هندوراس", - "尼加拉瓜": "نیکاراگوئه", - "哥斯达黎加": "کاستاریکا", - "巴拿马": "پاناما", - "海地": "هائیتی", - "玻利维亚": "بولیوی", - "厄瓜多尔": "اکوادور", - "巴拉圭": "پاراگوئه", - "乌拉圭": "اروگوئه", - "摩洛哥": "مراکش", - "阿尔及利亚": "الجزایر", - "突尼斯": "تونس", - "尼日利亚": "نیجریه", - "加纳": "غنا", - "埃塞俄比亚": "اتیوپی", - "肯尼亚": "کنیا", - "坦桑尼亚": "تانزانیا", - "乌干达": "اوگاندا", - "孟加拉国": "بنگلادش", - "以色列": "اسرائیل", - "黎巴嫩": "لبنان", - "约旦": "اردن", - "伊拉克": "عراق", - "科威特": "کویت", - "巴林": "بحرین", - "卡塔尔": "قطر", - "阿曼": "عمان", - "阿富汗": "افغانستان", - "斯里兰卡": "سریلانکا", - "缅甸": "میانمار", - "尼泊尔": "نپال", - "蒙古": "مغولستان", - "柬埔寨": "کامبوج", - "老挝": "لائوس", - "文莱": "برونئی", - "东帝汶": "تیمور شرقی", - "斐济": "فیجی", - "所罗门群岛": "جزایر سلیمان", - "刚果民主共和国": "جمهوری دموکراتیک کنگو", - "安哥拉": "آنگولا", - "苏丹": "سودان", - "马尔代夫": "مالدیو", - "不丹": "بوتان", - "摩纳哥": "موناکو", - "圣马力诺": "سان مارینو", - "牙买加": "جامائیکا", - "巴哈马": "باهاما", - "巴布亚新几内亚": "پاپوآ گینه نو", - "萨摩亚": "ساموآ", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "ترجمه تصویر", - "textTranslation": "ترجمه متن", - - // 翻译主页 (translation_view.dart) - "translationHistory": "تاریخچه ترجمه", - "enableRecording": "فعال کردن ضبط", - "viewAudioFiles": "مشاهده فایل‌های صوتی", - "headsetUser": "کاربر هدست", - "phoneUser": "کاربر تلفن", - "selectSourceLanguage": "انتخاب زبان مبدأ", - "selectTargetLanguage": "انتخاب زبان مقصد", - "me": "من", - "counterPart": "طرف مقابل", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "تشخیص خودکار", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "تاریخچه ترجمه وجود ندارد", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "پاک کردن تاریخچه", - "clearHistoryConfirm": - "آیا مطمئن هستید که می‌خواهید تمام تاریخچه ترجمه را پاک کنید؟ این عمل قابل بازگشت نیست.", - "unknownLanguage": "زبان ناشناخته", - "deleteSessionRecord": "حذف سابقه جلسه", - "deleteSessionConfirm": - "آیا مطمئن هستید که می‌خواهید تمام سوابق ترجمه این جلسه را حذف کنید؟ این عمل قابل بازگشت نیست.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "ترجمه فایل‌های صوتی", - "noAudioFiles": "فایل صوتی وجود ندارد", - "calculating": "در حال محاسبه...", - "playing": "در حال پخش...", - "paused": "متوقف شد", - "clickToPlay": "برای پخش کلیک کنید", - "rename": "تغییر نام", - "smartTranscription": "تبدیل متن هوشمند", - "renameAudioFile": "تغییر نام فایل صوتی", - "enterNewFileName": "لطفاً نام فایل جدید را وارد کنید", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "سابقه اصلی", - "recordSummary": "خلاصه سابقه", - "clickToGenerateSummary": "برای ایجاد خلاصه جلسه، روی دکمه زیر کلیک کنید", - "summaryContent": "محتوای خلاصه", - "copied": "کپی شد", - "summaryCopiledToClipboard": "خلاصه در کلیپ‌بورد کپی شد", - "extractSummary": "استخراج خلاصه", - "summaryGenerated": "خلاصه ایجاد شد", - "generating": "در حال ایجاد...", - "regenerate": "ایجاد مجدد", - "summaryTimeoutMessage": - "درخواست ایجاد خلاصه به پایان رسید، احتمالاً به دلیل مشکلات شبکه یا مشغولی سرور.", - "deleteTranslationRecord": "حذف سابقه ترجمه", - "deleteTranslationConfirm": - "آیا مطمئن هستید که می‌خواهید این سابقه ترجمه را حذف کنید؟ این عمل قابل بازگشت نیست.", - "originalText": "متن اصلی", - "translatedText": "متن ترجمه‌شده", - "sessionSummary": "خلاصه جلسه", - "cannotShare": "نمی‌توان اشتراک‌گذاری کرد", - "generateSummaryFirst": "لطفاً ابتدا خلاصه را ایجاد کنید", - "translationSessionRecord": "سابقه جلسه ترجمه", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "جفت‌سازی دستگاه", "connectYourDeepSoundHeadset": "هدست Voitrans خود را متصل کنید", "bind": "اتصال", @@ -1357,14 +1341,11 @@ const Map faIR = { "autoInputCode": "ورود خودکار کد", "skipBinding": "رد کردن اتصال", "rescan": "اسکن مجدد", - "verifyingDevice": "در حال تأیید دستگاه...", "confirmBinding": "تأیید اتصال", "associatingDevice": "در حال مرتبط‌سازی دستگاه...", "goToBluetoothSettings": "رفتن به تنظیمات بلوتوث", 'bluetooth': 'بلوتوث', - - // 配对状态文本 "readyToPair": "آماده برای جفت‌سازی", "preparingPairingEnvironment": "در حال آماده‌سازی محیط جفت‌سازی...", "connectDeepSoundViaSystemBluetooth": @@ -1374,8 +1355,6 @@ const Map faIR = { "waitingCompletePairing": "لطفاً صبر کنید، در حال تکمیل جفت‌سازی...", "pairingSuccessRedirecting": "جفت‌سازی موفقیت‌آمیز بود! در حال هدایت به صفحه اصلی...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "لطفاً اطمینان حاصل کنید که دستگاه متصل Voitrans است", "deviceAlreadyBoundToOtherAccount": @@ -1387,19 +1366,12 @@ const Map faIR = { "authorizationFailedCheckCode": "مجوز ناموفق بود، لطفاً کد مجوز را بررسی کنید", "pairingFailedRetry": "جفت‌سازی ناموفق بود، لطفاً دوباره تلاش کنید", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'لطفاً بلوتوث را فعال کنید', 'deviceDisconnected': 'دستگاه قطع شد', 'readyToStartPairing': 'آماده برای شروع جفت‌سازی', 'checkingEnvironment': 'در حال بررسی محیط...', 'ensureHeadsetOnAndPairingMode': 'لطفاً اطمینان حاصل کنید که هدست روشن و در حالت جفت‌سازی است', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'در حال برقراری اتصال امن...', 'needManualBindingAuthCode': 'کد مجوز اتصال دستی مورد نیاز است...', 'pairingSuccessful': 'جفت‌سازی موفقیت‌آمیز بود!', @@ -1421,8 +1393,6 @@ const Map faIR = { 'bleConnectionFailed': 'اتصال BLE ناموفق بود', 'deviceAuthorizationFailedCheckCode': 'مجوز دستگاه ناموفق بود، لطفاً کد مجوز را بررسی کنید', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': 'فعال‌سازی دستی بلوتوث مورد نیاز است', // 需要手动开启蓝牙 'bluetoothGuideSteps': 'لطفاً این مراحل را دنبال کنید:', // 请按照以下步骤操作: 'bluetoothGuideStep1': @@ -1435,7 +1405,18 @@ const Map faIR = { 'نکته: می‌توانید آیکون بلوتوث را در مرکز کنترل به مدت طولانی فشار دهید تا به سرعت به تنظیمات بلوتوث دسترسی پیدا کنید', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': 'متوجه شدم', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "مباحث ویژه", + "firstBindRewardDesc": "شما به جای награدهای معمولی دریافت خواهید کرد.", + "vipLevelLabel": "VIP سطح:", + "expiryLabel": "تTL:", + "notActivated": "نامفعال", + "aiChatCreditsLabel": "اعتبار چت AI:", + "translationCreditsLabel": "اعتبار ترجمه:", + "meetingCreditsLabel": "مباحث:", + "ok": "OK", + + // 用户反馈模块 "feedback": "بازخورد", 'feedbackInfo': 'ارائه بازخورد یا پیشنهادات', 'feedbackDescription': 'لطفاً مشکل یا پیشنهاد خود را توصیف کنید', @@ -1462,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": "در حال شارژ", @@ -1476,7 +1458,60 @@ const Map faIR = { "removeEarbudsEnsureBattery": "هر دو ایرباد را بردارید و اطمینان حاصل کنید که سطح باتری بالای ۲۰٪ است", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'نسخه جدید @version پیدا شد', + 'otaConfirmUpdateNow': 'اکنون به‌روزرسانی شود؟', + 'otaUpdate': 'به‌روزرسانی', + 'otaUpgradeSuccess': 'ارتقا با موفقیت انجام شد', + 'otaUpgradeCompleteRepair': + 'ارتقای سفت‌افزار کامل شد!\n\nبرای عملکرد صحیح، دستگاه باید دوباره جفت شود. اکنون به صفحه جفت‌سازی بروید؟', + 'otaPairLater': 'بعداً جفت شود', + 'otaPairNow': 'اکنون جفت شود', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'خطا در بررسی اتصال BLE: @error', + 'otaBleNotConnected': 'دستگاه BLE متصل نیست', + 'otaBleNeedConnection': + 'ارتقای سفت‌افزار به اتصال دستگاه BLE نیاز دارد\nلطفاً مطمئن شوید دستگاه به درستی متصل است و دوباره تلاش کنید', + 'otaDeviceInfoUnavailableTitle': 'اطلاعات دستگاه در دسترس نیست', + 'otaCannotGetDeviceInfo': + 'امکان دریافت اطلاعات دستگاه نیست\nلطفاً دستگاه را دوباره متصل کنید یا بعداً تلاش کنید', + 'otaBleCheckFailed': 'بررسی اتصال BLE ناموفق بود', + 'otaCannotGetDeviceInfoCheckConnection': + 'امکان دریافت اطلاعات دستگاه نیست، لطفاً اتصال دستگاه را بررسی کنید', + 'otaCannotGetProductInfoWithName': + 'امکان دریافت اطلاعات محصول نیست، نام دستگاه: @deviceName', + 'otaCannotGetBatteryInfo': 'امکان دریافت اطلاعات معتبر باتری نیست', + 'otaLowBattery': 'باتری کم', + 'otaSingleBatteryLow': + 'باتری دستگاه برای ارتقای سفت‌افزار خیلی کم است\nشرط: باتری باید بالای ۲۰٪ باشد\nفعلی: @ear @battery%\nلطفاً شارژ کنید و دوباره تلاش کنید', + 'otaDoubleBatteryLow': + 'باتری دستگاه برای ارتقای سفت‌افزار خیلی کم است\nشرط: هر دو ایرباد باید بالای ۲۰٪ باشند\nفعلی: چپ @left٪، راست @right٪\nلطفاً شارژ کنید و دوباره تلاش کنید', + 'otaBatteryCheckFailed': 'بررسی باتری ناموفق بود', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'این به‌روزرسانی شامل بهینه‌سازی عملکرد و رفع باگ‌هاست.', + 'otaGetLatestVersionFailed': 'دریافت اطلاعات آخرین نسخه ناموفق بود', + 'otaGetVersionInfoFailed': 'دریافت اطلاعات نسخه ناموفق بود', + 'otaCheckingDeviceStatus': 'در حال بررسی وضعیت دستگاه...', + 'otaDownloadFailedCheckNetwork': + 'دانلود ناموفق بود، لطفاً اتصال شبکه را بررسی کنید', + 'otaDownloadFailed': 'دانلود ناموفق بود', + 'otaPreparingConnection': 'در حال آماده‌سازی اتصال دستگاه...', + 'otaConnectingDevice': 'در حال اتصال به دستگاه...', + 'otaUpgradeStarted': 'ارتقای OTA آغاز شد...', + 'otaUpgradeProgressWithPercent': 'پیشرفت ارتقا: @percent٪', + 'otaUpgradeSuccessComplete': 'ارتقا با موفقیت تکمیل شد', + 'otaUpgradeFailedWithCode': 'ارتقا ناموفق بود، کد خطا: @code', + 'otaUpgradeFailedTitle': 'ارتقا ناموفق بود', + 'otaUpgradeFailedDesc': + 'لطفاً اتصال دستگاه یا بسته به‌روزرسانی را بررسی کنید، کد خطا: @code', + 'otaDeviceDisconnected': 'دستگاه قطع شد', + 'otaDeviceConnected': 'دستگاه متصل شد', + + // 音乐模块 "noMusic": "بدون موسیقی", // 暂无音乐 "noPlayingMusic": "موسیقی در حال پخش نیست", // 暂无播放音乐 "unknownSong": "آهنگ ناشناخته", // 未知歌曲 @@ -1524,22 +1559,122 @@ const Map faIR = { "波斯语": "فارسی", "斯瓦希里语": "سواحیلی", - // 时间相关 - "justNow": "همین الان", - "minutesAgo": "@minutes دقیقه پیش", - "yesterday": "دیروز", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "ایمیل", + "中国": "چین", + "美国": "ایالات متحده", + "加拿大": "کانادا", + "俄罗斯": "روسیه", + "英国": "بریتانیا", + "德国": "آلمان", + "意大利": "ایتالیا", + "法国": "فرانسه", + "西班牙": "اسپانیا", + "南非": "آفریقای جنوبی", + "沙特阿拉伯": "عربستان سعودی", + "土耳其": "ترکیه", + "日本": "ژاپن", + "韩国": "کره جنوبی", + "新加坡": "سنگاپور", + "马来西亚": "مالزی", + "泰国": "تایلند", + "越南": "ویتنام", + "印度": "هند", + "巴基斯坦": "پاکستان", + "菲律宾": "فیلیپین", + "印度尼西亚": "اندونزی", + "阿联酋": "امارات متحده عربی", + "墨西哥": "مکزیک", + "巴西": "برزیل", + "阿根廷": "آرژانتین", + "澳大利亚": "استرالیا", + "新西兰": "نیوزیلند", + "中国香港": "هنگ کنگ، چین", + "中国澳门": "ماکائو، چین", + "中国台湾": "تایوان، چین", + "埃及": "مصر", + "希腊": "یونان", + "荷兰": "هلند", + "比利时": "بلژیک", + "匈牙利": "مجارستان", + "罗马尼亚": "رومانی", + "瑞士": "سوئیس", + "奥地利": "اتریش", + "丹麦": "دانمارک", + "瑞典": "سوئد", + "挪威": "نروژ", + "波兰": "لهستان", + "秘鲁": "پرو", + "智利": "شیلی", + "哥伦比亚": "کلمبیا", + "委内瑞拉": "ونزوئلا", + "葡萄牙": "پرتغال", + "卢森堡": "لوکزامبورگ", + "爱尔兰": "ایرلند", + "冰岛": "ایسلند", + "阿尔巴尼亚": "آلبانی", + "马耳他": "مالت", + "塞浦路斯": "قبرس", + "芬兰": "فنلاند", + "保加利亚": "بلغارستان", + "立陶宛": "لیتوانی", + "拉脱维亚": "لتونی", + "爱沙尼亚": "استونی", + "乌克兰": "اوکراین", + "塞尔维亚": "صربستان", + "克罗地亚": "کرواسی", + "斯洛文尼亚": "اسلوونی", + "捷克": "جمهوری چک", + "斯洛伐克": "اسلواکی", + "危地马拉": "گواتمالا", + "萨尔瓦多": "السالوادور", + "洪都拉斯": "هندوراس", + "尼加拉瓜": "نیکاراگوئه", + "哥斯达黎加": "کاستاریکا", + "巴拿马": "پاناما", + "海地": "هائیتی", + "玻利维亚": "بولیوی", + "厄瓜多尔": "اکوادور", + "巴拉圭": "پاراگوئه", + "乌拉圭": "اروگوئه", + "摩洛哥": "مراکش", + "阿尔及利亚": "الجزایر", + "突尼斯": "تونس", + "尼日利亚": "نیجریه", + "加纳": "غنا", + "埃塞俄比亚": "اتیوپی", + "肯尼亚": "کنیا", + "坦桑尼亚": "تانزانیا", + "乌干达": "اوگاندا", + "孟加拉国": "بنگلادش", + "以色列": "اسرائیل", + "黎巴嫩": "لبنان", + "约旦": "اردن", + "伊拉克": "عراق", + "科威特": "کویت", + "巴林": "بحرین", + "卡塔尔": "قطر", + "阿曼": "عمان", + "阿富汗": "افغانستان", + "斯里兰卡": "سریلانکا", + "缅甸": "میانمار", + "尼泊尔": "نپال", + "蒙古": "مغولستان", + "柬埔寨": "کامبوج", + "老挝": "لائوس", + "文莱": "برونئی", + "东帝汶": "تیمور شرقی", + "斐济": "فیجی", + "所罗门群岛": "جزایر سلیمان", + "刚果民主共和国": "جمهوری دموکراتیک کنگو", + "安哥拉": "آنگولا", + "苏丹": "سودان", + "马尔代夫": "مالدیو", + "不丹": "بوتان", + "摩纳哥": "موناکو", + "圣马力诺": "سان مارینو", + "牙买加": "جامائیکا", + "巴哈马": "باهاما", + "巴布亚新几内亚": "پاپوآ گینه نو", + "萨摩亚": "ساموآ", }; diff --git a/lib/core/translations/language/fi_fi.dart b/lib/core/translations/language/fi_fi.dart index 5d2d5ea72..0f1ccdd55 100644 --- a/lib/core/translations/language/fi_fi.dart +++ b/lib/core/translations/language/fi_fi.dart @@ -1,3 +1,4 @@ +//芬兰-芬兰语 const Map fiFI = { // 通用 'continue': 'Jatka', @@ -18,6 +19,11 @@ const Map fiFI = { "unknownError": "Tuntematon virhe", "asrConnectionFailed": "Yhteys puheentunnistuspalveluun epäonnistui. Tarkista verkkoyhteys tai yritä myöhemmin uudelleen.", + "justNow": "Juuri nyt", + "minutesAgo": "@minutes minuuttia sitten", + "yesterday": "Eilen", + "daysAgo": "@days päivää sitten", + "hoursAgo": "@hours tuntia sitten", // 启动页 "slogan": "Maailman yhdistäminen, äänen tuolla puolen", @@ -28,7 +34,7 @@ const Map fiFI = { "explore": "Tutustu", "settings": "Asetukset", - // 语言 + // 语言列表 "followingSystem": "Seuraa järjestelmää", "chinese": "Kiina", "english": "Englanti", @@ -72,7 +78,7 @@ const Map fiFI = { "arabic": "Arabia", "persian": "Farsi", - // 登录页 + // 登录模块 "welcome": "Tervetuloa", "loginTips": "Kirjaudu sisään tai rekisteröidy puhelinnumerollasi tai sähköpostillasi", @@ -101,13 +107,9 @@ const Map fiFI = { "resendVerificationCode": "Lähetä vahvistuskoodi uudelleen", "login": "Kirjaudu sisään", "usePasswordLogin": "Kirjaudu sisään salasanalla", - - // 隐私政策弹窗 "loginDeclaration": "Voitransin ilmoitus", // Voitrans 声明 "welcomeToThisApp": "Tervetuloa Voitransiin, lue huolellisesti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", klikkaamalla 'Hyväksy ja siirry' vahvistat, että olet lukenut ja hyväksynyt yllä olevat sopimukset. Klikkaamalla 'Hylkää' poistut sovelluksesta.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hylkää", // 不同意 @@ -167,7 +169,30 @@ const Map fiFI = { 'right': 'Oikea', 'checkConnectionStatusFailed': 'Yhteyden tilan tarkistus epäonnistui', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth-alustus epäonnistui: @error', + '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.', + 'needEnableBluetooth': 'Ota Bluetooth käyttöön', + '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', + 'bleConnectionFailedWithError': 'Yhdistäminen epäonnistui: @error', + 'bleDisconnected': 'Yhteys katkaistu', + 'bleDeviceDisconnected': 'Laitteen yhteys katkaistu', + 'bleDisconnectFailedWithError': 'Yhteyden katkaisu epäonnistui: @error', + 'signalStrong': 'Vahva signaali', + 'signalMedium': 'Keskitason signaali', + 'signalWeak': 'Heikko signaali', + 'signalVeryWeak': 'Erittäin heikko signaali', + + // 发现页 "searchAi": "Etsi AI-toimintoja...", "exploreSlogan": "Älykkäät kuulokkeet, loputtomat mahdollisuudet", "exploreSlogan1": "Älykäs seuralainen, loputtomat mahdollisuudet", @@ -191,211 +216,267 @@ const Map fiFI = { "usageStats": "Käyttöstatistiikka", "usageStatsInfo": "Näytä sovelluksen käytön statistiikka", "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", - //"aiSummary": "AI摘要", - "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.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Tilastojen lataus epäonnistui. Yritä myöhemmin uudelleen.", + "cleanupComplete": "Siivous valmis", + "cleanedOldData": "Poistettu yli 90 päivää vanha data", + "exportFeature": "Vientitoiminto", + "exportInDevelopment": "Datavieniti on kehitteillä", + + // 商品模块 - 通用 + '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": + 'Saldo ei riitä. Siirry vastaavalle lataussivulle ja lataa lisää.', + "recharge": 'Siirry lataukseen', + "aiMemberExpiredDesc": + 'AI-jäsenyys on vanhentunut. Siirry jäsenyyden lataussivulle ja uusi.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musiikki ja suositukset', + 'navigationAndRoutes': 'Navigointi ja reitit', + 'nearbySearch': 'Lähistön haku', + 'newsInformation': 'Uutiset', + 'communicationAssistant': 'Viestintäassistentti', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Suurempi keskusttelukiintiö, enemmän työkalukutsuja, pidempi konteksti.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Sopii agentin kysymyksiin, tiivistämiseen, analyysiin ja tehtävien suorittamiseen.', + 'musicSearchPlaybackControl': 'Musiikkikirjaston haku ja toiston ohjaus', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Älykäs soittolista ja samankaltaisten kappaleiden suositukset', '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', + 'Reittien suunnittelu ja ruuhkien välttäminen', + 'voiceBroadcastAndWaypoints': 'Äänikuulutus ja välipisteasetukset', + 'realTimeWeatherForecast': 'Reaaliaikainen sää ja ennuste', + 'clothingAdviceAndTravelReminders': 'Pukeutumisneuvoja ja matkamuistutuksia', + 'poiSearchFoodGasParking': 'POI-haku: ruokailu / huoltoasema / pysäköinti', + 'ratingsHoursAndDirectRoutes': 'Arviot, aukioloajat ja suorat reitit', + 'hotNewsAndTopicOverview': 'Kuumat uutiset ja aiheyhteenveto', + 'longArticleSummariesAndKeyPoints': 'Pitkien artikkelien tiivistelmät ja avainpisteet', + 'helpCallAndSMS': 'Apua puheluihin ja tekstiviesteihin', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Malliviestit ja aikataulumuistutukset', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Toiminnot riippuvat laitteen käyttöoikeuksista, palvelun saatavuudesta ja verkkoyhteydestä.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Reaaliaikainen litterointi', + 'sceneLexicon': 'Tilannesanasto', + 'subtitleDisplay': 'Tekstitykset', + 'transHeaderDesc1': + 'Reaaliaikainen simultaanitulkkaus ja tekstikäännös matalaviiveisellä äänellä.', + 'transHeaderDesc2': 'Sopii matkustamiseen, liike-elämään, puheisiin ja opetukseen.', + 'translateZhEn': 'Kiinan–englannin käännös', + 'lowLatencyVoiceBroadcast': 'Matalaviiveinen äänisaatto', + 'multiLangTextTranslation': 'Monikielinen tekstikäännös', + 'termOptimizationContextPreserve': + 'Terminologian optimointi ja kontekstin säilyttäminen', + 'lexiconTourBusinessLife': 'Matkailu-/liike-/elämäsanastot', + 'personalVocabularyMemory': 'Henkilökohtaisen sanaston muisti', + 'conversationSubtitleLargeText': 'Keskustelun tekstitykset / Suuritekstinen tila', + 'colorHighContrast': 'Korkea värikontrasti', + 'transDisclaimer': + 'Käännöksen suorituskyky riippuu mikrofonista, verkkoviiveestä ja taustamelusta.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Kokoustallennus', + 'transcriptionAndSummary': 'Litterointi ja yhteenveto', + 'keywordSearch': 'Avainsanahaku', + 'collaborationSharing': 'Yhteistyö ja jakaminen', + 'meetingHeaderDesc1': + 'Äänitallennus, transkriptio, avainsanahaku ja automaattinen yhteenveto tehostavat kokouksia.', + 'meetingHeaderDesc2': + 'Sopii yrityskokouksiin, luentomuistiinpanoihin ja haastattelupöytäkirjoihin.', + 'meetingAutoRecording': 'Automaattinen tallennus ja segmentointi', + 'meetingSpeakerTagging': 'Puhujan merkintä', + 'meetingLongAudioTranscription': 'Pitkän äänen litterointi', + 'meetingKeyPointSummary': 'Avainpisteiden poiminta', + 'meetingTopicNameSearch': 'Haku aiheen/nimen mukaan', + 'meetingTimelineJump': 'Aikajanan hyppy', + 'meetingExportSummary': 'Vie pöytäkirja', + 'meetingMultiPlatformShare': 'Jaa eri alustoilla', + 'meetingDisclaimer': + 'Käytä hiljaisessa ympäristössä; suorituskyky riippuu mikrofonista ja verkosta.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Etujen yhteenveto', + 'higherQuota': 'Suurempi käyttökiintiö', + 'lowerUnitPrice': 'Alempi yksikköhinta', + 'priorityService': 'Prioriteettipalvelu', + 'exclusiveSupportChannel': 'Oma tukikanava', + 'fastResponse': 'Nopea ongelmavastaus', + 'eventsAndDiscounts': 'Tapahtumat ja alennukset', + 'memberExclusiveEvents': 'Jäsenille yksinomaiset tapahtumat', + 'longTermDiscountPlan': 'Pitkäaikainen alennussuunnitelma', + 'generalPrivileges': 'Yleiset etuoikeudet', + 'earlyAccessNewFeatures': 'Varhainen pääsy uusiin ominaisuuksiin', + 'crossDeviceSync': 'Laitteiden välinen synkronointi', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Todelliset edut riippuvat pakettitiedoista ja voivat muuttua versioiden myötä.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Perus 100', + 'ai_002_name': 'AI Perus 500', + 'ai_003_name': 'AI Perus 1000', + 'meet_001_name': 'Kokous Perus 100', + 'meet_002_name': 'Kokous Perus 500', + 'meet_003_name': 'Kokous Perus 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': 'Sisältää 100 käyttöä. Pääsy AI:n ydintoimintoihin.', + 'ai_002_desc': 'Sisältää 500 käyttöä. Pääsy AI:n ydintoimintoihin.', + 'ai_003_desc': 'Sisältää 1000 käyttöä. Pääsy AI:n ydintoimintoihin.', + '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', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Ohita", - '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, ', - // AI 引导步骤 - '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': 'Seuraava', + 'sayLilyHint': 'Sano "Lily Lily" mikrofoniin', + 'imHere': 'Olen täällä~', + 'guideWelcomeWakeAI': 'Tervetuloa Voitransiin! Ensin herätä AI “Lily”.', + 'aiReplyCompleted': 'Lily on vastannut!', + 'aiThinking': 'Lily miettii…', + 'guideAwakenSuccess': 'Hienoa! Lily on hereillä—pyydä apua.', + 'confirmInput': 'Vahvista syöte', + 'guideClickSendPrefix': 'Napauta lähetä, ', + 'guideWeatherStart': 'Kysy Lilyltä: “Mikä on tämän päivän sää?”', + 'guideWeatherInput': 'Mikä on tämän päivän sää?', + 'guideWeatherSend': 'Lily kertoo sään reaaliajassa', + 'guideWeatherEnd': 'Lily voi kertoa sään—kokeile muita komentoja', + 'guideMusicStart': 'Kysy Lilyltä: “Soita rock-musiikkia”', + 'guideMusicInput': 'Soita rock-musiikkia', + 'guideMusicSend': 'Lily etsii musiikkia sinulle', + 'guideMusicEnd': 'Lily löysi musiikkia—kokeile muita komentoja', + 'guideNavStart': 'Kysy Lilyltä: “Navigoi Shenzenin lentokentälle”', + 'guideNavInput': 'Navigoi Shenzenin lentokentälle', + 'guideNavSend': 'Lily suunnittelee reitin', + 'guideNavEnd': 'Navigointi asetettu—kokeile muita komentoja', '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', - - // 商务会议助手页 + 'Kysy Lilyltä: “Luo kokousmuistutus huomenna klo 15”', + 'guideMeetingInput': 'Luo kokousmuistutus huomenna klo 15', + 'guideMeetingSend': 'Lily luo kokousmuistutuksen', + 'guideMeetingEnd': 'Muistutus luotu—kokeile muita komentoja', + 'guidePhoneStart': 'Kysy Lilyltä: “Soita äidille”', + 'guidePhoneInput': 'Soita äidille', + 'guidePhoneSend': 'Lily soittaa puhelun', + 'guidePhoneEnd': 'Puhelu soitettu—kokeile muita komentoja', + 'guideSmsStart': 'Kysy Lilyltä: “Lähetä isälle viesti: Tulen kotiin illalliselle”', + 'guideSmsInput': 'Lähetä isälle viesti: Tulen kotiin illalliselle', + 'guideSmsSend': 'Lily lähettää viestin', + 'guideSmsEnd': 'Viesti lähetetty—ääniohjaus on kätevää', + + // Meeting模块 - 首页与导航 "startMeeting": "Aloita kokous", 'edit': 'Muokkaa', 'delete': 'Poista', @@ -407,250 +488,269 @@ const Map fiFI = { 'recordingDetails': 'Tallenteen tiedot', 'aiSummary': 'AI-yhteenveto', 'meetingTranscript': 'Kokouksen transkriptio', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Käynnistetään Wi-Fiä...', + 'newFilesDetected': 'Uusia tiedostoja havaittu, valmistellaan tuontia', + 'noNewFiles': 'Ei uusia tuotavia tiedostoja', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Aloita tallennus', + 'liveRecording': 'Live-tallennus', + 'audioVideoRecording': 'Ääni-/videotallennus', + 'callRecording': 'Puhelutallennus', + 'importAudio': 'Tuo ääni', '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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + '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': 'Litteroidaan...', + 'summarizing': 'Tiivistetään...', + 'analyzing': 'Analysoidaan...', + 'summaryComplete': 'Yhteenveto valmis', + 'generate': 'Luo', + 'overview': 'Yleiskatsaus', + 'transcription': 'Litterointi', + 'summary': 'Yhteenveto', + 'mindMap': 'Miellekartta', + 'editSpeaker': 'Muokkaa', + 'nameSpeaker': 'Nimeä puhuja', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Tiivistä uudelleen', + 'dateAndTime': 'Päivämäärä ja aika', + 'location': 'Sijainti', + 'attendees': 'Osallistujat', + 'inputLocation': 'Syötä sijainti', + 'inputAttendees': 'Syötä osallistujat', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Valitse yhteenveto-malli', + 'useThisTemplate': 'Käytä tätä mallia', + 'lastUsed': 'Viimeksi käytetty', + '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': 'Näytä kaikki', + 'recordingLanguage': 'Tallennuskieli', + 'chineseSimplified': 'Kiinan mandariini (yksinkertaistettu)', + 'meetingGenerateNow': 'Luo nyt', + 'keyEventsAnalyzed': 'Analysoitu {count} avaintapahtumaa.', + 'aiAnalysisDesc': + 'AI-analyysi tunnistaa tallenteista avaintapahtumat, jotta voit valita tärkeät tapahtumat AI-luontia varten.', + + // Meeting模块 - 文件操作 + 'importing': 'Tuodaan...', + 'batchImporting': 'Tuodaan erissä...', + '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': 'Jaa kokouksen ääni', + 'shareComplete': 'Jakaminen valmis!', + 'shareFailed': 'Jakaminen epäonnistui: {error}', + 'fileProcessingFailed': + 'Tiedoston käsittely epäonnistui: {filePath}, virhe: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Tallenna miellekartta', + 'shareMindMap': 'Jaa miellekartta', + 'shareSuccess': 'Jakaminen onnistui', + + // Meeting模块 - AI问答 + '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': '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': 'Nimeä nykyinen puhuja', + 'recentlyUsedNames': 'Viimeksi käytetyt nimet', + 'applyToCurrentParagraph': 'Käytä nykyiseen kappaleeseen', + 'totalTime': 'Kokonaisaika', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Yhteenvedon puhujat päivitetään automaattisesti', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synkronoi pilveen', + 'syncToCloudTip': + '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', - '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', - - // 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', + 'enabled': 'Käytössä', + 'disabled': 'Ei käytössä', + 'myVoitransDevice': 'Oma VOITRANS-laite', + 'helpAndFeedback': 'Ohje ja palaute', + 'aboutVoitrans': 'Tietoja VOITRANS:ista', + 'meetingDays': 'Päivää', + 'meetingHours': 'Tuntia', + 'voitransAiMember': 'Voitrans AI -jäsen', + 'unlockStarterMember': 'Avaa Starter-jäsenyys', + 'bindDeviceToActivate': + 'Sido Voitrans-laite aktivoidaksesi Starter-jäsenyyden', + 'unlockNow': 'Avaa nyt', + + // Meeting模块 - 会员与升级 + 'comparison': 'Vertailu', + 'detailedInfo': 'Yksityiskohtaiset tiedot', + 'monthlyTranscriptionTime': 'Kuukausittainen litterointiaika', + 'unlimited': 'Rajoittamaton', + 'professionalTemplates': 'Ammattilaismallit', + 'limited': 'Rajoitettu', + 'fullTemplates': 'Täydet mallit', + 'professionalTerms': 'Ammattisanasto', + 'customTemplates': 'Mukautetut mallit', + 'visualMindMap': 'Visuaalinen miellekartta', + 'speakerIdentification': 'Puhujan tunnistus', + 'aiVoiceEnhancement': 'AI-äänenparannus', + 'audioImport': 'Äänen tuonti', + 'multipleExportFormats': 'Useita vientimuotoja', + 'professionalSummaryTemplates': 'Ammattilaiset yhteenvetomallit', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Ammattilaismallin muotoilu työtehosi parantamiseksi. Mukautettu toimialan tarpeiden mukaan.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Voit mukauttaa yhteenvetokehotteet tarpeidesi mukaan ja käyttää niitä tarvittavien yhteenvetojen luomiseen.', '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.', + 'Yhteenvetojen lisäksi – järjestä ja visualisoi avainpisteet miellekartoilla tekstin ymmärtämiseksi.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Löydä, jaa ja saa inspiraatiota käyttäjien luomasta mallikirjastosta.', '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.', + 'Äänen litterointi tukee puhujan tunnistusta, palauttaa kokouksen tai puhelun sisällön intuitiivisemmin. Samalla yhteenveto on tarkempi.', '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.', + 'AI-äänenparannus tukee useita melunvaimennus-asetuksia, poistaa älykkäästi taustamelun, parantaa äänen selkeyttä ja toistokvaliteettia.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Tuo helposti äänitiedostoja paikallisesta tai kolmannen osapuolen sovelluksista, kuten äänimuistiot, Google Drive jne.', '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', + 'Vie äänitallenteet, transkriptiotekstit ja yhteenvedot eri muodoissa (TXT, PDF, JPEG) tarpeesi mukaan.', + 'upgradeMembership': 'Päivitä jäsenyytesi', + 'yearlySubscription': 'Vuositilaus', + 'monthlySubscription': 'Kuukausitilaus', + 'proMonthly': 'Pro ¥60/kuukausi', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 päivän ilmainen kokeilu, sitten ¥800/vuosi. Peruuta milloin tahansa ennen kokeilun päättymistä.', + 'sevenDayTrial': '7 päivän ilmainen kokeilu', + 'unlimitedMonthly': 'Rajoittamaton ¥120/kuukausi', '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äivän ilmainen kokeilu, sitten ¥1600/vuosi. Peruuta milloin tahansa ennen kokeilun päättymistä.', + 'trialNote': '*Ilmainen kokeilu 7 päivää, sitten veloitetaan vuosittain, peruuta milloin tahansa.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/kuukausi', + 'subscribe': 'Tilaa', + 'unlimitedPrice': 'Rajoittamaton ¥198', + 'unlimitedMonthlyPrice': '¥198/kuukausi', '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: ', + '*Tilauksen päivityksen jälkeen alkuperäisen tilauksen jäljellä olevat päivät lasketaan automaattisesti ja hyvitetään maksutilillesi.', + 'buyMoreTranscriptionTime': 'Osta lisää litterointiaikaa', + 'sixThousandMinutes': '6 000 minuuttia', + 'threeThousandMinutes': '3 000 minuuttia', + 'sixHundredMinutes': '600 minuuttia', + 'oneHundredTwentyMinutes': '120 minuuttia', + 'validityPeriod': '*Voimassaoloaika: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Käytä kaikkiin tämän puhujan kappaleisiin', - 'summaryWillBeUpdatedAutomatically': - 'Yhteenveto päivittyy automaattisesti mallin perusteella', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivoituu heti oston jälkeen, voimassa 2 vuotta aktivoinnista.', + 'purchase': 'Osta', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Tallennuskieli', + 'cantonese': 'Kantoninkiina', + 'sichuan': 'Sichuanin murre', + 'shanghai': 'Shanghain murre', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Tuntematon kieli', + 'analysisFailed': 'Analyysi epäonnistui, yritä myöhemmin uudelleen', + 'transcriptionFailed': 'Litterointi epäonnistui, yritä myöhemmin uudelleen', + 'summaryFailed': 'Yhteenveto epäonnistui, yritä myöhemmin uudelleen', + 'summaryFailedShort': 'Yhteenveto epäonnistui', + 'transcriptionFailedShort': 'Litterointi epäonnistui', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Äänisoitin ei ole valmis, odota hetki', + 'playFailed': 'Toisto epäonnistui', + 'audioFileNotFound': 'Äänitiedostoa ei löytynyt', + 'fetchingAudio': 'Haetaan ääntä pilvestä...', + 'playerLoadFailed': 'Äänisoittimen lataus epäonnistui', // 设置页 "systemSettings": "Järjestelmäasetukset", @@ -659,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", @@ -704,43 +804,31 @@ const Map fiFI = { "BLE-kuulokkeiden laiteohjelmiston version päivitys", "deviceManagement": "Laitehallinta", "manageConnectedDevices": "Hallitse yhdistettyjä Bluetooth-laitteita", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Sinulla on jo uusin versio {version}', 'checkUpdateFailed': 'Päivitysten tarkistus epäonnistui', 'networkErrorRetry': 'Verkkovirhe, yritä myöhemmin uudelleen', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reaaliaikainen puhekeskustelu", "realtimeVoiceChatInfo": "Koe älykäs puhevuorovaikutustoiminto (toiminnon esikatselu)", "loading": "Ladataan...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Tuntematon laite", + "deviceTypeClassicBluetoothHeadset": "Perinteinen Bluetooth-kuuloke", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-kuuloke", + "deviceTypeSmartVoiceRecorder": "Älykäs äänitallennin", + "deviceTypeSmartEye": "Älylasit", "unbind": "Poista sidonta", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Ei sidottuja laitteita vielä", + "pleaseBindDeviceFirst": "Sido ensin laite hallintaa varten", + "noMacAddress": "Ei MAC-osoitetta", + "licenseCode": "Lisenssikoodi", + "confirmUnbind": "Vahvista sidonnan poisto", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Haluatko varmasti poistaa laitteen \"{deviceName}\" sidonnan?", + "confirmUnbindAction": "Poista sidonta", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tyhjennä keskusteluhistoria", "online": "Online", @@ -768,22 +856,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Vastaamaan kysymyksiin ja antamaan tietoa\n\n' '• Reaaliaikaisessa puhekäännöksessä\n\n' @@ -803,18 +893,17 @@ const Map fiFI = { 'startVoiceInput': 'Aloita puhesyöttö', 'startPhoneCallMode': 'Aloita puhelutila, aloita puhesyöttö', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Kirjoita viestisi tähän...', // 全屏编辑器输入提示 'characterCount': '{count} merkkiä', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopioi', 'copySuccess': 'Kopioitu onnistuneesti', 'report': 'Ilmoita', 'submitSuccess': 'Lähetetty onnistuneesti', 'submitFailed': 'Lähetys epäonnistui', 'reportSubmitted': 'Ilmoitus lähetetty, käsittelemme sen mahdollisimman pian', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Haitallinen/Turvaton', 'pornographicVulgar': 'Pornografinen/Mauton', 'misleadingAttack': 'Harhaanjohtava/Hyökkäys', @@ -824,17 +913,21 @@ const Map fiFI = { 'other': 'Muu', 'reportDescriptionHint': 'Haluamme tietää, miksi ilmoitat, voit kuvailla kohtaamaasi ongelmaa.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI:n luoma', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Työkalukutsu', + 'noResult': 'Ei tulosta', + 'noToolCallContentToCopy': 'Ei työkalukutsua kopioitavaksi', + 'toolCallDetails': 'Työkalukutsun tiedot:', + 'toolCallContentCopied': 'Työkalukutsu kopioitu leikepöydälle', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tässä on joitain suositeltuja kappaleita:', 'playList': 'Soittolista', 'moreMusic': 'Lisää musiikkia', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'tuntia', // 小时单位 @@ -849,7 +942,30 @@ const Map fiFI = { "bicycling": 'Pyörällä', "tsransit": 'Julkinen liikenne', - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Valitse navigointisovellus', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigoi Amapilla', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigoi Baidu Mapsilla', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigoi Google Mapsilla', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigoi Apple Mapsilla', + 'builtInNavigation': 'Sisäänrakennettu navigointi', + 'useBuiltInNavigation': 'Navigoi sisäänrakennetulla kartalla', + 'navigationStartFailed': 'Navigoinnin käynnistys epäonnistui', + 'cannotPlayMusicListRetryLater': + 'Musiikkilistaa ei voi toistaa, yritä myöhemmin', + 'cannotPlaySong': 'Kappaletta ei voi toistaa', + 'openMapError': 'Virhe kartan avaamisessa', + 'pleaseInstallAmapApp': 'Asenna Amap-sovellus ensin', + 'pleaseInstallBaiduMapApp': 'Asenna Baidu Maps -sovellus ensin', + 'appleMapStartFailed': 'Apple Maps ei käynnistynyt', + 'appleMapUnavailable': 'Apple Maps ei ole käytettävissä', + 'openAppleMapError': 'Virhe Apple Mapsin avaamisessa', + + // Agent模块 - 天气卡片 'weatherQuery': 'Säätietojen kysely:', 'highest': 'Korkein', 'lowest': 'Matalin', @@ -877,18 +993,8 @@ const Map fiFI = { "friday": "Pe", "saturday": "La", "sunday": "Su", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Aurinkoinen", "partlyCloudy": "Puolipilvinen", "partlySunny": "Puoliaurinkoinen", @@ -909,7 +1015,142 @@ const Map fiFI = { "haze": "Usva", "strongWind": "Voimakas tuuli", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Kuvakäännös", + "textTranslation": "Tekstikäännös", + + // 翻译模块 - 主页 + "translationHistory": "Käännöshistoria", + "enableRecording": "Ota tallennus käyttöön", + "viewAudioFiles": "Näytä äänitiedostot", + "headsetUser": "Kuulokkeiden käyttäjä", + "phoneUser": "Puhelimen käyttäjä", + "selectSourceLanguage": "Valitse lähdekieli", + "selectTargetLanguage": "Valitse kohdekieli", + "me": "Minä", + "counterPart": "Keskustelukumppani", + "bluetoothCallStateError": + "Varmista, että Bluetooth-kuuloke on yhdistetty puhelimeen ja että puhelu on käynnissä", + "autoDetect": "Tunnista automaattisesti", // 自动检测 + + // 翻译模块 - 文本翻译 + "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', + 'deleteTranslationRecordError': 'Virhe käännöstietueen poistamisessa: @error', + "translationFailed": "Käännös epäonnistui", + "translating": "Käännetään", + "translate": "Käännä", + "pleaseInputText": "Syötä teksti", + "inputTextToTranslate": "Syötä käännettävä teksti", + "textTooLong": "Teksti on liian pitkä, enintään 5000 merkkiä", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ei historiaa vielä", + "historyRecords": "Historiatietueet", + "clearResults": "Tyhjennä tulokset", + "clearHistory": "Tyhjennä historia", + "clearHistoryConfirm": + "Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.", + "unknownLanguage": "Tuntematon kieli", + "deleteSessionRecord": "Poista istunnon tallenne", + "deleteSessionConfirm": + "Oletko varma, että haluat poistaa kaikki tämän istunnon käännöstallenteet? Tätä toimintoa ei voi kumota.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Kuvan käsittely tai käännös epäonnistui. Yritä uudelleen.\nVirhe: {error}", + "imageTooLarge": "Kuvan koko ylittää 4 Mt rajan", + "imageTooLargeHint": + "Kuvan koko ylittää 4 Mt. Pienennä laatua tai mittoja ja yritä uudelleen", + "emptyTranslationResult": "Kuvakäännös-API palautti tyhjän tuloksen", + "imageTranslationFailedTryLater": + "Kuvakäännös epäonnistui. Verkkovirhe tai kutsurajoitus. Yritä myöhemmin uudelleen", + "imageTranslationApiException": + "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": + "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", + "noAudioFiles": "Ei äänitiedostoja vielä", + "calculating": "Lasketaan...", + "playing": "Toistetaan...", + "paused": "Pysäytetty", + "clickToPlay": "Napsauta toistaaksesi", + "rename": "Nimeä uudelleen", + "smartTranscription": "Älykäs transkriptio", + "renameAudioFile": "Nimeä äänitiedosto uudelleen", + "enterNewFileName": "Anna uusi tiedostonimi", + + // 翻译模块 - 翻译详情 + "originalRecord": "Alkuperäinen tallenne", + "recordSummary": "Tallenteen yhteenveto", + "clickToGenerateSummary": + "Napsauta alla olevaa painiketta luodaksesi istunnon yhteenvedon", + "summaryContent": "Yhteenvedon sisältö", + "copied": "Kopioitu", + "summaryCopiledToClipboard": "Yhteenveto kopioitu leikepöydälle", + "extractSummary": "Pura yhteenveto", + "summaryGenerated": "Yhteenveto luotu", + "generating": "Luodaan...", + "regenerate": "Luo uudelleen", + "summaryTimeoutMessage": + "Yhteenvedon luontipyyntö aikakatkaistiin, syynä saattaa olla verkko-ongelma tai palvelimen ruuhkaisuus.", + "deleteTranslationRecord": "Poista käännöstallenne", + "deleteTranslationConfirm": + "Oletko varma, että haluat poistaa tämän käännöstallenteen? Tätä toimintoa ei voi kumota.", + "originalText": "Alkuperäinen teksti", + "translatedText": "Käännetty teksti", + "sessionSummary": "Istunnon yhteenveto", + "cannotShare": "Ei voi jakaa", + "generateSummaryFirst": "Luo ensin yhteenveto", + "translationSessionRecord": "Käännösistunnon tallenne", + + // 个人资料模块 "editProfile": "Muokkaa henkilötietoja", "avatar": "Avatar", "nickname": "Lempinimi", @@ -923,10 +1164,8 @@ const Map fiFI = { 'deleteAccount': 'Poista tili', 'deleteAccountTips': 'Oletko varma, että haluat poistaa tilisi pysyvästi? Tätä toimintoa ei voi kumota.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Tyhjennä välimuisti', + 'cleanTips': 'Haluatko varmasti tyhjentää henkilökohtaisen välimuistin?', 'networkConnectionFailed': 'Verkkoyhteys epäonnistui, tarkista verkkoyhteyden asetukset ja yritä uudelleen', 'serverTemporarilyUnavailable': @@ -945,10 +1184,6 @@ const Map fiFI = { 'Verkkoyhteys epäonnistui, tarkista verkkoyhteyden asetukset', 'serverInternalErrorRetryLater': 'Sisäinen palvelinvirhe, yritä myöhemmin uudelleen', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kuvan pakkaus epäonnistui', 'avatarUpdateFailed': 'Avatarin päivitys epäonnistui', 'usernameCannotBeEmpty': 'Käyttäjätunnus ei voi olla tyhjä', @@ -959,8 +1194,6 @@ const Map fiFI = { 'logoutFailedRetry': 'Uloskirjautuminen epäonnistui, yritä uudelleen', 'accountPermanentlyDeleted': 'Tili on poistettu pysyvästi', 'deleteAccountFailedRetry': 'Tilin poistaminen epäonnistui, yritä uudelleen', - - // 账号服务相关 'clearUserDataFailed': 'Käyttäjätietojen tyhjennys epäonnistui', // 清理用户数据失败 'deleteUserDataFailed': 'Käyttäjätietojen poisto epäonnistui', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -978,29 +1211,33 @@ const Map fiFI = { 'accountServiceInitialized': 'Tili-palvelu on alustettu', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Tallennustila', + 'meetingStoragePermissionExplanation': + 'Tarvitsemme tallennustilan käyttöoikeuden, jotta voit valita ja lähettää äänitiedostoja.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - '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': @@ -1018,79 +1255,91 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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', + + // 版本更新 'newVersionFound': 'Uusi versio löytyi', // 版本更新对话框标题 'remindLater': 'Muistuta myöhemmin', // 稍后提醒按钮 'updateNow': 'Päivitä nyt', // 立即更新按钮 @@ -1101,253 +1350,7 @@ const Map fiFI = { 'updateErrorRetry': 'Päivityksen aikana tapahtui virhe, yritä myöhemmin uudelleen', // 更新错误重试提示 - //国家列表 - "邮箱": "Sähköposti", - "中国": "Kiina", - "美国": "Yhdysvallat", - "加拿大": "Kanada", - "俄罗斯": "Venäjä", - "英国": "Yhdistynyt kuningaskunta", - "德国": "Saksa", - "意大利": "Italia", - "法国": "Ranska", - "西班牙": "Espanja", - "南非": "Etelä-Afrikka", - "沙特阿拉伯": "Saudi-Arabia", - "土耳其": "Turkki", - "日本": "Japani", - "韩国": "Etelä-Korea", - "新加坡": "Singapore", - "马来西亚": "Malesia", - "泰国": "Thaimaa", - "越南": "Vietnam", - "印度": "Intia", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippiinit", - "印度尼西亚": "Indonesia", - "阿联酋": "Yhdistyneet arabiemiirikunnat", - "墨西哥": "Meksiko", - "巴西": "Brasilia", - "阿根廷": "Argentiina", - "澳大利亚": "Australia", - "新西兰": "Uusi-Seelanti", - "中国香港": "Hongkong (Kiina)", - "中国澳门": "Macao (Kiina)", - "中国台湾": "Taiwan (Kiina)", - "埃及": "Egypti", - "希腊": "Kreikka", - "荷兰": "Alankomaat", - "比利时": "Belgia", - "匈牙利": "Unkari", - "罗马尼亚": "Romania", - "瑞士": "Sveitsi", - "奥地利": "Itävalta", - "丹麦": "Tanska", - "瑞典": "Ruotsi", - "挪威": "Norja", - "波兰": "Puola", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugali", - "卢森堡": "Luxemburg", - "爱尔兰": "Irlanti", - "冰岛": "Islanti", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Kypros", - "芬兰": "Suomi", - "保加利亚": "Bulgaria", - "立陶宛": "Liettua", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Viro", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Tšekki", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tansania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Itä-Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonsaaret", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Käännöshistoria", - "enableRecording": "Ota tallennus käyttöön", - "viewAudioFiles": "Näytä äänitiedostot", - "headsetUser": "Kuulokkeiden käyttäjä", - "phoneUser": "Puhelimen käyttäjä", - "selectSourceLanguage": "Valitse lähdekieli", - "selectTargetLanguage": "Valitse kohdekieli", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ei historiaa vielä", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tyhjennä historia", - "clearHistoryConfirm": - "Oletko varma, että haluat tyhjentää kaiken käännöshistorian? Tätä toimintoa ei voi kumota.", - "unknownLanguage": "Tuntematon kieli", - "deleteSessionRecord": "Poista istunnon tallenne", - "deleteSessionConfirm": - "Oletko varma, että haluat poistaa kaikki tämän istunnon käännöstallenteet? Tätä toimintoa ei voi kumota.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Käännä äänitiedostot", - "noAudioFiles": "Ei äänitiedostoja vielä", - "calculating": "Lasketaan...", - "playing": "Toistetaan...", - "paused": "Pysäytetty", - "clickToPlay": "Napsauta toistaaksesi", - "rename": "Nimeä uudelleen", - "smartTranscription": "Älykäs transkriptio", - "renameAudioFile": "Nimeä äänitiedosto uudelleen", - "enterNewFileName": "Anna uusi tiedostonimi", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Alkuperäinen tallenne", - "recordSummary": "Tallenteen yhteenveto", - "clickToGenerateSummary": - "Napsauta alla olevaa painiketta luodaksesi istunnon yhteenvedon", - "summaryContent": "Yhteenvedon sisältö", - "copied": "Kopioitu", - "summaryCopiledToClipboard": "Yhteenveto kopioitu leikepöydälle", - "extractSummary": "Pura yhteenveto", - "summaryGenerated": "Yhteenveto luotu", - "generating": "Luodaan...", - "regenerate": "Luo uudelleen", - "summaryTimeoutMessage": - "Yhteenvedon luontipyyntö aikakatkaistiin, syynä saattaa olla verkko-ongelma tai palvelimen ruuhkaisuus.", - "deleteTranslationRecord": "Poista käännöstallenne", - "deleteTranslationConfirm": - "Oletko varma, että haluat poistaa tämän käännöstallenteen? Tätä toimintoa ei voi kumota.", - "originalText": "Alkuperäinen teksti", - "translatedText": "Käännetty teksti", - "sessionSummary": "Istunnon yhteenveto", - "cannotShare": "Ei voi jakaa", - "generateSummaryFirst": "Luo ensin yhteenveto", - "translationSessionRecord": "Käännösistunnon tallenne", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Laitteen paritus", "connectYourDeepSoundHeadset": "Yhdistä Voitrans-kuulokkeesi", "bind": "Sido", @@ -1356,14 +1359,11 @@ const Map fiFI = { "autoInputCode": "Syötä koodi automaattisesti", "skipBinding": "Ohita sidonta", "rescan": "Skannaa uudelleen", - "verifyingDevice": "Vahvistetaan laitetta...", "confirmBinding": "Vahvista sidonta", "associatingDevice": "Yhdistetään laitetta...", "goToBluetoothSettings": "Siirry Bluetooth-asetuksiin", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Valmis paritukseen", "preparingPairingEnvironment": "Valmistellaan paritusympäristöä...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1372,6 @@ const Map fiFI = { "establishingDeviceAssociation": "Luodaan laiteyhteyttä...", "waitingCompletePairing": "Odota, paritus on valmis...", "pairingSuccessRedirecting": "Paritus onnistui! Siirrytään etusivulle...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Varmista, että olet yhteydessä Voitrans-laitteeseen", "deviceAlreadyBoundToOtherAccount": "Tämä laite on jo sidottu toiseen tiliin", @@ -1385,19 +1383,12 @@ const Map fiFI = { "authorizationFailedCheckCode": "Valtuutus epäonnistui, tarkista, onko valtuutuskoodi oikein", "pairingFailedRetry": "Paritus epäonnistui, yritä uudelleen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Ota Bluetooth käyttöön', 'deviceDisconnected': 'Laite irrotettu', 'readyToStartPairing': 'Valmis aloittamaan parituksen', 'checkingEnvironment': 'Tarkistetaan ympäristöä...', 'ensureHeadsetOnAndPairingMode': 'Varmista, että kuulokkeet ovat päällä ja paritustilassa', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Luodaan turvallista yhteyttä...', 'needManualBindingAuthCode': 'Manuaalinen sidontavaltuutuskoodi vaaditaan...', 'pairingSuccessful': 'Paritus onnistui!', @@ -1418,21 +1409,31 @@ const Map fiFI = { 'bleConnectionFailed': 'BLE-yhteys epäonnistui', 'deviceAuthorizationFailedCheckCode': 'Laitteen valtuutus epäonnistui, tarkista valtuutuskoodi', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Käyttäjäpalaute", 'feedbackInfo': 'Anna palautetta tai ehdotuksia', 'feedbackDescription': 'Kuvaile kohtaamasi ongelma tai ehdotuksesi', @@ -1460,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", @@ -1474,7 +1476,59 @@ const Map fiFI = { "removeEarbudsEnsureBattery": "Poista molemmat kuulokkeet ja varmista, että molempien akun varaus on yli 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Uusi versio @version löytyi', + 'otaConfirmUpdateNow': 'Päivitä nyt?', + 'otaUpdate': 'Päivitä', + 'otaUpgradeSuccess': 'Päivitys onnistui', + 'otaUpgradeCompleteRepair': + 'Laiteohjelmiston päivitys valmis!\n\nLaite täytyy parittaa uudelleen. Siirry paritussivulle?', + 'otaPairLater': 'Parita myöhemmin', + 'otaPairNow': 'Parita nyt', + 'okConfirm': 'OK', + + // 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', + 'otaDeviceInfoUnavailableTitle': 'Laitteen tiedot eivät saatavilla', + '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', + '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', + 'otaBatteryCheckFailed': 'Akkutarkistus epäonnistui', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Päivitys sisältää suorituskykyparannuksia ja virhekorjauksia.', + 'otaGetLatestVersionFailed': 'Uusimman version haku epäonnistui', + 'otaGetVersionInfoFailed': 'Versiotietojen haku epäonnistui', + 'otaCheckingDeviceStatus': 'Tarkistetaan laitteen tilaa...', + 'otaDownloadFailedCheckNetwork': 'Lataus epäonnistui, tarkista verkkoyhteys', + 'otaDownloadFailed': 'Lataus epäonnistui', + 'otaPreparingConnection': 'Valmistellaan yhteyttä...', + 'otaConnectingDevice': 'Yhdistetään laitteeseen...', + 'otaUpgradeStarted': 'OTA-päivitys aloitettu...', + 'otaUpgradeProgressWithPercent': 'Päivityksen edistyminen: @percent%', + 'otaUpgradeSuccessComplete': 'Päivitys onnistui', + 'otaUpgradeFailedWithCode': 'Päivitys epäonnistui, virhekoodi: @code', + 'otaUpgradeFailedTitle': 'Päivitys epäonnistui', + 'otaUpgradeFailedDesc': + 'Tarkista yhteys tai päivityspaketti, virhekoodi: @code', + 'otaDeviceDisconnected': 'Laitteen yhteys katkaistu', + 'otaDeviceConnected': 'Laite yhdistetty', + + // 音乐模块 "noMusic": "Ei musiikkia", // 暂无音乐 "noPlayingMusic": "Ei soitettavaa musiikkia", // 暂无播放音乐 "unknownSong": "Tuntematon kappale", // 未知歌曲 @@ -1522,22 +1576,122 @@ const Map fiFI = { "波斯语": "Persia", "斯瓦希里语": "Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Sähköposti", + "中国": "Kiina", + "美国": "Yhdysvallat", + "加拿大": "Kanada", + "俄罗斯": "Venäjä", + "英国": "Yhdistynyt kuningaskunta", + "德国": "Saksa", + "意大利": "Italia", + "法国": "Ranska", + "西班牙": "Espanja", + "南非": "Etelä-Afrikka", + "沙特阿拉伯": "Saudi-Arabia", + "土耳其": "Turkki", + "日本": "Japani", + "韩国": "Etelä-Korea", + "新加坡": "Singapore", + "马来西亚": "Malesia", + "泰国": "Thaimaa", + "越南": "Vietnam", + "印度": "Intia", + "巴基斯坦": "Pakistan", + "菲律宾": "Filippiinit", + "印度尼西亚": "Indonesia", + "阿联酋": "Yhdistyneet arabiemiirikunnat", + "墨西哥": "Meksiko", + "巴西": "Brasilia", + "阿根廷": "Argentiina", + "澳大利亚": "Australia", + "新西兰": "Uusi-Seelanti", + "中国香港": "Hongkong (Kiina)", + "中国澳门": "Macao (Kiina)", + "中国台湾": "Taiwan (Kiina)", + "埃及": "Egypti", + "希腊": "Kreikka", + "荷兰": "Alankomaat", + "比利时": "Belgia", + "匈牙利": "Unkari", + "罗马尼亚": "Romania", + "瑞士": "Sveitsi", + "奥地利": "Itävalta", + "丹麦": "Tanska", + "瑞典": "Ruotsi", + "挪威": "Norja", + "波兰": "Puola", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugali", + "卢森堡": "Luxemburg", + "爱尔兰": "Irlanti", + "冰岛": "Islanti", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Kypros", + "芬兰": "Suomi", + "保加利亚": "Bulgaria", + "立陶宛": "Liettua", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Viro", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Kroatia", + "斯洛文尼亚": "Slovenia", + "捷克": "Tšekki", + "斯洛伐克": "Slovakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokko", + "阿尔及利亚": "Algeria", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tansania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Libanon", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Itä-Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonsaaret", + "刚果民主共和国": "Kongon demokraattinen tasavalta", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Malediivit", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaika", + "巴哈马": "Bahama", + "巴布亚新几内亚": "Papua-Uusi-Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/fr_fr.dart b/lib/core/translations/language/fr_fr.dart index dc7f680b2..97dc035ba 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', @@ -18,6 +19,11 @@ const Map frFR = { "unknownError": "Erreur inconnue", "asrConnectionFailed": "La connexion au service de reconnaissance vocale a échoué. Vérifiez votre connexion réseau ou réessayez plus tard.", + "justNow": "À l’instant", + "minutesAgo": "Il y a @minutes minutes", + "yesterday": "Hier", + "daysAgo": "Il y a @days jours", + "hoursAgo": "Il y a @hours heures", // 启动页 "slogan": "Connecter le monde, au-delà de la voix", @@ -28,7 +34,7 @@ const Map frFR = { "explore": "Explorer", "settings": "Paramètres", - // 语言 + // 语言列表 "followingSystem": "Suivre le système", "chinese": "Chinois", "english": "Anglais", @@ -43,13 +49,13 @@ const Map frFR = { "russian": "Russe", "vietnamese": "Vietnamien", "italian": "Italien", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonésien", "thai": "Thaï", "malay": "Malais", "turkish": "Turc", "polish": "Polonais", - "filipino": "Filipino", + "filipino": 'Filipino', "dutch": "Néerlandais", "swedish": "Suédois", "danish": "Danois", @@ -72,7 +78,7 @@ const Map frFR = { "arabic": "Arabe", "persian": "Persan", - // 登录页 + // 登录模块 "welcome": "Bienvenue", "loginTips": "Veuillez vous connecter ou vous inscrire avec votre numéro de téléphone ou votre e-mail", @@ -102,13 +108,9 @@ const Map frFR = { "resendVerificationCode": "Renvoyer le code de vérification", "login": "Se connecter", "usePasswordLogin": "Utiliser la connexion par mot de passe", - - // 隐私政策弹窗 "loginDeclaration": "Déclaration Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bienvenue sur Voitrans, veuillez lire attentivement", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ". En cliquant sur 'Accepter et entrer', vous indiquez que vous avez entièrement lu et accepté les accords ci-dessus. Cliquer sur 'Refuser' fermera l'application.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Refuser", // 不同意 @@ -119,7 +121,7 @@ const Map frFR = { "reconnect": "Reconnecter", "connectingDevice": "Connexion à l'appareil...", "connectedTo": "Connecté à", - "signal": "Signal", + "signal": 'Signal', "deviceId": "ID de l'appareil", "firmwareVersion": "Version du firmware", "disconnectedDevice": @@ -158,7 +160,7 @@ const Map frFR = { "zeroSignal": "Aucun signal", "good": "Bon", "fine": "Excellent", - "excellent": "Excellent", + "excellent": 'Excellent', "unknown": "Inconnu", 'bluetoothTurnedOff': 'Bluetooth est désactivé, veuillez l\'activer', 'bluetoothOff': 'Bluetooth désactivé', @@ -170,7 +172,31 @@ const Map frFR = { 'checkConnectionStatusFailed': 'Échec de la vérification de l\'état de la connexion', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Echec de l initialisation Bluetooth : @error', + 'needBluetoothAndLocationPermission': + 'Les autorisations Bluetooth et de localisation sont requises pour scanner', + 'permissionRequestFailedWithError': + 'Echec de la demande d autorisation : @error', + 'needPermission': 'Autorisation requise', + 'blePermissionDialogContent': + 'Cette application necessite les autorisations Bluetooth et de localisation pour scanner les appareils. Veuillez les activer dans les parametres.', + 'needEnableBluetooth': 'Activer le Bluetooth', + 'enableBluetoothDialogContent': + 'Veuillez activer le Bluetooth pour scanner et connecter les appareils.', + 'bleScanFailedWithError': 'Echec du scan : @error', + 'bleConnectionSuccess': 'Connexion reussie', + 'bleConnectedToDevice': 'Connecte a @device', + 'bleConnectionFailedWithError': 'Echec de la connexion : @error', + 'bleDisconnected': 'Deconnecte', + 'bleDeviceDisconnected': 'Appareil deconnecte', + 'bleDisconnectFailedWithError': 'Echec de la deconnexion : @error', + 'signalStrong': 'Fort', + 'signalMedium': 'Moyen', + 'signalWeak': 'Faible', + 'signalVeryWeak': 'Tres faible', + + // 发现页 "searchAi": "Rechercher des fonctions IA...", "exploreSlogan": "Écouteurs intelligents, possibilités infinies", "exploreSlogan1": "Compagnon intelligent, possibilités infinies", @@ -194,211 +220,279 @@ const Map frFR = { "usageStats": "Statistiques d'utilisation", "usageStatsInfo": "Consultez les statistiques d'utilisation de l'application", "scene": "Scénarios", + // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "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 IA", + "translationStats": "Statistiques de traduction", + "meetingStats": "Statistiques de réunion", + "today": "Aujourd’hui", + "thisWeek": "Cette semaine", + "thisMonth": "Ce mois-ci", + "history": "Historique", + "currentSessionStats": "Statistiques de la session en cours", + "translationCount": "Nombre de traductions", + "sessionDuration": "Durée de la session", + "characters": "Caractères", + "recordingDuration": "Durée d’enregistrement", + "totalApiCalls": "Nombre total d’appels API", + "sessionCount": "Nombre de sessions", + "totalCharacters": "Nombre total de caractères", + "apiCallStats": "Statistiques des appels API", + "translationApi": "API de traduction", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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": "Statistiques de volume de données", + "sourceTextCharacters": "Caractères du texte source", + "ttsTextCharacters": "Caractères du texte TTS", + "effectiveAudioDuration": "Durée audio effective", + "totalSessionDuration": "Durée totale des sessions", + "costStats": "Statistiques de coût", + "estimatedCost": "Coût estimé", + "dailyCostThreshold": "Seuil de coût quotidien", + "monthlyCostThreshold": "Seuil de coût mensuel", + "usageBehaviorStats": "Statistiques de comportement d’usage", + "mostUsedLanguagePair": "Paire de langues la plus utilisée", + "mostUsedMode": "Mode le plus utilisé", + "asrApiCalls": "Appels ASR", + "totalAudioDuration": "Durée audio totale", + "audioFileSize": "Taille du fichier audio", + "transcriptBytes": "Octets de transcription", + "loadFailed": "Échec du chargement", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Échec du chargement des statistiques. Veuillez réessayer plus tard.", + "cleanupComplete": "Nettoyage terminé", + "cleanedOldData": "Données de plus de 90 jours supprimées", + "exportFeature": "Fonction d'exportation", + "exportInDevelopment": + "L'exportation de données est en cours de développement", + + // 商品模块 - 通用 + 'availablePackages': 'Forfaits disponibles', + 'remainingQuota': 'Quota restant', + 'totalQuota': 'Quota total', + 'remaining': 'Restant', + 'featureDescription': 'Description de la fonctionnalité', + 'paymentSuccess': 'Paiement réussi', + 'paymentFailed': 'Échec du paiement', + 'gotIt': 'Compris', + 'paymentFailedTryAgain': 'Échec du paiement. Veuillez réessayer.', + 'selectPaymentMethod': 'Sélectionnez le mode de paiement', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Échec de la création de la commande WeChat', + 'alipayOrderCreateFailed': 'Échec de la création de la commande Alipay', + 'appleOrderCreateFailed': 'Échec de la création de la commande Apple', + 'googleOrderCreateFailed': 'Échec de la création de la commande Google', + 'paypalOrderCreateFailed': 'Échec de la création de la commande PayPal', + 'paymentException': 'Exception de paiement', + 'paymentLaunchFailed': 'Échec du lancement du paiement', + 'paymentExceptionWithError': 'Exception de paiement : @error', + 'paymentProcessingCheckLater': + 'Votre commande est en cours de traitement. Veuillez vérifier plus tard.', + 'paymentResultQueryException': + 'Échec de la requête du résultat de paiement : @error', + 'orderConfirmedQuotaRefreshed': + 'Commande confirmée. Votre quota a été actualisé.', + 'paymentCompletedConfirming': 'Paiement effectué. Confirmation en cours…', + 'paymentCancelled': 'Paiement annulé', + 'paypalOpenedCompleteInBrowser': + 'PayPal ouvert. Veuillez effectuer le paiement dans votre navigateur.', + 'paypalOpenFailed': "Impossible d'ouvrir la page de paiement PayPal", + 'paymentTestTitle': 'Test de paiement', + 'paymentTestOrderInfo': 'Informations de la commande de test', + 'paymentTestProductId': 'ID du produit', + 'paymentTestProductDescription': 'Description du produit', + 'paymentTestWechatDescription': 'Test de paiement WeChat Pay', + 'paymentTestAlipayDescription': 'Test de paiement Alipay', + 'paymentTestAmount': 'Montant', + 'paymentTestSelectAmount': 'Sélectionnez le montant du test', + 'paying': 'Paiement en cours...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Statut du paiement', + 'errorInfoWithMessage': 'Erreur : @message', + 'retest': 'Retester', + 'paymentTestInstructionsTitle': 'Instructions', + 'paymentTestInstructionsContent': + "1. Sélectionnez un montant de test (recommandé : ¥0.01)\n2. Cliquez sur le bouton de paiement pour commencer\n3. Effectuez le paiement dans l'application de paiement\n4. Revenez vérifier le résultat", + 'startingWechatPayment': 'Lancement de WeChat Pay...', + 'startingAlipayPayment': "Lancement d'Alipay...", + 'wechatPaymentSuccess': 'Paiement WeChat Pay réussi !', + 'wechatPaymentFailed': 'Échec du paiement WeChat Pay', + 'wechatPaymentLaunchFailed': 'Échec du lancement de WeChat Pay', + 'cannotLaunchWechatPayment': 'Impossible de lancer WeChat Pay', + 'wechatPaymentException': 'Exception WeChat Pay', + 'wechatPaymentTestCompleted': 'Test de paiement WeChat Pay terminé', + 'alipayPaymentSuccess': 'Paiement Alipay réussi !', + 'alipayPaymentFailed': 'Échec du paiement Alipay', + 'alipayPaymentLaunchFailed': "Échec du lancement d'Alipay", + 'cannotLaunchAlipayPayment': 'Impossible de lancer Alipay', + 'alipayPaymentException': 'Exception Alipay', + "insufficientIntegral": "Points insuffisants", + "insufficientBalanceDesc": + 'Solde insuffisant, veuillez aller à la page de recharge correspondante pour recharger.', + "recharge": 'Aller recharger', + "aiMemberExpiredDesc": + 'Votre abonnement IA a expiré, veuillez aller à la page de recharge pour le renouveler.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musique & Recommandations', + 'navigationAndRoutes': 'Navigation & Itinéraires', + 'nearbySearch': 'Recherche à proximité', + 'newsInformation': 'Actualités', + 'communicationAssistant': 'Assistant de communication', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + "Quota de conversation plus élevé, plus d\u2019appels d\u2019outils, contexte étendu.", 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + "Adapté aux questions-réponses avec l\u2019agent, aux résumés, aux analyses et à l\u2019exécution de tâches.", + 'musicSearchPlaybackControl': + 'Recherche dans la bibliothèque musicale et contrôle de lecture', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Listes de lecture intelligentes et recommandations de chansons similaires', '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', + 'Planification d\'itinéraire et évitement des embouteillages', + 'voiceBroadcastAndWaypoints': + 'Diffusion vocale et paramètres de points de passage', + 'realTimeWeatherForecast': 'Météo en temps réel et prévisions', + 'clothingAdviceAndTravelReminders': + 'Conseils vestimentaires et rappels de voyage', + 'poiSearchFoodGasParking': + 'Recherche de POI : restauration / carburant / stationnement', + 'ratingsHoursAndDirectRoutes': + 'Avis, horaires d\'ouverture et itinéraires directs', + 'hotNewsAndTopicOverview': 'Actualités populaires et aperçu des sujets', + 'longArticleSummariesAndKeyPoints': + 'Résumés d\'articles longs et points clés', + 'helpCallAndSMS': 'Aide pour les appels et les SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Messages prédéfinis et rappels de planning', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + "Les fonctionnalités dépendent des autorisations de l’appareil, de la disponibilité du service et des conditions réseau.", + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transcription en temps réel', + 'sceneLexicon': 'Glossaire de scénarios', + 'subtitleDisplay': 'Sous-titres', + 'transHeaderDesc1': + 'Interprétation simultanée en temps réel et traduction de texte avec voix à faible latence.', + 'transHeaderDesc2': + "Adapté aux voyages, aux affaires, aux discours et à l\u2019enseignement.", + 'translateZhEn': 'Traduction chinois–anglais', + 'lowLatencyVoiceBroadcast': 'Diffusion vocale à faible latence', + 'multiLangTextTranslation': 'Traduction de texte multilingue', + 'termOptimizationContextPreserve': + 'Optimisation terminologique et préservation du contexte', + 'lexiconTourBusinessLife': 'Lexiques Voyage/Affaires/Vie quotidienne', + 'personalVocabularyMemory': 'Mémorisation du vocabulaire personnel', + 'conversationSubtitleLargeText': + 'Sous-titres de conversation / Mode grand texte', + 'colorHighContrast': 'Contraste de couleurs élevé', + 'transDisclaimer': + 'Les performances de traduction dépendent du microphone, de la latence réseau et du bruit ambiant.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Enregistrement de réunion', + 'transcriptionAndSummary': 'Transcription et résumé', + 'keywordSearch': 'Recherche par mots-clés', + 'collaborationSharing': 'Collaboration et partage', + 'meetingHeaderDesc1': + 'Enregistrement audio, transcription, recherche par mots-clés et résumé automatique pour améliorer l’efficacité des réunions.', + 'meetingHeaderDesc2': + 'Convient aux réunions professionnelles, aux notes de cours et aux comptes rendus d’entretien.', + 'meetingAutoRecording': 'Enregistrement automatique et segmentation', + 'meetingSpeakerTagging': 'Identification des intervenants', + 'meetingLongAudioTranscription': 'Transcription d’audio long', + 'meetingKeyPointSummary': 'Extraction des points clés', + 'meetingTopicNameSearch': 'Recherche par sujet/nom', + 'meetingTimelineJump': 'Saut dans la chronologie', + 'meetingExportSummary': 'Exporter le compte rendu', + 'meetingMultiPlatformShare': 'Partager sur plusieurs plateformes', + 'meetingDisclaimer': + 'À utiliser dans des environnements calmes ; les performances dépendent du microphone et du réseau.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Aperçu des avantages', + 'higherQuota': 'Quota d’utilisation plus élevé', + 'lowerUnitPrice': 'Prix unitaire plus bas', + 'priorityService': 'Service prioritaire', + 'exclusiveSupportChannel': 'Canal d’assistance dédié', + 'fastResponse': 'Réponse rapide aux problèmes', + 'eventsAndDiscounts': 'Événements et réductions', + 'memberExclusiveEvents': 'Événements réservés aux membres', + 'longTermDiscountPlan': 'Plan de réduction long terme', + 'generalPrivileges': 'Avantages généraux', + 'earlyAccessNewFeatures': 'Accès anticipé aux nouvelles fonctionnalités', + 'crossDeviceSync': 'Synchronisation multi‑appareils', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Les avantages réels dépendent des détails du forfait et peuvent évoluer selon les versions.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'IA Basique 100', + 'ai_002_name': 'IA Basique 500', + 'ai_003_name': 'IA Basique 1000', + 'meet_001_name': 'Réunion Basique 100', + 'meet_002_name': 'Réunion Basique 500', + 'meet_003_name': 'Réunion Basique 1000', + 'trans_001_name': 'Traduction Basique 100', + 'trans_002_name': 'Traduction Basique 500', + 'trans_003_name': 'Traduction Basique 1000', + 'ai_001_desc': 'Inclut 100 utilisations. Accès aux fonctions IA principales.', + 'ai_002_desc': 'Inclut 500 utilisations. Accès aux fonctions IA principales.', + 'ai_003_desc': + 'Inclut 1000 utilisations. Accès aux fonctions IA principales.', + 'meet_001_desc': 'Inclut 100 enregistrements/transcriptions de réunions.', + 'meet_002_desc': 'Inclut 500 enregistrements/transcriptions de réunions.', + 'meet_003_desc': 'Inclut 1000 enregistrements/transcriptions de réunions.', + 'trans_001_desc': 'Inclut 100 traductions (voix/texte).', + 'trans_002_desc': 'Inclut 500 traductions (voix/texte).', + 'trans_003_desc': 'Inclut 1000 traductions (voix/texte).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Application : VoiTrans · Fourni par : VoiTrans', + 'iapCustomerServiceQQLabel': 'Service client IAP QQ : @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Ignorer", - 'next': 'Next', + 'next': 'Suivant', '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, ", - // AI 引导步骤 - '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", + 'imHere': 'Je suis là~', + 'guideWelcomeWakeAI': 'Bienvenue sur Voitrans ! Réveillez d’abord votre IA “Lily”.', + 'aiReplyCompleted': 'Lily a terminé la réponse !', + 'aiThinking': 'Lily réfléchit…', + 'guideAwakenSuccess': 'Super ! Lily est réveillée—demandez-lui de l’aide.', + 'confirmInput': 'Confirmer la saisie', + 'guideClickSendPrefix': 'Appuyez sur envoyer, ', + 'guideWeatherStart': 'Dites à Lily : “Quel temps fait-il aujourd’hui ?”', + 'guideWeatherInput': 'Quel temps fait-il aujourd’hui ?', + 'guideWeatherSend': 'Lily annoncera la météo en temps réel', + 'guideWeatherEnd': 'Lily peut donner la météo en direct—essayez d’autres commandes', + 'guideMusicStart': 'Dites à Lily : “Joue de la musique rock”', + 'guideMusicInput': 'Joue de la musique rock', + 'guideMusicSend': 'Lily trouvera de la musique pour vous', + 'guideMusicEnd': 'Lily a trouvé de la musique—essayez d’autres commandes', + 'guideNavStart': 'Dites à Lily : “Navigue vers l’aéroport de Shenzhen”', + 'guideNavInput': 'Navigue vers l’aéroport de Shenzhen', + 'guideNavSend': 'Lily planifiera l’itinéraire', + 'guideNavEnd': 'Navigation définie—essayez d’autres commandes', '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", - - // 商务会议助手页 + 'Dites à Lily : “Crée un rappel de réunion pour demain à 15h”', + 'guideMeetingInput': 'Crée un rappel de réunion pour demain à 15h', + 'guideMeetingSend': 'Lily créera un rappel de réunion', + 'guideMeetingEnd': 'Rappel créé—essayez d’autres commandes', + 'guidePhoneStart': 'Dites à Lily : “Appelle Maman”', + 'guidePhoneInput': 'Appelle Maman', + 'guidePhoneSend': 'Lily passera l’appel', + 'guidePhoneEnd': 'Appel passé—essayez d’autres commandes', + 'guideSmsStart': 'Dites à Lily : “Envoie un SMS à Papa : je rentrerai pour le dîner”', + 'guideSmsInput': 'SMS à Papa : je rentrerai pour le dîner', + 'guideSmsSend': 'Lily enverra le message', + 'guideSmsEnd': 'Message envoyé—la commande vocale est pratique', + + // Meeting模块 - 首页与导航 "startMeeting": "Démarrer la réunion", 'edit': 'Modifier', 'delete': 'Supprimer', @@ -410,40 +504,41 @@ const Map frFR = { 'recordingDetails': 'Détails de l\'enregistrement', 'aiSummary': 'Résumé IA', 'meetingTranscript': 'Transcription de la réunion', - - // Meeting模块 - 导航和基础功能 - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - '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': 'Fichiers', + 'mine': 'Les miens', + 'connect': 'Connecter', + 'allFiles': 'Tous les fichiers', + 'searchInAllFiles': 'Rechercher dans tous les fichiers', + 'from': 'De', + 'sortBy': 'Trier par', + 'creationTime': 'Date de création', + 'bluetoothConnection': 'Connexion Bluetooth', + 'meetingReconnect': 'Reconnecter', + 'searching': 'Recherche en cours...', + 'searchFailed': + 'Échec de la recherche, veuillez vérifier si le Bluetooth est activé', + 'aiPenNotFound': 'Appareil AI PEN introuvable', + 'connectedToAiPen': 'Connecté à l’appareil AI PEN', + 'checkingNewFiles': 'Vérification des nouveaux fichiers à importer', + 'startingWifi': 'Démarrage du Wi‑Fi...', + 'newFilesDetected': + 'Nouveaux fichiers détectés, préparation de l’importation', + 'noNewFiles': 'Aucun nouveau fichier à importer', + 'connectingWifi': 'Connexion au Wi‑Fi...', + 'wifiConnected': 'Connexion Wi‑Fi réussie', + 'downloadingFiles': 'Téléchargement des fichiers...', + 'downloadingFileProgress': + 'Total {total} fichiers, téléchargement du fichier {current}', + 'downloadComplete': 'Téléchargement terminé', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Téléchargement terminé, {count} fichiers au total, retour automatique dans 2 secondes', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Commencer l’enregistrement', + 'liveRecording': 'Enregistrement en direct', + 'audioVideoRecording': 'Enregistrement audio/vidéo', + 'callRecording': 'Enregistrement d’appel', + 'importAudio': 'Importer un audio', 'meetingRecordExitTitle': 'Quitter l\'enregistrement', // 退出录音 'meetingRecordExitMessage': 'Choisissez quoi faire avant de quitter', // 请选择离开后的操作 @@ -467,202 +562,217 @@ const Map frFR = { '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...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', + 'transcribing': 'Transcription en cours...', + 'summarizing': 'Résumé en cours...', + 'analyzing': 'Analyse en cours...', + 'summaryComplete': 'Résumé terminé', + 'generate': 'Générer', + 'overview': 'Vue d’ensemble', 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'summary': 'Résumé', + 'mindMap': 'Carte mentale', + 'editSpeaker': 'Modifier', + 'nameSpeaker': 'Nommer l’intervenant', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Résumer à nouveau', + 'dateAndTime': 'Date et heure', + 'location': 'Lieu', + 'attendees': 'Participants', + 'inputLocation': 'Saisir le lieu', + 'inputAttendees': 'Saisir les participants', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Sélectionner un modèle de résumé', + 'useThisTemplate': 'Utiliser ce modèle', + 'lastUsed': 'Dernière utilisation', + 'create': 'Créer', + 'templateDetails': 'Détails du modèle', + 'tag': 'Étiquette', + 'description': 'Description', + 'template': 'Modèle', + 'deleteTemplate': 'Supprimer le modèle', + 'deleteTemplateConfirm': 'Êtes-vous sûr de vouloir supprimer ce modèle ?', + 'editTemplate': 'Modifier le modèle', + 'createTemplate': 'Créer un modèle', + 'name': 'Nom', + 'templateContentHint': + 'Veuillez saisir le contenu du modèle ! Astuce : Cliquez sur le bouton IA ci-dessus pour générer rapidement le contenu du modèle à partir du nom et de la description saisis', + 'inputNameHint': 'Veuillez saisir un nom', + 'inputDescHint': 'Veuillez saisir une description', + 'custom': 'Personnalisé', + 'pleaseEnter': 'Veuillez saisir', + 'viewAll': 'Tout voir', + 'recordingLanguage': 'Langue d’enregistrement', + 'chineseSimplified': 'Mandarin chinois (simplifié)', + 'meetingGenerateNow': 'Générer maintenant', + 'keyEventsAnalyzed': '{count} événements clés analysés.', + 'aiAnalysisDesc': + 'L’analyse IA identifie les événements clés dans les enregistrements, ce qui vous permet de sélectionner les plus importants pour la génération IA.', + + // Meeting模块 - 文件操作 + 'importing': 'Importation en cours...', + 'batchImporting': 'Importation par lot...', + 'importingLocalRecordings': 'Importation des enregistrements locaux...', + 'importFailed': + 'Échec de l’importation du fichier : {filePath}, erreur : {error}', + 'importSuccess': 'Importation réussie de {count} enregistrements locaux', + 'importError': 'Échec de l’importation : {error}', + 'pleaseSelectAudioFile': 'Veuillez sélectionner un fichier audio', + 'shareAudio': 'Partager l’audio de la réunion', + 'shareComplete': 'Partage terminé', + 'shareFailed': 'Échec du partage : {error}', + 'fileProcessingFailed': + 'Échec du traitement du fichier : {filePath}, erreur : {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Enregistrer la carte mentale', + 'shareMindMap': 'Partager la carte mentale', + 'shareSuccess': 'Partage réussi', + + // Meeting模块 - AI问答 + 'askAI': 'Demander à l’IA...', + 'askAIPrompt': 'En quoi puis-je vous aider aujourd’hui ?', + 'continueAsk': 'Continuer à demander', + 'todoList': 'Liste de tâches', + 'extractConclusion': 'Extraire les conclusions', + 'generateKeyIndicators': 'Générer des indicateurs clés', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Partager le lien', + 'copyTranscript': 'Copier la transcription', + 'copySummary': 'Copier le résumé', + 'exportAudio': 'Exporter l’audio', + 'exportTranscript': 'Exporter la transcription', + 'shareMeetingAudio': 'Partager l’audio de la réunion', + 'exportSummary': 'Exporter le résumé', + 'exportAs': 'Exporter en tant que', + 'exportingPDF': 'Exportation du PDF...', + 'export': 'Exporter', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Appliquer à tous les paragraphes de cet intervenant', + 'summaryWillBeUpdatedAutomatically': + 'Le résumé sera mis à jour automatiquement selon le modèle', + 'nameCurrentSpeaker': 'Nommer l’intervenant actuel', + 'recentlyUsedNames': 'Noms récemment utilisés', + 'applyToCurrentParagraph': 'Appliquer au paragraphe actuel', + 'totalTime': 'Durée totale', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Les intervenants du résumé seront mis à jour automatiquement', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synchroniser vers le cloud', + 'syncToCloudTip': + 'Synchronisez automatiquement vos enregistrements vers le cloud ; vous pouvez lire, gérer et partager les enregistrements via VOITRANS APP ou VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Synchroniser VOITRANS APP', + 'transcriptionRecord': 'Enregistrement de transcription', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Enregistrements de transcription', + 'templateCommunity': 'Communauté de modèles', + 'comingSoon': 'Bientôt disponible', + 'integration': 'Intégration', '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', - - // 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', + 'enabled': 'Activé', + 'disabled': 'Désactivé', + 'myVoitransDevice': 'Mon appareil VOITRANS', + 'helpAndFeedback': 'Aide et commentaires', + 'aboutVoitrans': 'À propos de VOITRANS', + 'meetingDays': 'Jours', + 'meetingHours': 'Heures', + 'voitransAiMember': 'Membre Voitrans IA', + 'unlockStarterMember': 'Débloquer l’abonnement Starter', + 'bindDeviceToActivate': + 'Associez un appareil Voitrans pour activer l’abonnement Starter', + 'unlockNow': 'Débloquer maintenant', + + // Meeting模块 - 会员与升级 + 'comparison': 'Comparaison', + 'detailedInfo': 'Informations détaillées', + 'monthlyTranscriptionTime': 'Temps de transcription mensuel', + 'unlimited': 'Illimité', + 'professionalTemplates': 'Modèles professionnels', + 'limited': 'Limité', + 'fullTemplates': 'Modèles complets', + 'professionalTerms': 'Termes professionnels', + 'customTemplates': 'Modèles personnalisés', + 'visualMindMap': 'Carte mentale visuelle', + 'speakerIdentification': 'Identification des intervenants', + 'aiVoiceEnhancement': 'Amélioration vocale IA', + 'audioImport': 'Importation audio', + 'multipleExportFormats': 'Formats d’exportation multiples', + 'professionalSummaryTemplates': 'Modèles de résumé professionnels', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Modèles professionnels conçus pour améliorer votre efficacité. Personnalisés selon les besoins de votre secteur.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Vous pouvez personnaliser les invites de résumé selon vos besoins et les utiliser pour générer les résumés souhaités.', '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.', + 'Extrayez intelligemment des informations plus approfondies à partir des enregistrements ; générez tableaux de données, conclusions clés, listes de tâches, e‑mails de rapport et autres contenus formatés en un clic.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Au‑delà des résumés : organisez et visualisez les points clés avec des cartes mentales pour mieux comprendre l’ensemble du texte.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Découvrez, partagez et trouvez l’inspiration dans la bibliothèque de modèles créée par les utilisateurs.', '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 transcription audio prend en charge l’identification des intervenants pour restituer plus intuitivement le contenu des réunions ou des appels, tout en rendant le résumé plus précis.', '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.', + 'Vos enregistrements et transcriptions sont stockés de manière sécurisée sur des serveurs cloud dédiés, avec chiffrement complet lors du téléversement et du téléchargement pour garantir confidentialité et sécurité.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'L’amélioration vocale IA propose plusieurs niveaux de réduction de bruit, élimine intelligemment les bruits de fond, améliore la clarté de la voix et la qualité audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importez facilement des fichiers audio depuis le stockage local ou des applications tierces, comme les mémos vocaux, 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', + 'Exportez vos enregistrements audio, textes de transcription et résumés dans différents formats (TXT, PDF, JPEG) selon vos besoins.', + 'upgradeMembership': 'Mettre à niveau votre abonnement', + 'yearlySubscription': 'Abonnement annuel', + 'monthlySubscription': 'Abonnement mensuel', + 'proMonthly': 'Pro ¥60/mois', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Essai gratuit de 7 jours, puis ¥800/an. Annulez à tout moment avant la fin de l’essai.', + 'sevenDayTrial': 'Essai gratuit de 7 jours', + 'unlimitedMonthly': 'Illimité ¥120/mois', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Essai gratuit de 7 jours, puis ¥1600/an. Annulez à tout moment avant la fin de l’essai.', + 'trialNote': + '*Essai gratuit pendant 7 jours, puis facturation annuelle ; annulez à tout moment.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/mois', + 'subscribe': 'S’abonner', + 'unlimitedPrice': 'Illimité ¥198', + 'unlimitedMonthlyPrice': '¥198/mois', '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', + '*Après la mise à niveau de l’abonnement, les jours restants de l’abonnement initial seront automatiquement calculés et remboursés sur votre compte de paiement.', + 'buyMoreTranscriptionTime': 'Acheter plus de temps de transcription', + 'sixThousandMinutes': '6 000 minutes', + 'threeThousandMinutes': '3 000 minutes', 'sixHundredMinutes': '600 minutes', 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + 'validityPeriod': '*Période de validité : ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Appliquer à tous les paragraphes de cet intervenant', - 'summaryWillBeUpdatedAutomatically': - 'Le résumé sera mis à jour automatiquement selon le modèle', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Activé immédiatement après l’achat, valable pendant 2 ans après activation.', + 'purchase': 'Acheter', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Langue d’enregistrement', + 'cantonese': 'Cantonais', + 'sichuan': 'Dialecte du Sichuan', + 'shanghai': 'Dialecte de Shanghai', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Langue inconnue', + 'analysisFailed': "Échec de l'analyse, veuillez réessayer plus tard", + 'transcriptionFailed': + 'Échec de la transcription, veuillez réessayer plus tard', + 'summaryFailed': 'Échec du résumé, veuillez réessayer plus tard', + 'summaryFailedShort': 'Échec du résumé', + 'transcriptionFailedShort': 'Échec de la transcription', + + // Meeting模块 - 播放器 + 'playerNotReady': "Le lecteur audio n'est pas prêt, veuillez patienter", + 'playFailed': 'Échec de la lecture', + 'audioFileNotFound': 'Fichier audio introuvable', + 'fetchingAudio': "Récupération de l'audio depuis le cloud...", + 'playerLoadFailed': 'Échec du chargement du lecteur audio', // 设置页 "systemSettings": "Paramètres système", @@ -671,10 +781,10 @@ const Map frFR = { "translationRecharge": "Recharge de traduction", "meetingAssistantRecharge": "Recharge de l'assistant de réunion", "cloudSync": "Recharge de synchronisation cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Service membre", + "bindRewardTitle": "Récompenses", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "La récompense de première association d’appareil a été accordée. Touchez OK pour fermer.", "joinDevice": "Appareil connecté :", "accountId": "ID du compte :", "systemSetting": "Paramètres système", @@ -690,7 +800,7 @@ const Map frFR = { "permissionManagementInfo": "Gérer les paramètres d'autorisation de l'application", // 管理应用权限设置 "aboutApplication": "À propos", - "versions": "Version", + "versions": 'Version', "checkUpdates": "Vérifier les mises à jour", "selectLanguage": "Sélectionner la langue", "voiceService": "Service vocal", @@ -716,43 +826,32 @@ const Map frFR = { "bleHeadsetFirmwareUpgrade": "Mise à niveau du firmware des écouteurs BLE", "deviceManagement": "Gestion des appareils", "manageConnectedDevices": "Gérer les appareils Bluetooth connectés", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'La version actuelle est déjà la dernière {version}', 'checkUpdateFailed': 'Échec de la vérification de mise à jour', 'networkErrorRetry': 'Erreur réseau, veuillez réessayer plus tard', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'Conversation vocale en temps réel', "realtimeVoiceChatInfo": 'Découvrez les fonctions d\'interaction vocale intelligente (Aperçu)', "loading": 'Chargement...', - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Appareil inconnu", + "deviceTypeClassicBluetoothHeadset": "Casque Bluetooth classique", + "deviceTypeBleBluetoothHeadset": "Casque Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Enregistreur vocal intelligent", + "deviceTypeSmartEye": "Lunettes intelligentes", "unbind": "Délier", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Aucun appareil associé pour le moment", + "pleaseBindDeviceFirst": + "Veuillez d’abord associer un appareil pour le gérer", + "noMacAddress": "Pas d’adresse MAC", + "licenseCode": "Code de licence", + "confirmUnbind": "Confirmer la dissociation", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Voulez-vous vraiment dissocier l’appareil « {deviceName} » ?", + "confirmUnbindAction": "Confirmer la dissociation", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Effacer l'historique de chat", "online": "En ligne", @@ -781,22 +880,24 @@ const Map frFR = { "loadMoreMessages": "Charger plus de messages...", "loadFailedClickRetry": "Échec du chargement, cliquer pour réessayer", "swipeUpForMore": "Glisser vers le haut pour plus", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Je vous aide, veuillez patienter…", // 正在帮您,请稍等! + "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.", + + // Agent模块 - 预设提示词 + "presetMusic": "Mettre un peu de musique", // 来点音乐 + "presetNavigation": "Navigation vers", // 导航 + "presetWeather": "Météo du jour", // 今日天气 + "presetNews": "Actualités du jour", // 今日新闻 + "presetFood": "Restaurants à proximité", // 美食 + "playSomeMusic": "Lance une musique populaire", // 播放一些流行音乐 + "navigationTo": "Aide‑moi à naviguer vers", // 导航到 + "todayWeather": "Quel temps fait‑il aujourd’hui ?", // 今日天气 + "todayNews": "Quelles sont les nouvelles aujourd’hui ?", // 今日新闻 + "nearbyFood": "Quels bons restaurants y a‑t‑il à proximité ?", // 美食 + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'Bonjour ! Je suis **Lily**, je peux vous aider avec :\n\n' '• Répondre aux questions et fournir des informations\n\n' '• Traduction vocale en temps réel\n\n' @@ -816,18 +917,17 @@ const Map frFR = { 'startVoiceInput': 'Démarrer la saisie vocale', 'startPhoneCallMode': 'Démarrer le mode appel, commencer la saisie vocale', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Saisissez votre message ici...', // 全屏编辑器输入提示 'characterCount': '{count} caractères', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copier', 'copySuccess': 'Copié avec succès', 'report': 'Signaler', 'submitSuccess': 'Soumis avec succès', 'submitFailed': 'Échec de la soumission', 'reportSubmitted': 'Signalement soumis, nous le traiterons dès que possible', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Nuisible/Dangereux', 'pornographicVulgar': 'Pornographique/Vulgaire', 'misleadingAttack': 'Trompeur/Attaque', @@ -838,17 +938,22 @@ const Map frFR = { 'other': 'Autre', 'reportDescriptionHint': 'Nous aimerions connaître la raison de votre signalement, vous pouvez décrire le problème que vous avez rencontré.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Généré par IA', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Appel d outil', + 'noResult': 'Aucun resultat', + 'noToolCallContentToCopy': 'Aucun contenu d appel d outil a copier', + 'toolCallDetails': 'Details de l appel d outil :', + 'toolCallContentCopied': + 'Contenu de l appel d outil copie dans le presse-papiers', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Voici quelques musiques recommandées :', 'playList': 'Liste de lecture', 'moreMusic': 'Plus de musique', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'heures', // 小时单位 @@ -861,9 +966,33 @@ const Map frFR = { "driving": "Conduite", "walking": "Marche", "bicycling": "Vélo", - "tsransit": "Transit", - - //天气卡片 weather_card + "tsransit": 'Transit', + + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Choisir une application de navigation', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Naviguer avec Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Naviguer avec Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Naviguer avec Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Naviguer avec Apple Maps', + 'builtInNavigation': 'Navigation integree', + 'useBuiltInNavigation': 'Naviguer avec la carte integree', + 'navigationStartFailed': 'Echec du demarrage de la navigation', + 'cannotPlayMusicListRetryLater': + 'Impossible de lire la liste de musique, veuillez reessayer plus tard', + 'cannotPlaySong': 'Impossible de lire la chanson', + 'openMapError': 'Erreur lors de l ouverture de la carte', + 'pleaseInstallAmapApp': 'Veuillez d abord installer l application Amap', + 'pleaseInstallBaiduMapApp': + 'Veuillez d abord installer l application Baidu Maps', + 'appleMapStartFailed': 'Echec du demarrage d Apple Maps', + 'appleMapUnavailable': 'Apple Maps non disponible', + 'openAppleMapError': 'Erreur lors de l ouverture d Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Requête météo :', 'highest': 'Maximum', 'lowest': 'Minimum', @@ -893,18 +1022,8 @@ const Map frFR = { "friday": "Ven", "saturday": "Sam", "sunday": "Dim", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ensoleillé", "partlyCloudy": "Partiellement nuageux", "partlySunny": "Partiellement ensoleillé", @@ -920,14 +1039,151 @@ const Map frFR = { "lightSnow": "Neige légère", "moderateSnow": "Neige modérée", "heavySnow": "Neige forte", - "blizzard": "Blizzard", + "blizzard": 'Blizzard', "fog": "Brouillard", "haze": "Brume", "strongWind": "Vent fort", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Traduction d’images", + "textTranslation": "Traduction de texte", + + // 翻译模块 - 主页 + "translationHistory": "Historique de traduction", + "enableRecording": "Activer l'enregistrement", + "viewAudioFiles": "Voir les fichiers audio", + "headsetUser": "Utilisateur d'écouteurs", + "phoneUser": "Utilisateur de téléphone", + "selectSourceLanguage": "Sélectionner la langue source", + "selectTargetLanguage": "Sélectionner la langue cible", + "me": "Moi", + "counterPart": "Interlocuteur", + "bluetoothCallStateError": + "Assurez‑vous que le casque Bluetooth est connecté au téléphone et en cours d’appel", + "autoDetect": "Détection auto", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Échec de la détection de la langue", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Desactiver la fenetre flottante', + 'enableFloatingWindow': 'Activer la fenetre flottante', + 'permissionTip': 'Conseil d autorisation', + 'micPermissionRequiredForRecording': + 'L autorisation du microphone est requise pour l enregistrement', + 'deleteTranslationRecordError': + 'Erreur lors de la suppression de l enregistrement de traduction : @error', + "translationFailed": "Échec de la traduction", + "translating": "Traduction en cours", + "translate": "Traduire", + "pleaseInputText": "Veuillez saisir du texte", + "inputTextToTranslate": "Veuillez saisir le texte à traduire", + "textTooLong": "Texte trop long, 5000 caractères maximum", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Aucun historique de traduction", + "historyRecords": "Historique", + "clearResults": "Effacer les résultats", + "clearHistory": "Effacer l'historique", + "clearHistoryConfirm": + "Êtes-vous sûr de vouloir effacer tout l'historique de traduction ? Cette action ne peut pas être annulée.", + "unknownLanguage": "Langue inconnue", + "deleteSessionRecord": "Supprimer l'enregistrement de session", + "deleteSessionConfirm": + "Êtes-vous sûr de vouloir supprimer tous les enregistrements de traduction pour cette session ? Cette action ne peut pas être annulée.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Sélectionner la source de l’image", + "imagePreview": "Aperçu de l’image", + "translationResult": "Résultat de la traduction", + "recognitionResult": "Résultat de la reconnaissance", + "translatedImagePreview": "Aperçu de l’image traduite", + "translatedImageLoadFailed": "Échec du chargement de l’image traduite", + "pleaseSelectImage": "Veuillez sélectionner une image", + "imageLoadFailed": "Échec du chargement de l’image", + "imageQuality": "Qualité de l’image", + "maxSize": "Taille maximale", + "close": "Fermer", + "setImageQuality": "Définir la qualité de l’image", + "currentQuality": "Qualité actuelle : @value%", + "setMaxSize": "Définir la taille maximale", + "currentMaxSize": "Actuel : @pxpx", + "waitingForAction": "En attente d’une action", + "pleaseSelectImageToStart": "Veuillez sélectionner une image pour commencer", + "chooseImage": "Choisir une image", + "openingCamera": "Ouverture de la caméra...", + "openingPhotoAlbum": "Ouverture de l’album photo...", + "cancelled": "Annulé", + "userCancelledSelection": "L’utilisateur a annulé la sélection", + "translatingImage": "Traduction de l’image", + "callingImageTranslateService": "Appel du service de traduction d’images...", + "savingRecord": "Enregistrement en cours", + "savingTranslationResult": "Enregistrement du résultat de la traduction...", + "translationCompleted": "Traduction terminée", + "allStepsCompleted": "Toutes les étapes sont terminées", + "processingFailed": "Échec du traitement", + "imageProcessingOrTranslationFailed": + "Le traitement de l’image ou la traduction a échoué. Veuillez réessayer.\nErreur : {error}", + "imageTooLarge": 'La taille de l’image dépasse la limite de 4 Mo', + "imageTooLargeHint": + 'La taille de l’image dépasse 4 Mo. Réduisez la qualité ou les dimensions et réessayez', + "emptyTranslationResult": + "L’API de traduction d’images a renvoyé un résultat vide", + "imageTranslationFailedTryLater": + "La traduction de l’image a échoué. Problème réseau ou limite de débit. Veuillez réessayer plus tard", + "imageTranslationApiException": + "Exception de l’API de traduction d’images. Vérifiez le réseau et réessayez", + "permissionRequired": "Autorisation requise", + "cameraPermissionRequired": + "L’autorisation de la caméra est requise pour prendre des photos", + "photoAlbumPermissionRequired": + "L’autorisation d’accès à l’album photo est requise pour sélectionner des images", + "translationDetails": "Détails de la traduction", + "originalImage": "Image originale", + "sourceLanguage": "Langue source", + "targetLanguage": "Langue cible", + "translationTime": "Temps de traduction", + "shareInDevelopment": "Fonction de partage en cours de développement", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traduire les fichiers audio", + "noAudioFiles": "Aucun fichier audio", + "calculating": "Calcul en cours...", + "playing": "Lecture en cours...", + "paused": "En pause", + "clickToPlay": "Cliquer pour lire", + "rename": "Renommer", + "smartTranscription": "Transcription intelligente", + "renameAudioFile": "Renommer le fichier audio", + "enterNewFileName": "Veuillez saisir le nouveau nom de fichier", + + // 翻译模块 - 翻译详情 + "originalRecord": "Enregistrement original", + "recordSummary": "Résumé de l'enregistrement", + "clickToGenerateSummary": + "Cliquez sur le bouton ci-dessous pour générer un résumé de session", + "summaryContent": "Contenu du résumé", + "copied": "Copié", + "summaryCopiledToClipboard": "Résumé copié dans le presse-papiers", + "extractSummary": "Extraire le résumé", + "summaryGenerated": "Résumé généré", + "generating": "Génération en cours...", + "regenerate": "Régénérer", + "summaryTimeoutMessage": + "La demande de génération de résumé a expiré, possiblement due à des problèmes de réseau ou à une surcharge du serveur.", + "deleteTranslationRecord": "Supprimer l'enregistrement de traduction", + "deleteTranslationConfirm": + "Êtes-vous sûr de vouloir supprimer cet enregistrement de traduction ? Cette action ne peut pas être annulée.", + "originalText": "Texte original", + "translatedText": "Texte traduit", + "sessionSummary": "Résumé de session", + "cannotShare": "Impossible de partager", + "generateSummaryFirst": "Veuillez d'abord générer un résumé", + "translationSessionRecord": "Enregistrement de session de traduction", + + // 个人资料模块 "editProfile": "Modifier le profil", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Pseudo", "save": "Enregistrer", "about": "À propos", @@ -939,10 +1195,8 @@ const Map frFR = { 'deleteAccount': 'Supprimer le compte', 'deleteAccountTips': 'Êtes-vous sûr de vouloir supprimer définitivement votre compte ? Cette action ne peut pas être annulée.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Vider le cache', + 'cleanTips': 'Êtes‑vous sûr de vouloir effacer le cache personnel ?', 'networkConnectionFailed': 'Échec de la connexion réseau, veuillez vérifier les paramètres réseau et réessayer', 'serverTemporarilyUnavailable': @@ -959,10 +1213,6 @@ const Map frFR = { 'Échec de la connexion réseau, veuillez vérifier les paramètres réseau', 'serverInternalErrorRetryLater': 'Erreur interne du serveur, veuillez réessayer plus tard', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Échec de la compression de l\'image', 'avatarUpdateFailed': 'Échec de la mise à jour de l\'avatar', 'usernameCannotBeEmpty': 'Le nom d\'utilisateur ne peut pas être vide', @@ -974,8 +1224,6 @@ const Map frFR = { 'accountPermanentlyDeleted': 'Compte supprimé définitivement', 'deleteAccountFailedRetry': 'Échec de la suppression du compte, veuillez réessayer', - - // 账号服务相关 'clearUserDataFailed': 'Échec de l\'effacement des données utilisateur', // 清理用户数据失败 'deleteUserDataFailed': @@ -993,30 +1241,34 @@ const Map frFR = { 'accountServiceInitialized': 'AccountService initialisé', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Stockage', + 'meetingStoragePermissionExplanation': + 'Nous avons besoin de l’autorisation de stockage pour que vous puissiez sélectionner et téléverser des fichiers audio.', + 'meetingStoragePermissionPermanentDenial': + 'Nous avons détecté que vous avez définitivement refusé l’autorisation de stockage. Pour continuer à utiliser cette fonction, veuillez l’activer manuellement dans les paramètres de l’application.', 'getPermissionStatusFailed': 'Échec de l\'obtention du statut d\'autorisation', 'communicationPermissions': 'Autorisations de communication', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Autorisations Bluetooth', + 'notificationPermissions': 'Autorisations de notification', + 'storagePermissions': 'Autorisations de stockage', + 'microphonePermissions': 'Autorisations du microphone', + 'alarmPermissions': 'Autorisations d’alarme', 'calendarPermissions': 'Autorisations de calendrier', 'locationPermissions': 'Autorisations de localisation', 'phone': 'Téléphone', 'sms': 'SMS', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', - 'alarm': 'Alarm', + 'alarm': 'Alarme', 'calendarWrite': 'Écriture calendrier', 'calendarFullAccess': 'Accès complet au calendrier', 'locationInfo': 'Informations de localisation', 'phonePermissionDesc': 'Utilisé pour les fonctions d\'appel', 'smsPermissionDesc': 'Utilisé pour les fonctions SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Utilisée pour régler des alarmes précises et garantir l’activation des rappels à l’heure', 'calendarWritePermissionDesc': 'Utilisé pour créer des événements de calendrier et des rappels', 'calendarFullAccessPermissionDesc': @@ -1035,70 +1287,77 @@ const Map frFR = { 'La fonction d\'appel nécessite l\'autorisation téléphone', 'smsPermissionDetailDesc': 'La fonction SMS nécessite l\'autorisation SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Cette autorisation est nécessaire pour régler des alarmes précises et garantir l’activation ponctuelle des rappels', 'calendarWritePermissionDetailDesc': 'La création d\'événements de calendrier nécessite l\'autorisation d\'écriture calendrier', 'calendarFullAccessPermissionDetailDesc': 'La gestion des événements de calendrier nécessite l\'autorisation complète du calendrier', 'locationPermissionDetailDesc': 'L\'obtention d\'informations de localisation nécessite l\'autorisation de localisation', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': + 'Utilisée pour accéder aux informations de contacts', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Les fonctions d’appel et de SMS nécessitent l’autorisation Contacts pour sélectionner des contacts', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Utilisée pour connecter et gérer les appareils Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'La connexion à des casques et autres appareils Bluetooth nécessite l’autorisation Bluetooth', + 'bluetoothScanPermissionDesc': + 'Utilisée pour scanner les appareils Bluetooth à proximité', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Le scan des appareils Bluetooth à proximité nécessite l’autorisation de scan Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Utilisée pour se connecter à des appareils Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'La connexion à des appareils Bluetooth nécessite l’autorisation de connexion Bluetooth', + 'notificationPermissionDesc': + 'Utilisée pour envoyer des messages de notification', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'L’application a besoin de l’autorisation de notification pour vous envoyer des alertes et messages importants', 'appNeedsPermissionForFullFunction': 'L\'application a besoin de cette autorisation pour une fonctionnalité complète', 'permanentDenialText': 'Vous avez refusé définitivement l\'autorisation {permission}, veuillez aller dans les paramètres de l\'application pour l\'activer', 'goToSettings': 'Aller aux paramètres', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Scan Bluetooth', + 'bluetoothConnect': 'Connexion Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'L’application a besoin de l’autorisation de scan Bluetooth pour détecter les appareils Bluetooth à proximité.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'L’application a besoin de l’autorisation de connexion Bluetooth pour se connecter à des appareils Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'L’application a besoin de l’autorisation de localisation pour scanner les appareils Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'L’autorisation de scan Bluetooth a été définitivement refusée, veuillez l’activer manuellement dans les paramètres.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'L’autorisation de connexion Bluetooth a été définitivement refusée, veuillez l’activer manuellement dans les paramètres.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', + 'L’autorisation de localisation a été définitivement refusée, veuillez l’activer manuellement dans les paramètres.', 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'locationPermission': 'Localisation', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'L’autorisation de notification est requise pour afficher l’état de lecture de la musique.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'L’autorisation de localisation est requise pour obtenir la position actuelle.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Vous avez définitivement refusé l’autorisation de notification, veuillez l’activer dans les paramètres.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Vous avez définitivement refusé l’autorisation de localisation, veuillez l’activer dans les paramètres.', + 'storagePermission': 'Stockage', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Nous avons besoin de l’autorisation du microphone pour enregistrer du contenu audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Nous avons besoin de l’autorisation de stockage pour que vous puissiez sélectionner et téléverser des fichiers audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'L’autorisation du microphone a été définitivement refusée. Pour continuer à utiliser cette fonction, veuillez l’activer manuellement dans les paramètres de l’application.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', + 'L’autorisation de stockage a été définitivement refusée. Pour continuer à utiliser cette fonction, veuillez l’activer manuellement dans les paramètres de l’application.', + 'permissionUtilNeed': 'Nécessite ', + 'permissionUtilPermission': ' autorisation', + 'permissionUtilRestricted': ' autorisation restreinte', + 'permissionUtilRestrictedMessage': + 'Cette fonctionnalité est indisponible ou restreinte sur cet appareil, veuillez vérifier les paramètres ou les restrictions du système', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1117,15 +1376,7 @@ const Map frFR = { 'native.notification.qqMusic.playing': 'Musique en cours de lecture', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Nouvelle version trouvée', // 版本更新对话框标题 'remindLater': 'Rappeler plus tard', // 稍后提醒按钮 'updateNow': 'Mettre à jour maintenant', // 立即更新按钮 @@ -1136,253 +1387,7 @@ const Map frFR = { 'updateErrorRetry': 'Erreur survenue lors du processus de mise à jour, veuillez réessayer plus tard', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Chine", - "美国": "États-Unis", - "加拿大": "Canada", - "俄罗斯": "Russie", - "英国": "Royaume-Uni", - "德国": "Allemagne", - "意大利": "Italie", - "法国": "France", - "西班牙": "Espagne", - "南非": "Afrique du Sud", - "沙特阿拉伯": "Arabie Saoudite", - "土耳其": "Turquie", - "日本": "Japon", - "韩国": "Corée du Sud", - "新加坡": "Singapour", - "马来西亚": "Malaisie", - "泰国": "Thaïlande", - "越南": "Vietnam", - "印度": "Inde", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonésie", - "阿联酋": "Émirats Arabes Unis", - "墨西哥": "Mexique", - "巴西": "Brésil", - "阿根廷": "Argentine", - "澳大利亚": "Australie", - "新西兰": "Nouvelle-Zélande", - "中国香港": "Hong Kong, Chine", - "中国澳门": "Macao, Chine", - "中国台湾": "Taïwan, Chine", - "埃及": "Égypte", - "希腊": "Grèce", - "荷兰": "Pays-Bas", - "比利时": "Belgique", - "匈牙利": "Hongrie", - "罗马尼亚": "Roumanie", - "瑞士": "Suisse", - "奥地利": "Autriche", - "丹麦": "Danemark", - "瑞典": "Suède", - "挪威": "Norvège", - "波兰": "Pologne", - "秘鲁": "Pérou", - "智利": "Chili", - "哥伦比亚": "Colombie", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irlande", - "冰岛": "Islande", - "阿尔巴尼亚": "Albanie", - "马耳他": "Malte", - "塞浦路斯": "Chypre", - "芬兰": "Finlande", - "保加利亚": "Bulgarie", - "立陶宛": "Lituanie", - "拉脱维亚": "Lettonie", - "爱沙尼亚": "Estonie", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbie", - "克罗地亚": "Croatie", - "斯洛文尼亚": "Slovénie", - "捷克": "République Tchèque", - "斯洛伐克": "Slovaquie", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haïti", - "玻利维亚": "Bolivie", - "厄瓜多尔": "Équateur", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroc", - "阿尔及利亚": "Algérie", - "突尼斯": "Tunisie", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Éthiopie", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzanie", - "乌干达": "Ouganda", - "孟加拉国": "Bangladesh", - "以色列": "Israël", - "黎巴嫩": "Liban", - "约旦": "Jordanie", - "伊拉克": "Irak", - "科威特": "Koweït", - "巴林": "Bahreïn", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Népal", - "蒙古": "Mongolie", - "柬埔寨": "Cambodge", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Oriental", - "斐济": "Fidji", - "所罗门群岛": "Îles Salomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historique de traduction", - "enableRecording": "Activer l'enregistrement", - "viewAudioFiles": "Voir les fichiers audio", - "headsetUser": "Utilisateur d'écouteurs", - "phoneUser": "Utilisateur de téléphone", - "selectSourceLanguage": "Sélectionner la langue source", - "selectTargetLanguage": "Sélectionner la langue cible", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Aucun historique de traduction", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Effacer l'historique", - "clearHistoryConfirm": - "Êtes-vous sûr de vouloir effacer tout l'historique de traduction ? Cette action ne peut pas être annulée.", - "unknownLanguage": "Langue inconnue", - "deleteSessionRecord": "Supprimer l'enregistrement de session", - "deleteSessionConfirm": - "Êtes-vous sûr de vouloir supprimer tous les enregistrements de traduction pour cette session ? Cette action ne peut pas être annulée.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduire les fichiers audio", - "noAudioFiles": "Aucun fichier audio", - "calculating": "Calcul en cours...", - "playing": "Lecture en cours...", - "paused": "En pause", - "clickToPlay": "Cliquer pour lire", - "rename": "Renommer", - "smartTranscription": "Transcription intelligente", - "renameAudioFile": "Renommer le fichier audio", - "enterNewFileName": "Veuillez saisir le nouveau nom de fichier", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Enregistrement original", - "recordSummary": "Résumé de l'enregistrement", - "clickToGenerateSummary": - "Cliquez sur le bouton ci-dessous pour générer un résumé de session", - "summaryContent": "Contenu du résumé", - "copied": "Copié", - "summaryCopiledToClipboard": "Résumé copié dans le presse-papiers", - "extractSummary": "Extraire le résumé", - "summaryGenerated": "Résumé généré", - "generating": "Génération en cours...", - "regenerate": "Régénérer", - "summaryTimeoutMessage": - "La demande de génération de résumé a expiré, possiblement due à des problèmes de réseau ou à une surcharge du serveur.", - "deleteTranslationRecord": "Supprimer l'enregistrement de traduction", - "deleteTranslationConfirm": - "Êtes-vous sûr de vouloir supprimer cet enregistrement de traduction ? Cette action ne peut pas être annulée.", - "originalText": "Texte original", - "translatedText": "Texte traduit", - "sessionSummary": "Résumé de session", - "cannotShare": "Impossible de partager", - "generateSummaryFirst": "Veuillez d'abord générer un résumé", - "translationSessionRecord": "Enregistrement de session de traduction", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Appairage d'appareil", "connectYourDeepSoundHeadset": "Connectez votre casque Voitrans", "bind": "Lier", @@ -1391,14 +1396,11 @@ const Map frFR = { "autoInputCode": "Saisie automatique du code", "skipBinding": "Ignorer la liaison", "rescan": "Rescanner", - "verifyingDevice": "Vérification de l'appareil...", "confirmBinding": "Confirmer la liaison", "associatingDevice": "Association de l'appareil...", "goToBluetoothSettings": "Aller aux paramètres Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Prêt à appairer", "preparingPairingEnvironment": "Préparation de l'environnement d'appairage...", @@ -1410,8 +1412,6 @@ const Map frFR = { "waitingCompletePairing": "Veuillez patienter, appairage en cours...", "pairingSuccessRedirecting": "Appairage réussi ! Redirection vers la page d'accueil...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Veuillez vous assurer que l'appareil connecté est Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1424,19 +1424,12 @@ const Map frFR = { "authorizationFailedCheckCode": "Échec de l'autorisation, veuillez vérifier le code d'autorisation", "pairingFailedRetry": "Échec de l'appairage, veuillez réessayer", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Veuillez activer le Bluetooth', 'deviceDisconnected': 'Appareil déconnecté', 'readyToStartPairing': 'Prêt à démarrer l\'appairage', 'checkingEnvironment': 'Vérification de l\'environnement...', 'ensureHeadsetOnAndPairingMode': 'Veuillez vous assurer que le casque est allumé et en mode appairage', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Établissement d\'une connexion sécurisée...', 'needManualBindingAuthCode': 'Liaison manuelle du code d\'autorisation nécessaire...', @@ -1460,21 +1453,30 @@ const Map frFR = { 'bleConnectionFailed': 'Échec de la connexion BLE', 'deviceAuthorizationFailedCheckCode': 'Échec de l\'autorisation d\'appareil, veuillez vérifier le code d\'autorisation', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Activation manuelle du Bluetooth requise', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Veuillez suivre les étapes suivantes :', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Activer le Bluetooth : Réglages → Bluetooth → Activer', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Connecter l’appareil : trouvez votre appareil dans « Mes appareils » et touchez pour vous connecter', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Revenir à l’application pour poursuivre le processus d’appairage', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Astuce : vous pouvez aussi maintenir le doigt sur l’icône Bluetooth dans le Centre de contrôle pour accéder rapidement aux réglages Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Je comprends', // 我知道了 + + // 配对模块 - 绑定奖励 + "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Commentaires", 'feedbackInfo': 'Donner des commentaires ou suggestions', 'feedbackDescription': 'Veuillez décrire votre problème ou suggestion', @@ -1501,13 +1503,14 @@ const Map frFR = { "connectionFailed": "Échec de la connexion", "retryConnection": "Réessayer la connexion", "ota_updateNow": "Mettre à jour maintenant", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Impossible d’obtenir les informations de version. Veuillez réessayer plus tard.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Impossible d’obtenir les informations de l’appareil. Vérifiez la connexion et réessayez.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Impossible d’identifier l’appareil. Veuillez le reconnecter et réessayer.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Version du firmware anormale. Veuillez reconnecter l’appareil et réessayer.", "keepConnectedDontClose": "Veuillez maintenir l'appareil connecté, ne fermez pas l'application", "doNotDisconnect": "Ne pas déconnecter", @@ -1516,7 +1519,64 @@ const Map frFR = { "removeEarbudsEnsureBattery": "Retirez les deux écouteurs et assurez-vous que le niveau de batterie est supérieur à 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nouvelle version @version trouvee', + 'otaConfirmUpdateNow': 'Mettre a jour maintenant ?', + 'otaUpdate': 'Mettre a jour', + 'otaUpgradeSuccess': 'Mise a niveau reussie', + 'otaUpgradeCompleteRepair': + 'Mise a jour terminee !\n\nReassociez l appareil pour continuer. Page d appairage ?', + 'otaPairLater': 'Appairer plus tard', + 'otaPairNow': 'Appairer maintenant', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': + 'Erreur lors de la verification de la connexion BLE : @error', + 'otaBleNotConnected': 'Appareil BLE non connecte', + 'otaBleNeedConnection': + 'Connexion BLE requise pour la mise a jour\nVerifiez la connexion et reessayez', + 'otaDeviceInfoUnavailableTitle': 'Informations appareil indisponibles', + 'otaCannotGetDeviceInfo': + 'Impossible d’obtenir les informations de l’appareil\nVeuillez reconnecter l’appareil ou réessayer plus tard', + 'otaBleCheckFailed': 'Echec de la verification BLE', + 'otaCannotGetDeviceInfoCheckConnection': + 'Impossible d obtenir les informations, verifiez la connexion', + 'otaCannotGetProductInfoWithName': + 'Impossible d obtenir les informations produit, nom : @deviceName', + 'otaCannotGetBatteryInfo': + 'Impossible d obtenir les informations de batterie valides', + 'otaLowBattery': 'Batterie faible', + 'otaSingleBatteryLow': + 'Batterie trop faible\nCondition : superieure a 20%\nActuel : @ear @battery%\nChargez et reessayez', + 'otaDoubleBatteryLow': + 'Batterie trop faible\nCondition : les deux ecouteurs au-dessus de 20%\nActuel : Gauche @left%, Droite @right%\nChargez et reessayez', + 'otaBatteryCheckFailed': 'Echec de la verification de batterie', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Cette mise a jour comprend des optimisations de performances et des corrections de bugs.', + 'otaGetLatestVersionFailed': + 'Echec de la recuperation de la derniere version', + 'otaGetVersionInfoFailed': + 'Echec de la recuperation des informations de version', + 'otaCheckingDeviceStatus': 'Verification du statut de l appareil...', + 'otaDownloadFailedCheckNetwork': + 'Echec du telechargement, verifiez la connexion reseau', + 'otaDownloadFailed': 'Echec du telechargement', + 'otaPreparingConnection': 'Preparation de la connexion...', + 'otaConnectingDevice': 'Connexion a l appareil...', + 'otaUpgradeStarted': 'Mise a niveau OTA demarree...', + 'otaUpgradeProgressWithPercent': 'Progression : @percent%', + 'otaUpgradeSuccessComplete': 'Mise a niveau terminee avec succes', + 'otaUpgradeFailedWithCode': 'Mise a niveau echouee, code erreur : @code', + 'otaUpgradeFailedTitle': 'Mise a niveau echouee', + 'otaUpgradeFailedDesc': + 'Verifiez la connexion ou le paquet de mise a jour, code erreur : @code', + 'otaDeviceDisconnected': 'Appareil deconnecte', + 'otaDeviceConnected': 'Appareil connecte', + + // 音乐模块 "noMusic": "Aucune musique", // 暂无音乐 "noPlayingMusic": "Aucune musique en cours de lecture", // 暂无播放音乐 "unknownSong": "Chanson inconnue", // 未知歌曲 @@ -1548,38 +1608,138 @@ const Map frFR = { "芬兰语": "Finnois", "挪威语": "Norvégien", "克罗地亚语": "Croate", - "加泰隆语": "Catalan", + "加泰隆语": 'Catalan', "阿拉伯语": "Arabe", "泰语": "Thaï", "越南语": "Vietnamien", "印尼语": "Indonésien", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Turc", "马来语": "Malais", - "孟加拉语": "Bengali", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", + "孟加拉语": 'Bengali', + "泰米尔语": 'Tamoul', + "泰卢固语": 'Télougou', + "马拉提语": 'Marathi', "乌尔都语": "Ourdou", "波斯语": "Persan", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", + "斯瓦希里语": 'Swahili', - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Chine", + "美国": "États-Unis", + "加拿大": 'Canada', + "俄罗斯": "Russie", + "英国": "Royaume-Uni", + "德国": "Allemagne", + "意大利": "Italie", + "法国": 'France', + "西班牙": "Espagne", + "南非": "Afrique du Sud", + "沙特阿拉伯": "Arabie Saoudite", + "土耳其": "Turquie", + "日本": "Japon", + "韩国": "Corée du Sud", + "新加坡": "Singapour", + "马来西亚": "Malaisie", + "泰国": "Thaïlande", + "越南": 'Vietnam', + "印度": "Inde", + "巴基斯坦": 'Pakistan', + "菲律宾": 'Philippines', + "印度尼西亚": "Indonésie", + "阿联酋": "Émirats Arabes Unis", + "墨西哥": "Mexique", + "巴西": "Brésil", + "阿根廷": "Argentine", + "澳大利亚": "Australie", + "新西兰": "Nouvelle-Zélande", + "中国香港": "Hong Kong, Chine", + "中国澳门": "Macao, Chine", + "中国台湾": "Taïwan, Chine", + "埃及": "Égypte", + "希腊": "Grèce", + "荷兰": "Pays-Bas", + "比利时": "Belgique", + "匈牙利": "Hongrie", + "罗马尼亚": "Roumanie", + "瑞士": "Suisse", + "奥地利": "Autriche", + "丹麦": "Danemark", + "瑞典": "Suède", + "挪威": "Norvège", + "波兰": "Pologne", + "秘鲁": "Pérou", + "智利": "Chili", + "哥伦比亚": "Colombie", + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": 'Luxembourg', + "爱尔兰": "Irlande", + "冰岛": "Islande", + "阿尔巴尼亚": "Albanie", + "马耳他": "Malte", + "塞浦路斯": "Chypre", + "芬兰": "Finlande", + "保加利亚": "Bulgarie", + "立陶宛": "Lituanie", + "拉脱维亚": "Lettonie", + "爱沙尼亚": "Estonie", + "乌克兰": 'Ukraine', + "塞尔维亚": "Serbie", + "克罗地亚": "Croatie", + "斯洛文尼亚": "Slovénie", + "捷克": "République Tchèque", + "斯洛伐克": "Slovaquie", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": "Haïti", + "玻利维亚": "Bolivie", + "厄瓜多尔": "Équateur", + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Maroc", + "阿尔及利亚": "Algérie", + "突尼斯": "Tunisie", + "尼日利亚": 'Nigéria', + "加纳": 'Ghana', + "埃塞俄比亚": "Éthiopie", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzanie", + "乌干达": "Ouganda", + "孟加拉国": 'Bangladesh', + "以色列": "Israël", + "黎巴嫩": "Liban", + "约旦": "Jordanie", + "伊拉克": "Irak", + "科威特": "Koweït", + "巴林": "Bahreïn", + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": "Myanmar", + "尼泊尔": "Népal", + "蒙古": "Mongolie", + "柬埔寨": "Cambodge", + "老挝": 'Laos', + "文莱": 'Brunéi', + "东帝汶": "Timor Oriental", + "斐济": "Fidji", + "所罗门群岛": "Îles Salomon", + "刚果民主共和国": 'République démocratique du Congo', + "安哥拉": 'Angola', + "苏丹": 'Soudan', + "马尔代夫": 'Maldives', + "不丹": 'Bhoutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'Saint-Marin', + "牙买加": 'Jamaïque', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": 'Papouasie-Nouvelle-Guinée', + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/hi_in.dart b/lib/core/translations/language/hi_in.dart index 6252ac1a5..c0e6bdea8 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,6 +19,11 @@ const Map hiIN = { "unknownError": "अज्ञात त्रुटि", "asrConnectionFailed": "वॉइस रिकग्निशन सेवा से कनेक्शन विफल रहा। कृपया नेटवर्क जांचें और बाद में फिर से प्रयास करें।", + "justNow": "अभी", + "minutesAgo": "@minutes मिनट पहले", + "yesterday": "आजमान", + "daysAgo": "@days दिन पहले", + "hoursAgo": "@hours घंटे पहले", // 启动页 "slogan": "दुनिया को जोड़ना, ध्वनि से परे", @@ -28,7 +34,7 @@ const Map hiIN = { "explore": "अन्वेषण करें", "settings": "सेटिंग्स", - // 语言 + // 语言列表 "followingSystem": "सिस्टम का पालन करें", "chinese": "चीनी", "english": "अंग्रेजी", @@ -72,7 +78,7 @@ const Map hiIN = { "arabic": "अरबिक", "persian": "पेरिसी", - // 登录页 + // 登录模块 "welcome": "स्वागत है", "loginTips": "कृपया अपने फ़ोन नंबर या ईमेल से लॉगिन/साइन अप करें", "accountNumber": "फ़ोन नंबर या ईमेल", @@ -100,13 +106,9 @@ const Map hiIN = { "resendVerificationCode": "सत्यापन कोड पुनः भेजें", "login": "लॉग इन करें", "usePasswordLogin": "पासवर्ड से लॉगिन करें", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans घोषणा", // Voitrans 声明 "welcomeToThisApp": "Voitrans में आपका स्वागत है, कृपया ध्यान से पढ़ें", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", 'सहमत हों और दर्ज करें' पर क्लिक करने का मतलब है कि आपने उपरोक्त समझौतों को पूरी तरह से पढ़ लिया है और उनसे सहमत हैं। 'असहमत' पर क्लिक करने से एप्लिकेशन से बाहर निकल जाएगा।", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "असहमत", // 不同意 @@ -165,7 +167,30 @@ const Map hiIN = { 'right': 'दायां', 'checkConnectionStatusFailed': 'कनेक्शन स्थिति की जाँच करने में विफल', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'ब्लूटूथ प्रारंभ करने में विफल: @error', + 'needBluetoothAndLocationPermission': + 'ब्लूटूथ और लोकेशन अनुमतियाँ आवश्यक हैं ताकि डिवाइस खोज सकें', + 'permissionRequestFailedWithError': 'अनुमति प्राप्त करने में विफल: @error', + 'needPermission': 'अनुमति आवश्यक', + 'blePermissionDialogContent': + 'डिवाइस स्कैन करने के लिए इस ऐप को Bluetooth और लोकेशन अनुमतियों की आवश्यकता है। कृपया इन्हें सेटिंग्स में सक्षम करें।', + 'needEnableBluetooth': 'ब्लूटूथ सक्षम करें', + 'enableBluetoothDialogContent': + 'डिवाइस स्कैन करने और कनेक्ट करने के लिए कृपया Bluetooth सक्षम करें।', + 'bleScanFailedWithError': 'स्कैन विफल: @error', + 'bleConnectionSuccess': 'कनेक्शन सफल', + 'bleConnectedToDevice': '@device से कनेक्टेड', + 'bleConnectionFailedWithError': 'कनेक्शन विफल: @error', + 'bleDisconnected': 'डिस्कनेक्ट', + 'bleDeviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', + 'bleDisconnectFailedWithError': 'डिस्कनेक्ट विफल: @error', + 'signalStrong': 'मजबूत', + 'signalMedium': 'मध्यम', + 'signalWeak': 'कमजोर', + 'signalVeryWeak': 'बहुत कमजोर', + + // 发现页 "searchAi": "एआई फ़ंक्शन खोजें...", "exploreSlogan": "स्मार्ट ईयरफोन, अनंत संभावनाएं", "exploreSlogan1": "स्मार्ट साथी, अनंत संभावनाएं", @@ -186,121 +211,156 @@ 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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'एआई बेसिक 100', - 'ai_002_name': 'एआई बेसिक 500', - 'ai_003_name': 'एआई बेसिक 1000', - 'meet_001_name': 'मीटिंग बेसिक 100', - 'meet_002_name': 'मीटिंग बेसिक 500', - 'meet_003_name': 'मीटिंग बेसिक 1000', - 'trans_001_name': 'अनुवाद बेसिक 100', - 'trans_002_name': 'अनुवाद बेसिक 500', - 'trans_003_name': 'अनुवाद बेसिक 1000', - - // 商品描述(按ID) - 'ai_001_desc': '100 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'ai_002_desc': '500 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'ai_003_desc': '1000 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', - 'meet_001_desc': '100 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'meet_002_desc': '500 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'meet_003_desc': '1000 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', - 'trans_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - 'trans_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - 'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + "आँकड़े लोड नहीं हो सके। कृपया बाद में फिर कोशिश करें।", + "cleanupComplete": "सफाई पूर्ण", + "cleanedOldData": "90 दिनों से पुराने डेटा को साफ़ किया गया", + "exportFeature": "निर्यात सुविधा", + "exportInDevelopment": "डेटा निर्यात विकासाधीन है", + + // 商品模块 - 通用 + 'availablePackages': 'उपलब्ध पैकेज', + 'remainingQuota': 'शेष कोटा', + '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 में समस्या', + "insufficientIntegral": "अपर्याप्त पॉइंट्स", + "insufficientBalanceDesc": + 'अपर्याप्त शेष राशि, कृपया संबंधित रिचार्ज पेज पर जाकर रिचार्ज करें।', + "recharge": 'रिचार्ज करें', + "aiMemberExpiredDesc": + 'AI सदस्यता समाप्त हो गई है, कृपया सदस्यता रिचार्ज पेज पर जाकर नवीनीकरण करें।', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'म्यूजिक और सिफारिश', + 'navigationAndRoutes': 'नेविगेशन और राउट्स', + 'nearbySearch': 'आपके आसपास खोजें', + 'newsInformation': 'न्यूज़', + 'communicationAssistant': 'संचार सहायक', + 'aiHeaderDesc1': + 'ओल्डर कॉन्वर्सेशन कोटा और अधिक टूल कॉल्स, बढ़ता संदर्भ लंबाई।', + 'aiHeaderDesc2': + 'जारी-संचार, सारांश, विश्लेषण और कार्य निष्पादन के लिए उपयोगी।', + 'musicSearchPlaybackControl': 'म्यूजिक लाइब्रेरी खोज और प्लेबैक नियंत्रण', + 'smartPlaylistAndSimilarRecommendations': + 'स्मार्ट प्लेलिस्ट और समान संगीत सिफारिश', + 'routePlanningAndCongestionAvoidance': 'राउट प्लानिंग और संचालन बचाव', + 'voiceBroadcastAndWaypoints': 'वॉइस ब्राउस्ट और राउट पॉइंट सेटिंग्स', + 'realTimeWeatherForecast': 'रियल-टाइम मौसम और पूर्वानुमान', + 'clothingAdviceAndTravelReminders': 'कला सुझाव और यात्रा याद रखने की सलाह', + 'poiSearchFoodGasParking': 'POI खोज: खाने / गैस / पार्किंग', + 'ratingsHoursAndDirectRoutes': 'रेटिंग्स, व्यवसाय घंटे, और न recht राउटिंग', + 'hotNewsAndTopicOverview': 'हॉट न्यूज़ और विषय अवलोकन', + 'longArticleSummariesAndKeyPoints': 'लंबे लेख सारांश और प्रमुख बिंदु', + 'helpCallAndSMS': 'कॉल और SMS से सहायता', + 'templatedMessagesAndScheduleReminders': + 'टेम्पलेटेड संदेश और रिमाइनर सेटिंग्स', + 'aiDisclaimer': + 'फीचर डिवाइस अनुमतियों, सेवा उपलब्धता और नेटवर्क स्थितियों पर निर्भर करते हैं।', - // 同传/翻译商品页描述 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'रियल-टाइम समकालीन व्याख्या', + 'sceneLexicon': 'सценаरियल शब्दकोश', + 'subtitleDisplay': 'सबटाइटल्स', 'transHeaderDesc1': 'रीयल-टाइम समकालीन व्याख्या और पाठ अनुवाद, कम विलंबता वॉइस प्रसारण के साथ।', 'transHeaderDesc2': 'यात्रा, व्यवसाय, भाषण और शिक्षण के लिए उपयुक्त।', @@ -316,30 +376,27 @@ const Map hiIN = { 'transDisclaimer': 'अनुवाद की गुणवत्ता माइक्रोफोन, नेटवर्क विलंबता और परिवेशी शोर पर निर्भर करती है।', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + // 商品模块 - 会议商品页 + 'meetingRecording': 'बैठक रिकॉर्डिंग', + 'transcriptionAndSummary': 'ट्रांसक्रिप्शन और सारांश', + 'keywordSearch': 'कीवर्ड खोज', + 'collaborationSharing': 'सहयोग और साझा करना', + 'meetingHeaderDesc1': + 'ऑडियो रिकॉर्डिंग, ट्रांसक्रिप्शन, कीवर्ड खोज और स्वतः सारांश—बैठक की दक्षता बढ़ाने के लिए।', + 'meetingHeaderDesc2': + 'व्यावसायिक बैठकों, कक्षा नोट्स और इंटरव्यू मिनट्स के लिए उपयुक्त।', + 'meetingAutoRecording': 'स्वचालित रिकॉर्डिंग और विभाजन', + 'meetingSpeakerTagging': 'वक्ता लेबलिंग', + 'meetingLongAudioTranscription': 'लंबे ऑडियो का ट्रांसक्रिप्शन', + 'meetingKeyPointSummary': 'मुख्य बिंदुओं का निष्कर्ष', + 'meetingTopicNameSearch': 'विषय/नाम से खोजें', + 'meetingTimelineJump': 'टाइमलाइन पर जाएँ', + 'meetingExportSummary': 'मिनट्स निर्यात करें', + 'meetingMultiPlatformShare': 'कई प्लेटफ़ॉर्म पर साझा करें', + 'meetingDisclaimer': + 'शांत वातावरण में उपयोग करें; प्रदर्शन माइक्रोफोन और नेटवर्क पर निर्भर करता है।', - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'लाभों का अवलोकन', 'higherQuota': 'उच्च उपयोग कोटा', 'lowerUnitPrice': 'कम इकाई मूल्य', @@ -355,45 +412,71 @@ const Map hiIN = { 'vipDisclaimer': 'वास्तविक लाभ पैकेज विवरण पर निर्भर करते हैं और संस्करणों के साथ बदल सकते हैं।', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'एआई बेसिक 100', + 'ai_002_name': 'एआई बेसिक 500', + 'ai_003_name': 'एआई बेसिक 1000', + 'meet_001_name': 'मीटिंग बेसिक 100', + 'meet_002_name': 'मीटिंग बेसिक 500', + 'meet_003_name': 'मीटिंग बेसिक 1000', + 'trans_001_name': 'अनुवाद बेसिक 100', + 'trans_002_name': 'अनुवाद बेसिक 500', + 'trans_003_name': 'अनुवाद बेसिक 1000', + 'ai_001_desc': '100 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'ai_002_desc': '500 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'ai_003_desc': '1000 उपयोग शामिल। मुख्य AI सुविधाओं की पहुँच।', + 'meet_001_desc': '100 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'meet_002_desc': '500 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'meet_003_desc': '1000 बैठक रिकॉर्डिंग/ट्रांसक्रिप्शन शामिल।', + 'trans_001_desc': '100 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + 'trans_002_desc': '500 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + 'trans_003_desc': '1000 अनुवाद (वॉयस/टेक्स्ट) शामिल।', + + // 商品模块 - 页脚 + 'appNameProvider': 'ऐप: VoiTrans · प्रदाता: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP ग्राहक सेवा QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 '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, ", - // AI 引导步骤 - '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': "अपने माइक्रोफोन पर \"लिली लिली\" कहें", + 'imHere': "मैं यहाँ हूँ~", + 'guideWelcomeWakeAI': + "वोइट्रांस में आपका स्वागत है! सबसे पहले, अपनी एआई “लिली” को उठाएं।", + 'aiReplyCompleted': "लिली ने प्रतिक्रिया पूरी कर दी!", + 'aiThinking': "लिली ने सोचा...", + 'guideAwakenSuccess': "बिलकुल! लिली उठ गई—अपने प्रश्नों को पूछें।", + '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 से कहें: „माँ को कॉल करो”", + 'guidePhoneInput': "माँ को कॉल करें", + 'guidePhoneSend': "Lily कॉल करेगी", + 'guidePhoneEnd': "कॉल हो गया — अन्य कमांड आज़माएं", + 'guideSmsStart': + "Lily से कहें: „पापा को मैसेज करो: मैं रात के खाने पर घर आऊंगा”", + 'guideSmsInput': "Dad को टेक्स्ट भेजें: मैं आज घर आऊंगा", + 'guideSmsSend': + "लिली ने आपके प्रश्न का प्रतिक्रिया दिया—अन्य कमांड्स का प्रयास करें", + 'guideSmsEnd': "संदेश भेजा गया—वॉयस नियंत्रण सुविधा है", + + // Meeting模块 - 首页与导航 "startMeeting": "बैठक शुरू करें", 'edit': 'संपादित करें', 'delete': 'हटाएं', @@ -405,250 +488,269 @@ const Map hiIN = { 'recordingDetails': 'रिकॉर्डिंग विवरण', 'aiSummary': 'एआई सारांश', 'meetingTranscript': 'बैठक का प्रतिलेख', - - // Meeting模块 - 导航和基础功能 - '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': 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'बाहर निकलने से पहले क्या करना है चुनें', // 请选择离开后的操作 'meetingRecordEndAndSave': 'रिकॉर्डिंग समाप्त करें और सहेजें', // 结束录音并保存 'meetingRecordEndWithoutSave': 'बिना सहेजे रिकॉर्डिंग समाप्त करें', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音 - 'meetingRecordStopTimeout': 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'बैकग्राउंड में रिकॉर्डिंग जारी रखें', // 后台继续录音 + 'meetingRecordStopTimeout': + 'रिकॉर्डिंग रोकने का समय समाप्त हो गया। कृपया फिर से प्रयास करें।', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'रिकॉर्डिंग रोकने में विफल। कृपया फिर से प्रयास करें।', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'रिकॉर्डिंग सहेजने में विफल। कृपया फिर से प्रयास करें।', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'रिकॉर्डिंग चल रही है', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'बैकग्राउंड में रिकॉर्डिंग हो रही है। ऐप पर लौटने के लिए टैप करें।', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'अन्य ऐप्स के ऊपर दिखाएँ', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'कॉल या ऑडियो/वीडियो अनुवाद के दौरान अनुवाद परिणाम दिखाने के लिए हमें ओवरले अनुमति चाहिए। इससे आप अन्य ऐप्स का उपयोग करते समय भी रीयल-टाइम अनुवाद देख सकते हैं।', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'रिकॉर्डिंग के दौरान रिकॉर्डिंग फ्लोटिंग बार (टाइमर/पॉज़/जारी) दिखाने के लिए हमें ओवरले अनुमति चाहिए।', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'सिस्टम सेटिंग्स अपने आप नहीं खुल सकीं। कृपया सेटिंग्स खोलें और ओवरले अनुमति मैन्युअल रूप से सक्षम करें।', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'ट्रांसक्राइब हो रहा है...', + 'summarizing': 'सारांश बना रहा है...', + 'analyzing': 'अनलाइज़ कर रहा है...', + 'summaryComplete': 'सारांश पूरा हुआ', + 'generate': 'प्रारंभ करें', + 'overview': 'अपवाद', + 'transcription': 'ट्रांसक्राइब', + 'summary': 'सारांश', + 'mindMap': 'मिंड मैप', + 'editSpeaker': 'स्पीकर संपादित करें', + 'nameSpeaker': 'स्पीकर नाम', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'फिर से सारांश बनाएँ', + 'dateAndTime': 'तारीख और समय', + 'location': 'स्थान', + 'attendees': 'प्रत्यक्ष', + 'inputLocation': 'स्थान दर्ज करें', + 'inputAttendees': 'प्रत्यक्ष दर्ज करें', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'सारांश टेम्पलेट चुनें', + 'useThisTemplate': 'यह टेम्पलेट उपयोग करें', + 'lastUsed': 'अंतिम उपयोग', + 'create': 'बनाएँ', + 'templateDetails': 'टेम्पलेट विवरण', + 'tag': 'टैग', + 'description': 'विवरण', + 'template': 'टेम्पलेट', + 'deleteTemplate': 'टेम्पलेट हटाएँ', + 'deleteTemplateConfirm': 'क्या आप वाकई इस टेम्पलेट को हटाना चाहते हैं?', + 'editTemplate': 'टेम्पलेट संपादित करें', + 'createTemplate': 'टेम्पलेट बनाएँ', + 'name': 'नाम', + 'templateContentHint': + 'कृपया टेम्पलेट सामग्री दर्ज करें! सुझाव: आपने जो नाम और विवरण दर्ज किया है उसके आधार पर टेम्पलेट सामग्री तेज़ी से बनाने के लिए ऊपर AI बटन दबाएँ', + 'inputNameHint': 'कृपया नाम दर्ज करें', + 'inputDescHint': 'कृपया विवरण दर्ज करें', + 'custom': 'कस्टम', + 'pleaseEnter': 'कृपया दर्ज करें', + 'viewAll': 'सभी देखें', + 'recordingLanguage': 'रिकॉर्डिंग भाषा', + 'chineseSimplified': 'चीनी मैडरिन (सोपी)', + 'meetingGenerateNow': 'अभी जनरेट करें', + 'keyEventsAnalyzed': '{count} प्रमुख घटनाएँ विश्लेषित की गईं।', + 'aiAnalysisDesc': + 'AI विश्लेषण रिकॉर्डिंग में प्रमुख घटनाओं की पहचान करता है, ताकि आप AI जनरेशन के लिए महत्वपूर्ण घटनाएं चुन सकें।', + + // Meeting模块 - 文件操作 + 'importing': 'आयात हो रहा है...', + 'batchImporting': 'बैच आयात हो रहा है...', + 'importingLocalRecordings': 'लोकल रिकॉर्डिंग आयात हो रही हैं...', + 'importFailed': 'फ़ाइल आयात विफल: {filePath}, त्रुटि: {error}', + 'importSuccess': '{count} लोकल रिकॉर्डिंग सफलतापूर्वक आयात हुईं', + 'importError': 'आयात विफल: {error}', + 'pleaseSelectAudioFile': 'कृपया ऑडियो फ़ाइल चुनें', + 'shareAudio': 'सामग्री साझा करें', + 'shareComplete': 'साझा करना सफल', + 'shareFailed': 'साझा करना विफल: {error}', + 'fileProcessingFailed': 'फ़ाइल प्रोसेसिंग विफल: {filePath}, त्रुटि: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'माइंड मैप सहेजें', + 'shareMindMap': 'माइंड मैप साझा करें', + 'shareSuccess': 'साझा करना सफल', + + // Meeting模块 - AI问答 + 'askAI': 'अपचार करें ...', + 'askAIPrompt': 'आप क्या करना चाहते हैं?', + 'continueAsk': 'अगली प्रश्न पूछें', + 'todoList': 'टूडो लिस्ट', + 'extractConclusion': 'अंतिम निष्कर्ष निकालें', + 'generateKeyIndicators': 'कुंजी संकेत निर्माण करें', + + // Meeting模块 - 分享与导出 + 'shareLink': 'साझा लिंक', + 'copyTranscript': 'ट्रांसक्रिप्शन कॉपी करें', + 'copySummary': 'सारांश कॉपी करें', + 'exportAudio': 'ऑडियो निर्यात करें', + 'exportTranscript': 'ट्रांसक्रिप्शन निर्यात करें', + 'shareMeetingAudio': 'सामग्री साझा करें', + 'exportSummary': 'सारांश निर्यात करें', + 'exportAs': 'निर्यात के रूप में', + 'exportingPDF': 'पीडीएफ निर्यात हो रहा है...', + 'export': 'निर्यात', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', + 'summaryWillBeUpdatedAutomatically': + 'टेम्पलेट के आधार पर सारांश स्वतः अपडेट होगा', + 'nameCurrentSpeaker': 'वर्तमान बोलकार का नाम', + 'recentlyUsedNames': 'पिछले से उपयोग किए गए नाम', + 'applyToCurrentParagraph': 'वर्तमान अनुच्छेद पर लागू करें', + 'totalTime': 'कुल समय', + 'summarySpeakerWillBeUpdatedAutomatically': + 'सारांश बोलकारों को स्वतः अपडेट होगा', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'क्लाउड में सिंक करें', + 'syncToCloudTip': + 'अपनी रिकॉर्डिंग को स्वतः क्लाउड में सिंक करें; आप किसी भी 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', - - // 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', + 'enabled': 'सक्षम', + 'disabled': 'अक्षम', + 'myVoitransDevice': 'मेरा VOITRANS डिवाइस', + 'helpAndFeedback': 'सहायता और प्रतिक्रिया', + 'aboutVoitrans': 'VOITRANS बारे में', + 'meetingDays': 'दिन', + 'meetingHours': 'घंटा', + 'voitransAiMember': 'Voitrans AI सदस्यता', + 'unlockStarterMember': 'Unlock Starter सदस्यता', + 'bindDeviceToActivate': + 'Starter सदस्यता सक्रिय करने के लिए Voitrans डिवाइस बाँधें', + 'unlockNow': 'अभी अनलॉक करें', + + // Meeting模块 - 会员与升级 + '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.', - - // Meeting模块 - 升级会员 - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'इस वक्ता के सभी अनुच्छेदों पर लागू करें', - 'summaryWillBeUpdatedAutomatically': - 'टेम्पलेट के आधार पर सारांश स्वतः अपडेट होगा', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'खरीदे बाद немедленно सक्रिय होता है, सक्रिय होने के बाद 2 साल की प्राप्ति अवधि होती है।', + 'purchase': 'खरीदा', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'रिकॉर्डिंग भाषा', + 'cantonese': 'कांटोनेसी', + 'sichuan': 'सिचौन्डी डायलेक्ट', + 'shanghai': 'शांगहाइड डायलेक्ट', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'अज्ञात भाषा', + 'analysisFailed': 'विश्लेषण विफल, कृपया बाद में पुनः प्रयास करें', + 'transcriptionFailed': 'ट्रांसक्रिप्शन विफल, कृपया बाद में पुनः प्रयास करें', + 'summaryFailed': 'सारांश विफल, कृपया बाद में पुनः प्रयास करें', + 'summaryFailedShort': 'सारांश विफल', + 'transcriptionFailedShort': 'ट्रांसक्रिप्शन विफल', + + // Meeting模块 - 播放器 + 'playerNotReady': 'ऑडियो प्लेयर तैयार नहीं है, कृपया प्रतीक्षा करें', + 'playFailed': 'चलाने में विफल', + 'audioFileNotFound': 'ऑडियो फ़ाइल नहीं मिली', + 'fetchingAudio': 'क्लाउड से ऑडियो प्राप्त कर रहे हैं...', + 'playerLoadFailed': 'ऑडियो प्लेयर लोड होने में विफल', // 设置页 "systemSettings": "सिस्टम सेटिंग्स", @@ -657,10 +759,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": "सिस्टम सेटिंग", @@ -700,43 +802,31 @@ const Map hiIN = { "bleHeadsetFirmwareUpgrade": "BLE हेडसेट फर्मवेयर संस्करण अपग्रेड", "deviceManagement": "डिवाइस प्रबंधन", "manageConnectedDevices": "पेयर किए गए ब्लूटूथ डिवाइस प्रबंधित करें", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'आप पहले से ही नवीनतम संस्करण {version} पर हैं', 'checkUpdateFailed': 'अपडेट की जाँच करने में विफल', 'networkErrorRetry': 'नेटवर्क त्रुटि, कृपया बाद में पुनः प्रयास करें', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "रीयल-टाइम वॉयस चैट", "realtimeVoiceChatInfo": "बुद्धिमान वॉयस इंटरैक्शन फ़ंक्शन का अनुभव करें (फ़ंक्शन पूर्वावलोकन)", "loading": "लोड हो रहा है...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "चैट इतिहास साफ़ करें", "online": "ऑनलाइन", @@ -765,22 +855,24 @@ const Map hiIN = { "loadFailedClickRetry": "लोड करने में विफल, पुनः प्रयास करने के लिए क्लिक करें", "swipeUpForMore": "अधिक के लिए ऊपर स्वाइप करें", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "मैं आपकी मदद कर रहा हूँ, कृपया प्रतीक्षा करें!", // 正在帮您,请稍等! + "voice_interrupt": "वॉयस बाधा", // 语音打断 + 'voice_interrupt_tip': + 'सक्षम होने पर: बोलते समय AI आपकी आवाज़ से बाधित नहीं होगा और एक समय में केवल एक वार्तालाप चरण संभाल सकता है। नया चरण शुरू करने के लिए, बस वेक-अप शब्द बोलें।', + + // Agent模块 - 预设提示词 + "presetMusic": "और संगीत चलाएं", // 来点音乐 + "presetNavigation": "नेविगेट करें", // 导航 + "presetWeather": "आज का погода", // 今日天气 + "presetNews": "आज का खबरें", // 今日新闻 + "presetFood": "आसपास की खाने", // 美食 + "playSomeMusic": "और कुछ पॉपरल संगीत चलाएं", // 播放一些流行音乐 + "navigationTo": "कृपया मुझे यहाँ नेविगेट करने में मदद करें", // 导航到 + "todayWeather": "आज का पогода कैसी है?", // 今日天气 + "todayNews": "आज का खबरें क्या हैं?", // 今日新闻 + "nearbyFood": "आसपास की खाने क्या है?", // 美食 + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'नमस्ते! मैं **Lily** हूँ, मैं आपकी मदद कर सकता हूँ:\n\n' '• सवालों के जवाब देना और जानकारी प्रदान करना\n\n' '• रीयल-टाइम वॉयस अनुवाद\n\n' @@ -800,18 +892,17 @@ const Map hiIN = { 'startVoiceInput': 'वॉयस इनपुट शुरू करें', 'startPhoneCallMode': 'कॉल मोड शुरू करें, वॉयस इनपुट शुरू करें', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'अपना संदेश यहां दर्ज करें...', // 全屏编辑器输入提示 'characterCount': '{count} अक्षर', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'कॉपी करें', 'copySuccess': 'सफलतापूर्वक कॉपी किया गया', 'report': 'रिपोर्ट करें', 'submitSuccess': 'सफलतापूर्वक सबमिट किया गया', 'submitFailed': 'सबमिट करने में विफल', 'reportSubmitted': 'रिपोर्ट सबमिट कर दी गई है, हम इसे जल्द ही संसाधित करेंगे', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'हानिकारक/असुरक्षित', 'pornographicVulgar': 'अश्लील/अशिष्ट', 'misleadingAttack': 'भ्रामक/हमला', @@ -821,17 +912,22 @@ const Map hiIN = { 'other': 'अन्य', 'reportDescriptionHint': 'हम जानना चाहते हैं कि आप क्यों रिपोर्ट कर रहे हैं, आप जिस समस्या का सामना कर रहे हैं उसका वर्णन कर सकते हैं।', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'एआई द्वारा उत्पन्न', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'टूल कॉल', // 工具调用 + 'noResult': 'कोई परिणाम नहीं मिला', + 'noToolCallContentToCopy': 'कोई टूल कॉल सामग्री कॉपी करने के लिए नहीं मिली', + 'toolCallDetails': 'टूल कॉल विवरण:', // 工具调用详情 + 'toolCallContentCopied': + 'टूल कॉल सामग्री क्लिपबोर्ड पर कॉपी की गई', // 工具调用内容已复制 + + // Agent模块 - 音乐卡片 'recommendedMusic': 'यहां कुछ अनुशंसित संगीत हैं:', 'playList': 'प्लेलिस्ट', 'moreMusic': 'और संगीत', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'किमी', // 公里单位 'meters': 'मी', // 米单位 'hours': 'घंटे', // 小时单位 @@ -846,7 +942,31 @@ const Map hiIN = { "bicycling": "साइकिल चलाना", "tsransit": "पारगमन", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'नेविगेट करने के लिए ऐप चुनें', // 选择导航应用 + 'amapMap': 'अमप', + 'useAmapNavigation': 'अमप के साथ नेविगेट करें', // 使用Amap导航 + 'baiduMap': 'बादुओ मैप्स', + 'useBaiduNavigation': 'बादुओ मैप्स के साथ नेविगेट करें', // 使用Baidu Maps导航 + 'googleMap': 'गूगल मैप्स', + 'useGoogleNavigation': 'गूगल मैप्स के साथ नेविगेट करें', // 使用Google Maps导航 + 'appleMap': 'एपल मैप्स', + 'useAppleNavigation': 'एपल मैप्स के साथ नेविगेट करें', // 使用Apple Maps导航 + 'builtInNavigation': 'बिल्टइन नेविगेशन', // 内置导航 + 'useBuiltInNavigation': 'बिल्टइन नेविगेशन के साथ नेविगेट करें', // 使用内置导航 + 'navigationStartFailed': 'नेविगेशन शुरू करने में विफल', + 'cannotPlayMusicListRetryLater': + 'संगीत सूची नहीं चल सकी, कृपया बाद में पुनः प्रयास करें', + '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': 'मौसम की स्थिति की पूछताछ:', 'highest': 'उच्चतम', 'lowest': 'न्यूनतम', @@ -875,18 +995,8 @@ const Map hiIN = { "friday": "शुक्र", "saturday": "शनि", "sunday": "रवि", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "धूप", "partlyCloudy": "आंशिक रूप से बादल छाए हुए", "partlySunny": "आंशिक रूप से धूप", @@ -907,7 +1017,141 @@ const Map hiIN = { "haze": "धुंध", "strongWind": "तेज हवा", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "चित्र अनुवाद", + "textTranslation": "पाठ अनुवाद", + + // 翻译模块 - 主页 + "translationHistory": "अनुवाद इतिहास", + "enableRecording": "रिकॉर्डिंग सक्षम करें", + "viewAudioFiles": "ऑडियो फ़ाइलें देखें", + "headsetUser": "हेडसेट उपयोगकर्ता", + "phoneUser": "फ़ोन उपयोगकर्ता", + "selectSourceLanguage": "स्रोत भाषा चुनें", + "selectTargetLanguage": "लक्ष्य भाषा चुनें", + "me": "मेरा", + "counterPart": "अन्य पक्ष", + "bluetoothCallStateError": + "कृपया सुनिश्चित करें कि Bluetooth हेडसेट फ़ोन से कनेक्ट है और कॉल स्थिति में है", + "autoDetect": "ऑटो डिटेक्ट", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "भाषा पहचान विफल", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'फ़्लोटिंग विंडो अक्षम करें', + 'enableFloatingWindow': 'फ़्लोटिंग विंडो सक्षम करें', + 'permissionTip': 'अनुमति सुझाव', + 'micPermissionRequiredForRecording': + 'रिकॉर्डिंग के लिए माइक्रोफोन अनुमति आवश्यक है', + 'deleteTranslationRecordError': 'अनुवाद रिकॉर्ड हटाने में त्रुटि: @error', + "translationFailed": "अनुवाद विफल", + "translating": "अनुवाद कर रहा है", // 正在翻译 + "translate": "अनुवाद करें", + "pleaseInputText": "कृपया पाठ दर्ज करें", + "inputTextToTranslate": "कृपया अनुवाद करने के लिए पाठ दर्ज करें", + "textTooLong": "पाठ बहुत लंबा है, अधिकतम 5000 अक्षर हैं", // 文本太长,最大5000个字符 + + // 翻译模块 - 历史记录 + "noTranslationHistory": "अभी तक कोई इतिहास नहीं", + "historyRecords": "इतिहास रिकॉर्ड", + "clearResults": "Clear Results", + "clearHistory": "इतिहास साफ़ करें", + "clearHistoryConfirm": + "क्या आप वाकई सभी अनुवाद इतिहास साफ़ करना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + "unknownLanguage": "अज्ञात भाषा", + "deleteSessionRecord": "सत्र रिकॉर्ड हटाएं", + "deleteSessionConfirm": + "क्या आप वाकई इस सत्र के सभी अनुवाद रिकॉर्ड हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + + // 翻译模块 - 图片翻译 + "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": + "छवि प्रोसेसिंग या अनुवाद विफल। कृपया पुनः प्रयास करें।\nत्रुटि: {error}", + "imageTooLarge": "छवि आकार 4MB से अधिक", // 图像大小超过4MB限制 + "imageTooLargeHint": + "छवि आकार 4MB से अधिक। गुणवत्ता या आयाम कम करें और पुनः प्रयास करें", // 图像大小超过4MB限制。减少质量或尺寸并重试 + "emptyTranslationResult": "छवि अनुवाद API ने खाली परिणाम लौटाया", + "imageTranslationFailedTryLater": + "छवि अनुवाद विफल। नेटवर्क समस्या या रेट लिमिट। कृपया बाद में कोशिश करें", + "imageTranslationApiException": + "छवि अनुवाद API त्रुटि। नेटवर्क जांचें और पुनः प्रयास करें", + "permissionRequired": "अनुमति आवश्यक", + "cameraPermissionRequired": "फोटो लेने के लिए कैमरा अनुमति आवश्यक है", + "photoAlbumPermissionRequired": + "छवि चुनने के लिए फोटो एल्बम अनुमति आवश्यक है", + "translationDetails": "अनुवाद विवरण", + "originalImage": "ऑरिजनल छवि", // 原始图像 + "sourceLanguage": "स्रोत भाषा", + "targetLanguage": " țintă limbă", // 目标语言 + "translationTime": "अनुवाद समय", + "shareInDevelopment": "Sharing feature under development", // 分享功能正在开发中 + + // 翻译模块 - 录音文件 + "translateAudioFiles": "ऑडियो फ़ाइलों का अनुवाद करें", + "noAudioFiles": "अभी तक कोई ऑडियो फ़ाइल नहीं", + "calculating": "गणना हो रही है...", + "playing": "चल रहा है...", + "paused": "रोका गया", + "clickToPlay": "चलाने के लिए क्लिक करें", + "rename": "नाम बदलें", + "smartTranscription": "स्मार्ट ट्रांसक्रिप्शन", + "renameAudioFile": "ऑडियो फ़ाइल का नाम बदलें", + "enterNewFileName": "कृपया एक नया फ़ाइल नाम दर्ज करें", + + // 翻译模块 - 翻译详情 + "originalRecord": "मूल रिकॉर्ड", + "recordSummary": "रिकॉर्ड सारांश", + "clickToGenerateSummary": + "सत्र सारांश बनाने के लिए नीचे दिए गए बटन पर क्लिक करें", + "summaryContent": "सारांश सामग्री", + "copied": "कॉपी किया गया", + "summaryCopiledToClipboard": "सारांश क्लिपबोर्ड पर कॉपी किया गया", + "extractSummary": "सारांश निकालें", + "summaryGenerated": "सारांश बनाया गया", + "generating": "बनाया जा रहा है...", + "regenerate": "पुनः बनाएं", + "summaryTimeoutMessage": + "सारांश बनाने का अनुरोध समय समाप्त हो गया, शायद नेटवर्क समस्याओं या व्यस्त सर्वर के कारण।", + "deleteTranslationRecord": "अनुवाद रिकॉर्ड हटाएं", + "deleteTranslationConfirm": + "क्या आप वाकई इस अनुवाद रिकॉर्ड को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", + "originalText": "मूल पाठ", + "translatedText": "अनुवादित पाठ", + "sessionSummary": "सत्र सारांश", + "cannotShare": "साझा नहीं किया जा सकता", + "generateSummaryFirst": "कृपया पहले एक सारांश बनाएं", + "translationSessionRecord": "अनुवाद सत्र रिकॉर्ड", + + // 个人资料模块 "editProfile": "व्यक्तिगत जानकारी संपादित करें", "avatar": "अवतार", "nickname": "उपनाम", @@ -923,8 +1167,6 @@ const Map hiIN = { 'क्या आप वाकई अपना खाता स्थायी रूप से हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'नेटवर्क कनेक्शन विफल, कृपया अपनी नेटवर्क सेटिंग्स जांचें और पुनः प्रयास करें', 'serverTemporarilyUnavailable': @@ -943,10 +1185,6 @@ const Map hiIN = { 'नेटवर्क कनेक्शन विफल, कृपया अपनी नेटवर्क सेटिंग्स जांचें', 'serverInternalErrorRetryLater': 'सर्वर आंतरिक त्रुटि, कृपया बाद में पुनः प्रयास करें', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'छवि संपीड़न विफल', 'avatarUpdateFailed': 'अवतार अपडेट विफल', 'usernameCannotBeEmpty': 'उपयोगकर्ता नाम खाली नहीं हो सकता', @@ -957,8 +1195,6 @@ const Map hiIN = { 'logoutFailedRetry': 'लॉग आउट करने में विफल, कृपया पुनः प्रयास करें', 'accountPermanentlyDeleted': 'खाता स्थायी रूप से हटा दिया गया है', 'deleteAccountFailedRetry': 'खाता हटाने में विफल, कृपया पुनः प्रयास करें', - - // 账号服务相关 'clearUserDataFailed': 'उपयोगकर्ता डेटा साफ़ करने में विफल', // 清理用户数据失败 'deleteUserDataFailed': 'उपयोगकर्ता डेटा हटाने में विफल', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'तीसरे पक्ष का लॉगआउट सफल', // 第三方登录退出成功 @@ -974,20 +1210,24 @@ const Map hiIN = { 'accountServiceInitialized': 'खाता सेवा प्रारंभ की गई है', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'स्टोरेज', + 'meetingStoragePermissionExplanation': + 'ऑडियो फ़ाइलें चुनने और अपलोड करने के लिए हमें स्टोरेज अनुमति की आवश्यकता है।', + 'meetingStoragePermissionPermanentDenial': + 'पता चला है कि आपने स्टोरेज अनुमति स्थायी रूप से अस्वीकार कर दी है। इस फीचर का उपयोग जारी रखने के लिए, कृपया ऐप सेटिंग्स में जाकर स्टोरेज अनुमति को मैन्युअल रूप से सक्षम करें।', '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': 'फ़ोन', 'sms': 'एसएमएस', 'contacts': 'Contacts', - //'bluetooth': '蓝牙', 'notification': 'Notification', 'alarm': 'Alarm', 'calendarWrite': 'कैलेंडर में लिखें', @@ -996,7 +1236,7 @@ const Map hiIN = { 'phonePermissionDesc': 'कॉल करने के लिए उपयोग किया जाता है', 'smsPermissionDesc': 'एसएमएस भेजने के लिए उपयोग किया जाता है', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'सटीक अलार्म सेट करने के लिए उपयोग किया जाता है ताकि रिमाइंडर समय पर ट्रिगर हों', 'calendarWritePermissionDesc': 'कैलेंडर ईवेंट और रिमाइंडर बनाने के लिए उपयोग किया जाता है', 'calendarFullAccessPermissionDesc': @@ -1016,80 +1256,93 @@ 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.', -//'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.', + 'ऑडियो फ़ाइलें चुनने और अपलोड करने के लिए हमें स्टोरेज अनुमति की आवश्यकता है।', '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.', - - //permission_util.dart + 'स्टोरेज अनुमति स्थायी रूप से अस्वीकार कर दी गई है। इस फीचर का उपयोग जारी रखने के लिए, कृपया ऐप सेटिंग्स में जाकर स्टोरेज अनुमति को मैन्युअल रूप से सक्षम करें।', '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'नेविगेशन जारी है', + 'native.notification.navigation.keepRunning': + 'नेविगेट कर रहे हैं, ऐप चालू रखें', + 'native.notification.bleAgent.running': 'वॉयस असिस्टेंट एजेंट चल रहा है', + 'native.notification.audioRecording.recording': + 'ऑडियो रिकॉर्ड हो रहा है, ऐप पर वापस जाने के लिए टैप करें', + 'native.notification.music.waiting': 'चलाने की प्रतीक्षा में', + 'native.notification.music.previous': 'पिछला', + 'native.notification.music.next': 'अगला', + 'native.notification.music.play': 'चलाएँ', + 'native.notification.music.pause': 'रोकें', + 'native.notification.qqMusic.playing': 'संगीत चल रहा है', + + // 版本更新 'newVersionFound': 'नया संस्करण मिला', // 版本更新对话框标题 'remindLater': 'बाद में याद दिलाएं', // 稍后提醒按钮 'updateNow': 'अभी अपडेट करें', // 立即更新按钮 @@ -1100,253 +1353,7 @@ const Map hiIN = { 'updateErrorRetry': 'अपडेट के दौरान एक त्रुटि हुई, कृपया बाद में पुनः प्रयास करें', // 更新错误重试提示 - //国家列表 - "邮箱": "ईमेल", - "中国": "चीन", - "美国": "संयुक्त राज्य अमेरिका", - "加拿大": "कनाडा", - "俄罗斯": "रूस", - "英国": "यूनाइटेड किंगडम", - "德国": "जर्मनी", - "意大利": "इटली", - "法国": "फ्रांस", - "西班牙": "स्पेन", - "南非": "दक्षिण अफ्रीका", - "沙特阿拉伯": "सऊदी अरब", - "土耳其": "तुर्की", - "日本": "जापान", - "韩国": "दक्षिण कोरिया", - "新加坡": "सिंगापुर", - "马来西亚": "मलेशिया", - "泰国": "थाईलैंड", - "越南": "वियतनाम", - "印度": "भारत", - "巴基斯坦": "पाकिस्तान", - "菲律宾": "फिलीपींस", - "印度尼西亚": "इंडोनेशिया", - "阿联酋": "संयुक्त अरब अमीरात", - "墨西哥": "मेक्सिको", - "巴西": "ब्राजील", - "阿根廷": "अर्जेंटीना", - "澳大利亚": "ऑस्ट्रेलिया", - "新西兰": "न्यूजीलैंड", - "中国香港": "हांगकांग (चीन)", - "中国澳门": "मकाऊ (चीन)", - "中国台湾": "ताइवान (चीन)", - "埃及": "मिस्र", - "希腊": "ग्रीस", - "荷兰": "नीदरलैंड", - "比利时": "बेल्जियम", - "匈牙利": "हंगरी", - "罗马尼亚": "रोमानिया", - "瑞士": "स्विट्जरलैंड", - "奥地利": "ऑस्ट्रिया", - "丹麦": "डेनमार्क", - "瑞典": "स्वीडन", - "挪威": "नॉर्वे", - "波兰": "पोलैंड", - "秘鲁": "पेरू", - "智利": "चिली", - "哥伦比亚": "कोलंबिया", - "委内瑞拉": "वेनेजुएला", - "葡萄牙": "पुर्तगाल", - "卢森堡": "लक्ज़मबर्ग", - "爱尔兰": "आयरलैंड", - "冰岛": "आइसलैंड", - "阿尔巴尼亚": "अल्बानिया", - "马耳他": "माल्टा", - "塞浦路斯": "साइप्रस", - "芬兰": "फिनलैंड", - "保加利亚": "बुल्गारिया", - "立陶宛": "लिथुआनिया", - "拉脱维亚": "लातविया", - "爱沙尼亚": "एस्टोनिया", - "乌克兰": "यूक्रेन", - "塞尔维亚": "सर्बिया", - "克罗地亚": "क्रोएशिया", - "斯洛文尼亚": "स्लोवेनिया", - "捷克": "चेक गणराज्य", - "斯洛伐克": "स्लोवाकिया", - "危地马拉": "ग्वाटेमाला", - "萨尔瓦多": "अल सल्वाडोर", - "洪都拉斯": "होंडुरास", - "尼加拉瓜": "निकारागुआ", - "哥斯达黎加": "कोस्टा रिका", - "巴拿马": "पनामा", - "海地": "हैती", - "玻利维亚": "बोलीविया", - "厄瓜多尔": "इक्वाडोर", - "巴拉圭": "पैराग्वे", - "乌拉圭": "उरुग्वे", - "摩洛哥": "मोरक्को", - "阿尔及利亚": "अल्जीरिया", - "突尼斯": "ट्यूनीशिया", - "尼日利亚": "नाइजीरिया", - "加纳": "घाना", - "埃塞俄比亚": "इथियोपिया", - "肯尼亚": "केन्या", - "坦桑尼亚": "तंजानिया", - "乌干达": "युगांडा", - "孟加拉国": "बांग्लादेश", - "以色列": "इज़राइल", - "黎巴嫩": "लेबनान", - "约旦": "जॉर्डन", - "伊拉克": "इराक", - "科威特": "कुवैत", - "巴林": "बहरीन", - "卡塔尔": "कतर", - "阿曼": "ओमान", - "阿富汗": "अफगानिस्तान", - "斯里兰卡": "श्रीलंका", - "缅甸": "म्यांमार", - "尼泊尔": "नेपाल", - "蒙古": "मंगोलिया", - "柬埔寨": "कंबोडिया", - "老挝": "लाओस", - "文莱": "ब्रुनेई", - "东帝汶": "पूर्वी तिमोर", - "斐济": "फिजी", - "所罗门群岛": "सोलोमन द्वीप समूह", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "अनुवाद इतिहास", - "enableRecording": "रिकॉर्डिंग सक्षम करें", - "viewAudioFiles": "ऑडियो फ़ाइलें देखें", - "headsetUser": "हेडसेट उपयोगकर्ता", - "phoneUser": "फ़ोन उपयोगकर्ता", - "selectSourceLanguage": "स्रोत भाषा चुनें", - "selectTargetLanguage": "लक्ष्य भाषा चुनें", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "अभी तक कोई इतिहास नहीं", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "इतिहास साफ़ करें", - "clearHistoryConfirm": - "क्या आप वाकई सभी अनुवाद इतिहास साफ़ करना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - "unknownLanguage": "अज्ञात भाषा", - "deleteSessionRecord": "सत्र रिकॉर्ड हटाएं", - "deleteSessionConfirm": - "क्या आप वाकई इस सत्र के सभी अनुवाद रिकॉर्ड हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "ऑडियो फ़ाइलों का अनुवाद करें", - "noAudioFiles": "अभी तक कोई ऑडियो फ़ाइल नहीं", - "calculating": "गणना हो रही है...", - "playing": "चल रहा है...", - "paused": "रोका गया", - "clickToPlay": "चलाने के लिए क्लिक करें", - "rename": "नाम बदलें", - "smartTranscription": "स्मार्ट ट्रांसक्रिप्शन", - "renameAudioFile": "ऑडियो फ़ाइल का नाम बदलें", - "enterNewFileName": "कृपया एक नया फ़ाइल नाम दर्ज करें", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "मूल रिकॉर्ड", - "recordSummary": "रिकॉर्ड सारांश", - "clickToGenerateSummary": - "सत्र सारांश बनाने के लिए नीचे दिए गए बटन पर क्लिक करें", - "summaryContent": "सारांश सामग्री", - "copied": "कॉपी किया गया", - "summaryCopiledToClipboard": "सारांश क्लिपबोर्ड पर कॉपी किया गया", - "extractSummary": "सारांश निकालें", - "summaryGenerated": "सारांश बनाया गया", - "generating": "बनाया जा रहा है...", - "regenerate": "पुनः बनाएं", - "summaryTimeoutMessage": - "सारांश बनाने का अनुरोध समय समाप्त हो गया, शायद नेटवर्क समस्याओं या व्यस्त सर्वर के कारण।", - "deleteTranslationRecord": "अनुवाद रिकॉर्ड हटाएं", - "deleteTranslationConfirm": - "क्या आप वाकई इस अनुवाद रिकॉर्ड को हटाना चाहते हैं? यह क्रिया पूर्ववत नहीं की जा सकती है।", - "originalText": "मूल पाठ", - "translatedText": "अनुवादित पाठ", - "sessionSummary": "सत्र सारांश", - "cannotShare": "साझा नहीं किया जा सकता", - "generateSummaryFirst": "कृपया पहले एक सारांश बनाएं", - "translationSessionRecord": "अनुवाद सत्र रिकॉर्ड", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "डिवाइस पेयरिंग", "connectYourDeepSoundHeadset": "अपना Voitrans हेडसेट कनेक्ट करें", "bind": "बाँधें", @@ -1355,14 +1362,11 @@ const Map hiIN = { "autoInputCode": "कोड स्वतः दर्ज करें", "skipBinding": "बाँधना छोड़ें", "rescan": "पुनः स्कैन करें", - "verifyingDevice": "डिवाइस सत्यापित हो रहा है...", "confirmBinding": "बाँधने की पुष्टि करें", "associatingDevice": "डिवाइस को संबद्ध किया जा रहा है...", "goToBluetoothSettings": "ब्लूटूथ सेटिंग्स पर जाएं", 'bluetooth': 'ब्लूटूथ', - - // 配对状态文本 "readyToPair": "पेयर करने के लिए तैयार", "preparingPairingEnvironment": "पेयरिंग वातावरण तैयार हो रहा है...", "connectDeepSoundViaSystemBluetooth": @@ -1372,8 +1376,6 @@ const Map hiIN = { "waitingCompletePairing": "कृपया प्रतीक्षा करें, पेयरिंग पूरी हो रही है...", "pairingSuccessRedirecting": "पेयरिंग सफल! होमपेज पर रीडायरेक्ट किया जा रहा है...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "कृपया सुनिश्चित करें कि आप Voitrans डिवाइस से जुड़े हैं", "deviceAlreadyBoundToOtherAccount": @@ -1385,19 +1387,12 @@ const Map hiIN = { "authorizationFailedCheckCode": "प्राधिकरण विफल, कृपया जांचें कि प्राधिकरण कोड सही है या नहीं", "pairingFailedRetry": "पेयरिंग विफल, कृपया पुनः प्रयास करें", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'कृपया ब्लूटूथ सक्षम करें', 'deviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', 'readyToStartPairing': 'पेयरिंग शुरू करने के लिए तैयार', 'checkingEnvironment': 'वातावरण की जाँच हो रही है...', 'ensureHeadsetOnAndPairingMode': 'कृपया सुनिश्चित करें कि हेडसेट चालू है और पेयरिंग मोड में है', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'सुरक्षित कनेक्शन स्थापित हो रहा है...', 'needManualBindingAuthCode': 'मैनुअल बाइंडिंग प्राधिकरण कोड की आवश्यकता है...', @@ -1419,21 +1414,30 @@ const Map hiIN = { 'bleConnectionFailed': 'BLE कनेक्शन विफल', 'deviceAuthorizationFailedCheckCode': 'डिवाइस प्राधिकरण विफल, कृपया प्राधिकरण कोड जांचें', - - ///iOS蓝牙引导窗 - '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": "स्वागत पुरस्कार", + "firstBindRewardDesc": "आपको बाँधने के पुरस्कार मिल गए हैं।", + "vipLevelLabel": "VIP स्तर:", + "expiryLabel": "समाप्ति:", + "notActivated": "सक्रिय नहीं", + "aiChatCreditsLabel": "AI चैट क्रेडिट:", + "translationCreditsLabel": "अनुवाद क्रेडिट:", + "meetingCreditsLabel": "बैठक क्रेडिट:", + "ok": "OK", - //用户反馈页 + // 用户反馈模块 "feedback": "उपयोगकर्ता प्रतिक्रिया", 'feedbackInfo': 'प्रतिक्रिया या सुझाव दें', 'feedbackDescription': @@ -1462,13 +1466,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": "चार्ज हो रहा है", @@ -1476,7 +1481,58 @@ const Map hiIN = { "removeEarbudsEnsureBattery": "दोनों ईयरबड निकालें, और सुनिश्चित करें कि दोनों की बैटरी 20% से ऊपर है", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'नया संस्करण @version मिला', + 'otaConfirmUpdateNow': 'अभी अपडेट करें?', + 'otaUpdate': 'अपडेट', + 'otaUpgradeSuccess': 'अपग्रेड सफल', + 'otaUpgradeCompleteRepair': + 'फर्मवेयर अपग्रेड पूरा!\n\nडिवाइस को सही ढंग से काम करने के लिए फिर से पेयर करना होगा। क्या अभी पेयरिंग पेज पर जाएँ?', + 'otaPairLater': 'बाद में पेयर करें', + 'otaPairNow': 'अभी पेयर करें', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + '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': 'इस अपडेट में प्रदर्शन सुधार और बग फिक्स शामिल हैं।', + 'otaGetLatestVersionFailed': 'नवीनतम संस्करण जानकारी प्राप्त करने में विफल', + 'otaGetVersionInfoFailed': 'संस्करण जानकारी प्राप्त करने में विफल', + 'otaCheckingDeviceStatus': 'डिवाइस स्थिति जाँच रहे हैं...', + 'otaDownloadFailedCheckNetwork': 'डाउनलोड विफल, कृपया नेटवर्क कनेक्शन जांचें', + 'otaDownloadFailed': 'डाउनलोड विफल', + 'otaPreparingConnection': 'डिवाइस कनेक्शन तैयार कर रहे हैं...', + 'otaConnectingDevice': 'डिवाइस से कनेक्ट हो रहे हैं...', + 'otaUpgradeStarted': 'OTA अपग्रेड शुरू हो गया...', + 'otaUpgradeProgressWithPercent': 'Upgrade progress: @percent%', + 'otaUpgradeSuccessComplete': 'अपग्रेड सफलतापूर्वक पूरा हुआ', + 'otaUpgradeFailedWithCode': 'अपग्रेड विफल, त्रुटि कोड: @code', + 'otaUpgradeFailedTitle': 'अपग्रेड विफल', + 'otaUpgradeFailedDesc': + 'कृपया डिवाइस कनेक्शन या अपडेट पैकेज जांचें, त्रुटि कोड: @code', + 'otaDeviceDisconnected': 'डिवाइस डिस्कनेक्ट हो गया', + 'otaDeviceConnected': 'डिवाइस कनेक्टेड है', + + // 音乐模块 "noMusic": "कोई संगीत नहीं", // 暂无音乐 "noPlayingMusic": "कोई संगीत नहीं चल रहा है", // 暂无播放音乐 "unknownSong": "अज्ञात गीत", // 未知歌曲 @@ -1524,22 +1580,122 @@ const Map hiIN = { "波斯语": "फारसी", "斯瓦希里语": "स्वाहिली", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "ईमेल", + "中国": "चीन", + "美国": "संयुक्त राज्य अमेरिका", + "加拿大": "कनाडा", + "俄罗斯": "रूस", + "英国": "यूनाइटेड किंगडम", + "德国": "जर्मनी", + "意大利": "इटली", + "法国": "फ्रांस", + "西班牙": "स्पेन", + "南非": "दक्षिण अफ्रीका", + "沙特阿拉伯": "सऊदी अरब", + "土耳其": "तुर्की", + "日本": "जापान", + "韩国": "दक्षिण कोरिया", + "新加坡": "सिंगापुर", + "马来西亚": "मलेशिया", + "泰国": "थाईलैंड", + "越南": "वियतनाम", + "印度": "भारत", + "巴基斯坦": "पाकिस्तान", + "菲律宾": "फिलीपींस", + "印度尼西亚": "इंडोनेशिया", + "阿联酋": "संयुक्त अरब अमीरात", + "墨西哥": "मेक्सिको", + "巴西": "ब्राजील", + "阿根廷": "अर्जेंटीना", + "澳大利亚": "ऑस्ट्रेलिया", + "新西兰": "न्यूजीलैंड", + "中国香港": "हांगकांग (चीन)", + "中国澳门": "मकाऊ (चीन)", + "中国台湾": "ताइवान (चीन)", + "埃及": "मिस्र", + "希腊": "ग्रीस", + "荷兰": "नीदरलैंड", + "比利时": "बेल्जियम", + "匈牙利": "हंगरी", + "罗马尼亚": "रोमानिया", + "瑞士": "स्विट्जरलैंड", + "奥地利": "ऑस्ट्रिया", + "丹麦": "डेनमार्क", + "瑞典": "स्वीडन", + "挪威": "नॉर्वे", + "波兰": "पोलैंड", + "秘鲁": "पेरू", + "智利": "चिली", + "哥伦比亚": "कोलंबिया", + "委内瑞拉": "वेनेजुएला", + "葡萄牙": "पुर्तगाल", + "卢森堡": "लक्ज़मबर्ग", + "爱尔兰": "आयरलैंड", + "冰岛": "आइसलैंड", + "阿尔巴尼亚": "अल्बानिया", + "马耳他": "माल्टा", + "塞浦路斯": "साइप्रस", + "芬兰": "फिनलैंड", + "保加利亚": "बुल्गारिया", + "立陶宛": "लिथुआनिया", + "拉脱维亚": "लातविया", + "爱沙尼亚": "एस्टोनिया", + "乌克兰": "यूक्रेन", + "塞尔维亚": "सर्बिया", + "克罗地亚": "क्रोएशिया", + "斯洛文尼亚": "स्लोवेनिया", + "捷克": "चेक गणराज्य", + "斯洛伐克": "स्लोवाकिया", + "危地马拉": "ग्वाटेमाला", + "萨尔瓦多": "अल सल्वाडोर", + "洪都拉斯": "होंडुरास", + "尼加拉瓜": "निकारागुआ", + "哥斯达黎加": "कोस्टा रिका", + "巴拿马": "पनामा", + "海地": "हैती", + "玻利维亚": "बोलीविया", + "厄瓜多尔": "इक्वाडोर", + "巴拉圭": "पैराग्वे", + "乌拉圭": "उरुग्वे", + "摩洛哥": "मोरक्को", + "阿尔及利亚": "अल्जीरिया", + "突尼斯": "ट्यूनीशिया", + "尼日利亚": "नाइजीरिया", + "加纳": "घाना", + "埃塞俄比亚": "इथियोपिया", + "肯尼亚": "केन्या", + "坦桑尼亚": "तंजानिया", + "乌干达": "युगांडा", + "孟加拉国": "बांग्लादेश", + "以色列": "इज़राइल", + "黎巴嫩": "लेबनान", + "约旦": "जॉर्डन", + "伊拉克": "इराक", + "科威特": "कुवैत", + "巴林": "बहरीन", + "卡塔尔": "कतर", + "阿曼": "ओमान", + "阿富汗": "अफगानिस्तान", + "斯里兰卡": "श्रीलंका", + "缅甸": "म्यांमार", + "尼泊尔": "नेपाल", + "蒙古": "मंगोलिया", + "柬埔寨": "कंबोडिया", + "老挝": "लाओस", + "文莱": "ब्रुनेई", + "东帝汶": "पूर्वी तिमोर", + "斐济": "फिजी", + "所罗门群岛": "सोलोमन द्वीप समूह", // 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 40177044d..4036ec90c 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,6 +19,11 @@ const Map hrHR = { "unknownError": "Nepoznata greška", "asrConnectionFailed": "Povezivanje s uslugom za prepoznavanje govora nije uspjelo. Provjerite mrežu i pokušajte ponovno kasnije.", + "justNow": "Upravo sada", + "minutesAgo": "prije @minutes min", + "yesterday": "Jučer", + "daysAgo": "prije @days dana", + "hoursAgo": "prije @hours h", // 启动页 "slogan": "Povezivanje svijeta, izvan zvuka", @@ -28,7 +34,7 @@ const Map hrHR = { "explore": "Istraži", "settings": "Postavke", - // 语言 + // 语言列表 "followingSystem": "Prati sustav", "chinese": "Kineski", "english": "Engleski", @@ -72,7 +78,7 @@ const Map hrHR = { "arabic": "Arabski", "persian": "Persanski", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ili registrirajte pomoću svog telefonskog broja ili e-pošte", @@ -101,13 +107,9 @@ const Map hrHR = { "resendVerificationCode": "Ponovno pošalji verifikacijski kod", "login": "Prijava", "usePasswordLogin": "Prijava lozinkom", - - // 隐私政策弹窗 "loginDeclaration": "Izjava tvrtke Voitrans", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli u Voitrans, molimo pročitajte pažljivo", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete s gore navedenim ugovorima. Klikom na 'Ne slažem se' izaći ćete iz aplikacije.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne slažem se", // 不同意 @@ -168,7 +170,31 @@ const Map hrHR = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Provjera statusa veze nije uspjela', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inicijalizacija Bluetootha nije uspjela: @error', + 'needBluetoothAndLocationPermission': + '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': + 'Ova aplikacija treba Bluetooth i lokacijska dopuštenja za pretraživanje uređaja. Omogućite ih u Postavkama.', + 'needEnableBluetooth': 'Omogući Bluetooth', + 'enableBluetoothDialogContent': + '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...", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan1": "Pametni pratilac, beskonačne mogućnosti", @@ -193,211 +219,271 @@ const Map hrHR = { "usageStats": "Statistika upotrebe", "usageStatsInfo": "Pregledajte statistiku upotrebe aplikacije", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + "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': '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', + 'paymentFailedTryAgain': 'Plaćanje nije uspjelo. Pokušajte ponovno.', + 'selectPaymentMethod': 'Odaberite način plaćanja', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Stvaranje WeChat narudžbe nije uspjelo', + 'alipayOrderCreateFailed': 'Stvaranje Alipay narudžbe nije uspjelo', + 'appleOrderCreateFailed': 'Stvaranje Apple narudžbe nije uspjelo', + 'googleOrderCreateFailed': 'Stvaranje Google narudžbe nije uspjelo', + 'paypalOrderCreateFailed': 'Stvaranje PayPal narudžbe nije uspjelo', + 'paymentException': 'Iznimka pri plaćanju', + 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspjelo', + 'paymentExceptionWithError': 'Iznimka pri plaćanju: @error', + 'paymentProcessingCheckLater': + 'Vaša narudžba se obrađuje. Provjerite kasnije.', + 'paymentResultQueryException': + 'Neuspješno dohvaćanje rezultata plaćanja: @error', + 'orderConfirmedQuotaRefreshed': + 'Narudžba je potvrđena. Vaša kvota je osvježena.', + 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…', + 'paymentCancelled': 'Plaćanje je otkazano', + 'paypalOpenedCompleteInBrowser': + 'PayPal je otvoren. Molimo dovršite plaćanje u pregledniku.', + 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje', + 'paymentTestTitle': 'Test plaćanja', + 'paymentTestOrderInfo': 'Informacije o testnoj narudžbi', + 'paymentTestProductId': 'ID proizvoda', + 'paymentTestProductDescription': 'Opis proizvoda', + 'paymentTestWechatDescription': 'Test WeChat plaćanja', + 'paymentTestAlipayDescription': 'Test Alipay plaćanja', + 'paymentTestAmount': 'Iznos', + 'paymentTestSelectAmount': 'Odaberite testni iznos', + 'paying': 'Plaćanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status plaćanja', + 'errorInfoWithMessage': 'Greška: @message', + 'retest': 'Ponovo testiraj', + 'paymentTestInstructionsTitle': 'Upute', + 'paymentTestInstructionsContent': + '1. Odaberite testni iznos (preporučeno: ¥0.01)\n2. Kliknite gumb za plaćanje za početak\n3. Dovršite plaćanje u aplikaciji za plaćanje\n4. Vratite se da provjerite rezultat', + 'startingWechatPayment': 'Pokretanje WeChat Pay-a...', + 'startingAlipayPayment': 'Pokretanje Alipay-a...', + 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspješno!', + 'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspjelo', + 'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspjelo', + 'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay iznimka', + 'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen', + 'alipayPaymentSuccess': 'Alipay plaćanje uspješno!', + 'alipayPaymentFailed': 'Alipay plaćanje nije uspjelo', + 'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspjelo', + 'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', + 'alipayPaymentException': 'Alipay iznimka', + "insufficientIntegral": "Nedovoljno bodova", + "insufficientBalanceDesc": + 'Nedovoljno sredstava, idite na odgovarajuću stranicu za nadoplatu.', + "recharge": 'Idi na nadoplatu', + "aiMemberExpiredDesc": + 'AI članstvo je isteklo, idite na stranicu za obnovu članstva.', + + // 商品模块 - AI商品页 + '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': + 'Pogodno za pitanja agentu, sažimanje, analizu i izvršavanje zadataka.', + 'musicSearchPlaybackControl': + 'Pretraživanje glazbene biblioteke i kontrola reprodukcije', + 'smartPlaylistAndSimilarRecommendations': + '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': + 'Predlošci poruka i zakazani podsjetnici', + 'aiDisclaimer': + 'Funkcije ovise o dopuštenjima uređaja, dostupnosti usluga i uvjetima mreže.', - // 同传/翻译商品页描述 + // 商品模块 - 翻译商品页 + '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.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + // 商品模块 - 会议商品页 + 'meetingRecording': 'Snimanje sastanka', + 'transcriptionAndSummary': 'Transkripcija i sažetak', + 'keywordSearch': 'Pretraživanje ključnih riječi', + 'collaborationSharing': 'Suradnja i dijeljenje', + 'meetingHeaderDesc1': + 'Snimanje zvuka, transkripcija, pretraživanje po ključnim riječima i automatski sažetak za veću učinkovitost sastanaka.', + 'meetingHeaderDesc2': + 'Pogodno za poslovne sastanke, bilješke s predavanja i zapisnike intervjua.', + 'meetingAutoRecording': 'Automatsko snimanje i segmentacija', + 'meetingSpeakerTagging': 'Označavanje govornika', + 'meetingLongAudioTranscription': 'Transkripcija dugih audiozapisa', + 'meetingKeyPointSummary': 'Izvlačenje ključnih točaka', + 'meetingTopicNameSearch': 'Pretraživanje po temi/imenu', + 'meetingTimelineJump': 'Skok na vremensku traku', + 'meetingExportSummary': 'Izvoz zapisnika', + 'meetingMultiPlatformShare': 'Dijeljenje na više platformi', + 'meetingDisclaimer': + 'Koristite u tihoj okolini; performanse ovise o mikrofonu i mreži.', + + // 商品模块 - VIP会员页 + '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 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', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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", 'edit': 'Uredi', 'delete': 'Izbriši', @@ -409,250 +495,273 @@ const Map hrHR = { 'recordingDetails': 'Detalji snimke', 'aiSummary': 'AI sažetak', 'meetingTranscript': 'Transkript sastanka', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Pretraživanje...', + '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', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Odaberite što učiniti prije izlaska', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Završi i spremi', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Završi bez spremanja', // 结束录音不保存 'meetingRecordContinueInBackground': 'Nastavi snimanje u pozadini', // 后台继续录音 - 'meetingRecordStopTimeout': 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Isteklo je vrijeme za zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Neuspjelo zaustavljanje snimanja. Pokušajte ponovno.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Neuspjelo spremanje snimke. Pokušajte ponovno.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Snimanje je u tijeku', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Snimanje u pozadini. Dodirnite za povratak u aplikaciju.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Prikaz preko drugih aplikacija', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': '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', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Za prikaz rezultata prijevoda tijekom poziva ili prijevoda zvuka/videa potrebna je dozvola za prikaz preko drugih aplikacija. Tako možete vidjeti prijevod u stvarnom vremenu dok koristite druge aplikacije.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + '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': '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': 'Ponovno sažmi', + 'dateAndTime': 'Datum i vrijeme', + 'location': 'Lokacija', + 'attendees': 'Sudionici', + 'inputLocation': 'Unesi lokaciju', + 'inputAttendees': 'Unesi sudionike', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Odaberi predložak sažetka', + 'useThisTemplate': 'Koristi ovaj predložak', + 'lastUsed': 'Zadnje korišteno', + 'create': 'Stvori', + 'templateDetails': 'Pojedinosti predloška', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Predložak', + 'deleteTemplate': 'Obriši predložak', + 'deleteTemplateConfirm': + 'Jeste li sigurni da želite obrisati ovaj predložak?', + 'editTemplate': 'Uredi predložak', + 'createTemplate': 'Stvori predložak', + 'name': 'Naziv', + 'templateContentHint': + 'Molimo unesite sadržaj predloška! Savjet: Kliknite na AI gumb iznad za brzo generiranje sadržaja predloška na temelju naziva i opisa koje ste unijeli', + 'inputNameHint': 'Molimo unesite naziv', + 'inputDescHint': 'Molimo unesite opis', + 'custom': 'Prilagođeno', + 'pleaseEnter': 'Molimo unesite', + 'viewAll': 'Prikaži sve', + 'recordingLanguage': 'Jezik snimanja', + 'chineseSimplified': 'Kineski mandarinski (pojednostavljeni)', + 'meetingGenerateNow': 'Generiraj sada', + 'keyEventsAnalyzed': 'Analizirano {count} ključnih događaja.', + 'aiAnalysisDesc': + 'AI analiza prepoznaje ključne događaje u snimkama, što vam omogućuje odabir važnih događaja za AI generiranje.', + + // Meeting模块 - 文件操作 + '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': 'Podijeli mentalnu mapu', + 'shareSuccess': 'Uspješno podijeljeno', + + // Meeting模块 - AI问答 + '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': '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': 'Imenuj trenutnog govornika', + 'recentlyUsedNames': 'Nedavno korištena imena', + 'applyToCurrentParagraph': 'Primijeni na trenutni odlomak', + 'totalTime': 'Ukupno vrijeme', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Govornici u sažetku bit će automatski ažurirani', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinkroniziraj u oblak', + 'syncToCloudTip': + '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', - - // 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', + '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': '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.', - - // Meeting模块 - 升级会员 - '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', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + '*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 minuta', + 'threeThousandMinutes': '3.000 minuta', + 'sixHundredMinutes': '600 minuta', + 'oneHundredTwentyMinutes': '120 minuta', + 'validityPeriod': '*Razdoblje valjanosti: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Primijeni na sve odlomke ovog govornika', - 'summaryWillBeUpdatedAutomatically': - 'Sažetak će se automatski ažurirati prema predlošku', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivira se odmah nakon kupnje, vrijedi 2 godine nakon aktivacije.', + 'purchase': 'Kupi', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Jezik snimanja', + 'cantonese': 'Kantonski', + 'sichuan': 'Sichuanski dijalekt', + 'shanghai': 'Šangajski dijalekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Nepoznat jezik', + 'analysisFailed': 'Analiza nije uspjela, pokušajte ponovno kasnije', + 'transcriptionFailed': + 'Transkripcija nije uspjela, pokušajte ponovno kasnije', + 'summaryFailed': 'Sažetak nije uspio, pokušajte ponovno kasnije', + 'summaryFailedShort': 'Sažetak nije uspio', + 'transcriptionFailedShort': 'Transkripcija nije uspjela', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio reproduktor nije spreman, molimo pričekajte', + 'playFailed': 'Reprodukcija nije uspjela', + 'audioFileNotFound': 'Audio datoteka nije pronađena', + 'fetchingAudio': 'Dohvaćanje audio zapisa iz oblaka...', + 'playerLoadFailed': 'Audio reproduktor se nije uspio učitati', // 设置页 "systemSettings": "Postavke sustava", @@ -661,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", @@ -705,43 +814,31 @@ const Map hrHR = { "bleHeadsetFirmwareUpgrade": "Nadogradnja verzije firmvera BLE slušalica", "deviceManagement": "Upravljanje uređajima", "manageConnectedDevices": "Upravljanje povezanim Bluetooth uređajima", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnoviju verziju {version}', 'checkUpdateFailed': 'Provjera ažuriranja nije uspjela', 'networkErrorRetry': 'Mrežna greška, pokušajte ponovno kasnije', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovni chat u stvarnom vremenu", "realtimeVoiceChatInfo": "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", "loading": "Učitavanje...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Obriši povijest razgovora", "online": "Na mreži", @@ -769,22 +866,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Odgovarati na pitanja i pružati informacije\n\n' '• Glasovno prevođenje u stvarnom vremenu\n\n' @@ -804,18 +903,17 @@ const Map hrHR = { 'startVoiceInput': 'Započni unos glasom', 'startPhoneCallMode': 'Započni način poziva, započni unos glasom', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Unesite svoju poruku ovdje...', // 全屏编辑器输入提示 'characterCount': '{count} znakova', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspješno kopirano', 'report': 'Prijavi', 'submitSuccess': 'Uspješno poslano', 'submitFailed': 'Slanje nije uspjelo', 'reportSubmitted': 'Prijava je poslana, obradit ćemo je što je prije moguće', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Štetno/Opasno', 'pornographicVulgar': 'Pornografski/Prostački', 'misleadingAttack': 'Obmanjujuće/Napad', @@ -825,17 +923,21 @@ const Map hrHR = { 'other': 'Ostalo', 'reportDescriptionHint': 'Želimo znati razlog vaše prijave, možete opisati problem s kojim ste se suočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generirano od strane AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + '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:', 'playList': 'Popis pjesama', 'moreMusic': 'Još glazbe', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'sati', // 小时单位 @@ -850,7 +952,30 @@ const Map hrHR = { "bicycling": "Biciklizam", "tsransit": "Javni prijevoz", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Odaberi navigacijsku aplikaciju', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigiraj s Amapom', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigiraj s Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigiraj s Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigiraj s Apple Maps', + 'builtInNavigation': 'Ugrađena navigacija', + 'useBuiltInNavigation': 'Navigiraj s ugrađenom kartom', + 'navigationStartFailed': 'Neuspjelo pokretanje navigacije', + 'cannotPlayMusicListRetryLater': + '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:', 'highest': 'Najviša', 'lowest': 'Najniža', @@ -879,18 +1004,8 @@ const Map hrHR = { "friday": "Pet", "saturday": "Sub", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sunčano", "partlyCloudy": "Djelomično oblačno", "partlySunny": "Pretežno sunčano", @@ -911,7 +1026,142 @@ const Map hrHR = { "haze": "Sumaglica", "strongWind": "Jak vjetar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Prijevod slike", + "textTranslation": "Tekstualni prijevod", + + // 翻译模块 - 主页 + "translationHistory": "Povijest prijevoda", + "enableRecording": "Omogući snimanje", + "viewAudioFiles": "Prikaži audio datoteke", + "headsetUser": "Korisnik slušalica", + "phoneUser": "Korisnik telefona", + "selectSourceLanguage": "Odaberi izvorni jezik", + "selectTargetLanguage": "Odaberi ciljni jezik", + "me": "Ja", + "counterPart": "Sugovornik", + "bluetoothCallStateError": + "Provjerite je li Bluetooth headset povezan s telefonom i je li u stanju poziva", + "autoDetect": "Automatsko prepoznavanje", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Prepoznavanje jezika nije uspjelo", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Onemogući plutajući prozor', + 'enableFloatingWindow': 'Omogući plutajući prozor', + 'permissionTip': 'Savjet o dopuštenjima', + 'micPermissionRequiredForRecording': + '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": "Tekst je predug, max 5000 znakova", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nema povijesti", + "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.", + "unknownLanguage": "Nepoznat jezik", + "deleteSessionRecord": "Obriši zapis sesije", + "deleteSessionConfirm": + "Jeste li sigurni da želite obrisati sve zapise prijevoda za ovu sesiju? Ova se radnja ne može poništiti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Obrada slike ili prijevod nisu uspjeli. Pokušajte ponovno.\nGreška: {error}", + "imageTooLarge": "Veličina slike prelazi ograničenje od 4 MB", + "imageTooLargeHint": + "Veličina slike prelazi 4 MB. Smanjite kvalitetu ili dimenzije i pokušajte ponovno", + "emptyTranslationResult": "API za prijevod slika vratio je prazan rezultat", + "imageTranslationFailedTryLater": + "Prijevod slike nije uspio. Problem s mrežom ili ograničenje. Pokušajte kasnije", + "imageTranslationApiException": + "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": + "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", + "noAudioFiles": "Nema audio datoteka", + "calculating": "Izračunavanje...", + "playing": "Reprodukcija...", + "paused": "Pauzirano", + "clickToPlay": "Kliknite za reprodukciju", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj audio datoteku", + "enterNewFileName": "Unesite novi naziv datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Sažetak zapisa", + "clickToGenerateSummary": + "Kliknite na gumb ispod da biste generirali sažetak sesije", + "summaryContent": "Sadržaj sažetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", + "extractSummary": "Izdvoji sažetak", + "summaryGenerated": "Sažetak je generiran", + "generating": "Generiranje...", + "regenerate": "Ponovno generiraj", + "summaryTimeoutMessage": + "Isteklo je vrijeme za generiranje sažetka, možda zbog problema s mrežom ili zauzetosti poslužitelja.", + "deleteTranslationRecord": "Obriši zapis prijevoda", + "deleteTranslationConfirm": + "Jeste li sigurni da želite obrisati ovaj zapis prijevoda? Ova se radnja ne može poništiti.", + "originalText": "Originalni tekst", + "translatedText": "Prevedeni tekst", + "sessionSummary": "Sažetak sesije", + "cannotShare": "Nije moguće dijeliti", + "generateSummaryFirst": "Prvo generirajte sažetak", + "translationSessionRecord": "Zapis sesije prevođenja", + + // 个人资料模块 "editProfile": "Uredi osobne podatke", "avatar": "Avatar", "nickname": "Nadimak", @@ -925,10 +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?', - - // Profile 错误信息 + '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': @@ -945,10 +1193,6 @@ const Map hrHR = { 'Mrežna veza nije uspjela, provjerite postavke mreže', 'serverInternalErrorRetryLater': 'Interna greška na poslužitelju, pokušajte ponovno kasnije', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresija slike nije uspjela', 'avatarUpdateFailed': 'Ažuriranje avatara nije uspjelo', 'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno', @@ -959,8 +1203,6 @@ const Map hrHR = { 'logoutFailedRetry': 'Odjava nije uspjela, pokušajte ponovno', 'accountPermanentlyDeleted': 'Račun je trajno obrisan', 'deleteAccountFailedRetry': 'Brisanje računa nije uspjelo, pokušajte ponovno', - - // 账号服务相关 'clearUserDataFailed': 'Brisanje korisničkih podataka nije uspjelo', // 清理用户数据失败 'deleteUserDataFailed': @@ -977,21 +1219,25 @@ const Map hrHR = { 'accountServiceInitialized': 'AccountService je inicijaliziran', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Pohrana', + 'meetingStoragePermissionExplanation': + 'Trebamo dopuštenje za pohranu kako biste mogli odabrati i prenijeti audio datoteke.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kontakti', + 'notification': 'Obavijesti', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje u kalendar', 'calendarFullAccess': 'Potpuni pristup kalendaru', @@ -999,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': @@ -1019,80 +1265,92 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija u tijeku', + 'native.notification.navigation.keepRunning': + 'Navigacija, držite aplikaciju pokrenutom', + 'native.notification.bleAgent.running': 'Glasovni asistent je pokrenut', + 'native.notification.audioRecording.recording': + 'Snimanje zvuka, dodirnite za povratak u aplikaciju', + 'native.notification.music.waiting': 'Čekanje na reprodukciju', + 'native.notification.music.previous': 'Prethodna', + 'native.notification.music.next': 'Sljedeća', + 'native.notification.music.play': 'Reproduciraj', + 'native.notification.music.pause': 'Pauza', + 'native.notification.qqMusic.playing': 'Reprodukcija glazbe', + + // 版本更新 'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题 'remindLater': 'Podsjeti me kasnije', // 稍后提醒按钮 'updateNow': 'Ažuriraj sada', // 立即更新按钮 @@ -1103,253 +1361,7 @@ const Map hrHR = { 'updateErrorRetry': 'Došlo je do greške tijekom ažuriranja, pokušajte ponovno kasnije', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kina", - "美国": "SAD", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Ujedinjeno Kraljevstvo", - "德国": "Njemačka", - "意大利": "Italija", - "法国": "Francuska", - "西班牙": "Španjolska", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudijska Arabija", - "土耳其": "Turska", - "日本": "Japan", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajland", - "越南": "Vijetnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "UAE", - "墨西哥": "Meksiko", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Novi Zeland", - "中国香港": "Hong Kong (Kina)", - "中国澳门": "Makao (Kina)", - "中国台湾": "Tajvan (Kina)", - "埃及": "Egipat", - "希腊": "Grčka", - "荷兰": "Nizozemska", - "比利时": "Belgija", - "匈牙利": "Mađarska", - "罗马尼亚": "Rumunjska", - "瑞士": "Švicarska", - "奥地利": "Austrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Island", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Cipar", - "芬兰": "Finska", - "保加利亚": "Bugarska", - "立陶宛": "Litva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvatska", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovačka", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžir", - "突尼斯": "Tunis", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mijanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Istočni Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonski Otoci", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Povijest prijevoda", - "enableRecording": "Omogući snimanje", - "viewAudioFiles": "Prikaži audio datoteke", - "headsetUser": "Korisnik slušalica", - "phoneUser": "Korisnik telefona", - "selectSourceLanguage": "Odaberi izvorni jezik", - "selectTargetLanguage": "Odaberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nema povijesti", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Obriši povijest", - "clearHistoryConfirm": - "Jeste li sigurni da želite obrisati cijelu povijest prijevoda? Ova se radnja ne može poništiti.", - "unknownLanguage": "Nepoznat jezik", - "deleteSessionRecord": "Obriši zapis sesije", - "deleteSessionConfirm": - "Jeste li sigurni da želite obrisati sve zapise prijevoda za ovu sesiju? Ova se radnja ne može poništiti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi audio datoteke", - "noAudioFiles": "Nema audio datoteka", - "calculating": "Izračunavanje...", - "playing": "Reprodukcija...", - "paused": "Pauzirano", - "clickToPlay": "Kliknite za reprodukciju", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj audio datoteku", - "enterNewFileName": "Unesite novi naziv datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Sažetak zapisa", - "clickToGenerateSummary": - "Kliknite na gumb ispod da biste generirali sažetak sesije", - "summaryContent": "Sadržaj sažetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", - "extractSummary": "Izdvoji sažetak", - "summaryGenerated": "Sažetak je generiran", - "generating": "Generiranje...", - "regenerate": "Ponovno generiraj", - "summaryTimeoutMessage": - "Isteklo je vrijeme za generiranje sažetka, možda zbog problema s mrežom ili zauzetosti poslužitelja.", - "deleteTranslationRecord": "Obriši zapis prijevoda", - "deleteTranslationConfirm": - "Jeste li sigurni da želite obrisati ovaj zapis prijevoda? Ova se radnja ne može poništiti.", - "originalText": "Originalni tekst", - "translatedText": "Prevedeni tekst", - "sessionSummary": "Sažetak sesije", - "cannotShare": "Nije moguće dijeliti", - "generateSummaryFirst": "Prvo generirajte sažetak", - "translationSessionRecord": "Zapis sesije prevođenja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Uparivanje uređaja", "connectYourDeepSoundHeadset": "Povežite svoje Voitrans slušalice", "bind": "Poveži", @@ -1358,14 +1370,11 @@ const Map hrHR = { "autoInputCode": "Automatski unos koda", "skipBinding": "Preskoči povezivanje", "rescan": "Ponovno skeniraj", - "verifyingDevice": "Verifikacija uređaja...", "confirmBinding": "Potvrdi povezivanje", "associatingDevice": "Povezivanje uređaja...", "goToBluetoothSettings": "Idite na Bluetooth postavke", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Spremno za uparivanje", "preparingPairingEnvironment": "Priprema okruženja za uparivanje...", "connectDeepSoundViaSystemBluetooth": @@ -1375,8 +1384,6 @@ const Map hrHR = { "waitingCompletePairing": "Molimo pričekajte, uparivanje se završava...", "pairingSuccessRedirecting": "Uparivanje uspješno! Preusmjeravanje na početnu stranicu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Provjerite jeste li povezani s Voitrans uređajem", "deviceAlreadyBoundToOtherAccount": @@ -1389,19 +1396,12 @@ const Map hrHR = { "authorizationFailedCheckCode": "Autorizacija nije uspjela, provjerite je li autorizacijski kod točan", "pairingFailedRetry": "Uparivanje nije uspjelo, pokušajte ponovno", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogućite Bluetooth', 'deviceDisconnected': 'Uređaj je isključen', 'readyToStartPairing': 'Spremno za početak uparivanja', 'checkingEnvironment': 'Provjera okruženja...', 'ensureHeadsetOnAndPairingMode': 'Provjerite jesu li slušalice uključene i u načinu uparivanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Uspostavljanje sigurne veze...', 'needManualBindingAuthCode': 'Potreban je kod za autorizaciju ručnog povezivanja...', @@ -1424,21 +1424,30 @@ const Map hrHR = { 'bleConnectionFailed': 'BLE veza nije uspjela', 'deviceAuthorizationFailedCheckCode': 'Autorizacija uređaja nije uspjela, provjerite autorizacijski kod', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Povratne informacije korisnika", 'feedbackInfo': 'Dajte povratne informacije ili prijedloge', 'feedbackDescription': @@ -1467,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", @@ -1481,7 +1491,62 @@ const Map hrHR = { "removeEarbudsEnsureBattery": "Izvadite obje slušalice i provjerite je li baterija obje iznad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Pronađena je nova verzija @version', + 'otaConfirmUpdateNow': 'Ažurirati sada?', + 'otaUpdate': 'Ažuriraj', + 'otaUpgradeSuccess': 'Nadogradnja uspješna', + 'otaUpgradeCompleteRepair': + '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': 'Greška pri provjeri BLE veze: @error', + 'otaBleNotConnected': 'BLE uređaj nije povezan', + 'otaBleNeedConnection': + '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': + 'Nije moguće dohvatiti informacije o uređaju\nPonovno povežite uređaj ili pokušajte kasnije', + 'otaBleCheckFailed': 'Provjera BLE veze nije uspjela', + 'otaCannotGetDeviceInfoCheckConnection': + 'Nije moguće dohvatiti informacije o uređaju, provjerite vezu', + 'otaCannotGetProductInfoWithName': + 'Nije moguće dohvatiti informacije o proizvodu, naziv uređaja: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nije moguće dohvatiti valjane informacije o bateriji', + 'otaLowBattery': 'Niska baterija', + 'otaSingleBatteryLow': + 'Baterija uređaja je preniska za nadogradnju firmvera\nZahtjev: baterija mora biti iznad 20%\nTrenutno: @ear @battery%\nNapunite i pokušajte ponovno', + 'otaDoubleBatteryLow': + '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': + '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': + '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': + 'Provjerite vezu uređaja ili paket nadogradnje, kod greške: @code', + 'otaDeviceDisconnected': 'Uređaj je odspojen', + 'otaDeviceConnected': 'Uređaj je povezan', + + // 音乐模块 "noMusic": "Nema glazbe", // 暂无音乐 "noPlayingMusic": "Nema glazbe koja se reproducira", // 暂无播放音乐 "unknownSong": "Nepoznata pjesma", // 未知歌曲 @@ -1529,22 +1594,122 @@ const Map hrHR = { "波斯语": "Perzijski", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kina", + "美国": "SAD", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Ujedinjeno Kraljevstvo", + "德国": "Njemačka", + "意大利": "Italija", + "法国": "Francuska", + "西班牙": "Španjolska", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudijska Arabija", + "土耳其": "Turska", + "日本": "Japan", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajland", + "越南": "Vijetnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "UAE", + "墨西哥": "Meksiko", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Novi Zeland", + "中国香港": "Hong Kong (Kina)", + "中国澳门": "Makao (Kina)", + "中国台湾": "Tajvan (Kina)", + "埃及": "Egipat", + "希腊": "Grčka", + "荷兰": "Nizozemska", + "比利时": "Belgija", + "匈牙利": "Mađarska", + "罗马尼亚": "Rumunjska", + "瑞士": "Švicarska", + "奥地利": "Austrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Island", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Cipar", + "芬兰": "Finska", + "保加利亚": "Bugarska", + "立陶宛": "Litva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvatska", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovačka", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžir", + "突尼斯": "Tunis", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mijanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Istočni Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonski Otoci", + "刚果民主共和国": "Demokratska Republika Kongo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldivi", + "不丹": "Butan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamajka", + "巴哈马": "Bahami", + "巴布亚新几内亚": "Papua Nova Gvineja", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/hu_hu.dart b/lib/core/translations/language/hu_hu.dart index aaed87a6f..8793e4b99 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,6 +19,11 @@ const Map huHU = { "unknownError": "Ismeretlen hiba", "asrConnectionFailed": "Nem sikerült csatlakozni a beszédfelismerő szolgáltatáshoz. Ellenőrizze a hálózatot, majd próbálja meg később újra.", + "justNow": "É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", @@ -28,7 +34,7 @@ const Map huHU = { "explore": "Felfedezés", "settings": "Beállítások", - // 语言 + // 语言列表 "followingSystem": "Rendszer követése", "chinese": "Kínai", "english": "Angol", @@ -72,7 +78,7 @@ const Map huHU = { "arabic": "Arab", "persian": "Persz", - // 登录页 + // 登录模块 "welcome": "Üdvözöljük", "loginTips": "Jelentkezzen be vagy regisztráljon telefonszámával vagy e-mail címével", @@ -102,13 +108,9 @@ const Map huHU = { "resendVerificationCode": "Megerősítő kód újraküldése", "login": "Bejelentkezés", "usePasswordLogin": "Bejelentkezés jelszóval", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans nyilatkozat", // Voitrans 声明 "welcomeToThisApp": "Üdvözöljük a Voitransban, kérjük, olvassa el figyelmesen", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", a 'Elfogadom és belépek' gombra kattintva megerősíti, hogy elolvasta és elfogadja a fenti megállapodásokat. A 'Nem fogadom el' gombra kattintva kilép az alkalmazásból.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nem fogadom el", // 不同意 @@ -170,7 +172,30 @@ const Map huHU = { 'checkConnectionStatusFailed': 'A kapcsolat állapotának ellenőrzése sikertelen', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth inicializálása sikertelen: @error', + 'needBluetoothAndLocationPermission': + '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': + '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': + '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...", "exploreSlogan": "Okos fülhallgatók, végtelen lehetőségek", "exploreSlogan1": "Okos társ, végtelen lehetőségek", @@ -193,211 +218,275 @@ const Map huHU = { "usageStats": "Használati statisztika", "usageStatsInfo": "Lásd a használati statisztikát", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "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': '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', + 'paymentFailedTryAgain': 'Fizetés sikertelen. Kérjük, próbálja újra.', + 'selectPaymentMethod': 'Fizetési mód kiválasztása', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay rendelés létrehozása sikertelen', + 'alipayOrderCreateFailed': 'Alipay rendelés létrehozása sikertelen', + 'appleOrderCreateFailed': 'Apple rendelés létrehozása sikertelen', + 'googleOrderCreateFailed': 'Google rendelés létrehozása sikertelen', + 'paypalOrderCreateFailed': 'PayPal rendelés létrehozása sikertelen', + 'paymentException': 'Fizetési kivétel', + 'paymentLaunchFailed': 'Fizetés indítása sikertelen', + 'paymentExceptionWithError': 'Fizetési kivétel: @error', + 'paymentProcessingCheckLater': + 'A rendelése feldolgozás alatt áll. Kérjük, ellenőrizze később.', + 'paymentResultQueryException': + 'Nem sikerült lekérdezni a fizetés eredményét: @error', + 'orderConfirmedQuotaRefreshed': 'Rendelés megerősítve. A kvótája frissült.', + 'paymentCompletedConfirming': 'Fizetés befejezve. Megerősítés folyamatban…', + 'paymentCancelled': 'Fizetés megszakítva', + 'paypalOpenedCompleteInBrowser': + 'PayPal megnyitva. Kérjük, fejezze be a fizetést a böngészőben.', + 'paypalOpenFailed': 'Nem sikerült megnyitni a PayPal fizetési oldalt', + 'paymentTestTitle': 'Fizetési teszt', + 'paymentTestOrderInfo': 'Teszt rendelési információ', + 'paymentTestProductId': 'Termékazonosító', + 'paymentTestProductDescription': 'Termékleírás', + 'paymentTestWechatDescription': 'WeChat Pay fizetési teszt', + 'paymentTestAlipayDescription': 'Alipay fizetési teszt', + 'paymentTestAmount': 'Összeg', + 'paymentTestSelectAmount': 'Válassza ki a teszt összeget', + 'paying': 'Fizetés...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Fizetés állapota', + 'errorInfoWithMessage': 'Hiba: @message', + 'retest': 'Újratesztelés', + 'paymentTestInstructionsTitle': 'Útmutató', + 'paymentTestInstructionsContent': + '1. Válasszon egy teszt összeget (ajánlott: ¥0,01)\n2. Kattintson a fizetés gombra az indításhoz\n3. Fejezze be a fizetést a fizetési alkalmazásban\n4. Térjen vissza az eredmény ellenőrzéséhez', + 'startingWechatPayment': 'WeChat Pay indítása...', + 'startingAlipayPayment': 'Alipay indítása...', + 'wechatPaymentSuccess': 'WeChat Pay sikeres!', + 'wechatPaymentFailed': 'WeChat Pay sikertelen', + 'wechatPaymentLaunchFailed': 'WeChat Pay indítása sikertelen', + 'cannotLaunchWechatPayment': 'Nem sikerült elindítani a WeChat Pay-t', + 'wechatPaymentException': 'WeChat Pay kivétel', + 'wechatPaymentTestCompleted': 'WeChat Pay teszt befejezve', + 'alipayPaymentSuccess': 'Alipay sikeres!', + 'alipayPaymentFailed': 'Alipay sikertelen', + 'alipayPaymentLaunchFailed': 'Alipay indítása sikertelen', + 'cannotLaunchAlipayPayment': 'Nem sikerült elindítani az Alipay-t', + 'alipayPaymentException': 'Alipay kivétel', + "insufficientIntegral": "Nem elegendő pont", + "insufficientBalanceDesc": + 'Nincs elegendő egyenleg, kérjük, menjen a megfelelő feltöltési oldalra.', + "recharge": 'Ugrás feltöltéshez', + "aiMemberExpiredDesc": + 'Az AI tagság lejárt, kérjük, újítsa meg a tagsági oldalon.', + + // 商品模块 - AI商品页 + '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.', - - // 会员商品页 - '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', + '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': 'Valós idejű átírás', + 'sceneLexicon': 'Szituációs szótár', + 'subtitleDisplay': 'Feliratok', + 'transHeaderDesc1': + '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': + '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': + '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': 'Megbeszélés rögzítése', + 'transcriptionAndSummary': 'Átirat és összefoglaló', + 'keywordSearch': 'Kulcsszavas keresés', + 'collaborationSharing': 'Együttműködés és megosztás', + 'meetingHeaderDesc1': + 'Hangrögzítés, átírás, kulcsszavas keresés és automatikus összefoglaló a hatékonyabb megbeszélésekért.', + 'meetingHeaderDesc2': + 'Üzleti megbeszélésekhez, órai jegyzetekhez és interjújegyzőkönyvekhez.', + 'meetingAutoRecording': 'Automatikus rögzítés és szegmentálás', + 'meetingSpeakerTagging': 'Beszélőcímkézés', + 'meetingLongAudioTranscription': 'Hosszú hangfelvétel átírása', + 'meetingKeyPointSummary': 'Kulcspontok kinyerése', + 'meetingTopicNameSearch': 'Keresés téma/név alapján', + 'meetingTimelineJump': 'Idővonalon ugrás', + 'meetingExportSummary': 'Jegyzőkönyv exportálása', + 'meetingMultiPlatformShare': 'Megosztás platformok között', + 'meetingDisclaimer': + 'Használja csendes környezetben; a teljesítmény a mikrofontól és a hálózattól függ.', + + // 商品模块 - VIP会员页 + '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.', + 'A tényleges előnyök a csomag részleteitől függnek, és verziónként változhatnak.', + + // 商品模块 - 商品名称与描述 + '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', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Kihagyás", - '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, ', - // AI 引导步骤 - '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': 'Következő', + 'sayLilyHint': 'Mondja a mikrofonba: \u201eLily Lily\u201d', + 'imHere': 'Tessék, itt vagyok~', + 'guideWelcomeWakeAI': + 'Üdvözöljük a Voitransban! Először élessze fel AI-ját, \u201eLilyt\u201d.', + 'aiReplyCompleted': 'Lily befejezte a választ!', + 'aiThinking': 'Lily gondolkodik\u2026', + 'guideAwakenSuccess': 'Remek! Lily ébren van \u2014 kérjen tőle segítséget.', + 'confirmInput': 'Bevitel megerősítése', + 'guideClickSendPrefix': 'Koppintson a küldés gombra, ', + 'guideWeatherStart': 'Mondja Lilynek: \u201eMilyen idő van ma?\u201d', + 'guideWeatherInput': 'Milyen idő van ma?', + 'guideWeatherSend': 'Lily valós időben jelenti az időjárást', + 'guideWeatherEnd': + 'Lily élőben jelenti az időt \u2014 próbáljon más parancsokat', + 'guideMusicStart': 'Mondja Lilynek: \u201eJátssz rock zenét\u201d', + 'guideMusicInput': 'Játssz rock zenét', + 'guideMusicSend': 'Lily zenét keres Önnek', + 'guideMusicEnd': 'Lily zenét talált \u2014 próbáljon más parancsokat', + 'guideNavStart': + 'Mondja Lilynek: \u201eNavigálj a shenzeni repülőtérre\u201d', + 'guideNavInput': 'Navigálj a shenzeni repülőtérre', + 'guideNavSend': 'Lily megtervezi az útvonalat', + 'guideNavEnd': 'Navigáció beállítva \u2014 próbáljon más parancsokat', '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", 'edit': 'Szerkesztés', 'delete': 'Törlés', @@ -409,40 +498,40 @@ const Map huHU = { 'recordingDetails': 'Felvétel részletei', 'aiSummary': 'AI összefoglaló', 'meetingTranscript': 'Megbeszélés átirata', - - // Meeting模块 - 导航和基础功能 - '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', // 请选择离开后的操作 @@ -466,202 +555,215 @@ 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', - //'generating': '正在生成...', - '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': 'Ú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': 'Ö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', + 'description': 'Leírás', + 'template': 'Sablon', + 'deleteTemplate': 'Sablon törlése', + 'deleteTemplateConfirm': 'Biztosan törölni szeretné ezt a sablont?', + 'editTemplate': 'Sablon szerkesztése', + 'createTemplate': 'Sablon létrehozása', + 'name': 'Név', + 'templateContentHint': + 'Kérjük, adja meg a sablon tartalmát! Tipp: Kattintson a fenti AI gombra, hogy gyorsan generáljon sablontartalmat a megadott név és leírás alapján', + 'inputNameHint': 'Kérjük, adjon meg nevet', + 'inputDescHint': 'Kérjük, adjon meg leírást', + 'custom': 'Egyéni', + 'pleaseEnter': 'Kérjük, adja meg', + 'viewAll': 'Ö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': + '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': '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': 'Gondolattérkép megosztása', + 'shareSuccess': 'Megosztás sikeres', + + // Meeting模块 - AI问答 + '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': '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': 'Aktuális beszélő elnevezése', + 'recentlyUsedNames': 'Nemrég használt nevek', + 'applyToCurrentParagraph': 'Alkalmazás az aktuális bekezdésre', + 'totalTime': 'Teljes idő', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Az összefoglaló beszélői automatikusan frissülnek', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Szinkronizálás felhőbe', + 'syncToCloudTip': + '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', - - // 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', + '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': 'Ö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.', - - // Meeting模块 - 升级会员 - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Alkalmazás a beszélő összes bekezdésére', - 'summaryWillBeUpdatedAutomatically': - 'Az összefoglaló automatikusan frissül a sablon alapján', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + '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': 'Felvétel nyelve', + 'cantonese': 'Kantonai', + 'sichuan': 'Szecsuan dialektus', + 'shanghai': 'Sanghaji dialektus', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailedShort': 'Összefoglalás sikertelen', + 'transcriptionFailedShort': 'Átírás sikertelen', + + // Meeting模块 - 播放器 + 'playerNotReady': 'A hanglejátszó nem áll készen, kérjük, várjon', + 'playFailed': 'Lejátszás sikertelen', + 'audioFileNotFound': 'Hangfájl nem található', + 'fetchingAudio': 'Hanganyag letöltése a felhőből...', + 'playerLoadFailed': 'A hanglejátszó betöltése sikertelen', // 设置页 "systemSettings": "Rendszerbeállítások", @@ -670,10 +772,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", @@ -715,43 +817,31 @@ const Map huHU = { "bleHeadsetFirmwareUpgrade": "BLE fülhallgató firmware verzió frissítése", "deviceManagement": "Eszközkezelés", "manageConnectedDevices": "Csatlakoztatott Bluetooth eszközök kezelése", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Jelenleg a legfrissebb verziót használja: {version}', 'checkUpdateFailed': 'A frissítések keresése sikertelen', 'networkErrorRetry': 'Hálózati hiba, próbálja újra később', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Valós idejű hangcsevegés", "realtimeVoiceChatInfo": "Tapasztalja meg az intelligens hanginterakciós funkciót (funkció előnézet)", "loading": "Betöltés...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Csevegési előzmények törlése", "online": "Online", @@ -780,22 +870,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Kérdések megválaszolásában és információk nyújtásában\n\n' '• Valós idejű hangfordításban\n\n' @@ -815,18 +907,17 @@ const Map huHU = { 'startVoiceInput': 'Hangbevitel indítása', 'startPhoneCallMode': 'Hívás mód indítása, hangbevitel indítása', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Írja ide az üzenetét...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Másolás', 'copySuccess': 'Sikeresen másolva', 'report': 'Jelentés', 'submitSuccess': 'Sikeresen elküldve', 'submitFailed': 'Küldés sikertelen', 'reportSubmitted': 'A jelentés elküldve, mihamarabb feldolgozzuk', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Káros/Nem biztonságos', 'pornographicVulgar': 'Pornográf/Vulgáris', 'misleadingAttack': 'Félrevezető/Támadó', @@ -836,17 +927,21 @@ const Map huHU = { 'other': 'Egyéb', 'reportDescriptionHint': 'Szeretnénk tudni a jelentés okát, leírhatja a tapasztalt problémát.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI által generált', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Tool Call', + 'noResult': 'No Result', + 'noToolCallContentToCopy': 'No tool call content to copy', + 'toolCallDetails': 'Tool Call Details:', + 'toolCallContentCopied': 'Tool call content copied to clipboard', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Itt van néhány ajánlott zene:', 'playList': 'Lejátszási lista', 'moreMusic': 'Több zene', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'óra', // 小时单位 @@ -861,7 +956,30 @@ const Map huHU = { "bicycling": "Kerékpározás", "tsransit": "Tömegközlekedés", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Navigációs app kiválasztása', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigálás Amap-pel', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigálás Baidu Maps-szel', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigálás Google Térképpel', + 'appleMap': 'Apple Maps', + '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': + '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:', 'highest': 'Legmagasabb', 'lowest': 'Legalacsonyabb', @@ -890,18 +1008,8 @@ const Map huHU = { "friday": "Pé", "saturday": "Szo", "sunday": "Va", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Napos", "partlyCloudy": "Részben felhős", "partlySunny": "Részben napos", @@ -922,7 +1030,141 @@ const Map huHU = { "haze": "Pára", "strongWind": "Erős szél", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Képek fordítása", + "textTranslation": "Szöveg fordítása", + + // 翻译模块 - 主页 + "translationHistory": "Fordítási előzmények", + "enableRecording": "Felvétel engedélyezése", + "viewAudioFiles": "Hangfájlok megtekintése", + "headsetUser": "Fülhallgató-felhasználó", + "phoneUser": "Telefon-felhasználó", + "selectSourceLanguage": "Forrásnyelv kiválasztása", + "selectTargetLanguage": "Célnyelv kiválasztása", + "me": "Én", + "counterPart": "Beszélgetőtárs", + "bluetoothCallStateError": + "Győződjön meg róla, hogy a Bluetooth headset csatlakozik a telefonhoz és hívásban van", + "autoDetect": "Automatikus felismerés", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Nyelvfelismerés sikertelen", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Lebegő ablak letiltása', + 'enableFloatingWindow': 'Lebegő ablak engedélyezése', + 'permissionTip': 'Engedélyek tipp', + 'micPermissionRequiredForRecording': + '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": "A szöveg túl hosszú, maximum 5000 karakter", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Még nincsenek előzmények", + "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.", + "unknownLanguage": "Ismeretlen nyelv", + "deleteSessionRecord": "Munkamenet-rekord törlése", + "deleteSessionConfirm": + "Biztosan törli az összes fordítási rekordot ehhez a munkamenethez? Ezt a műveletet nem lehet visszavonni.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "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": "A képfordítási API üres eredményt adott", + "imageTranslationFailedTryLater": + "Képfordítás sikertelen. Hálózati probléma vagy limit. Próbálja később", + "imageTranslationApiException": + "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": + "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", + "noAudioFiles": "Még nincsenek hangfájlok", + "calculating": "Számítás...", + "playing": "Lejátszás...", + "paused": "Szüneteltetve", + "clickToPlay": "Kattintson a lejátszáshoz", + "rename": "Átnevezés", + "smartTranscription": "Intelligens átírás", + "renameAudioFile": "Hangfájl átnevezése", + "enterNewFileName": "Kérjük, adjon meg egy új fájlnevet", + + // 翻译模块 - 翻译详情 + "originalRecord": "Eredeti felvétel", + "recordSummary": "Felvétel összefoglalója", + "clickToGenerateSummary": + "Kattintson az alábbi gombra a munkamenet összefoglalójának generálásához", + "summaryContent": "Összefoglaló tartalma", + "copied": "Másolva", + "summaryCopiledToClipboard": "Az összefoglaló a vágólapra másolva", + "extractSummary": "Összefoglaló kinyerése", + "summaryGenerated": "Összefoglaló generálva", + "generating": "Generálás...", + "regenerate": "Újragenerálás", + "summaryTimeoutMessage": + "Az összefoglaló generálási kérelme időtúllépést okozott, lehetséges hálózati probléma vagy szerverterhelés miatt.", + "deleteTranslationRecord": "Fordítási rekord törlése", + "deleteTranslationConfirm": + "Biztosan törli ezt a fordítási rekordot? Ezt a műveletet nem lehet visszavonni.", + "originalText": "Eredeti szöveg", + "translatedText": "Fordított szöveg", + "sessionSummary": "Munkamenet összefoglalója", + "cannotShare": "Nem lehet megosztani", + "generateSummaryFirst": "Kérjük, először generáljon összefoglalót", + "translationSessionRecord": "Fordítási munkamenet rekordja", + + // 个人资料模块 "editProfile": "Személyes adatok szerkesztése", "avatar": "Avatar", "nickname": "Becenév", @@ -936,10 +1178,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?', - - // Profile 错误信息 + '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': @@ -957,10 +1197,6 @@ const Map huHU = { 'networkConnectionFailedCheckSettings': 'Hálózati kapcsolat sikertelen, ellenőrizze a hálózati beállításokat', 'serverInternalErrorRetryLater': 'Belső szerverhiba, próbálja újra később', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'A képtömörítés sikertelen', 'avatarUpdateFailed': 'Az avatar frissítése sikertelen', 'usernameCannotBeEmpty': 'A felhasználónév nem lehet üres', @@ -971,8 +1207,6 @@ const Map huHU = { 'logoutFailedRetry': 'A kijelentkezés sikertelen, próbálja újra', 'accountPermanentlyDeleted': 'A fiók véglegesen törölve', 'deleteAccountFailedRetry': 'A fiók törlése sikertelen, próbálja újra', - - // 账号服务相关 'clearUserDataFailed': 'A felhasználói adatok törlése sikertelen', // 清理用户数据失败 'deleteUserDataFailed': 'A felhasználói adatok törlése sikertelen', // 删除用户数据失败 @@ -990,29 +1224,33 @@ const Map huHU = { 'accountServiceInitialized': 'A fiókszolgáltatás inicializálva', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Tárhely', + 'meetingStoragePermissionExplanation': + 'A hangfájlok kiválasztásához és feltöltéséhez tárhely-hozzáférésre van szükségünk.', + 'meetingStoragePermissionPermanentDenial': + 'É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', - //'bluetooth': '蓝牙', - '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': @@ -1030,80 +1268,92 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigálás folyamatban', + 'native.notification.navigation.keepRunning': + 'Navigálás, tartsa nyitva az alkalmazást', + 'native.notification.bleAgent.running': 'A hangasszisztens ügynök fut', + 'native.notification.audioRecording.recording': + 'Hangfelvétel folyamatban, koppintson az alkalmazásba való visszatéréshez', + 'native.notification.music.waiting': 'Lejátszásra vár', + 'native.notification.music.previous': 'Előző', + 'native.notification.music.next': 'Következő', + 'native.notification.music.play': 'Lejátszás', + 'native.notification.music.pause': 'Szünet', + 'native.notification.qqMusic.playing': 'Zene lejátszása', + + // 版本更新 'newVersionFound': 'Új verzió található', // 版本更新对话框标题 'remindLater': 'Emlékeztessen később', // 稍后提醒按钮 'updateNow': 'Frissítés most', // 立即更新按钮 @@ -1114,253 +1364,7 @@ const Map huHU = { 'updateErrorRetry': 'Hiba történt a frissítés során, próbálja újra később', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Kína", - "美国": "Egyesült Államok", - "加拿大": "Kanada", - "俄罗斯": "Oroszország", - "英国": "Egyesült Királyság", - "德国": "Németország", - "意大利": "Olaszország", - "法国": "Franciaország", - "西班牙": "Spanyolország", - "南非": "Dél-Afrika", - "沙特阿拉伯": "Szaúd-Arábia", - "土耳其": "Törökország", - "日本": "Japán", - "韩国": "Dél-Korea", - "新加坡": "Szingapúr", - "马来西亚": "Malajzia", - "泰国": "Thaiföld", - "越南": "Vietnám", - "印度": "India", - "巴基斯坦": "Pakisztán", - "菲律宾": "Fülöp-szigetek", - "印度尼西亚": "Indonézia", - "阿联酋": "Egyesült Arab Emírségek", - "墨西哥": "Mexikó", - "巴西": "Brazília", - "阿根廷": "Argentína", - "澳大利亚": "Ausztrália", - "新西兰": "Új-Zéland", - "中国香港": "Hongkong (Kína)", - "中国澳门": "Makaó (Kína)", - "中国台湾": "Tajvan (Kína)", - "埃及": "Egyiptom", - "希腊": "Görögország", - "荷兰": "Hollandia", - "比利时": "Belgium", - "匈牙利": "Magyarország", - "罗马尼亚": "Románia", - "瑞士": "Svájc", - "奥地利": "Ausztria", - "丹麦": "Dánia", - "瑞典": "Svédország", - "挪威": "Norvégia", - "波兰": "Lengyelország", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugália", - "卢森堡": "Luxemburg", - "爱尔兰": "Írország", - "冰岛": "Izland", - "阿尔巴尼亚": "Albánia", - "马耳他": "Málta", - "塞浦路斯": "Ciprus", - "芬兰": "Finnország", - "保加利亚": "Bulgária", - "立陶宛": "Litvánia", - "拉脱维亚": "Lettország", - "爱沙尼亚": "Észtország", - "乌克兰": "Ukrajna", - "塞尔维亚": "Szerbia", - "克罗地亚": "Horvátország", - "斯洛文尼亚": "Szlovénia", - "捷克": "Csehország", - "斯洛伐克": "Szlovákia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokkó", - "阿尔及利亚": "Algéria", - "突尼斯": "Tunézia", - "尼日利亚": "Nigéria", - "加纳": "Ghána", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzánia", - "乌干达": "Uganda", - "孟加拉国": "Banglades", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánia", - "伊拉克": "Irak", - "科威特": "Kuvait", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afganisztán", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mianmar", - "尼泊尔": "Nepál", - "蒙古": "Mongólia", - "柬埔寨": "Kambodzsa", - "老挝": "Laosz", - "文莱": "Brunei", - "东帝汶": "Kelet-Timor", - "斐济": "Fidzsi-szigetek", - "所罗门群岛": "Salamon-szigetek", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Fordítási előzmények", - "enableRecording": "Felvétel engedélyezése", - "viewAudioFiles": "Hangfájlok megtekintése", - "headsetUser": "Fülhallgató-felhasználó", - "phoneUser": "Telefon-felhasználó", - "selectSourceLanguage": "Forrásnyelv kiválasztása", - "selectTargetLanguage": "Célnyelv kiválasztása", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Még nincsenek előzmények", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Előzmények törlése", - "clearHistoryConfirm": - "Biztosan törli az összes fordítási előzményt? Ezt a műveletet nem lehet visszavonni.", - "unknownLanguage": "Ismeretlen nyelv", - "deleteSessionRecord": "Munkamenet-rekord törlése", - "deleteSessionConfirm": - "Biztosan törli az összes fordítási rekordot ehhez a munkamenethez? Ezt a műveletet nem lehet visszavonni.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Hangfájlok fordítása", - "noAudioFiles": "Még nincsenek hangfájlok", - "calculating": "Számítás...", - "playing": "Lejátszás...", - "paused": "Szüneteltetve", - "clickToPlay": "Kattintson a lejátszáshoz", - "rename": "Átnevezés", - "smartTranscription": "Intelligens átírás", - "renameAudioFile": "Hangfájl átnevezése", - "enterNewFileName": "Kérjük, adjon meg egy új fájlnevet", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Eredeti felvétel", - "recordSummary": "Felvétel összefoglalója", - "clickToGenerateSummary": - "Kattintson az alábbi gombra a munkamenet összefoglalójának generálásához", - "summaryContent": "Összefoglaló tartalma", - "copied": "Másolva", - "summaryCopiledToClipboard": "Az összefoglaló a vágólapra másolva", - "extractSummary": "Összefoglaló kinyerése", - "summaryGenerated": "Összefoglaló generálva", - "generating": "Generálás...", - "regenerate": "Újragenerálás", - "summaryTimeoutMessage": - "Az összefoglaló generálási kérelme időtúllépést okozott, lehetséges hálózati probléma vagy szerverterhelés miatt.", - "deleteTranslationRecord": "Fordítási rekord törlése", - "deleteTranslationConfirm": - "Biztosan törli ezt a fordítási rekordot? Ezt a műveletet nem lehet visszavonni.", - "originalText": "Eredeti szöveg", - "translatedText": "Fordított szöveg", - "sessionSummary": "Munkamenet összefoglalója", - "cannotShare": "Nem lehet megosztani", - "generateSummaryFirst": "Kérjük, először generáljon összefoglalót", - "translationSessionRecord": "Fordítási munkamenet rekordja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Eszköz párosítása", "connectYourDeepSoundHeadset": "Csatlakoztassa a Voitrans fülhallgatóját", "bind": "Párosítás", @@ -1369,14 +1373,11 @@ const Map huHU = { "autoInputCode": "Kód automatikus bevitele", "skipBinding": "Párosítás kihagyása", "rescan": "Újraszkennelés", - "verifyingDevice": "Eszköz ellenőrzése...", "confirmBinding": "Párosítás megerősítése", "associatingDevice": "Eszköz társítása...", "goToBluetoothSettings": "Ugrás a Bluetooth beállításokhoz", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Készen áll a párosításra", "preparingPairingEnvironment": "Párosítási környezet előkészítése...", "connectDeepSoundViaSystemBluetooth": @@ -1386,8 +1387,6 @@ const Map huHU = { "waitingCompletePairing": "Kérjük, várjon, a párosítás befejeződik...", "pairingSuccessRedirecting": "A párosítás sikeres! Átirányítás a főoldalra...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Győződjön meg róla, hogy a Voitrans eszközhöz csatlakozik", "deviceAlreadyBoundToOtherAccount": @@ -1399,19 +1398,12 @@ const Map huHU = { "authorizationFailedCheckCode": "Az engedélyezés sikertelen, ellenőrizze, hogy az engedélyezési kód helyes-e", "pairingFailedRetry": "A párosítás sikertelen, próbálja újra", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Kérjük, engedélyezze a Bluetooth-t', 'deviceDisconnected': 'Az eszköz lecsatlakoztatva', 'readyToStartPairing': 'Készen áll a párosítás megkezdésére', 'checkingEnvironment': 'Környezet ellenőrzése...', 'ensureHeadsetOnAndPairingMode': 'Győződjön meg róla, hogy a fülhallgató be van kapcsolva és párosítási módban van', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Biztonságos kapcsolat létrehozása...', 'needManualBindingAuthCode': 'Kézi párosítási engedélyezési kód szükséges...', 'pairingSuccessful': 'A párosítás sikeres!', @@ -1434,21 +1426,30 @@ const Map huHU = { 'bleConnectionFailed': 'A BLE kapcsolat sikertelen', 'deviceAuthorizationFailedCheckCode': 'Az eszközengedélyezés sikertelen, ellenőrizze az engedélyezési kódot', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "Ü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", - //用户反馈页 + // 用户反馈模块 "feedback": "Felhasználói visszajelzés", 'feedbackInfo': 'Adjon visszajelzést vagy javaslatot', 'feedbackDescription': @@ -1477,13 +1478,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", @@ -1492,7 +1494,62 @@ const Map huHU = { "removeEarbudsEnsureBattery": "Vegye ki mindkét fülhallgatót, és győződjön meg róla, hogy mindkettő akkumulátora 20% felett van", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Új verzió található: @version', + 'otaConfirmUpdateNow': 'Frissítsünk most?', + 'otaUpdate': 'Frissítés', + 'otaUpgradeSuccess': 'Frissítés sikeres', + 'otaUpgradeCompleteRepair': + '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': 'Hiba a BLE kapcsolat ellenőrzésekor: @error', + 'otaBleNotConnected': 'A BLE eszköz nincs csatlakoztatva', + 'otaBleNeedConnection': + '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': + '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': + 'Nem sikerült lekérni az eszközinformációkat, ellenőrizze a kapcsolatot', + 'otaCannotGetProductInfoWithName': + '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': + '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': + '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': + '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': + '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': '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': + '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", // 暂无音乐 "noPlayingMusic": "Nincs lejátszott zene", // 暂无播放音乐 "unknownSong": "Ismeretlen dal", // 未知歌曲 @@ -1540,22 +1597,122 @@ const Map huHU = { "波斯语": "Perzsa", "斯瓦希里语": "Szuahéli", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Kína", + "美国": "Egyesült Államok", + "加拿大": "Kanada", + "俄罗斯": "Oroszország", + "英国": "Egyesült Királyság", + "德国": "Németország", + "意大利": "Olaszország", + "法国": "Franciaország", + "西班牙": "Spanyolország", + "南非": "Dél-Afrika", + "沙特阿拉伯": "Szaúd-Arábia", + "土耳其": "Törökország", + "日本": "Japán", + "韩国": "Dél-Korea", + "新加坡": "Szingapúr", + "马来西亚": "Malajzia", + "泰国": "Thaiföld", + "越南": "Vietnám", + "印度": "India", + "巴基斯坦": "Pakisztán", + "菲律宾": "Fülöp-szigetek", + "印度尼西亚": "Indonézia", + "阿联酋": "Egyesült Arab Emírségek", + "墨西哥": "Mexikó", + "巴西": "Brazília", + "阿根廷": "Argentína", + "澳大利亚": "Ausztrália", + "新西兰": "Új-Zéland", + "中国香港": "Hongkong (Kína)", + "中国澳门": "Makaó (Kína)", + "中国台湾": "Tajvan (Kína)", + "埃及": "Egyiptom", + "希腊": "Görögország", + "荷兰": "Hollandia", + "比利时": "Belgium", + "匈牙利": "Magyarország", + "罗马尼亚": "Románia", + "瑞士": "Svájc", + "奥地利": "Ausztria", + "丹麦": "Dánia", + "瑞典": "Svédország", + "挪威": "Norvégia", + "波兰": "Lengyelország", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugália", + "卢森堡": "Luxemburg", + "爱尔兰": "Írország", + "冰岛": "Izland", + "阿尔巴尼亚": "Albánia", + "马耳他": "Málta", + "塞浦路斯": "Ciprus", + "芬兰": "Finnország", + "保加利亚": "Bulgária", + "立陶宛": "Litvánia", + "拉脱维亚": "Lettország", + "爱沙尼亚": "Észtország", + "乌克兰": "Ukrajna", + "塞尔维亚": "Szerbia", + "克罗地亚": "Horvátország", + "斯洛文尼亚": "Szlovénia", + "捷克": "Csehország", + "斯洛伐克": "Szlovákia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nicaragua", + "哥斯达黎加": "Costa Rica", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívia", + "厄瓜多尔": "Ecuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Marokkó", + "阿尔及利亚": "Algéria", + "突尼斯": "Tunézia", + "尼日利亚": "Nigéria", + "加纳": "Ghána", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzánia", + "乌干达": "Uganda", + "孟加拉国": "Banglades", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánia", + "伊拉克": "Irak", + "科威特": "Kuvait", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afganisztán", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mianmar", + "尼泊尔": "Nepál", + "蒙古": "Mongólia", + "柬埔寨": "Kambodzsa", + "老挝": "Laosz", + "文莱": "Brunei", + "东帝汶": "Kelet-Timor", + "斐济": "Fidzsi-szigetek", + "所罗门群岛": "Salamon-szigetek", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/id_id.dart b/lib/core/translations/language/id_id.dart index 63cce5583..8ac9abee0 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', @@ -18,6 +19,11 @@ const Map idID = { "unknownError": "Kesalahan tidak diketahui", "asrConnectionFailed": "Koneksi ke layanan pengenalan suara gagal. Periksa jaringan Anda lalu coba lagi nanti.", + "justNow": "Baru saja", + "minutesAgo": "@minutes menit yang lalu", + "yesterday": "Kemarin", + "daysAgo": "@days hari yang lalu", + "hoursAgo": "@hours jam yang lalu", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", @@ -28,7 +34,7 @@ const Map idID = { "explore": "Jelajahi", "settings": "Pengaturan", - // 语言 + // 语言列表 "followingSystem": "Ikuti Sistem", "chinese": "Bahasa Mandarin", "english": "Bahasa Inggris", @@ -72,7 +78,7 @@ const Map idID = { "arabic": "Bahasa Arab", "persian": "Bahasa Persian", - // 登录页 + // 登录模块 "welcome": "Selamat Datang", "loginTips": "Silakan masuk atau daftar dengan nomor telepon atau email Anda", "accountNumber": "Nomor Telepon atau Email", @@ -100,13 +106,9 @@ const Map idID = { "resendVerificationCode": "Kirim ulang kode verifikasi", "login": "Masuk", "usePasswordLogin": "Masuk dengan kata sandi", - - // 隐私政策弹窗 "loginDeclaration": "Deklarasi Voitrans", // Voitrans 声明 "welcomeToThisApp": "Selamat datang di Voitrans, silakan baca dengan seksama", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", dengan mengklik 'Setuju dan Masuk' berarti Anda telah membaca dan menyetujui perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Tidak Setuju", // 不同意 @@ -165,7 +167,30 @@ const Map idID = { 'right': 'Kanan', 'checkConnectionStatusFailed': 'Gagal memeriksa status koneksi', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inisialisasi Bluetooth gagal: @error', + 'needBluetoothAndLocationPermission': + 'Izin Bluetooth dan lokasi diperlukan untuk memindai perangkat', + 'permissionRequestFailedWithError': 'Permintaan izin gagal: @error', + 'needPermission': 'Izin Diperlukan', + 'blePermissionDialogContent': + 'Aplikasi ini memerlukan izin Bluetooth dan lokasi untuk memindai perangkat. Silakan aktifkan di Pengaturan.', + 'needEnableBluetooth': 'Aktifkan Bluetooth', + 'enableBluetoothDialogContent': + 'Silakan aktifkan Bluetooth untuk memindai dan menyambungkan perangkat.', + 'bleScanFailedWithError': 'Pemindaian gagal: @error', + 'bleConnectionSuccess': 'Berhasil Terhubung', + 'bleConnectedToDevice': 'Terhubung ke @device', + 'bleConnectionFailedWithError': 'Koneksi gagal: @error', + 'bleDisconnected': 'Terputus', + 'bleDeviceDisconnected': 'Perangkat terputus', + 'bleDisconnectFailedWithError': 'Gagal memutuskan: @error', + 'signalStrong': 'Kuat', + 'signalMedium': 'Sedang', + 'signalWeak': 'Lemah', + 'signalVeryWeak': 'Sangat Lemah', + + // 发现页 "searchAi": "Cari fitur AI...", "exploreSlogan": "Earphone pintar, kemungkinan tak terbatas", "exploreSlogan1": "Teman pintar, kemungkinan tak terbatas", @@ -189,211 +214,267 @@ const Map idID = { "usageStats": "Statistik Penggunaan", "usageStatsInfo": "Lihat statistik penggunaan aplikasi", "scene": "Skenario", + // 用量统计模块 - "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": "Obrolan AI", + "translationStats": "Statistik Terjemahan", + "meetingStats": "Statistik Rapat", + "today": "Hari Ini", + "thisWeek": "Minggu Ini", + "thisMonth": "Bulan Ini", + "history": "Riwayat", + "currentSessionStats": "Statistik Sesi Saat Ini", + "translationCount": "Jumlah Terjemahan", + "sessionDuration": "Durasi Sesi", + "characters": "Karakter", + "recordingDuration": "Durasi Rekaman", + "totalApiCalls": "Total Panggilan API", + "sessionCount": "Jumlah Sesi", + "totalCharacters": "Total Karakter", + "apiCallStats": "Statistik Panggilan API", + "translationApi": "API Terjemahan", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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", + "dataVolumeStats": "Statistik Volume Data", + "sourceTextCharacters": "Karakter Teks Sumber", + "ttsTextCharacters": "Karakter Teks TTS", + "effectiveAudioDuration": "Durasi Audio Efektif", + "totalSessionDuration": "Total Durasi Sesi", + "costStats": "Statistik Biaya", + "estimatedCost": "Estimasi Biaya", + "dailyCostThreshold": "Batas Biaya Harian", + "monthlyCostThreshold": "Batas Biaya Bulanan", + "usageBehaviorStats": "Statistik Perilaku Penggunaan", + "mostUsedLanguagePair": "Pasangan bahasa paling sering digunakan", + "mostUsedMode": "Mode paling sering digunakan", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "totalAudioDuration": "Total Durasi Audio", + "audioFileSize": "Ukuran File Audio", + "transcriptBytes": "Byte Transkrip", + "loadFailed": "Gagal Memuat", + "statsLoadFailedTryLater": "Statistik gagal dimuat. Silakan coba lagi nanti.", + "cleanupComplete": "Pembersihan Selesai", + "cleanedOldData": "Data lebih dari 90 hari telah dibersihkan", + "exportFeature": "Fitur Ekspor", + "exportInDevelopment": "Fitur ekspor data sedang dalam pengembangan", + + // 商品模块 - 通用 + 'availablePackages': 'Paket Tersedia', + 'remainingQuota': 'Kuota Tersisa', + 'totalQuota': 'Total Kuota', + 'remaining': 'Tersisa', + 'featureDescription': 'Deskripsi Fitur', + 'paymentSuccess': 'Pembayaran berhasil', + 'paymentFailed': 'Pembayaran gagal', + 'gotIt': 'Mengerti', + 'paymentFailedTryAgain': 'Pembayaran gagal. Silakan coba lagi.', + 'selectPaymentMethod': 'Pilih metode pembayaran', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Gagal membuat pesanan WeChat', + 'alipayOrderCreateFailed': 'Gagal membuat pesanan Alipay', + 'appleOrderCreateFailed': 'Gagal membuat pesanan Apple', + 'googleOrderCreateFailed': 'Gagal membuat pesanan Google', + 'paypalOrderCreateFailed': 'Gagal membuat pesanan PayPal', + 'paymentException': 'Pembayaran bermasalah', + 'paymentLaunchFailed': 'Gagal membuka pembayaran', + 'paymentExceptionWithError': 'Pembayaran bermasalah: @error', + 'paymentProcessingCheckLater': + 'Pesanan Anda sedang diproses. Silakan periksa nanti.', + 'paymentResultQueryException': 'Gagal memeriksa hasil pembayaran: @error', + 'orderConfirmedQuotaRefreshed': + 'Pesanan dikonfirmasi. Kuota Anda telah diperbarui.', + 'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengonfirmasi…', + 'paymentCancelled': 'Pembayaran dibatalkan', + 'paypalOpenedCompleteInBrowser': + 'PayPal telah dibuka. Silakan selesaikan pembayaran di browser.', + 'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal', + 'paymentTestTitle': 'Uji Pembayaran', + 'paymentTestOrderInfo': 'Info Pesanan Uji', + 'paymentTestProductId': 'ID Produk', + 'paymentTestProductDescription': 'Deskripsi produk', + 'paymentTestWechatDescription': 'Uji pembayaran WeChat', + 'paymentTestAlipayDescription': 'Uji pembayaran Alipay', + 'paymentTestAmount': 'Jumlah', + 'paymentTestSelectAmount': 'Pilih jumlah uji', + 'paying': 'Sedang membayar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status pembayaran', + 'errorInfoWithMessage': 'Kesalahan: @message', + 'retest': 'Uji ulang', + 'paymentTestInstructionsTitle': 'Petunjuk', + 'paymentTestInstructionsContent': + '1. Pilih jumlah uji (disarankan: ¥0.01)\n2. Klik tombol pembayaran untuk memulai\n3. Selesaikan pembayaran di aplikasi pembayaran\n4. Kembali untuk memeriksa hasilnya', + 'startingWechatPayment': 'Membuka WeChat Pay...', + 'startingAlipayPayment': 'Membuka Alipay...', + 'wechatPaymentSuccess': 'Pembayaran WeChat Pay berhasil!', + 'wechatPaymentFailed': 'Pembayaran WeChat Pay gagal', + 'wechatPaymentLaunchFailed': 'Gagal membuka WeChat Pay', + 'cannotLaunchWechatPayment': 'Tidak dapat membuka WeChat Pay', + 'wechatPaymentException': 'WeChat Pay bermasalah', + 'wechatPaymentTestCompleted': 'Uji pembayaran WeChat Pay selesai', + 'alipayPaymentSuccess': 'Pembayaran Alipay berhasil!', + 'alipayPaymentFailed': 'Pembayaran Alipay gagal', + 'alipayPaymentLaunchFailed': 'Gagal membuka Alipay', + 'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay', + 'alipayPaymentException': 'Alipay bermasalah', + "insufficientIntegral": "Poin tidak mencukupi", + "insufficientBalanceDesc": + 'Saldo tidak mencukupi, silakan buka halaman isi ulang terkait untuk mengisi saldo.', + "recharge": 'Isi ulang', + "aiMemberExpiredDesc": + 'Keanggotaan AI telah kedaluwarsa, silakan buka halaman perpanjangan keanggotaan untuk memperbarui.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musik & Rekomendasi', + 'navigationAndRoutes': 'Navigasi & Rute', + 'nearbySearch': 'Pencarian Sekitar', + 'newsInformation': 'Berita', + 'communicationAssistant': 'Asisten Komunikasi', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Kuota percakapan lebih panjang, lebih banyak panggilan alat, panjang konteks lebih besar.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Cocok untuk tanya jawab agen, ringkasan, analisis, dan eksekusi tugas.', + 'musicSearchPlaybackControl': 'Pencarian perpustakaan musik dan kontrol pemutaran', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Daftar putar pintar dan rekomendasi lagu serupa', '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', + 'Perencanaan rute dan penghindaran kemacetan', + 'voiceBroadcastAndWaypoints': 'Siaran suara dan pengaturan titik jalan', + 'realTimeWeatherForecast': 'Cuaca dan prakiraan waktu nyata', + 'clothingAdviceAndTravelReminders': 'Saran pakaian dan pengingat perjalanan', + 'poiSearchFoodGasParking': 'Pencarian POI: makanan / bensin / parkir', + 'ratingsHoursAndDirectRoutes': 'Rating, jam operasional, dan rute langsung', + 'hotNewsAndTopicOverview': 'Berita populer dan ringkasan topik', + 'longArticleSummariesAndKeyPoints': 'Ringkasan artikel panjang dan poin-poin utama', + 'helpCallAndSMS': 'Bantuan panggilan dan SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Templat pesan dan pengingat jadwal', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Fitur bergantung pada izin perangkat, ketersediaan layanan, dan kondisi jaringan.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transkripsi Waktu Nyata', + 'sceneLexicon': 'Glosarium Skenario', + 'subtitleDisplay': 'Subtitle', + 'transHeaderDesc1': + 'Interpretasi simultan waktu nyata dan terjemahan teks dengan suara latensi rendah.', + 'transHeaderDesc2': 'Cocok untuk perjalanan, bisnis, pidato, dan pengajaran.', + 'translateZhEn': 'Terjemahan Mandarin-Inggris', + 'lowLatencyVoiceBroadcast': 'Siaran suara latensi rendah', + 'multiLangTextTranslation': 'Terjemahan teks multibahasa', + 'termOptimizationContextPreserve': + 'Optimasi terminologi dan pelestarian konteks', + 'lexiconTourBusinessLife': 'Leksikon Perjalanan/Bisnis/Kehidupan', + 'personalVocabularyMemory': 'Memori kosakata pribadi', + 'conversationSubtitleLargeText': 'Subtitle percakapan / Mode teks besar', + 'colorHighContrast': 'Kontras warna tinggi', + 'transDisclaimer': + 'Kinerja terjemahan bergantung pada mikrofon, latensi jaringan, dan kebisingan sekitar.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Rekaman Rapat', + 'transcriptionAndSummary': 'Transkripsi & Ringkasan', + 'keywordSearch': 'Pencarian Kata Kunci', + 'collaborationSharing': 'Kolaborasi & Berbagi', + 'meetingHeaderDesc1': + 'Perekaman audio, transkripsi, pencarian kata kunci, dan ringkasan otomatis untuk meningkatkan efisiensi rapat.', + 'meetingHeaderDesc2': + 'Cocok untuk rapat bisnis, catatan kelas, dan notulen wawancara.', + 'meetingAutoRecording': 'Perekaman otomatis dan segmentasi', + 'meetingSpeakerTagging': 'Pelabelan pembicara', + 'meetingLongAudioTranscription': 'Transkripsi audio panjang', + 'meetingKeyPointSummary': 'Ekstraksi poin utama', + 'meetingTopicNameSearch': 'Cari berdasarkan topik/nama', + 'meetingTimelineJump': 'Lompatan timeline', + 'meetingExportSummary': 'Ekspor notulen', + 'meetingMultiPlatformShare': 'Berbagi lintas platform', + 'meetingDisclaimer': + 'Gunakan di lingkungan yang tenang; kinerja bergantung pada mikrofon dan jaringan.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Ringkasan manfaat', + 'higherQuota': 'Kuota penggunaan lebih tinggi', + 'lowerUnitPrice': 'Harga per unit lebih rendah', + 'priorityService': 'Layanan prioritas', + 'exclusiveSupportChannel': 'Saluran dukungan khusus', + 'fastResponse': 'Respons masalah cepat', + 'eventsAndDiscounts': 'Acara dan diskon', + 'memberExclusiveEvents': 'Acara eksklusif anggota', + 'longTermDiscountPlan': 'Paket diskon jangka panjang', + 'generalPrivileges': 'Hak istimewa umum', + 'earlyAccessNewFeatures': 'Akses awal ke fitur baru', + 'crossDeviceSync': 'Sinkronisasi lintas perangkat', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Manfaat aktual bergantung pada detail paket dan dapat berubah seiring pembaruan versi.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Dasar 100', + 'ai_002_name': 'AI Dasar 500', + 'ai_003_name': 'AI Dasar 1000', + 'meet_001_name': 'Rapat Dasar 100', + 'meet_002_name': 'Rapat Dasar 500', + 'meet_003_name': 'Rapat Dasar 1000', + 'trans_001_name': 'Terjemahan Dasar 100', + 'trans_002_name': 'Terjemahan Dasar 500', + 'trans_003_name': 'Terjemahan Dasar 1000', + 'ai_001_desc': 'Termasuk 100 penggunaan. Akses fitur AI inti.', + 'ai_002_desc': 'Termasuk 500 penggunaan. Akses fitur AI inti.', + 'ai_003_desc': 'Termasuk 1000 penggunaan. Akses fitur AI inti.', + 'meet_001_desc': 'Termasuk 100 rekaman/transkripsi rapat.', + 'meet_002_desc': 'Termasuk 500 rekaman/transkripsi rapat.', + 'meet_003_desc': 'Termasuk 1000 rekaman/transkripsi rapat.', + 'trans_001_desc': 'Termasuk 100 terjemahan (suara/teks).', + 'trans_002_desc': 'Termasuk 500 terjemahan (suara/teks).', + 'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Aplikasi: VoiTrans · Disediakan oleh: VoiTrans', + 'iapCustomerServiceQQLabel': 'Layanan pelanggan IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Lewati", - '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, ', - // AI 引导步骤 - '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': 'Selanjutnya', + 'sayLilyHint': 'Ucapkan "Lily Lily" ke mikrofon', + 'imHere': 'Saya di sini~', + 'guideWelcomeWakeAI': 'Selamat datang di Voitrans! Pertama, bangunkan AI Anda “Lily”.', + 'aiReplyCompleted': 'Lily telah menyelesaikan balasan!', + 'aiThinking': 'Lily sedang berpikir…', + 'guideAwakenSuccess': 'Bagus! Lily sudah bangun—minta Lily membantu.', + 'confirmInput': 'Konfirmasi Input', + 'guideClickSendPrefix': 'Ketuk kirim, ', + 'guideWeatherStart': 'Katakan pada Lily: “Bagaimana cuaca hari ini?”', + 'guideWeatherInput': 'Bagaimana cuaca hari ini?', + 'guideWeatherSend': 'Lily akan melaporkan cuaca secara real-time', + 'guideWeatherEnd': 'Lily dapat melaporkan cuaca langsung—coba perintah lain', + 'guideMusicStart': 'Katakan pada Lily: “Putar musik rock”', + 'guideMusicInput': 'Putar musik rock', + 'guideMusicSend': 'Lily akan mencarikan musik untuk Anda', + 'guideMusicEnd': 'Lily menemukan musik—coba perintah lain', + 'guideNavStart': 'Katakan pada Lily: “Navigasi ke bandara”', + 'guideNavInput': 'Navigasi ke bandara', + 'guideNavSend': 'Lily akan merencanakan rute', + 'guideNavEnd': 'Navigasi ditetapkan—coba perintah lain', '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', - - // 商务会议助手页 + 'Katakan pada Lily: “Buat pengingat rapat untuk besok jam 15:00”', + 'guideMeetingInput': 'Buat pengingat rapat untuk besok jam 15:00', + 'guideMeetingSend': 'Lily akan membuat pengingat rapat', + 'guideMeetingEnd': 'Pengingat dibuat—coba perintah lain', + 'guidePhoneStart': 'Katakan pada Lily: “Telepon Ibu”', + 'guidePhoneInput': 'Telepon Ibu', + 'guidePhoneSend': 'Lily akan melakukan panggilan', + 'guidePhoneEnd': 'Panggilan dilakukan—coba perintah lain', + 'guideSmsStart': 'Katakan pada Lily: “Kirim pesan ke Ayah: Saya pulang untuk makan malam”', + 'guideSmsInput': 'Kirim ke Ayah: Saya pulang untuk makan malam', + 'guideSmsSend': 'Lily akan mengirim pesan', + 'guideSmsEnd': 'Pesan terkirim—kontrol suara sangat praktis', + + // Meeting模块 - 首页与导航 "startMeeting": "Mulai Rapat", 'edit': 'Sunting', 'delete': 'Hapus', @@ -405,250 +486,270 @@ const Map idID = { 'recordingDetails': 'Detail Rekaman', 'aiSummary': 'Ringkasan AI', 'meetingTranscript': 'Transkrip Rapat', - - // Meeting模块 - 导航和基础功能 - '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': 'Berkas', + 'mine': 'Milik Saya', + 'connect': 'Hubungkan', + 'allFiles': 'Semua Berkas', + 'searchInAllFiles': 'Cari di semua berkas', + 'from': 'Dari', + 'sortBy': 'Urutkan berdasarkan', + 'creationTime': 'Waktu dibuat', + 'bluetoothConnection': 'Koneksi Bluetooth', + 'meetingReconnect': 'Sambungkan kembali', + 'searching': 'Mencari...', + 'searchFailed': 'Pencarian gagal, harap periksa apakah Bluetooth diaktifkan', + 'aiPenNotFound': 'Perangkat AI PEN tidak ditemukan', + 'connectedToAiPen': 'Terhubung ke perangkat AI PEN', + 'checkingNewFiles': 'Memeriksa file baru untuk diimpor', + 'startingWifi': 'Memulai Wi-Fi...', + 'newFilesDetected': 'File baru terdeteksi, mempersiapkan impor', + 'noNewFiles': 'Tidak ada file baru untuk diimpor', + 'connectingWifi': 'Menyambungkan ke Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi berhasil terhubung', + 'downloadingFiles': 'Mengunduh file...', + 'downloadingFileProgress': 'Total {total} file, mengunduh file {current}', + 'downloadComplete': 'Unduhan selesai', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Unduhan selesai, total {count} file, kembali otomatis dalam 2 detik', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Mulai Merekam', + 'liveRecording': 'Rekaman Langsung', + 'audioVideoRecording': 'Rekaman Audio/Video', + 'callRecording': 'Rekaman Panggilan', + 'importAudio': 'Impor Audio', 'meetingRecordExitTitle': 'Keluar dari perekaman', // 退出录音 - 'meetingRecordExitMessage': 'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Pilih apa yang akan dilakukan sebelum keluar', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Akhiri dan simpan', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Akhiri tanpa menyimpan', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Lanjutkan merekam di latar belakang', // 后台继续录音 - 'meetingRecordStopTimeout': 'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Gagal menghentikan perekaman. Silakan coba lagi.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Gagal menyimpan rekaman. Silakan coba lagi.', // 保存录音失败,请重试 - 'meetingRecordRecordingNotificationTitle': 'Perekaman sedang berlangsung', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Merekam di latar belakang. Ketuk untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用 + 'meetingRecordContinueInBackground': + 'Lanjutkan merekam di latar belakang', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Waktu untuk menghentikan perekaman habis. Silakan coba lagi.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Gagal menghentikan perekaman. Silakan coba lagi.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Gagal menyimpan rekaman. Silakan coba lagi.', // 保存录音失败,请重试 + 'meetingRecordRecordingNotificationTitle': + 'Perekaman sedang berlangsung', // 录音进行中 + 'meetingRecordRecordingNotificationBody': + 'Merekam di latar belakang. Ketuk untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Tampilkan di atas aplikasi lain', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Untuk menampilkan hasil terjemahan saat panggilan atau terjemahan audio/video, kami memerlukan izin overlay. Ini memungkinkan Anda melihat terjemahan real-time saat menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Untuk menampilkan hasil terjemahan saat panggilan atau terjemahan audio/video, kami memerlukan izin overlay. Ini memungkinkan Anda melihat terjemahan real-time saat menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Untuk menampilkan bilah mengambang perekaman (timer/jeda/lanjut) saat merekam, kami memerlukan izin overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Tidak dapat membuka pengaturan sistem secara otomatis. Silakan buka Pengaturan dan aktifkan izin overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Sedang mentranskrip...', + 'summarizing': 'Sedang meringkas...', + 'analyzing': 'Sedang menganalisis...', + 'summaryComplete': 'Ringkasan Selesai', + 'generate': 'Buat', + 'overview': 'Ringkasan', + 'transcription': 'Transkripsi', + 'summary': 'Ringkasan', + 'mindMap': 'Peta Pikiran', + 'editSpeaker': 'Sunting', + 'nameSpeaker': 'Beri Nama Pembicara', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Ringkas Ulang', + 'dateAndTime': 'Tanggal & Waktu', + 'location': 'Lokasi', + 'attendees': 'Peserta', + 'inputLocation': 'Masukkan Lokasi', + 'inputAttendees': 'Masukkan Peserta', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Pilih Templat Ringkasan', + 'useThisTemplate': 'Gunakan Templat Ini', + 'lastUsed': 'Terakhir Digunakan', + 'create': 'Buat', + 'templateDetails': 'Detail Template', + 'tag': 'Tag', + 'description': 'Deskripsi', + 'template': 'Template', + 'deleteTemplate': 'Hapus Template', + 'deleteTemplateConfirm': 'Apakah Anda yakin ingin menghapus template ini?', + 'editTemplate': 'Edit Template', + 'createTemplate': 'Buat Template', + 'name': 'Nama', + 'templateContentHint': + 'Silakan masukkan konten template! Tips: Klik tombol AI di atas untuk membuat konten template secara cepat berdasarkan nama dan deskripsi yang Anda masukkan', + 'inputNameHint': 'Silakan masukkan nama', + 'inputDescHint': 'Silakan masukkan deskripsi', + 'custom': 'Kustom', + 'pleaseEnter': 'Silakan masukkan', + 'viewAll': 'Lihat semua', + 'recordingLanguage': 'Bahasa Rekaman', + 'chineseSimplified': 'Bahasa Mandarin (Sederhana)', + 'meetingGenerateNow': 'Buat sekarang', + 'keyEventsAnalyzed': 'Menganalisis {count} peristiwa penting.', + 'aiAnalysisDesc': + 'Analisis AI mengidentifikasi peristiwa penting dalam rekaman, sehingga Anda dapat memilih peristiwa penting untuk pembuatan AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Mengimpor...', + 'batchImporting': 'Mengimpor secara massal...', + 'importingLocalRecordings': 'Mengimpor rekaman lokal...', + 'importFailed': 'Gagal mengimpor file: {filePath}, kesalahan: {error}', + 'importSuccess': 'Berhasil mengimpor {count} rekaman lokal', + 'importError': 'Impor gagal: {error}', + 'pleaseSelectAudioFile': 'Silakan pilih file audio', + 'shareAudio': 'Bagikan Audio Rapat', + 'shareComplete': 'Berbagi selesai!', + 'shareFailed': 'Berbagi gagal: {error}', + 'fileProcessingFailed': + 'Pemrosesan file gagal: {filePath}, kesalahan: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Simpan Peta Pikiran', + 'shareMindMap': 'Bagikan Peta Pikiran', + 'shareSuccess': 'Berbagi Berhasil', + + // Meeting模块 - AI问答 + 'askAI': 'Tanya AI ...', + 'askAIPrompt': 'Ada yang bisa saya bantu hari ini?', + 'continueAsk': 'Lanjutkan Bertanya', + 'todoList': 'Daftar Tugas', + 'extractConclusion': 'Ekstrak Kesimpulan', + 'generateKeyIndicators': 'Buat Indikator Utama', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Bagikan Tautan', + 'copyTranscript': 'Salin Transkrip', + 'copySummary': 'Salin Ringkasan', + 'exportAudio': 'Ekspor Audio', + 'exportTranscript': 'Ekspor Transkrip', + 'shareMeetingAudio': 'Bagikan Audio Rapat', + 'exportSummary': 'Ekspor Ringkasan', + 'exportAs': 'Ekspor Sebagai', + 'exportingPDF': 'Mengekspor PDF...', + 'export': 'Ekspor', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Terapkan ke semua paragraf pembicara ini', + 'summaryWillBeUpdatedAutomatically': + 'Ringkasan akan diperbarui otomatis berdasarkan template', + 'nameCurrentSpeaker': 'Beri Nama Pembicara Saat Ini', + 'recentlyUsedNames': 'Nama yang Baru Digunakan', + 'applyToCurrentParagraph': 'Terapkan ke Paragraf Saat Ini', + 'totalTime': 'Total Waktu', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Pembicara dalam ringkasan akan diperbarui secara otomatis', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinkronkan ke Cloud', + 'syncToCloudTip': + 'Sinkronkan rekaman Anda ke cloud secara otomatis; Anda dapat memutar, mengelola, dan membagikan rekaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Sinkronkan ke Aplikasi VOITRANS', + 'transcriptionRecord': 'Catatan Transkripsi', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Catatan Transkripsi', + 'templateCommunity': 'Komunitas Templat', + 'comingSoon': 'Segera Hadir', + 'integration': 'Integrasi', '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', - - // 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', + 'enabled': 'Diaktifkan', + 'disabled': 'Dinonaktifkan', + 'myVoitransDevice': 'Perangkat VOITRANS Saya', + 'helpAndFeedback': 'Bantuan & Umpan Balik', + 'aboutVoitrans': 'Tentang VOITRANS', + 'meetingDays': 'Hari', + 'meetingHours': 'Jam', + 'voitransAiMember': 'Anggota Voitrans AI', + 'unlockStarterMember': 'Buka Keanggotaan Starter', + 'bindDeviceToActivate': + 'Ikat perangkat Voitrans untuk mengaktifkan keanggotaan Starter', + 'unlockNow': 'Buka Sekarang', + + // Meeting模块 - 会员与升级 + 'comparison': 'Perbandingan', + 'detailedInfo': 'Informasi Detail', + 'monthlyTranscriptionTime': 'Waktu Transkripsi Bulanan', + 'unlimited': 'Tak Terbatas', + 'professionalTemplates': 'Templat Profesional', + 'limited': 'Terbatas', + 'fullTemplates': 'Templat Lengkap', + 'professionalTerms': 'Istilah Profesional', + 'customTemplates': 'Templat Kustom', + 'visualMindMap': 'Peta Pikiran Visual', + 'speakerIdentification': 'Identifikasi Pembicara', + 'aiVoiceEnhancement': 'Peningkatan Suara AI', + 'audioImport': 'Impor Audio', + 'multipleExportFormats': 'Berbagai Format Ekspor', + 'professionalSummaryTemplates': 'Templat Ringkasan Profesional', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Desain templat profesional untuk meningkatkan efisiensi kerja Anda. Disesuaikan dengan kebutuhan industri.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Anda dapat menyesuaikan prompt ringkasan sesuai kebutuhan dan menggunakannya untuk membuat ringkasan yang diinginkan.', '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.', + 'Ekstrak informasi lebih dalam dari rekaman secara cerdas; buat tabel data, kesimpulan diskusi utama, daftar tugas, email laporan, dan konten berformat lainnya dengan sekali klik.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Lebih dari ringkasan - atur dan visualisasikan poin-poin utama dengan peta pikiran untuk pemahaman teks yang lebih efektif.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Temukan, bagikan, dan dapatkan inspirasi dari perpustakaan templat yang dibuat oleh pengguna.', '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.', + 'Transkripsi audio akan mendukung identifikasi pembicara, merekonstruksi konten rapat atau panggilan telepon secara lebih intuitif. Ringkasan juga akan lebih akurat.', '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.', + 'Rekaman dan transkripsi Anda akan disimpan dengan aman di server cloud khusus, dengan enkripsi penuh saat unggah dan unduh untuk memastikan privasi dan keamanan.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Peningkatan suara AI mendukung berbagai pengaturan pengurangan kebisingan, menghilangkan kebisingan latar secara cerdas, meningkatkan kejernihan suara, dan meningkatkan kualitas pemutaran audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Impor file audio dengan mudah dari aplikasi lokal atau pihak ketiga, seperti memo suara, Google Drive, dll.', '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', + 'Ekspor rekaman audio, teks transkripsi, dan ringkasan Anda dalam berbagai format (TXT, PDF, JPEG) sesuai kebutuhan.', + 'upgradeMembership': 'Tingkatkan Keanggotaan Anda', + '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', + 'Uji coba gratis 7 hari, lalu ¥800/tahun. Batalkan kapan saja sebelum uji coba berakhir.', + 'sevenDayTrial': 'Uji Coba Gratis 7 Hari', + 'unlimitedMonthly': 'Unlimited ¥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.', + 'Uji coba gratis 7 hari, lalu ¥1600/tahun. Batalkan kapan saja sebelum uji coba berakhir.', + 'trialNote': '*Uji coba gratis 7 hari, lalu ditagih tahunan, batalkan kapan saja.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/bulan', + 'subscribe': 'Berlangganan', '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: ', + '*Setelah meningkatkan langganan, sisa hari langganan asli akan dihitung secara otomatis dan dikembalikan ke akun pembayaran Anda', + 'buyMoreTranscriptionTime': 'Beli Waktu Transkripsi Tambahan', + 'sixThousandMinutes': '6.000 menit', + 'threeThousandMinutes': '3.000 menit', + 'sixHundredMinutes': '600 menit', + 'oneHundredTwentyMinutes': '120 menit', + 'validityPeriod': '*Masa Berlaku: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Terapkan ke semua paragraf pembicara ini', - 'summaryWillBeUpdatedAutomatically': - 'Ringkasan akan diperbarui otomatis berdasarkan template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktif segera setelah pembelian, berlaku 2 tahun setelah aktivasi.', + 'purchase': 'Beli', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Bahasa Rekaman', + 'cantonese': 'Bahasa Kanton', + 'sichuan': 'Dialek Sichuan', + 'shanghai': 'Dialek Shanghai', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Bahasa Tidak Dikenal', + 'analysisFailed': 'Analisis gagal, silakan coba lagi nanti', + 'transcriptionFailed': 'Transkripsi gagal, silakan coba lagi nanti', + 'summaryFailed': 'Ringkasan gagal, silakan coba lagi nanti', + 'summaryFailedShort': 'Ringkasan gagal', + 'transcriptionFailedShort': 'Transkripsi gagal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Pemutar audio belum siap, silakan tunggu', + 'playFailed': 'Gagal memutar', + 'audioFileNotFound': 'File audio tidak ditemukan', + 'fetchingAudio': 'Mengambil audio dari cloud...', + 'playerLoadFailed': 'Pemutar audio gagal dimuat', // 设置页 "systemSettings": "Pengaturan Sistem", @@ -657,10 +758,10 @@ const Map idID = { "translationRecharge": "Pembayaran Terjemahan", "meetingAssistantRecharge": "Pembayaran Asisten Rapat", "cloudSync": "Pembayaran Sinkronisasi awan", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Layanan Anggota", + "bindRewardTitle": "Hadiah", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Hadiah pengikatan perangkat pertama telah diberikan. Ketuk OK untuk menutup.", "joinDevice": "Perangkat terhubung:", "accountId": "ID Akun:", "systemSetting": "Pengaturan Sistem", @@ -700,43 +801,32 @@ const Map idID = { "bleHeadsetFirmwareUpgrade": "Pembaruan Versi Firmware Headset BLE", "deviceManagement": "Manajemen Perangkat", "manageConnectedDevices": "Kelola perangkat Bluetooth yang dipasangkan", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Anda sudah menggunakan versi terbaru {version}', 'checkUpdateFailed': 'Gagal memeriksa pembaruan', 'networkErrorRetry': 'Kesalahan jaringan, silakan coba lagi nanti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Obrolan Suara Waktu Nyata", "realtimeVoiceChatInfo": "Rasakan fungsi interaksi suara cerdas (pratinjau fitur)", "loading": "Memuat...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Perangkat Tidak Dikenal", + "deviceTypeClassicBluetoothHeadset": "Headset Bluetooth Klasik", + "deviceTypeBleBluetoothHeadset": "Headset Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Perekam Suara Cerdas", + "deviceTypeSmartEye": "Kacamata Pintar", "unbind": "Putuskan Ikatan", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Belum ada perangkat yang terikat", + "pleaseBindDeviceFirst": + "Silakan ikat perangkat terlebih dahulu untuk dikelola", + "noMacAddress": "Tidak Ada Alamat MAC", + "licenseCode": "Kode Lisensi", + "confirmUnbind": "Konfirmasi Pelepasan", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Apakah Anda yakin ingin melepas ikatan perangkat \"{deviceName}\"?", + "confirmUnbindAction": "Konfirmasi Pelepasan", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Hapus Riwayat Obrolan", "online": "Online", @@ -765,22 +855,24 @@ const Map idID = { "loadMoreMessages": "Muat lebih banyak pesan...", "loadFailedClickRetry": "Gagal memuat, klik untuk mencoba lagi", "swipeUpForMore": "Geser ke atas untuk lebih banyak", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Saya sedang membantu Anda, harap tunggu!", // 正在帮您,请稍等! + "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": "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": "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' '• Menjawab pertanyaan dan memberikan informasi\n\n' '• Terjemahan suara waktu nyata\n\n' @@ -800,11 +892,11 @@ const Map idID = { 'startVoiceInput': 'Mulai input suara', 'startPhoneCallMode': 'Mulai mode panggilan telepon, mulai input suara', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Masukkan pesan Anda di sini...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Salin', 'copySuccess': 'Berhasil disalin', 'report': 'Lapor', @@ -812,7 +904,6 @@ const Map idID = { 'submitFailed': 'Gagal dikirim', 'reportSubmitted': 'Laporan telah dikirim, kami akan memprosesnya sesegera mungkin', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Berbahaya/Tidak Aman', 'pornographicVulgar': 'Pornografi/Vulgär', 'misleadingAttack': 'Menyesatkan/Serangan', @@ -822,17 +913,21 @@ const Map idID = { 'other': 'Lainnya', 'reportDescriptionHint': 'Kami ingin tahu alasan Anda melaporkan, Anda dapat menjelaskan masalah yang Anda hadapi.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Dihasilkan oleh AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Panggilan Alat', + 'noResult': 'Tidak Ada Hasil', + 'noToolCallContentToCopy': 'Tidak ada konten panggilan alat untuk disalin', + 'toolCallDetails': 'Detail Panggilan Alat:', + 'toolCallContentCopied': 'Konten panggilan alat disalin ke papan klip', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Berikut adalah beberapa musik yang direkomendasikan:', 'playList': 'Daftar Putar', 'moreMusic': 'Lebih Banyak Musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'jam', // 小时单位 @@ -847,7 +942,31 @@ const Map idID = { "bicycling": "Bersepeda", "tsransit": "Transportasi Umum", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Pilih Aplikasi Navigasi', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigasi dengan Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigasi dengan Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigasi dengan Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigasi dengan Apple Maps', + 'builtInNavigation': 'Navigasi Bawaan', + 'useBuiltInNavigation': 'Navigasi dengan peta bawaan', + 'navigationStartFailed': 'Gagal memulai navigasi', + 'cannotPlayMusicListRetryLater': + 'Tidak dapat memutar daftar musik, silakan coba lagi nanti', + 'cannotPlaySong': 'Tidak dapat memutar lagu', + 'openMapError': 'Kesalahan saat membuka peta', + 'pleaseInstallAmapApp': 'Silakan instal aplikasi Amap terlebih dahulu', + 'pleaseInstallBaiduMapApp': + 'Silakan instal aplikasi Baidu Maps terlebih dahulu', + 'appleMapStartFailed': 'Apple Maps gagal dimulai', + 'appleMapUnavailable': 'Apple Maps tidak tersedia', + 'openAppleMapError': 'Kesalahan saat membuka Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Memeriksa kondisi cuaca:', 'highest': 'Tertinggi', 'lowest': 'Terendah', @@ -877,18 +996,8 @@ const Map idID = { "friday": "Jumat", "saturday": "Sabtu", "sunday": "Minggu", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Cerah", "partlyCloudy": "Setengah Berawan", "partlySunny": "Setengah Cerah", @@ -909,7 +1018,140 @@ const Map idID = { "haze": "Jerebu", "strongWind": "Angin kencang", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Terjemahan Gambar", + "textTranslation": "Terjemahan Teks", + + // 翻译模块 - 主页 + "translationHistory": "Riwayat Terjemahan", + "enableRecording": "Aktifkan Perekaman", + "viewAudioFiles": "Lihat File Audio", + "headsetUser": "Pengguna Headset", + "phoneUser": "Pengguna Telepon", + "selectSourceLanguage": "Pilih bahasa sumber", + "selectTargetLanguage": "Pilih bahasa target", + "me": "Saya", + "counterPart": "Lawan Bicara", + "bluetoothCallStateError": + "Pastikan headset Bluetooth terhubung ke ponsel dan sedang dalam status panggilan", + "autoDetect": "Deteksi Otomatis", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Deteksi bahasa gagal", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Nonaktifkan Jendela Mengambang', + 'enableFloatingWindow': 'Aktifkan Jendela Mengambang', + 'permissionTip': 'Tips Izin', + 'micPermissionRequiredForRecording': 'Izin mikrofon diperlukan untuk merekam', + 'deleteTranslationRecordError': + 'Kesalahan menghapus catatan terjemahan: @error', + "translationFailed": "Terjemahan gagal", + "translating": "Sedang menerjemahkan", + "translate": "Terjemahkan", + "pleaseInputText": "Silakan masukkan teks", + "inputTextToTranslate": "Silakan masukkan teks untuk diterjemahkan", + "textTooLong": "Teks terlalu panjang, maksimal 5000 karakter", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Belum ada riwayat", + "historyRecords": "Catatan Riwayat", + "clearResults": "Hapus Hasil", + "clearHistory": "Hapus Riwayat", + "clearHistoryConfirm": + "Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.", + "unknownLanguage": "Bahasa Tidak Dikenal", + "deleteSessionRecord": "Hapus Rekaman Sesi", + "deleteSessionConfirm": + "Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Pilih Sumber Gambar", + "imagePreview": "Pratinjau Gambar", + "translationResult": "Hasil Terjemahan", + "recognitionResult": "Hasil Pengenalan", + "translatedImagePreview": "Pratinjau Gambar Terjemahan", + "translatedImageLoadFailed": "Gagal memuat gambar terjemahan", + "pleaseSelectImage": "Silakan pilih gambar", + "imageLoadFailed": "Gagal memuat gambar", + "imageQuality": "Kualitas Gambar", + "maxSize": "Ukuran Maks", + "close": "Tutup", + "setImageQuality": "Atur Kualitas Gambar", + "currentQuality": "Kualitas saat ini: @value%", + "setMaxSize": "Atur Ukuran Maks", + "currentMaxSize": "Saat ini: @pxpx", + "waitingForAction": "Menunggu tindakan", + "pleaseSelectImageToStart": "Silakan pilih gambar untuk memulai", + "chooseImage": "Pilih Gambar", + "openingCamera": "Membuka kamera...", + "openingPhotoAlbum": "Membuka album foto...", + "cancelled": "Dibatalkan", + "userCancelledSelection": "Pengguna membatalkan pilihan", + "translatingImage": "Sedang menerjemahkan gambar", + "callingImageTranslateService": "Memanggil layanan terjemahan gambar...", + "savingRecord": "Menyimpan catatan", + "savingTranslationResult": "Menyimpan hasil terjemahan...", + "translationCompleted": "Terjemahan Selesai", + "allStepsCompleted": "Semua langkah selesai", + "processingFailed": "Pemrosesan Gagal", + "imageProcessingOrTranslationFailed": + "Pemrosesan gambar atau terjemahan gagal. Silakan coba lagi.\nKesalahan: {error}", + "imageTooLarge": "Ukuran gambar melebihi batas 4MB", + "imageTooLargeHint": + "Ukuran gambar melebihi 4MB. Kurangi kualitas atau dimensi lalu coba lagi", + "emptyTranslationResult": "API terjemahan gambar mengembalikan hasil kosong", + "imageTranslationFailedTryLater": + "Terjemahan gambar gagal. Masalah jaringan atau batas laju. Silakan coba lagi nanti", + "imageTranslationApiException": + "Pengecualian API terjemahan gambar. Periksa jaringan dan coba lagi", + "permissionRequired": "Izin Diperlukan", + "cameraPermissionRequired": "Izin kamera diperlukan untuk mengambil foto", + "photoAlbumPermissionRequired": + "Izin album foto diperlukan untuk memilih gambar", + "translationDetails": "Detail Terjemahan", + "originalImage": "Gambar Asli", + "sourceLanguage": "Bahasa Sumber", + "targetLanguage": "Bahasa Target", + "translationTime": "Waktu Terjemahan", + "shareInDevelopment": "Fitur berbagi sedang dalam pengembangan", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Terjemahkan File Audio", + "noAudioFiles": "Belum ada file audio", + "calculating": "Menghitung...", + "playing": "Memutar...", + "paused": "Dijeda", + "clickToPlay": "Klik untuk memutar", + "rename": "Ubah Nama", + "smartTranscription": "Transkripsi Cerdas", + "renameAudioFile": "Ubah nama file audio", + "enterNewFileName": "Silakan masukkan nama file baru", + + // 翻译模块 - 翻译详情 + "originalRecord": "Rekaman Asli", + "recordSummary": "Ringkasan Rekaman", + "clickToGenerateSummary": "Klik tombol di bawah untuk membuat ringkasan sesi", + "summaryContent": "Konten Ringkasan", + "copied": "Disalin", + "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan klip", + "extractSummary": "Ekstrak Ringkasan", + "summaryGenerated": "Ringkasan telah dibuat", + "generating": "Membuat...", + "regenerate": "Buat Ulang", + "summaryTimeoutMessage": + "Permintaan pembuatan ringkasan habis waktu, mungkin karena masalah jaringan atau server sibuk.", + "deleteTranslationRecord": "Hapus Rekaman Terjemahan", + "deleteTranslationConfirm": + "Apakah Anda yakin ingin menghapus rekaman terjemahan ini? Tindakan ini tidak dapat dibatalkan.", + "originalText": "Teks Asli", + "translatedText": "Teks Terjemahan", + "sessionSummary": "Ringkasan Sesi", + "cannotShare": "Tidak dapat berbagi", + "generateSummaryFirst": "Harap buat ringkasan terlebih dahulu", + "translationSessionRecord": "Rekaman Sesi Terjemahan", + + // 个人资料模块 "editProfile": "Sunting Informasi Pribadi", "avatar": "Avatar", "nickname": "Nama Panggilan", @@ -923,10 +1165,8 @@ const Map idID = { 'deleteAccount': 'Hapus Akun', 'deleteAccountTips': 'Apakah Anda yakin ingin menghapus akun Anda secara permanen? Tindakan ini tidak dapat dibatalkan', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Hapus Cache', + 'cleanTips': 'Apakah Anda yakin ingin menghapus cache pribadi?', 'networkConnectionFailed': 'Koneksi jaringan gagal, silakan periksa pengaturan jaringan Anda dan coba lagi', 'serverTemporarilyUnavailable': @@ -944,10 +1184,6 @@ const Map idID = { 'Koneksi jaringan gagal, silakan periksa pengaturan jaringan Anda', 'serverInternalErrorRetryLater': 'Kesalahan internal server, silakan coba lagi nanti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresi gambar gagal', 'avatarUpdateFailed': 'Pembaruan avatar gagal', 'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong', @@ -958,8 +1194,6 @@ const Map idID = { 'logoutFailedRetry': 'Gagal keluar, silakan coba lagi', 'accountPermanentlyDeleted': 'Akun telah dihapus secara permanen', 'deleteAccountFailedRetry': 'Gagal menghapus akun, silakan coba lagi', - - // 账号服务相关 'clearUserDataFailed': 'Gagal menghapus data pengguna', // 清理用户数据失败 'deleteUserDataFailed': 'Gagal menghapus data pengguna', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Berhasil keluar dari pihak ketiga', // 第三方登录退出成功 @@ -973,21 +1207,25 @@ const Map idID = { 'accountServiceInitialized': 'Layanan Akun telah diinisialisasi', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Penyimpanan', + 'meetingStoragePermissionExplanation': + 'Kami memerlukan izin penyimpanan agar Anda dapat memilih dan mengunggah file audio.', + 'meetingStoragePermissionPermanentDenial': + 'Terdeteksi Anda telah menolak izin penyimpanan secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin penyimpanan secara manual.', 'getPermissionStatusFailed': 'Gagal mendapatkan status izin', 'communicationPermissions': 'Izin Komunikasi', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Izin Bluetooth', + 'notificationPermissions': 'Izin Notifikasi', + 'storagePermissions': 'Izin Penyimpanan', + 'microphonePermissions': 'Izin Mikrofon', + 'alarmPermissions': 'Izin Alarm', 'calendarPermissions': 'Izin Kalender', 'locationPermissions': 'Izin Lokasi', 'phone': 'Telepon', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kontak', + 'notification': 'Notifikasi', 'alarm': 'Alarm', 'calendarWrite': 'Tulis Kalender', 'calendarFullAccess': 'Akses Penuh Kalender', @@ -995,7 +1233,7 @@ const Map idID = { 'phonePermissionDesc': 'Digunakan untuk fungsi melakukan panggilan', 'smsPermissionDesc': 'Digunakan untuk fungsi mengirim SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Digunakan untuk mengatur alarm tepat agar pengingat berbunyi tepat waktu', 'calendarWritePermissionDesc': 'Digunakan untuk membuat acara kalender dan pengingat', 'calendarFullAccessPermissionDesc': @@ -1013,80 +1251,92 @@ const Map idID = { 'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan izin telepon', 'smsPermissionDetailDesc': 'Fungsi mengirim SMS memerlukan izin SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Izin ini diperlukan untuk mengatur alarm tepat waktu dan memastikan pengingat berbunyi tepat waktu', 'calendarWritePermissionDetailDesc': 'Membuat acara kalender memerlukan izin menulis kalender', 'calendarFullAccessPermissionDetailDesc': 'Mengelola acara kalender memerlukan izin penuh kalender', 'locationPermissionDetailDesc': 'Mendapatkan informasi lokasi memerlukan izin lokasi', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Digunakan untuk mengakses informasi kontak', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Fungsi panggilan telepon dan SMS memerlukan izin kontak untuk memilih kontak', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Digunakan untuk menyambungkan dan mengelola perangkat Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Menyambungkan ke headphone Bluetooth dan perangkat lain memerlukan izin Bluetooth', + 'bluetoothScanPermissionDesc': + 'Digunakan untuk memindai perangkat Bluetooth di sekitar', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Memindai perangkat Bluetooth di sekitar memerlukan izin pemindaian Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Digunakan untuk menyambungkan ke perangkat Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Menyambungkan ke perangkat Bluetooth memerlukan izin koneksi Bluetooth', + 'notificationPermissionDesc': 'Digunakan untuk mengirim pesan notifikasi', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikasi memerlukan izin notifikasi untuk mengirim peringatan dan pesan penting kepada Anda', 'appNeedsPermissionForFullFunction': 'Aplikasi memerlukan izin ini untuk fungsionalitas penuh', 'permanentDenialText': 'Anda telah menolak izin {permission} secara permanen, silakan buka pengaturan aplikasi untuk mengaktifkannya', 'goToSettings': 'Buka Pengaturan', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Pemindaian Bluetooth', + 'bluetoothConnect': 'Koneksi Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikasi memerlukan izin pemindaian Bluetooth untuk memindai perangkat Bluetooth di sekitar.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikasi memerlukan izin koneksi Bluetooth untuk menyambungkan ke perangkat Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikasi memerlukan izin lokasi untuk memindai perangkat Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Izin pemindaian Bluetooth telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Izin koneksi Bluetooth telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Izin lokasi telah ditolak secara permanen, silakan buka pengaturan untuk mengaktifkannya secara manual.', + 'notificationPermission': 'Notifikasi', + 'locationPermission': 'Lokasi', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Izin notifikasi diperlukan untuk menampilkan status pemutaran musik.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Izin lokasi diperlukan untuk mendapatkan lokasi saat ini.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Anda telah menolak izin notifikasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Anda telah menolak izin lokasi secara permanen, silakan buka pengaturan untuk mengaktifkannya.', + 'storagePermission': 'Penyimpanan', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Kami memerlukan izin mikrofon untuk merekam konten audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Kami memerlukan izin penyimpanan agar Anda dapat memilih dan mengunggah file audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Izin mikrofon telah ditolak secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin mikrofon secara manual.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Izin penyimpanan telah ditolak secara permanen. Untuk terus menggunakan fitur ini, buka pengaturan aplikasi untuk mengaktifkan izin penyimpanan secara manual.', + 'permissionUtilNeed': 'Perlu ', + 'permissionUtilPermission': ' Izin', + 'permissionUtilRestricted': ' Izin Dibatasi', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Fitur ini tidak tersedia atau dibatasi pada perangkat saat ini, silakan periksa pengaturan perangkat atau pembatasan sistem', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasi sedang berlangsung', + 'native.notification.navigation.keepRunning': + 'Sedang menavigasi, biarkan aplikasi tetap berjalan', + 'native.notification.bleAgent.running': 'Agen asisten suara sedang berjalan', + 'native.notification.audioRecording.recording': + 'Sedang merekam audio, ketuk untuk kembali ke aplikasi', + 'native.notification.music.waiting': 'Menunggu untuk diputar', + 'native.notification.music.previous': 'Sebelumnya', + 'native.notification.music.next': 'Berikutnya', + 'native.notification.music.play': 'Putar', + 'native.notification.music.pause': 'Jeda', + 'native.notification.qqMusic.playing': 'Sedang memutar musik', + + // 版本更新 'newVersionFound': 'Versi Baru Ditemukan', // 版本更新对话框标题 'remindLater': 'Ingatkan Nanti', // 稍后提醒按钮 'updateNow': 'Perbarui Sekarang', // 立即更新按钮 @@ -1097,252 +1347,7 @@ const Map idID = { 'updateErrorRetry': 'Terjadi kesalahan saat pembaruan, silakan coba lagi nanti', // 更新错误重试提示 - //国家列表 - "邮箱": "Email", - "中国": "Tiongkok", - "美国": "Amerika Serikat", - "加拿大": "Kanada", - "俄罗斯": "Rusia", - "英国": "Britania Raya", - "德国": "Jerman", - "意大利": "Italia", - "法国": "Prancis", - "西班牙": "Spanyol", - "南非": "Afrika Selatan", - "沙特阿拉伯": "Arab Saudi", - "土耳其": "Turki", - "日本": "Jepang", - "韩国": "Korea Selatan", - "新加坡": "Singapura", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipina", - "印度尼西亚": "Indonesia", - "阿联酋": "Uni Emirat Arab", - "墨西哥": "Meksiko", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Selandia Baru", - "中国香港": "Hong Kong (Tiongkok)", - "中国澳门": "Makau (Tiongkok)", - "中国台湾": "Taiwan (Tiongkok)", - "埃及": "Mesir", - "希腊": "Yunani", - "荷兰": "Belanda", - "比利时": "Belgia", - "匈牙利": "Hongaria", - "罗马尼亚": "Rumania", - "瑞士": "Swiss", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Swedia", - "挪威": "Norwegia", - "波兰": "Polandia", - "秘鲁": "Peru", - "智利": "Chili", - "哥伦比亚": "Kolombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luksemburg", - "爱尔兰": "Irlandia", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Siprus", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroasia", - "斯洛文尼亚": "Slovenia", - "捷克": "Republik Ceko", - "斯洛伐克": "Slowakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ekuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroko", - "阿尔及利亚": "Aljazair", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Yordania", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kamboja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Leste", - "斐济": "Fiji", - "所罗门群岛": "Kepulauan Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Riwayat Terjemahan", - "enableRecording": "Aktifkan Perekaman", - "viewAudioFiles": "Lihat File Audio", - "headsetUser": "Pengguna Headset", - "phoneUser": "Pengguna Telepon", - "selectSourceLanguage": "Pilih bahasa sumber", - "selectTargetLanguage": "Pilih bahasa target", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Belum ada riwayat", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Hapus Riwayat", - "clearHistoryConfirm": - "Apakah Anda yakin ingin menghapus semua riwayat terjemahan? Tindakan ini tidak dapat dibatalkan.", - "unknownLanguage": "Bahasa Tidak Dikenal", - "deleteSessionRecord": "Hapus Rekaman Sesi", - "deleteSessionConfirm": - "Apakah Anda yakin ingin menghapus semua rekaman terjemahan untuk sesi ini? Tindakan ini tidak dapat dibatalkan.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Terjemahkan File Audio", - "noAudioFiles": "Belum ada file audio", - "calculating": "Menghitung...", - "playing": "Memutar...", - "paused": "Dijeda", - "clickToPlay": "Klik untuk memutar", - "rename": "Ubah Nama", - "smartTranscription": "Transkripsi Cerdas", - "renameAudioFile": "Ubah nama file audio", - "enterNewFileName": "Silakan masukkan nama file baru", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Rekaman Asli", - "recordSummary": "Ringkasan Rekaman", - "clickToGenerateSummary": "Klik tombol di bawah untuk membuat ringkasan sesi", - "summaryContent": "Konten Ringkasan", - "copied": "Disalin", - "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan klip", - "extractSummary": "Ekstrak Ringkasan", - "summaryGenerated": "Ringkasan telah dibuat", - "generating": "Membuat...", - "regenerate": "Buat Ulang", - "summaryTimeoutMessage": - "Permintaan pembuatan ringkasan habis waktu, mungkin karena masalah jaringan atau server sibuk.", - "deleteTranslationRecord": "Hapus Rekaman Terjemahan", - "deleteTranslationConfirm": - "Apakah Anda yakin ingin menghapus rekaman terjemahan ini? Tindakan ini tidak dapat dibatalkan.", - "originalText": "Teks Asli", - "translatedText": "Teks Terjemahan", - "sessionSummary": "Ringkasan Sesi", - "cannotShare": "Tidak dapat berbagi", - "generateSummaryFirst": "Harap buat ringkasan terlebih dahulu", - "translationSessionRecord": "Rekaman Sesi Terjemahan", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pemasangan Perangkat", "connectYourDeepSoundHeadset": "Hubungkan Headset Voitrans Anda", "bind": "Ikat", @@ -1351,14 +1356,11 @@ const Map idID = { "autoInputCode": "Masukkan kode secara otomatis", "skipBinding": "Lewati Pengikatan", "rescan": "Pindai Ulang", - "verifyingDevice": "Memverifikasi perangkat...", "confirmBinding": "Konfirmasi Pengikatan", "associatingDevice": "Mengasosiasikan perangkat...", "goToBluetoothSettings": "Buka Pengaturan Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Siap untuk dipasangkan", "preparingPairingEnvironment": "Mempersiapkan lingkungan pemasangan...", "connectDeepSoundViaSystemBluetooth": @@ -1368,8 +1370,6 @@ const Map idID = { "waitingCompletePairing": "Harap tunggu, pemasangan sedang diselesaikan...", "pairingSuccessRedirecting": "Pemasangan berhasil! Mengalihkan ke halaman utama...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Harap pastikan Anda terhubung ke perangkat Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1381,19 +1381,12 @@ const Map idID = { "authorizationFailedCheckCode": "Otorisasi gagal, harap periksa apakah kode otorisasi benar", "pairingFailedRetry": "Pemasangan gagal, silakan coba lagi", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Harap aktifkan Bluetooth', 'deviceDisconnected': 'Perangkat terputus', 'readyToStartPairing': 'Siap untuk memulai pemasangan', 'checkingEnvironment': 'Memeriksa lingkungan...', 'ensureHeadsetOnAndPairingMode': 'Harap pastikan headset dihidupkan dan dalam mode pemasangan', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Membangun koneksi aman...', 'needManualBindingAuthCode': 'Diperlukan kode otorisasi pengikatan manual...', 'pairingSuccessful': 'Pemasangan berhasil!', @@ -1413,21 +1406,31 @@ const Map idID = { 'bleConnectionFailed': 'Koneksi BLE gagal', 'deviceAuthorizationFailedCheckCode': 'Otorisasi perangkat gagal, harap periksa kode otorisasi', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Perlu Mengaktifkan Bluetooth Secara Manual', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Silakan ikuti langkah-langkah berikut:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Aktifkan Bluetooth: Pengaturan → Bluetooth → Nyalakan', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Hubungkan Perangkat: Temukan perangkat Anda di "Perangkat Saya" lalu ketuk untuk menghubungkan', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Kembali ke aplikasi untuk melanjutkan proses pemasangan', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tip: Anda juga dapat menekan lama ikon Bluetooth di Pusat Kontrol untuk cepat membuka pengaturan Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Saya Mengerti', // 我知道了 + + // 配对模块 - 绑定奖励 + "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Umpan Balik Pengguna", 'feedbackInfo': 'Berikan umpan balik atau saran', 'feedbackDescription': @@ -1455,13 +1458,14 @@ const Map idID = { "connectionFailed": "Koneksi Gagal", "retryConnection": "Coba Sambungkan Kembali", "ota_updateNow": "Perbarui Sekarang", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Gagal mendapatkan info versi. Silakan coba lagi nanti.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Tidak dapat memperoleh info perangkat. Periksa koneksi lalu coba lagi.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Tidak dapat mengidentifikasi perangkat. Sambungkan kembali lalu coba lagi.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Versi firmware tidak normal. Sambungkan kembali lalu coba lagi.", "keepConnectedDontClose": "Jaga agar perangkat tetap terhubung, jangan tutup aplikasi", "doNotDisconnect": "Jangan putuskan sambungan", @@ -1470,7 +1474,59 @@ const Map idID = { "removeEarbudsEnsureBattery": "Keluarkan kedua earbud, dan pastikan baterai keduanya di atas 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Versi baru @version ditemukan', + 'otaConfirmUpdateNow': 'Perbarui sekarang?', + 'otaUpdate': 'Perbarui', + 'otaUpgradeSuccess': 'Pembaruan Berhasil', + 'otaUpgradeCompleteRepair': + 'Pembaruan firmware selesai!\n\nPerangkat perlu dipasangkan ulang agar berfungsi dengan baik. Buka halaman pemasangan sekarang?', + 'otaPairLater': 'Pasangkan Nanti', + 'otaPairNow': 'Pasangkan Sekarang', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Kesalahan saat memeriksa koneksi BLE: @error', + 'otaBleNotConnected': 'Perangkat BLE Tidak Terhubung', + 'otaBleNeedConnection': + 'Pembaruan firmware memerlukan koneksi perangkat BLE\nPastikan perangkat terhubung dengan benar lalu coba lagi', + 'otaDeviceInfoUnavailableTitle': 'Info Perangkat Tidak Tersedia', + 'otaCannotGetDeviceInfo': + 'Tidak dapat memperoleh info perangkat\nSilakan sambungkan kembali perangkat atau coba lagi nanti', + 'otaBleCheckFailed': 'Pemeriksaan Koneksi BLE Gagal', + 'otaCannotGetDeviceInfoCheckConnection': + 'Tidak dapat memperoleh info perangkat, periksa koneksi perangkat', + 'otaCannotGetProductInfoWithName': + 'Tidak dapat memperoleh info produk, nama perangkat: @deviceName', + 'otaCannotGetBatteryInfo': 'Tidak dapat memperoleh info baterai yang valid', + 'otaLowBattery': 'Baterai Lemah', + 'otaSingleBatteryLow': + 'Baterai perangkat terlalu rendah untuk pembaruan firmware\nSyarat: baterai harus di atas 20%\nSaat ini: @ear @battery%\nSilakan isi daya lalu coba lagi', + 'otaDoubleBatteryLow': + 'Baterai perangkat terlalu rendah untuk pembaruan firmware\nSyarat: kedua earbud harus di atas 20%\nSaat ini: Kiri @left%, Kanan @right%\nSilakan isi daya lalu coba lagi', + 'otaBatteryCheckFailed': 'Pemeriksaan Baterai Gagal', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Pembaruan ini mencakup optimasi performa dan perbaikan bug.', + 'otaGetLatestVersionFailed': 'Gagal mendapatkan info versi terbaru', + 'otaGetVersionInfoFailed': 'Gagal mendapatkan info versi', + 'otaCheckingDeviceStatus': 'Memeriksa status perangkat...', + 'otaDownloadFailedCheckNetwork': 'Unduhan gagal, periksa koneksi jaringan', + 'otaDownloadFailed': 'Unduhan Gagal', + 'otaPreparingConnection': 'Menyiapkan koneksi perangkat...', + 'otaConnectingDevice': 'Menyambungkan ke perangkat...', + 'otaUpgradeStarted': 'Pembaruan OTA dimulai...', + 'otaUpgradeProgressWithPercent': 'Progres pembaruan: @percent%', + 'otaUpgradeSuccessComplete': 'Pembaruan berhasil diselesaikan', + 'otaUpgradeFailedWithCode': 'Pembaruan gagal, kode kesalahan: @code', + 'otaUpgradeFailedTitle': 'Pembaruan Gagal', + 'otaUpgradeFailedDesc': + 'Periksa koneksi perangkat atau paket pembaruan, kode kesalahan: @code', + 'otaDeviceDisconnected': 'Perangkat terputus', + 'otaDeviceConnected': 'Perangkat terhubung', + + // 音乐模块 "noMusic": "Tidak Ada Musik", // 暂无音乐 "noPlayingMusic": "Tidak ada musik yang diputar", // 暂无播放音乐 "unknownSong": "Lagu Tidak Dikenal", // 未知歌曲 @@ -1518,22 +1574,122 @@ const Map idID = { "波斯语": "Bahasa Persia", "斯瓦希里语": "Bahasa Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Email", + "中国": "Tiongkok", + "美国": "Amerika Serikat", + "加拿大": "Kanada", + "俄罗斯": "Rusia", + "英国": "Britania Raya", + "德国": "Jerman", + "意大利": "Italia", + "法国": "Prancis", + "西班牙": "Spanyol", + "南非": "Afrika Selatan", + "沙特阿拉伯": "Arab Saudi", + "土耳其": "Turki", + "日本": "Jepang", + "韩国": "Korea Selatan", + "新加坡": "Singapura", + "马来西亚": "Malaysia", + "泰国": "Thailand", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipina", + "印度尼西亚": "Indonesia", + "阿联酋": "Uni Emirat Arab", + "墨西哥": "Meksiko", + "巴西": "Brasil", + "阿根廷": "Argentina", + "澳大利亚": "Australia", + "新西兰": "Selandia Baru", + "中国香港": "Hong Kong (Tiongkok)", + "中国澳门": "Makau (Tiongkok)", + "中国台湾": "Taiwan (Tiongkok)", + "埃及": "Mesir", + "希腊": "Yunani", + "荷兰": "Belanda", + "比利时": "Belgia", + "匈牙利": "Hongaria", + "罗马尼亚": "Rumania", + "瑞士": "Swiss", + "奥地利": "Austria", + "丹麦": "Denmark", + "瑞典": "Swedia", + "挪威": "Norwegia", + "波兰": "Polandia", + "秘鲁": "Peru", + "智利": "Chili", + "哥伦比亚": "Kolombia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugal", + "卢森堡": "Luksemburg", + "爱尔兰": "Irlandia", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Siprus", + "芬兰": "Finlandia", + "保加利亚": "Bulgaria", + "立陶宛": "Lituania", + "拉脱维亚": "Latvia", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Kroasia", + "斯洛文尼亚": "Slovenia", + "捷克": "Republik Ceko", + "斯洛伐克": "Slowakia", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivia", + "厄瓜多尔": "Ekuador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Maroko", + "阿尔及利亚": "Aljazair", + "突尼斯": "Tunisia", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesh", + "以色列": "Israel", + "黎巴嫩": "Lebanon", + "约旦": "Yordania", + "伊拉克": "Irak", + "科威特": "Kuwait", + "巴林": "Bahrain", + "卡塔尔": "Qatar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kamboja", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Leste", + "斐济": "Fiji", + "所罗门群岛": "Kepulauan Solomon", + "刚果民主共和国": "Republik Demokratik Kongo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maladewa", + "不丹": "Bhutan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamaika", + "巴哈马": "Bahama", + "巴布亚新几内亚": "Papua Nugini", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/is_is.dart b/lib/core/translations/language/is_is.dart index 70b0afa81..fb58c8def 100644 --- a/lib/core/translations/language/is_is.dart +++ b/lib/core/translations/language/is_is.dart @@ -1,3 +1,4 @@ +// 冰岛-冰岛语 const Map isIS = { // 通用 'continue': 'Halda áfram', @@ -18,6 +19,11 @@ const Map isIS = { "unknownError": "Óþekkt villa", "asrConnectionFailed": "Tenging við talgreiningarþjónustu mistókst. Athugaðu netsambandið eða reyndu aftur síðar.", + "justNow": "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", @@ -28,7 +34,7 @@ const Map isIS = { "explore": "Kanna", "settings": "Stillingar", - // 语言 + // 语言列表 "followingSystem": "Fylgja kerfi", "chinese": "Kínverska", "english": "Enska", @@ -72,7 +78,7 @@ const Map isIS = { "arabic": "Arabska", "persian": "Persneska", - // 登录页 + // 登录模块 "welcome": "Velkomin(n)", "loginTips": "Skráðu þig inn eða nýskráðu með símanúmeri eða tölvupósti", "accountNumber": "Símanúmer eða tölvupóstur", @@ -100,13 +106,9 @@ const Map isIS = { "resendVerificationCode": "Senda staðfestingarkóða aftur", "login": "Innskráning", "usePasswordLogin": "Innskráning með lykilorði", - - // 隐私政策弹窗 "loginDeclaration": "Yfirlýsing Voitrans", // Voitrans 声明 "welcomeToThisApp": "Velkomin(n) í Voitrans, vinsamlegast lestu vandlega", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", með því að smella á 'Samþykkja og halda áfram' staðfestir þú að þú hafir lesið og samþykkt ofangreinda samninga. Með því að smella á 'Hafna' lokarðu forritinu.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Hafna", // 不同意 @@ -167,7 +169,30 @@ const Map isIS = { 'right': 'Hægri', 'checkConnectionStatusFailed': 'Athugun á tengingarstöðu mistókst', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth ræsing mistókst: @error', + '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.', + 'needEnableBluetooth': 'Virkja Bluetooth', + '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', + 'bleConnectionFailedWithError': 'Tenging mistókst: @error', + 'bleDisconnected': 'Aftengt', + 'bleDeviceDisconnected': 'Tæki aftengt', + 'bleDisconnectFailedWithError': 'Aftenging mistókst: @error', + 'signalStrong': 'Sterkt merki', + 'signalMedium': 'Miðlungs merki', + 'signalWeak': 'Veikt merki', + 'signalVeryWeak': 'Mjög veikt merki', + + // 发现页 "searchAi": "Leita að gervigreindareiginleikum...", "exploreSlogan": "Snjallheyrnartól, óendanlegir möguleikar", "exploreSlogan1": "Snjallfélagi, óendanlegir möguleikar", @@ -190,211 +215,273 @@ const Map isIS = { "usageStats": "Notendastatistika", "usageStatsInfo": " skoða notendastatistika", "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", - //"aiSummary": "AI摘要", - "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.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Tókst ekki að hlaða tölfræði. Reyndu aftur síðar.", + "cleanupComplete": "Hreinsun lokið", + "cleanedOldData": "Gögn eldri en 90 dagar hreinsað", + "exportFeature": "Útflutningseiginleiki", + "exportInDevelopment": "Gagnaútflutningur er í þróun", + + // 商品模块 - 通用 + '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": + 'Ónóg inneign, farðu á viðeigandi áfyllingarsíðu til að fylla á.', + "recharge": 'Fara í áfyllingu', + "aiMemberExpiredDesc": + 'AI-aðild er útrunnin, farðu á áfyllingarsíðu aðildar til að endurnýja.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Tónlist og tillögur', + 'navigationAndRoutes': 'Leiðsögn og leiðir', + 'nearbySearch': 'Leit í nágrenninu', + 'newsInformation': 'Fréttir', + 'communicationAssistant': 'Samskiptaaðstoðarmaður', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Lengri samtalskivóti, fleiri verkfæraköll, lengra samhengi.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Hentar fyrir spjallþjónn-spurningar, samantektir, greiningar og verkframkvæmd.', + 'musicSearchPlaybackControl': 'Leit í tónlistarsafni og spilunastjórnun', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Snjall spilunarlisti og tillögur um svipuð lög', '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', + 'Leiðarskipulag og umferðarstaðsetningu forðast', + 'voiceBroadcastAndWaypoints': 'Raddkynning og millistaðarstillingar', + 'realTimeWeatherForecast': 'Rauntímaveður og spá', + 'clothingAdviceAndTravelReminders': + 'Klæðnaðarráðleggingar og ferðaáminningar', + 'poiSearchFoodGasParking': 'POI-leit: veitingastaðir / bensín / bílastæði', + 'ratingsHoursAndDirectRoutes': + 'Einkunnir, opnunartímar og bein leiðarvalgsleið', + 'hotNewsAndTopicOverview': 'Heitar fréttir og efnisyfirlit', + 'longArticleSummariesAndKeyPoints': + 'Samantektir á löngum greinum og lykilatriðum', + 'helpCallAndSMS': 'Aðstoð við símtöl og SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Sniðmátsskilaboð og dagskráráminningar', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Eiginleikar fara eftir heimildum tækis, framboði þjónustu og nettengingu.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Rauntíma uppskrift', + 'sceneLexicon': 'Atburðarásorðabók', + 'subtitleDisplay': 'Skjátextar', + 'transHeaderDesc1': + 'Rauntíma samtímtúlkun og textaþýðing með lágri töf í rödd.', + 'transHeaderDesc2': 'Hentar fyrir ferðalög, viðskipti, ræður og kennslu.', + 'translateZhEn': 'Kínversku-ensku þýðing', + 'lowLatencyVoiceBroadcast': 'Raddkynning með lágri töf', + 'multiLangTextTranslation': 'Fjöltyng textaþýðing', + 'termOptimizationContextPreserve': 'Hugtakabestun og samhengisgeymsla', + 'lexiconTourBusinessLife': 'Ferðalags-/viðskipta-/lífsordabækur', + 'personalVocabularyMemory': 'Persónuleg orðaforðaminnir', + 'conversationSubtitleLargeText': 'Samtalsskjátextar / Stórtextahamur', + 'colorHighContrast': 'Mikið litasamræmi', + 'transDisclaimer': 'Þýðing fer eftir hljóðnema, nettöf og umhverfishávaða.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Fundarupptaka', + 'transcriptionAndSummary': 'Uppskrift og samantekt', + 'keywordSearch': 'Leitarorðaleit', + 'collaborationSharing': 'Samvinna og deling', + 'meetingHeaderDesc1': + 'Hljóðupptaka, uppskrift, leitarorðaleit og sjálfvirkt yfirlit til að auka skilvirkni funda.', + 'meetingHeaderDesc2': + 'Hentar fyrir viðskiptafundi, bekkarglósur og viðtalsfundargerðir.', + 'meetingAutoRecording': 'Sjálfvirk upptaka og skipting', + 'meetingSpeakerTagging': 'Merking ræðumanns', + 'meetingLongAudioTranscription': 'Uppskrift langs hljóðs', + 'meetingKeyPointSummary': 'Útdráttur lykilatriða', + 'meetingTopicNameSearch': 'Leita eftir efni/nafni', + 'meetingTimelineJump': 'Tímalínuhopp', + 'meetingExportSummary': 'Flytja út fundargerð', + 'meetingMultiPlatformShare': 'Deila yfir vettvanga', + 'meetingDisclaimer': + 'Notaðu í hljóðlátu umhverfi; afköst fara eftir hljóðnema og neti.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Yfirlit yfir hlunnindi', + 'higherQuota': 'Hærri notkunarkvóti', + 'lowerUnitPrice': 'Lægra einingaverð', + 'priorityService': 'Forgangsþjónusta', + 'exclusiveSupportChannel': 'Sérstakur stuðningsrás', + 'fastResponse': 'Hröð viðbrögð við vandamálum', + 'eventsAndDiscounts': 'Viðburðir og afsláttur', + 'memberExclusiveEvents': 'Viðburðir eingöngu fyrir meðlimi', + 'longTermDiscountPlan': 'Langtímaafslátttaráætlun', + 'generalPrivileges': 'Almenn forréttindi', + 'earlyAccessNewFeatures': 'Snemma aðgangur að nýjum eiginleikum', + 'crossDeviceSync': 'Samstilling milli tækja', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', - - // 新手引导 / Onboarding - 'skip': "Sleppa", - '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, ', - // AI 引导步骤 - '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', - - // 商务会议助手页 + 'Raunveruleg hlunnindi fara eftir pakkaskilmálum og geta breyst með útgáfum.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Grunn 100', + 'ai_002_name': 'AI Grunn 500', + 'ai_003_name': 'AI Grunn 1000', + 'meet_001_name': 'Fundur Grunn 100', + 'meet_002_name': 'Fundur Grunn 500', + 'meet_003_name': 'Fundur Grunn 1000', + 'trans_001_name': 'Þýðing Grunn 100', + 'trans_002_name': 'Þýðing Grunn 500', + 'trans_003_name': 'Þýðing Grunn 1000', + 'ai_001_desc': 'Inniheldur 100 notkun. Aðgangur að kjarna AI-eiginleikum.', + 'ai_002_desc': 'Inniheldur 500 notkun. Aðgangur að kjarna AI-eiginleikum.', + 'ai_003_desc': 'Inniheldur 1000 notkun. Aðgangur að kjarna AI-eiginleikum.', + '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': 'Forrit: VoiTrans · Veitt af: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP þ jónustuver QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 + "skip": "Sleppa", + "next": "Næsta", + "sayLilyHint": "Segðu \"Lily Lily\" í hljóðnemana", + "imHere": "Ég er hér~", + "guideWelcomeWakeAI": + "Velkomin(n) í Voitrans! Fyrst skaltu vekja AI þitt \u201cLily\u201d.", + "aiReplyCompleted": "Lily hefur lokið svari!", + "aiThinking": "Lily er að hugsa\u2026", + "guideAwakenSuccess": "Frábært! Lily er vakið — biddu það um hjálp.", + "confirmInput": "Staðfesta innslátt", + "guideClickSendPrefix": "Pikkaðu á senda, ", + "guideWeatherStart": "Segjðu Lily: \u201cHvernig er veðrið í dag?\u201d", + "guideWeatherInput": "Hvernig er veðrið í dag?", + "guideWeatherSend": "Lily mun tilkynna veðrið í rauntíma", + "guideWeatherEnd": + "Lily getur tilkynnt veðrið í rauntíma — prófaðu önnur skipun", + "guideMusicStart": "Segjðu Lily: \u201cSpilaðu rokktónlist\u201d", + "guideMusicInput": "Spilaðu rokktónlist", + "guideMusicSend": "Lily mun finna tónlist fyrir þig", + "guideMusicEnd": "Lily fann tónlist — prófaðu önnur skipun", + "guideNavStart": "Segjðu Lily: \u201cLeiðsögn að Shenzhen flugvelli\u201d", + "guideNavInput": "Leiðsögn að Shenzhen flugvelli", + "guideNavSend": "Lily mun skipuleggja leiðina", + "guideNavEnd": "Leiðsögn stillt — prófaðu önnur skipun", + "guideMeetingStart": + "Segjðu Lily: \u201cBúðu til fundarminningu fyrir kl. 15 á morgun\u201d", + "guideMeetingInput": "Búðu til fundarminningu fyrir kl. 15 á morgun", + "guideMeetingSend": "Lily mun búa til fundarminningu", + "guideMeetingEnd": "Minning búin til — prófaðu önnur skipun", + "guidePhoneStart": "Segjðu Lily: \u201cHringdu í mömmu\u201d", + "guidePhoneInput": "Hringdu í mömmu", + "guidePhoneSend": "Lily mun hringja", + "guidePhoneEnd": "Símtal átti sér stað — prófaðu önnur skipun", + "guideSmsStart": + "Segjðu Lily: \u201cSendðu pabba SMS: Ég kem heim í kvöldmat\u201d", + "guideSmsInput": "SMS til pabba: Ég kem heim í kvöldmat", + "guideSmsSend": "Lily mun senda skilaboðin", + "guideSmsEnd": "Skilaboð send — raddstýring er þægileg", + + // Meeting模块 - 首页与导航 "startMeeting": "Hefja fund", 'edit': 'Breyta', 'delete': 'Eyða', @@ -406,40 +493,38 @@ const Map isIS = { 'recordingDetails': 'Upptökuupplýsingar', 'aiSummary': 'Gervigreindaryfirlit', 'meetingTranscript': 'Fundarritun', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Ræsi Wi-Fi...', + 'newFilesDetected': 'Nýjar skrár fundust, undirbý innflutning', + 'noNewFiles': 'Engar nýjar skrár til að flytja inn', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Hefja upptöku', + 'liveRecording': 'Bein upptaka', + 'audioVideoRecording': 'Hljóð-/myndupptaka', + 'callRecording': 'Símtalaupptaka', + 'importAudio': 'Flytja inn hljóð', 'meetingRecordExitTitle': 'Hætta í upptöku', // 退出录音 'meetingRecordExitMessage': 'Veldu hvað á að gera áður en þú ferð', // 请选择离开后的操作 @@ -463,202 +548,212 @@ const Map isIS = { '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...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Umritar...', + 'summarizing': 'Tekur saman...', + 'analyzing': 'Greinir...', + 'summaryComplete': 'Samantekt lokið', + 'generate': 'Búa til', + 'overview': 'Yfirlit', + 'transcription': 'Uppskrift', + 'summary': 'Samantekt', + 'mindMap': 'Hugarkort', + 'editSpeaker': 'Breyta', + 'nameSpeaker': 'Nefna ræðumann', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Taka saman aftur', + 'dateAndTime': 'Dagsetning og tími', + 'location': 'Staðsetning', + 'attendees': 'Þátttakendur', + 'inputLocation': 'Sláðu inn staðsetningu', + 'inputAttendees': 'Sláðu inn þátttakendur', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Veldu samantektarsniðmát', + 'useThisTemplate': 'Nota þetta sniðmát', + 'lastUsed': 'Síðast notað', + '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': 'Skoða allt', + 'recordingLanguage': 'Upptökutungumál', + 'chineseSimplified': 'Kínverska (einfölduð mandórín)', + 'meetingGenerateNow': 'Búa til núna', + 'keyEventsAnalyzed': 'Greinð {count} lykilatvik.', + 'aiAnalysisDesc': + 'AI-greining finnur lykilatburði í upptökum, svo þú getir valið mikilvæga atburði fyrir AI-úrvinnslu.', + + // Meeting模块 - 文件操作 + 'importing': 'Flytur inn...', + 'batchImporting': 'Fjöldainnflutningur...', + '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': 'Deila fundarhátóni', + 'shareComplete': 'Deilingu lokið!', + 'shareFailed': 'Deiling mistókst: {error}', + 'fileProcessingFailed': 'Skráarvinnsla mistókst: {filePath}, villa: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Vista hugarkort', + 'shareMindMap': 'Deila hugarkorti', + 'shareSuccess': 'Deiling tókst', + + // Meeting模块 - AI问答 + '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': 'Deila hlekk', + 'copyTranscript': 'Afrita umritun', + 'copySummary': 'Afrita samantekt', + 'exportAudio': 'Flytja út hjóð', + 'exportTranscript': 'Flytja út umritun', + 'shareMeetingAudio': 'Deila fundarhátóni', + 'exportSummary': 'Flytja út samantekt', + 'exportAs': 'Flytja út sem', + 'exportingPDF': 'Flytur út PDF...', + 'export': 'Flytja út', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Beita á allar málsgreinar þessa ræðumanns', + 'summaryWillBeUpdatedAutomatically': + 'Samantektin verður uppfærð sjálfkrafa út frá sniðmátinu', + 'nameCurrentSpeaker': 'Nefna núverandi ræðumann', + 'recentlyUsedNames': 'Nýlega notuð nöfn', + 'applyToCurrentParagraph': 'Beita á núverandi málsgrein', + 'totalTime': 'Heildartími', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Ræðumenn í samantekt verða uppfærðir sjálfkrafa', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Samstilla í skýið', + 'syncToCloudTip': + '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', - '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', - - // 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', + 'enabled': 'Virkt', + 'disabled': 'Óvirkt', + 'myVoitransDevice': 'Mitt VOITRANS tæki', + 'helpAndFeedback': 'Hjálp og endurgjöf', + 'aboutVoitrans': 'Um VOITRANS', + 'meetingDays': 'Dagar', + 'meetingHours': 'Klukkustundir', + 'voitransAiMember': 'Voitrans AI meðlimur', + 'unlockStarterMember': 'Opna byrjendaáskrift', + 'bindDeviceToActivate': 'Tengdu Voitrans tæki til að virkja Starter-aðild', + 'unlockNow': 'Opna núna', + + // Meeting模块 - 会员与升级 + 'comparison': 'Samanburður', + 'detailedInfo': 'Nákvæmar upplýsingar', + 'monthlyTranscriptionTime': 'Mánaðarlegur umritunartími', + 'unlimited': 'Ótakmarkaður', + 'professionalTemplates': 'Fagleg sniðmát', + 'limited': 'Takmarkaður', + 'fullTemplates': 'Öll sniðmát', + 'professionalTerms': 'Fagleg hugtök', + 'customTemplates': 'Sérsniðin sniðmát', + 'visualMindMap': 'Sjónrænt hugakort', + 'speakerIdentification': 'Auðkenning ræðumanns', + 'aiVoiceEnhancement': 'AI hjóðbæting', + 'audioImport': 'Hjóðinnflutningur', + 'multipleExportFormats': 'Margir útflutningssnið', + 'professionalSummaryTemplates': 'Fagleg samantektarsniðmát', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Fagleg sniðmátshönnun til að bæta vinnusemi þina. Sérsniðin að îförfum iðnaðarins.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Þú getur sérsniðið samantektarfyrirspurnir að þinum îförfum og notað þær til að búa til nauðsynlegar samantektir.', '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.', + 'Umfram samantektir – skipulagaðu og sýnigerðu lykilatriði með hugakortum til að skilja heildartæki betur.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Uppgötvaðu, deildu og fáðu innblástur frá sniðmátasafni sem notendur búa til.', '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.', + 'Hjóðumritun mun styðja auðkenningu ræðumanna, endurskapa fundarefni eða símasamtalsefni á náttúrulegan hátt. Samantektin verður nákvæmri.', '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.', + 'AI hjóðbæting styður margar stillingar fyrir hjóðminnkun, eyðir bakgrunnsáreiti á snjöllum hátt, eykur skirlægi röddanna og bætir gæði hjóðspilunar.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Flytja auðveldlega inn hjóðskrár frá staðbundnæm eða þrirðja aðila forritum, sæ sem raðdmænnisatriðum, Google Drive o.fl.', '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', + 'Flyttu út hljóðupptökur, uppskriftartexta og samantektir í ýmsum sniðum (TXT, PDF, JPEG) eftir þörfum.', + 'upgradeMembership': 'Uppfæra áskrift þina', + 'yearlySubscription': 'Árleg áskrift', + 'monthlySubscription': 'Mánaðarleg áskrift', + 'proMonthly': 'Pro ¥60/mánuð', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 daga ókeypis prufutímabil, síðan ¥800/ár. Hætta má hvenær sem er áður en prufutímabilinu lýkur.', + 'sevenDayTrial': '7 daga ókeypis prufutímabil', + 'unlimitedMonthly': 'Unlimited ¥120/mánuð', '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 daga ókeypis prufutímabil, síðan ¥1600/ár. Hætta má hvenær sem er áður en prufutímabilinu lýkur.', + 'trialNote': + '*Ókeypis prufutímabil í 7 daga, síðan gjaldgengur árlega, hætta má hvenær sem er.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mánuð', + 'subscribe': 'Gerast áskrifandi', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mánuð', '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.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Beita á allar málsgreinar þessa ræðumanns', - 'summaryWillBeUpdatedAutomatically': - 'Samantektin verður uppfærð sjálfkrafa út frá sniðmátinu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + '*Eftir uppfærslu áskriftar verða þeim dögum sem eftir eru af upprunalegri áskrift sjálf kræft reiknuð og endurgreidd á greiðslureikning þinn', + 'buyMoreTranscriptionTime': 'Kaupa meira umritunartíma', + 'sixThousandMinutes': '6.000 mínúur', + 'threeThousandMinutes': '3.000 mínúur', + 'sixHundredMinutes': '600 mínúur', + 'oneHundredTwentyMinutes': '120 mínúur', + 'validityPeriod': '*Gildistímabil: ', + 'validityNote': 'Virkúst strax eftir kaup, gilt í 2 ár eftir virkjun.', + 'purchase': 'Kaupa', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Upptökutungumál', + 'cantonese': 'Kantóníska', + 'sichuan': 'Sichuan-mál', + 'shanghai': 'Sjangháí-mál', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Óîkkt tungumál', + 'analysisFailed': 'Greining mistókst, reyndu aftur síðar', + 'transcriptionFailed': 'Umritun mistókst, reyndu aftur síðar', + 'summaryFailed': 'Samantekt mistókst, reyndu aftur síðar', + 'summaryFailedShort': 'Samantekt mistókst', + 'transcriptionFailedShort': 'Umritun mistókst', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Hljóðspilari er ekki tilbúinn, vinsamlegast bíddu', + 'playFailed': 'Spilun mistókst', + 'audioFileNotFound': 'Hljóðskrá fannst ekki', + 'fetchingAudio': 'Sæki hljóð úr skýinu...', + 'playerLoadFailed': 'Hljóðspilari tókst ekki að hlaða', // 设置页 "systemSettings": "Kerfisstillingar", @@ -667,10 +762,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", @@ -711,43 +806,31 @@ const Map isIS = { "bleHeadsetFirmwareUpgrade": "Uppfærsla á fastbúnaðarútgáfu BLE heyrnartóla", "deviceManagement": "Tækjastjórnun", "manageConnectedDevices": "Stjórna tengdum Bluetooth-tækjum", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Þú ert nú þegar með nýjustu útgáfuna {version}', 'checkUpdateFailed': 'Athugun á uppfærslum mistókst', 'networkErrorRetry': 'Netvilla, vinsamlegast reyndu aftur síðar', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Rauntíma raddspjall", "realtimeVoiceChatInfo": "Upplifðu greinda raddsamskiptaaðgerð (forskoðun aðgerðar)", "loading": "Hleður...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Óþekkt tæki", + "deviceTypeClassicBluetoothHeadset": "Klassísk Bluetooth heyrnartól", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth heyrnartól", + "deviceTypeSmartVoiceRecorder": "Snjall raddupptökutæki", + "deviceTypeSmartEye": 'Snjallgleraugun', "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Hreinsa spjallsögu", "online": "Á netinu", @@ -775,22 +858,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Að svara spurningum og veita upplýsingar\n\n' '• Rauntíma raddþýðingu\n\n' @@ -809,11 +894,11 @@ const Map isIS = { 'startVoiceInput': 'Hefja raddinnslátt', 'startPhoneCallMode': 'Hefja símtalsham, hefja raddinnslátt', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sláðu inn skilaboðin þín hér...', // 全屏编辑器输入提示 'characterCount': '{count} stafir', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Afrita', 'copySuccess': 'Afritað', 'report': 'Tilkynna', @@ -821,7 +906,6 @@ const Map isIS = { 'submitFailed': 'Sending mistókst', 'reportSubmitted': 'Tilkynning send, við munum afgreiða hana eins fljótt og auðið er', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skaðlegt/Óöruggt', 'pornographicVulgar': 'Klámfengið/Gróft', 'misleadingAttack': 'Villandi/Árás', @@ -831,17 +915,21 @@ const Map isIS = { 'other': 'Annað', 'reportDescriptionHint': 'Við viljum vita hvers vegna þú ert að tilkynna, þú getur lýst vandamálinu sem þú lendir í.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Myndað af gervigreind', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Verkfærakall', + 'noResult': 'Engin niðurstaða', + 'noToolCallContentToCopy': 'Ekkert verkfærakall til að afrita', + 'toolCallDetails': 'Upplýsingar um verkfærakall:', + 'toolCallContentCopied': 'Verkfærakall afritað á klippiborð', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hér eru nokkur lög sem mælt er með:', 'playList': 'Spilunarlisti', 'moreMusic': 'Meiri tónlist', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'klst.', // 小时单位 @@ -856,7 +944,30 @@ const Map isIS = { "bicycling": 'Hjólreiðar', "tsransit": 'Almenningssamgöngur', - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Veldu leiðsögn', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Nota Amap leiðsögn', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Nota Baidu Maps leiðsögn', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Nota Google Maps leiðsögn', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Nota Apple Maps leiðsögn', + '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', + 'cannotPlaySong': 'Get ekki spilað lag', + 'openMapError': 'Villa við opnun korts', + 'pleaseInstallAmapApp': 'Settu upp Amap appið fyrst', + 'pleaseInstallBaiduMapApp': 'Settu upp Baidu Maps appið fyrst', + 'appleMapStartFailed': 'Apple Maps ræstist ekki', + 'appleMapUnavailable': 'Apple Maps er ekki tiltækt', + 'openAppleMapError': 'Villa við opnun Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Fyrirspurn um veðurskilyrði:', 'highest': 'Hæst', 'lowest': 'Lægst', @@ -885,19 +996,9 @@ const Map isIS = { "thursday": "Fim", "friday": "Fös", "saturday": "Lau", - "sunday": "Sun", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", + "sunday": 'Sun', - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sólskin", "partlyCloudy": "Skýjað með köflum", "partlySunny": "Sól með köflum", @@ -918,7 +1019,139 @@ const Map isIS = { "haze": "Móða", "strongWind": "Mikill vindur", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Myndþýðing", + "textTranslation": "Textaþýðing", + + // 翻译模块 - 主页 + "translationHistory": "Þýðingasaga", + "enableRecording": "Virkja upptöku", + "viewAudioFiles": "Skoða hljóðskrár", + "headsetUser": "Notandi heyrnartóla", + "phoneUser": "Notandi síma", + "selectSourceLanguage": "Veldu upprunamál", + "selectTargetLanguage": "Veldu markmál", + "me": "Ég", + "counterPart": "Viðmælandi", + "bluetoothCallStateError": + "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": "Tókst ekki að greina tungumál", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Slökkva á fljótandi glugga', + 'enableFloatingWindow': 'Virkja fljótandi glugga', + 'permissionTip': 'Heimildaábending', + 'micPermissionRequiredForRecording': 'Hljóðnemaheimild þarf til upptöku', + 'deleteTranslationRecordError': 'Villa við eyðingu þýðingarfærslu: @error', + "translationFailed": "Þýðing mistókst", + "translating": "Þýði", + "translate": "Þýða", + "pleaseInputText": "Vinsamlegast sláðu inn texta", + "inputTextToTranslate": "Vinsamlegast sláðu inn texta til að þýða", + "textTooLong": "Texti er of langur, hámark 5000 stafir", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Engin saga ennþá", + "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ð.", + "unknownLanguage": "Óþekkt tungumál", + "deleteSessionRecord": "Eyða lotuupptöku", + "deleteSessionConfirm": + "Ertu viss um að þú viljir eyða öllum þýðingarupptökum fyrir þessa lotu? Ekki er hægt að afturkalla þessa aðgerð.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Myndvinnsla eða þýðing mistókst. Reyndu aftur.\nVilla: {error}", + "imageTooLarge": 'Myndstærð fer yfir 4 MB takmörkun', + "imageTooLargeHint": + 'Myndstærð fer yfir 4 MB. Minnkaðu gæði eða stærð og reyndu aftur', + "emptyTranslationResult": "Myndþýðingar-API skilaði tómri niðurstöðu", + "imageTranslationFailedTryLater": + "Myndþýðing mistókst. Netvandamál eða takmörk á beiðnum. Reyndu síðar", + "imageTranslationApiException": + "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": 'Upprunaleg mynd', + "sourceLanguage": 'Upprunatungumál', + "targetLanguage": 'Marktungumál', + "translationTime": "Þýðingartími", + "shareInDevelopment": 'Deilieiginleiki í þróun', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Þýða hljóðskrár", + "noAudioFiles": "Engar hljóðskrár ennþá", + "calculating": "Reiknar...", + "playing": "Spilar...", + "paused": "Í pásu", + "clickToPlay": "Smelltu til að spila", + "rename": "Endurnefna", + "smartTranscription": "Snjöll umritun", + "renameAudioFile": "Endurnefna hljóðskrá", + "enterNewFileName": "Vinsamlegast sláðu inn nýtt skráarheiti", + + // 翻译模块 - 翻译详情 + "originalRecord": "Upprunaleg upptaka", + "recordSummary": "Samantekt upptöku", + "clickToGenerateSummary": + "Smelltu á hnappinn hér að neðan til að búa til samantekt lotu", + "summaryContent": "Innihald samantektar", + "copied": "Afritað", + "summaryCopiledToClipboard": "Samantekt afrituð á klippiborð", + "extractSummary": "Dragðu út samantekt", + "summaryGenerated": "Samantekt búin til", + "generating": "Býr til...", + "regenerate": "Búa til aftur", + "summaryTimeoutMessage": + "Tími beiðni um samantektargenerun rann út, gæti verið vegna netvandamála eða upptekins netþjóns.", + "deleteTranslationRecord": "Eyða þýðingarupptöku", + "deleteTranslationConfirm": + "Ertu viss um að þú viljir eyða þessari þýðingarupptöku? Ekki er hægt að afturkalla þessa aðgerð.", + "originalText": "Upprunalegur texti", + "translatedText": "Þýddur texti", + "sessionSummary": "Samantekt lotu", + "cannotShare": "Ekki hægt að deila", + "generateSummaryFirst": "Vinsamlegast búðu til samantekt fyrst", + "translationSessionRecord": "Upptaka þýðingarlotu", + + // 个人资料模块 "editProfile": "Breyta persónuupplýsingum", "avatar": "Prófílmynd", "nickname": "Gælunafn", @@ -932,10 +1165,8 @@ const Map isIS = { 'deleteAccount': 'Eyða reikningi', 'deleteAccountTips': 'Ertu viss um að þú viljir eyða reikningnum þínum varanlega? Ekki er hægt að afturkalla þessa aðgerð.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Hreinsa skyndiminni', + 'cleanTips': 'Ertu viss um að þú viljir hreinsa persónulegt skyndiminni?', 'networkConnectionFailed': 'Netkerfistenging mistókst, vinsamlegast athugaðu netkerfisstillingar og reyndu aftur', 'serverTemporarilyUnavailable': @@ -954,10 +1185,6 @@ const Map isIS = { 'Netkerfistenging mistókst, vinsamlegast athugaðu netkerfisstillingar', 'serverInternalErrorRetryLater': 'Innri netþjónsvilla, vinsamlegast reyndu aftur síðar', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Myndþjöppun mistókst', 'avatarUpdateFailed': 'Uppfærsla prófílmyndar mistókst', 'usernameCannotBeEmpty': 'Notandanafn má ekki vera autt', @@ -969,8 +1196,6 @@ const Map isIS = { 'accountPermanentlyDeleted': 'Reikningi hefur verið eytt varanlega', 'deleteAccountFailedRetry': 'Eyðing reiknings mistókst, vinsamlegast reyndu aftur', - - // 账号服务相关 'clearUserDataFailed': 'Ekki tókst að hreinsa notandagögn', // 清理用户数据失败 'deleteUserDataFailed': 'Ekki tókst að eyða notandagögnum', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Útskráning þriðja aðila tókst', // 第三方登录退出成功 @@ -983,29 +1208,33 @@ const Map isIS = { 'accountServiceInitialized': 'Reikningsþjónusta frumstillt', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Geymsla', + 'meetingStoragePermissionExplanation': + 'Við þurfum aðgang að geymsluheimildum svo þú getir valið og hlaðið upp hljóðskrám.', + 'meetingStoragePermissionPermanentDenial': + 'Þú 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', - //'bluetooth': '蓝牙', - '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', 'phonePermissionDesc': 'Notað fyrir símtalsaðgerð', 'smsPermissionDesc': 'Notað fyrir SMS sendingaraðgerð', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Notað til að setja nákvæmar viðvaranir til að tryggja að áminningar birtist á réttum tíma', 'calendarWritePermissionDesc': 'Notað til að búa til dagbókarviðburði og áminningar', 'calendarFullAccessPermissionDesc': @@ -1023,80 +1252,91 @@ 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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Tenging við Bluetooth-tæki krefst Bluetooth-tengingarheimildar', + 'notificationPermissionDesc': 'Notað til að senda tilkynningarskilaboð', '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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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', + + // 版本更新 'newVersionFound': 'Ný útgáfa fannst', // 版本更新对话框标题 'remindLater': 'Minn mig á síðar', // 稍后提醒按钮 'updateNow': 'Uppfæra núna', // 立即更新按钮 @@ -1107,253 +1347,7 @@ const Map isIS = { 'updateErrorRetry': 'Villa kom upp við uppfærslu, vinsamlegast reyndu aftur síðar', // 更新错误重试提示 - //国家列表 - "邮箱": "Tölvupóstur", - "中国": "Kína", - "美国": "Bandaríkin", - "加拿大": "Kanada", - "俄罗斯": "Rússland", - "英国": "Bretland", - "德国": "Þýskaland", - "意大利": "Ítalía", - "法国": "Frakkland", - "西班牙": "Spánn", - "南非": "Suður-Afríka", - "沙特阿拉伯": "Sádi-Arabía", - "土耳其": "Tyrkland", - "日本": "Japan", - "韩国": "Suður-Kórea", - "新加坡": "Singapúr", - "马来西亚": "Malasía", - "泰国": "Taíland", - "越南": "Víetnam", - "印度": "Indland", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippseyjar", - "印度尼西亚": "Indónesía", - "阿联酋": "Sameinuðu arabísku furstadæmin", - "墨西哥": "Mexíkó", - "巴西": "Brasilía", - "阿根廷": "Argentína", - "澳大利亚": "Ástralía", - "新西兰": "Nýja-Sjáland", - "中国香港": "Hong Kong (Kína)", - "中国澳门": "Makaó (Kína)", - "中国台湾": "Taívan (Kína)", - "埃及": "Egyptaland", - "希腊": "Grikkland", - "荷兰": "Holland", - "比利时": "Belgía", - "匈牙利": "Ungverjaland", - "罗马尼亚": "Rúmenía", - "瑞士": "Sviss", - "奥地利": "Austurríki", - "丹麦": "Danmörk", - "瑞典": "Svíþjóð", - "挪威": "Noregur", - "波兰": "Pólland", - "秘鲁": "Perú", - "智利": "Chile", - "哥伦比亚": "Kólumbía", - "委内瑞拉": "Venesúela", - "葡萄牙": "Portúgal", - "卢森堡": "Lúxemborg", - "爱尔兰": "Írland", - "冰岛": "Ísland", - "阿尔巴尼亚": "Albanía", - "马耳他": "Malta", - "塞浦路斯": "Kýpur", - "芬兰": "Finnland", - "保加利亚": "Búlgaría", - "立陶宛": "Litháen", - "拉脱维亚": "Lettland", - "爱沙尼亚": "Eistland", - "乌克兰": "Úkraína", - "塞尔维亚": "Serbía", - "克罗地亚": "Króatía", - "斯洛文尼亚": "Slóvenía", - "捷克": "Tékkland", - "斯洛伐克": "Slóvakía", - "危地马拉": "Gvatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Hondúras", - "尼加拉瓜": "Níkaragva", - "哥斯达黎加": "Kosta Ríka", - "巴拿马": "Panama", - "海地": "Haítí", - "玻利维亚": "Bólivía", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvæ", - "乌拉圭": "Úrúgvæ", - "摩洛哥": "Marokkó", - "阿尔及利亚": "Alsír", - "突尼斯": "Túnis", - "尼日利亚": "Nígería", - "加纳": "Gana", - "埃塞俄比亚": "Eþíópía", - "肯尼亚": "Kenía", - "坦桑尼亚": "Tansanía", - "乌干达": "Úganda", - "孟加拉国": "Bangladess", - "以色列": "Ísrael", - "黎巴嫩": "Líbanon", - "约旦": "Jórdanía", - "伊拉克": "Írak", - "科威特": "Kúveit", - "巴林": "Barein", - "卡塔尔": "Katar", - "阿曼": "Óman", - "阿富汗": "Afganistan", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mjanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongólía", - "柬埔寨": "Kambódía", - "老挝": "Laos", - "文莱": "Brúnei", - "东帝汶": "Austur-Tímor", - "斐济": "Fídjí", - "所罗门群岛": "Salómonseyjar", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Þýðingasaga", - "enableRecording": "Virkja upptöku", - "viewAudioFiles": "Skoða hljóðskrár", - "headsetUser": "Notandi heyrnartóla", - "phoneUser": "Notandi síma", - "selectSourceLanguage": "Veldu upprunamál", - "selectTargetLanguage": "Veldu markmál", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Engin saga ennþá", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Hreinsa sögu", - "clearHistoryConfirm": - "Ertu viss um að þú viljir hreinsa alla þýðingasögu? Ekki er hægt að afturkalla þessa aðgerð.", - "unknownLanguage": "Óþekkt tungumál", - "deleteSessionRecord": "Eyða lotuupptöku", - "deleteSessionConfirm": - "Ertu viss um að þú viljir eyða öllum þýðingarupptökum fyrir þessa lotu? Ekki er hægt að afturkalla þessa aðgerð.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Þýða hljóðskrár", - "noAudioFiles": "Engar hljóðskrár ennþá", - "calculating": "Reiknar...", - "playing": "Spilar...", - "paused": "Í pásu", - "clickToPlay": "Smelltu til að spila", - "rename": "Endurnefna", - "smartTranscription": "Snjöll umritun", - "renameAudioFile": "Endurnefna hljóðskrá", - "enterNewFileName": "Vinsamlegast sláðu inn nýtt skráarheiti", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Upprunaleg upptaka", - "recordSummary": "Samantekt upptöku", - "clickToGenerateSummary": - "Smelltu á hnappinn hér að neðan til að búa til samantekt lotu", - "summaryContent": "Innihald samantektar", - "copied": "Afritað", - "summaryCopiledToClipboard": "Samantekt afrituð á klippiborð", - "extractSummary": "Dragðu út samantekt", - "summaryGenerated": "Samantekt búin til", - "generating": "Býr til...", - "regenerate": "Búa til aftur", - "summaryTimeoutMessage": - "Tími beiðni um samantektargenerun rann út, gæti verið vegna netvandamála eða upptekins netþjóns.", - "deleteTranslationRecord": "Eyða þýðingarupptöku", - "deleteTranslationConfirm": - "Ertu viss um að þú viljir eyða þessari þýðingarupptöku? Ekki er hægt að afturkalla þessa aðgerð.", - "originalText": "Upprunalegur texti", - "translatedText": "Þýddur texti", - "sessionSummary": "Samantekt lotu", - "cannotShare": "Ekki hægt að deila", - "generateSummaryFirst": "Vinsamlegast búðu til samantekt fyrst", - "translationSessionRecord": "Upptaka þýðingarlotu", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pörun tækis", "connectYourDeepSoundHeadset": "Tengdu Voitrans heyrnartólin þín", "bind": "Binda", @@ -1362,14 +1356,11 @@ const Map isIS = { "autoInputCode": "Sjálfvirk innsláttur kóða", "skipBinding": "Sleppa bindingu", "rescan": "Skanna aftur", - "verifyingDevice": "Staðfestir tæki...", "confirmBinding": "Staðfesta bindingu", "associatingDevice": "Tengir tæki...", "goToBluetoothSettings": "Fara í Bluetooth-stillingar", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Tilbúið til pörunar", "preparingPairingEnvironment": "Undirbýr pörunarumhverfi...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1369,6 @@ const Map isIS = { "establishingDeviceAssociation": "Stofna tækjasamband...", "waitingCompletePairing": "Vinsamlegast bíddu, lýkur pörun...", "pairingSuccessRedirecting": "Pörun tókst! Vísar á aðalsíðu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Gakktu úr skugga um að þú sért tengd(ur) við Voitrans tæki", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1380,12 @@ const Map isIS = { "authorizationFailedCheckCode": "Heimildun mistókst, athugaðu hvort heimildarkóðinn sé réttur", "pairingFailedRetry": "Pörun mistókst, vinsamlegast reyndu aftur", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vinsamlegast virkjaðu Bluetooth', 'deviceDisconnected': 'Tæki aftengt', 'readyToStartPairing': 'Tilbúið til að hefja pörun', 'checkingEnvironment': 'Athuga umhverfi...', 'ensureHeadsetOnAndPairingMode': 'Gakktu úr skugga um að heyrnartólin séu á og í pörunarham', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Stofna örugga tengingu...', 'needManualBindingAuthCode': 'Handvirkur bindingarheimildarkóði er nauðsynlegur...', @@ -1427,21 +1409,30 @@ const Map isIS = { 'bleConnectionFailed': 'BLE tenging mistókst', 'deviceAuthorizationFailedCheckCode': 'Tækisheimildun mistókst, athugaðu heimildarkóðann', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Endurgjöf notenda", 'feedbackInfo': 'Gefðu endurgjöf eða tillögur', 'feedbackDescription': 'Lýstu vandamálinu sem þú lendir í eða tillögu þinni', @@ -1468,13 +1459,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", @@ -1482,7 +1474,59 @@ const Map isIS = { "removeEarbudsEnsureBattery": "Taktu báðar heyrnartólin úr og gakktu úr skugga um að rafhlaðan á báðum sé yfir 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Ný útgáfa @version fannst', + '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?', + 'otaPairLater': 'Para síðar', + 'otaPairNow': 'Para núna', + 'okConfirm': 'OK', + + // 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', + 'otaDeviceInfoUnavailableTitle': 'Tækjaupplýsingar ekki tiltækar', + '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', + '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', + 'otaBatteryCheckFailed': 'Rafhlöðuathugun mistókst', + + // OTA升级模块 - 升级状态 + '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...', + 'otaDownloadFailedCheckNetwork': 'Niðurhal mistókst, athugaðu nettengingu', + 'otaDownloadFailed': 'Niðurhal mistókst', + 'otaPreparingConnection': 'Undirbý tengingu...', + 'otaConnectingDevice': 'Tengi við tæki...', + 'otaUpgradeStarted': 'OTA-uppfærsla hafin...', + 'otaUpgradeProgressWithPercent': 'Framvinda uppfærslu: @percent%', + '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', + 'otaDeviceDisconnected': 'Tæki aftengt', + 'otaDeviceConnected': 'Tæki tengt', + + // 音乐模块 "noMusic": "Engin tónlist", // 暂无音乐 "noPlayingMusic": "Engin tónlist í spilun", // 暂无播放音乐 "unknownSong": "Óþekkt lag", // 未知歌曲 @@ -1530,22 +1574,122 @@ const Map isIS = { "波斯语": "Persneska", "斯瓦希里语": "Svahílí", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "Tölvupóstur", + "中国": "Kína", + "美国": "Bandaríkin", + "加拿大": "Kanada", + "俄罗斯": "Rússland", + "英国": "Bretland", + "德国": "Þýskaland", + "意大利": "Ítalía", + "法国": "Frakkland", + "西班牙": "Spánn", + "南非": "Suður-Afríka", + "沙特阿拉伯": "Sádi-Arabía", + "土耳其": "Tyrkland", + "日本": 'Japan', + "韩国": "Suður-Kórea", + "新加坡": "Singapúr", + "马来西亚": "Malasía", + "泰国": "Taíland", + "越南": "Víetnam", + "印度": "Indland", + "巴基斯坦": 'Pakistan', + "菲律宾": "Filippseyjar", + "印度尼西亚": "Indónesía", + "阿联酋": "Sameinuðu arabísku furstadæmin", + "墨西哥": "Mexíkó", + "巴西": "Brasilía", + "阿根廷": "Argentína", + "澳大利亚": "Ástralía", + "新西兰": "Nýja-Sjáland", + "中国香港": "Hong Kong (Kína)", + "中国澳门": "Makaó (Kína)", + "中国台湾": "Taívan (Kína)", + "埃及": "Egyptaland", + "希腊": "Grikkland", + "荷兰": "Holland", + "比利时": "Belgía", + "匈牙利": "Ungverjaland", + "罗马尼亚": "Rúmenía", + "瑞士": "Sviss", + "奥地利": "Austurríki", + "丹麦": "Danmörk", + "瑞典": "Svíþjóð", + "挪威": "Noregur", + "波兰": "Pólland", + "秘鲁": "Perú", + "智利": 'Síle', + "哥伦比亚": "Kólumbía", + "委内瑞拉": "Venesúela", + "葡萄牙": "Portúgal", + "卢森堡": "Lúxemborg", + "爱尔兰": "Írland", + "冰岛": "Ísland", + "阿尔巴尼亚": "Albanía", + "马耳他": 'Malta', + "塞浦路斯": "Kýpur", + "芬兰": "Finnland", + "保加利亚": "Búlgaría", + "立陶宛": "Litháen", + "拉脱维亚": "Lettland", + "爱沙尼亚": "Eistland", + "乌克兰": "Úkraína", + "塞尔维亚": "Serbía", + "克罗地亚": "Króatía", + "斯洛文尼亚": "Slóvenía", + "捷克": "Tékkland", + "斯洛伐克": "Slóvakía", + "危地马拉": "Gvatemala", + "萨尔瓦多": 'El Salvador', + "洪都拉斯": "Hondúras", + "尼加拉瓜": "Níkaragva", + "哥斯达黎加": "Kosta Ríka", + "巴拿马": 'Panama', + "海地": "Haítí", + "玻利维亚": "Bólivía", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvæ", + "乌拉圭": "Úrúgvæ", + "摩洛哥": "Marokkó", + "阿尔及利亚": "Alsír", + "突尼斯": "Túnis", + "尼日利亚": "Nígería", + "加纳": "Gana", + "埃塞俄比亚": "Eþíópía", + "肯尼亚": "Kenía", + "坦桑尼亚": "Tansanía", + "乌干达": "Úganda", + "孟加拉国": "Bangladess", + "以色列": "Ísrael", + "黎巴嫩": "Líbanon", + "约旦": "Jórdanía", + "伊拉克": "Írak", + "科威特": "Kúveit", + "巴林": "Barein", + "卡塔尔": "Katar", + "阿曼": "Óman", + "阿富汗": "Afganistan", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mjanmar", + "尼泊尔": 'Nepal', + "蒙古": "Mongólía", + "柬埔寨": "Kambódía", + "老挝": 'Laos', + "文莱": "Brúnei", + "东帝汶": "Austur-Tímor", + "斐济": "Fídjí", + "所罗门群岛": "Salómonseyjar", + "刚果民主共和国": 'Lýðveldlýðrið Kongó', + "安哥拉": 'Angóla', + "苏丹": 'Súdam', + "马尔代夫": 'Maldíveyjur', + "不丹": 'Bútan', + "摩纳哥": 'Mónakó', + "圣马力诺": 'San Marínó', + "牙买加": 'Jamaíka', + "巴哈马": 'Bahamaeyjar', + "巴布亚新几内亚": 'Papúa Njá Gínea', + "萨摩亚": 'Samóa', }; diff --git a/lib/core/translations/language/it_it.dart b/lib/core/translations/language/it_it.dart index 9709ff635..80316f580 100644 --- a/lib/core/translations/language/it_it.dart +++ b/lib/core/translations/language/it_it.dart @@ -1,4 +1,4 @@ -//意大利语 +// 意大利-意大利语 const Map itIT = { // 通用 'continue': 'Continua', @@ -19,17 +19,22 @@ const Map itIT = { "unknownError": "Errore sconosciuto", "asrConnectionFailed": "Connessione al servizio di riconoscimento vocale non riuscita. Controlla la rete o riprova più tardi.", + "justNow": "Adesso", + "minutesAgo": "@minutes minuti fa", + "yesterday": "Ieri", + "daysAgo": "@days giorni fa", + "hoursAgo": "@hours ore fa", // 启动页 "slogan": "Connettere il mondo, oltre il suono", "sloganInfo": "Esperto vocale AI · Sempre e ovunque", // 底部导航 - "home": "Home", + "home": 'Home', "explore": "Esplora", "settings": "Impostazioni", - // 语言 + // 语言列表 "followingSystem": "Segui il sistema", "chinese": "Cinese", "english": "Inglese", @@ -44,7 +49,7 @@ const Map itIT = { "russian": "Russo", "vietnamese": "Vietnamita", "italian": "Italiano", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonesiano", "thai": "Tailandese", "malay": "Malese", @@ -73,7 +78,7 @@ const Map itIT = { "arabic": "Arabo", "persian": "Perso", - // 登录页 + // 登录模块 "welcome": "Benvenuto", "loginTips": "Accedi o registrati con il tuo numero di telefono o e-mail", "accountNumber": "Numero di telefono o e-mail", @@ -101,13 +106,9 @@ const Map itIT = { "resendVerificationCode": "Invia nuovamente il codice di verifica", "login": "Accedi", "usePasswordLogin": "Accedi con password", - - // 隐私政策弹窗 "loginDeclaration": "Dichiarazione di Voitrans", // Voitrans 声明 "welcomeToThisApp": "Benvenuto in Voitrans, si prega di leggere attentamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", cliccando su 'Accetta e entra' dichiari di aver letto e accettato integralmente i suddetti accordi. Cliccando su 'Rifiuta' uscirai dall'applicazione.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Rifiuta", // 不同意 @@ -171,7 +172,30 @@ const Map itIT = { 'checkConnectionStatusFailed': 'Verifica dello stato della connessione fallita', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inizializzazione Bluetooth fallita: @error', + 'needBluetoothAndLocationPermission': + 'Sono necessari i permessi Bluetooth e posizione per scansionare i dispositivi', + 'permissionRequestFailedWithError': 'Richiesta permessi fallita: @error', + 'needPermission': 'Permesso necessario', + 'blePermissionDialogContent': + 'Questa app necessita dei permessi Bluetooth e posizione per scansionare i dispositivi. Attivarli nelle Impostazioni.', + 'needEnableBluetooth': 'Attivare il Bluetooth', + 'enableBluetoothDialogContent': + 'Attivare il Bluetooth per scansionare e connettere i dispositivi.', + 'bleScanFailedWithError': 'Scansione fallita: @error', + 'bleConnectionSuccess': 'Connessione riuscita', + 'bleConnectedToDevice': 'Connesso a @device', + 'bleConnectionFailedWithError': 'Connessione fallita: @error', + 'bleDisconnected': 'Disconnesso', + 'bleDeviceDisconnected': 'Dispositivo disconnesso', + 'bleDisconnectFailedWithError': 'Disconnessione fallita: @error', + 'signalStrong': 'Forte', + 'signalMedium': 'Medio', + 'signalWeak': 'Debole', + 'signalVeryWeak': 'Molto debole', + + // 发现页 "searchAi": "Cerca funzioni AI...", "exploreSlogan": "Auricolari intelligenti, possibilità infinite", "exploreSlogan1": "Compagno intelligente, possibilità infinite", @@ -195,118 +219,161 @@ const Map itIT = { "usageStats": "Statistiche di utilizzo", "usageStatsInfo": "Visualizza le statistiche di utilizzo dell'applicazione", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Traduzione Base 100', - 'trans_002_name': 'Traduzione Base 500', - 'trans_003_name': 'Traduzione Base 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Include 100 traduzioni (voce/testo).', - 'trans_002_desc': 'Include 500 traduzioni (voce/testo).', - 'trans_003_desc': 'Include 1000 traduzioni (voce/testo).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + "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': 'Pacchetti disponibili', + 'remainingQuota': 'Quota residua', + 'totalQuota': 'Quota totale', + 'remaining': 'Rimanente', + 'featureDescription': 'Descrizione funzionalità', + 'paymentSuccess': 'Pagamento riuscito', + 'paymentFailed': 'Pagamento non riuscito', + 'gotIt': 'Capito', + 'paymentFailedTryAgain': 'Pagamento non riuscito. Riprova.', + 'selectPaymentMethod': 'Seleziona il metodo di pagamento', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': "Impossibile creare l'ordine WeChat", + 'alipayOrderCreateFailed': "Impossibile creare l'ordine Alipay", + 'appleOrderCreateFailed': "Impossibile creare l'ordine Apple", + 'googleOrderCreateFailed': "Impossibile creare l'ordine Google", + 'paypalOrderCreateFailed': "Impossibile creare l'ordine PayPal", + 'paymentException': 'Eccezione di pagamento', + 'paymentLaunchFailed': 'Avvio del pagamento non riuscito', + 'paymentExceptionWithError': 'Eccezione di pagamento: @error', + 'paymentProcessingCheckLater': + 'Il tuo ordine è in fase di elaborazione. Controlla più tardi.', + 'paymentResultQueryException': + 'Impossibile interrogare il risultato del pagamento: @error', + 'orderConfirmedQuotaRefreshed': + 'Ordine confermato. La tua quota è stata aggiornata.', + 'paymentCompletedConfirming': 'Pagamento completato. Conferma in corso…', + 'paymentCancelled': 'Pagamento annullato', + 'paypalOpenedCompleteInBrowser': + 'PayPal aperto. Completa il pagamento nel tuo browser.', + 'paypalOpenFailed': 'Impossibile aprire la pagina di pagamento PayPal', + 'paymentTestTitle': 'Test di pagamento', + 'paymentTestOrderInfo': 'Informazioni ordine di prova', + 'paymentTestProductId': 'ID prodotto', + 'paymentTestProductDescription': 'Descrizione del prodotto', + 'paymentTestWechatDescription': 'Test di pagamento WeChat Pay', + 'paymentTestAlipayDescription': 'Test di pagamento Alipay', + 'paymentTestAmount': 'Importo', + 'paymentTestSelectAmount': "Seleziona l'importo di prova", + 'paying': 'Pagamento in corso...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stato del pagamento', + 'errorInfoWithMessage': 'Errore: @message', + 'retest': 'Ripeti il test', + 'paymentTestInstructionsTitle': 'Istruzioni', + 'paymentTestInstructionsContent': + "1. Seleziona un importo di prova (consigliato: ¥0,01)\n2. Clicca il pulsante di pagamento per iniziare\n3. Completa il pagamento nell'app di pagamento\n4. Torna per verificare il risultato", + 'startingWechatPayment': 'Avvio di WeChat Pay...', + 'startingAlipayPayment': 'Avvio di Alipay...', + 'wechatPaymentSuccess': 'Pagamento WeChat Pay riuscito!', + 'wechatPaymentFailed': 'Pagamento WeChat Pay non riuscito', + 'wechatPaymentLaunchFailed': 'Impossibile avviare WeChat Pay', + 'cannotLaunchWechatPayment': 'Impossibile avviare WeChat Pay', + 'wechatPaymentException': 'Eccezione WeChat Pay', + 'wechatPaymentTestCompleted': 'Test di pagamento WeChat Pay completato', + 'alipayPaymentSuccess': 'Pagamento Alipay riuscito!', + 'alipayPaymentFailed': 'Pagamento Alipay non riuscito', + 'alipayPaymentLaunchFailed': 'Impossibile avviare Alipay', + 'cannotLaunchAlipayPayment': 'Impossibile avviare Alipay', + 'alipayPaymentException': 'Eccezione Alipay', + "insufficientIntegral": "Punti insufficienti", + "insufficientBalanceDesc": + 'Saldo insufficiente, vai alla pagina di ricarica corrispondente per ricaricare.', + "recharge": 'Vai alla ricarica', + "aiMemberExpiredDesc": + "Abbonamento AI scaduto, vai alla pagina di ricarica dell'abbonamento per rinnovare.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musica e consigli', + 'navigationAndRoutes': 'Navigazione e percorsi', + 'nearbySearch': 'Ricerca nelle vicinanze', + 'newsInformation': 'Notizie', + 'communicationAssistant': 'Assistente di comunicazione', + 'aiHeaderDesc1': + 'Quota conversazioni più ampia, più chiamate agli strumenti, contesto esteso.', + 'aiHeaderDesc2': + "Adatto a domande e risposte, riepilogo, analisi ed esecuzione di attività.", + 'musicSearchPlaybackControl': + 'Ricerca nella libreria musicale e controllo riproduzione', + 'smartPlaylistAndSimilarRecommendations': + 'Playlist intelligente e consigli di brani simili', + 'routePlanningAndCongestionAvoidance': + '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': + 'Messaggi modello e promemoria programmati', + 'aiDisclaimer': + 'Le funzionalità dipendono dalle autorizzazioni del dispositivo, dalla disponibilità del servizio e dalle condizioni di rete.', - // 同传/翻译商品页描述 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Trascrizione in tempo reale', + 'sceneLexicon': 'Glossario per scenario', + 'subtitleDisplay': 'Sottotitoli', 'transHeaderDesc1': 'Interpretazione simultanea e traduzione di testo in tempo reale, con voce a bassa latenza.', 'transHeaderDesc2': 'Adatto a viaggi, affari, discorsi e insegnamento.', @@ -323,30 +390,27 @@ const Map itIT = { 'transDisclaimer': 'Le prestazioni della traduzione dipendono dal microfono, dalla latenza di rete e dal rumore ambientale.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - '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.', + // 商品模块 - 会议商品页 + 'meetingRecording': 'Registrazione riunione', + 'transcriptionAndSummary': 'Trascrizione e riepilogo', + 'keywordSearch': 'Ricerca per parole chiave', + 'collaborationSharing': 'Collaborazione e condivisione', + 'meetingHeaderDesc1': + "Registrazione audio, trascrizione, ricerca per parole chiave e riepilogo automatico per aumentare l'efficienza delle riunioni.", + 'meetingHeaderDesc2': + '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': + 'Usa in ambienti silenziosi; le prestazioni dipendono da microfono e rete.', - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Panoramica dei vantaggi', 'higherQuota': 'Quota di utilizzo più alta', 'lowerUnitPrice': 'Prezzo unitario più basso', @@ -362,45 +426,70 @@ const Map itIT = { 'vipDisclaimer': 'I benefici effettivi dipendono dai dettagli del pacchetto e possono cambiare con le versioni.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Base 100', + 'ai_002_name': 'AI Base 500', + 'ai_003_name': 'AI Base 1000', + 'meet_001_name': 'Riunione Base 100', + 'meet_002_name': 'Riunione Base 500', + 'meet_003_name': 'Riunione Base 1000', + 'trans_001_name': 'Traduzione Base 100', + 'trans_002_name': 'Traduzione Base 500', + 'trans_003_name': 'Traduzione Base 1000', + 'ai_001_desc': 'Include 100 utilizzi. Accesso alle funzionalità AI principali.', + 'ai_002_desc': 'Include 500 utilizzi. Accesso alle funzionalità AI principali.', + 'ai_003_desc': 'Include 1000 utilizzi. Accesso alle funzionalità AI principali.', + '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).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Fornita da: VoiTrans', + 'iapCustomerServiceQQLabel': 'Servizio clienti IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "Salta", - '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, ", - // AI 引导步骤 - '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": "Avanti", + "sayLilyHint": "Di’ alla mic: Lily Lily", + "imHere": "Eccomi~", + "guideWelcomeWakeAI": "Benvenuto in Voitrans! Prima, sveglia la tua AI Lily.", + "aiReplyCompleted": "Lily ha finito di rispondere!", + "aiThinking": "Lily sta pensando...", + "guideAwakenSuccess": "Ottimo! Lily e’ sveglia, chiedi il suo aiuto.", + "confirmInput": "Conferma inserimento", + "guideClickSendPrefix": "Tocca invia, ", + "guideWeatherStart": "Di’ a Lily: Che tempo fa oggi?", + "guideWeatherInput": "Che tempo fa oggi?", + "guideWeatherSend": "Lily riportera’ il meteo in tempo reale", + "guideWeatherEnd": "Lily puo’ riportare il meteo in diretta, prova altri comandi", + "guideMusicStart": "Di’ a Lily: Metti della musica rock", + "guideMusicInput": "Metti della musica rock", + "guideMusicSend": "Lily trovera’ della musica per te", + "guideMusicEnd": "Lily ha trovato la musica, prova altri comandi", + "guideNavStart": "Di’ a Lily: Naviga verso l’aeroporto di Shenzhen", + "guideNavInput": "Naviga verso l’aeroporto di Shenzhen", + "guideNavSend": "Lily pianifichera’ il percorso", + '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", 'edit': 'Modifica', 'delete': 'Elimina', @@ -412,262 +501,281 @@ const Map itIT = { 'recordingDetails': 'Dettagli registrazione', 'aiSummary': 'Riepilogo AI', 'meetingTranscript': 'Trascrizione riunione', - - // Meeting模块 - 导航和基础功能 - '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', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Termina senza salvare', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Continua a registrare in background', // 后台继续录音 - 'meetingRecordStopTimeout': 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Continua a registrare in background', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Tempo scaduto durante l\'arresto della registrazione. Riprova.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Impossibile arrestare la registrazione. Riprova.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Impossibile salvare la registrazione. Riprova.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Registrazione in corso', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Registrazione in background. Tocca per tornare all\'app.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Mostra sopra altre app', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': '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', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Per mostrare i risultati della traduzione durante le chiamate o la traduzione audio/video, ci serve l\'autorizzazione di overlay. In questo modo puoi vedere le traduzioni in tempo reale mentre usi altre app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + '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': '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': 'Riepiloga di nuovo', + 'dateAndTime': 'Data e ora', + 'location': 'Luogo', + 'attendees': 'Partecipanti', + 'inputLocation': 'Inserisci luogo', + 'inputAttendees': 'Inserisci partecipanti', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Seleziona modello di riepilogo', + 'useThisTemplate': 'Usa questo modello', + 'lastUsed': 'Ultimo usato', + 'create': 'Crea', + 'templateDetails': 'Dettagli del modello', + 'tag': 'Etichetta', + 'description': 'Descrizione', + 'template': 'Modello', + 'deleteTemplate': 'Elimina modello', + 'deleteTemplateConfirm': 'Sei sicuro di voler eliminare questo modello?', + 'editTemplate': 'Modifica modello', + 'createTemplate': 'Crea modello', + 'name': 'Nome', + 'templateContentHint': + 'Inserisci il contenuto del modello! Suggerimento: Clicca il pulsante IA qui sopra per generare rapidamente il contenuto del modello in base al nome e alla descrizione inseriti', + 'inputNameHint': 'Inserisci un nome', + 'inputDescHint': 'Inserisci una descrizione', + 'custom': 'Personalizzato', + 'pleaseEnter': 'Si prega di inserire', + 'viewAll': 'Vedi tutti', + 'recordingLanguage': 'Lingua di registrazione', + 'chineseSimplified': 'Cinese mandarino (semplificato)', + 'meetingGenerateNow': 'Genera ora', + 'keyEventsAnalyzed': 'Analizzati {count} eventi chiave.', + 'aiAnalysisDesc': + "L'analisi AI identifica gli eventi chiave nelle registrazioni, consentendoti di selezionare quelli importanti per la generazione AI.", + + // Meeting模块 - 文件操作 + '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': 'Condividi mappa mentale', + 'shareSuccess': 'Condivisione riuscita', + + // Meeting模块 - AI问答 + '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': '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': 'Nomina relatore corrente', + 'recentlyUsedNames': 'Nomi usati di recente', + 'applyToCurrentParagraph': 'Applica al paragrafo corrente', + 'totalTime': 'Tempo totale', + 'summarySpeakerWillBeUpdatedAutomatically': + 'I relatori nel riepilogo verranno aggiornati automaticamente', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sincronizza nel cloud', + 'syncToCloudTip': + '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', - - // 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', + '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': '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.', - - // Meeting模块 - 升级会员 - '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', - 'sixThousandMinutes': '6,000 minutes', - 'threeThousandMinutes': '3,000 minutes', - 'sixHundredMinutes': '600 minutes', - 'oneHundredTwentyMinutes': '120 minutes', - 'validityPeriod': '*Validity Period: ', + "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 minuti', + 'threeThousandMinutes': '3.000 minuti', + 'sixHundredMinutes': '600 minuti', + 'oneHundredTwentyMinutes': '120 minuti', + 'validityPeriod': '*Periodo di validità: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Applica a tutti i paragrafi di questo relatore', - 'summaryWillBeUpdatedAutomatically': - 'Il riepilogo verrà aggiornato automaticamente in base al modello', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', + "Attivato immediatamente dopo l'acquisto, valido per 2 anni dopo l'attivazione.", + 'purchase': 'Acquista', - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Lingua di registrazione', + 'cantonese': 'Cantonese', + 'sichuan': 'Dialetto del Sichuan', + 'shanghai': 'Dialetto di Shanghai', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Lingua sconosciuta', + 'analysisFailed': 'Analisi non riuscita, riprova più tardi', + 'transcriptionFailed': 'Trascrizione non riuscita, riprova più tardi', + 'summaryFailed': 'Riepilogo non riuscito, riprova più tardi', + 'summaryFailedShort': 'Riepilogo non riuscito', + 'transcriptionFailedShort': 'Trascrizione non riuscita', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Il lettore audio non è pronto, attendere', + 'playFailed': 'Riproduzione non riuscita', + 'audioFileNotFound': 'File audio non trovato', + 'fetchingAudio': 'Recupero audio dal cloud...', + 'playerLoadFailed': 'Caricamento del lettore audio non riuscito', // 设置页 "systemSettings": "Impostazioni di sistema", "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", @@ -711,46 +819,34 @@ const Map itIT = { "Aggiornamento della versione del firmware delle cuffie BLE", "deviceManagement": "Gestione dispositivi", "manageConnectedDevices": "Gestisci i dispositivi Bluetooth associati", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Hai già l\'ultima versione {version}', 'checkUpdateFailed': 'Controllo aggiornamenti fallito', 'networkErrorRetry': 'Errore di rete, riprova più tardi', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat vocale in tempo reale", "realtimeVoiceChatInfo": "Sperimenta la funzione di interazione vocale intelligente (anteprima della funzione)", "loading": "Caricamento...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Cancella cronologia chat", - "online": "Online", + "online": 'Online', "ttsSpeed": "Velocità della voce", "ttsSpeedDefaultHint": "Predefinito +25%", "inputMessage": "Inserisci messaggio...", @@ -776,22 +872,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Rispondere a domande e fornire informazioni\n\n' '• Traduzione vocale in tempo reale\n\n' @@ -811,18 +909,17 @@ const Map itIT = { 'startVoiceInput': 'Avvia input vocale', 'startPhoneCallMode': 'Avvia modalità chiamata, avvia input vocale', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Inserisci il tuo messaggio qui...', // 全屏编辑器输入提示 'characterCount': '{count} caratteri', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copia', 'copySuccess': 'Copiato con successo', 'report': 'Segnala', 'submitSuccess': 'Inviato con successo', 'submitFailed': 'Invio fallito', 'reportSubmitted': 'Segnalazione inviata, la elaboreremo il prima possibile', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dannoso/Non sicuro', 'pornographicVulgar': 'Pornografico/Volgare', 'misleadingAttack': 'Fuorviante/Attacco', @@ -833,17 +930,22 @@ const Map itIT = { 'other': 'Altro', 'reportDescriptionHint': 'Vogliamo sapere perché stai segnalando, puoi descrivere il problema che hai riscontrato.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generato da AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Chiamata strumento', + 'noResult': 'Nessun risultato', + 'noToolCallContentToCopy': + 'Nessun contenuto della chiamata strumento da copiare', + 'toolCallDetails': 'Dettagli chiamata strumento:', + 'toolCallContentCopied': 'Contenuto copiato negli appunti', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ecco alcuni brani musicali consigliati:', 'playList': 'Playlist', 'moreMusic': 'Altra musica', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ore', // 小时单位 @@ -858,7 +960,30 @@ const Map itIT = { "bicycling": "In bicicletta", "tsransit": "Trasporto pubblico", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Seleziona app di navigazione', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Naviga con Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Naviga con Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Naviga con Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Naviga con Apple Maps', + 'builtInNavigation': 'Navigazione integrata', + 'useBuiltInNavigation': 'Naviga con mappa integrata', + 'navigationStartFailed': 'Avvio navigazione fallito', + 'cannotPlayMusicListRetryLater': + 'Impossibile riprodurre la playlist, riprovare piu tardi', + 'cannotPlaySong': 'Impossibile riprodurre il brano', + 'openMapError': 'Errore durante l apertura della mappa', + 'pleaseInstallAmapApp': 'Installare prima l app Amap', + 'pleaseInstallBaiduMapApp': 'Installare prima l app Baidu Maps', + 'appleMapStartFailed': 'Avvio Apple Maps fallito', + 'appleMapUnavailable': 'Apple Maps non disponibile', + 'openAppleMapError': 'Errore durante l apertura di Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Interrogazione delle condizioni meteorologiche:', 'highest': 'Massima', 'lowest': 'Minima', @@ -888,18 +1013,8 @@ const Map itIT = { "friday": "Ven", "saturday": "Sab", "sunday": "Dom", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soleggiato", "partlyCloudy": "Poco nuvoloso", "partlySunny": "Parzialmente soleggiato", @@ -920,10 +1035,148 @@ const Map itIT = { "haze": "Foschia", "strongWind": "Vento forte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Traduzione immagine", + "textTranslation": "Traduzione testo", + + // 翻译模块 - 主页 + "translationHistory": "Cronologia traduzioni", + "enableRecording": "Abilita registrazione", + "viewAudioFiles": "Visualizza file audio", + "headsetUser": "Utente auricolari", + "phoneUser": "Utente telefono", + "selectSourceLanguage": "Seleziona lingua di origine", + "selectTargetLanguage": "Seleziona lingua di destinazione", + "me": "Io", + "counterPart": "Interlocutore", + "bluetoothCallStateError": + "Assicurati che le cuffie Bluetooth siano connesse al telefono e che una chiamata sia in corso", + "autoDetect": "Rilevamento automatico", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Rilevamento lingua non riuscito", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Disattiva finestra mobile', + 'enableFloatingWindow': 'Attiva finestra mobile', + 'permissionTip': 'Suggerimento permessi', + 'micPermissionRequiredForRecording': + 'Permesso microfono necessario per la registrazione', + 'deleteTranslationRecordError': + 'Errore durante l eliminazione del record di traduzione: @error', + "translationFailed": "Traduzione non riuscita", + "translating": "Traduzione in corso", + "translate": "Traduci", + "pleaseInputText": "Inserisci testo", + "inputTextToTranslate": "Inserisci il testo da tradurre", + "textTooLong": "Testo troppo lungo, max 5000 caratteri", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nessuna cronologia", + "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.", + "unknownLanguage": "Lingua sconosciuta", + "deleteSessionRecord": "Elimina registrazione sessione", + "deleteSessionConfirm": + "Sei sicuro di voler eliminare tutte le registrazioni di traduzione per questa sessione? Questa azione non può essere annullata.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Elaborazione immagine o traduzione non riuscita. Riprova.\nErrore: {error}", + "imageTooLarge": "La dimensione dell'immagine supera il limite di 4 MB", + "imageTooLargeHint": + "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": + "Traduzione immagine non riuscita. Problema di rete o limite richieste. Riprova più tardi", + "imageTranslationApiException": + "Eccezione API traduzione immagini. Controlla la rete e riprova", + "permissionRequired": "Permesso richiesto", + "cameraPermissionRequired": + "Permesso fotocamera necessario per scattare foto", + "photoAlbumPermissionRequired": + "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", + "noAudioFiles": "Nessun file audio", + "calculating": "Calcolo...", + "playing": "In riproduzione...", + "paused": "In pausa", + "clickToPlay": "Clicca per riprodurre", + "rename": "Rinomina", + "smartTranscription": "Trascrizione intelligente", + "renameAudioFile": "Rinomina file audio", + "enterNewFileName": "Inserisci un nuovo nome file", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registrazione originale", + "recordSummary": "Riepilogo registrazione", + "clickToGenerateSummary": + "Clicca il pulsante qui sotto per generare un riepilogo della sessione", + "summaryContent": "Contenuto del riepilogo", + "copied": "Copiato", + "summaryCopiledToClipboard": "Riepilogo copiato negli appunti", + "extractSummary": "Estrai riepilogo", + "summaryGenerated": "Riepilogo generato", + "generating": "Generazione...", + "regenerate": "Rigenera", + "summaryTimeoutMessage": + "La richiesta di generazione del riepilogo è scaduta, potrebbe essere a causa di problemi di rete o di un server occupato.", + "deleteTranslationRecord": "Elimina registrazione traduzione", + "deleteTranslationConfirm": + "Sei sicuro di voler eliminare questa registrazione di traduzione? Questa azione non può essere annullata.", + "originalText": "Testo originale", + "translatedText": "Testo tradotto", + "sessionSummary": "Riepilogo sessione", + "cannotShare": "Impossibile condividere", + "generateSummaryFirst": "Genera prima un riepilogo", + "translationSessionRecord": "Registrazione sessione di traduzione", + + // 个人资料模块 "editProfile": "Modifica informazioni personali", - "avatar": "Avatar", - "nickname": "Nickname", + "avatar": 'Avatar', + "nickname": 'Soprannome', "save": "Salva", "about": "Informazioni", "enterNickname": "Inserisci un nickname", @@ -934,10 +1187,8 @@ const Map itIT = { 'deleteAccount': 'Elimina account', 'deleteAccountTips': 'Sei sicuro di voler eliminare permanentemente il tuo account? Questa azione non può essere annullata.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Svuota cache', + 'cleanTips': 'Sei sicuro di voler cancellare la cache personale?', 'networkConnectionFailed': 'Connessione di rete fallita, controlla le impostazioni di rete e riprova', 'serverTemporarilyUnavailable': @@ -956,10 +1207,6 @@ const Map itIT = { 'Connessione di rete fallita, controlla le impostazioni di rete', 'serverInternalErrorRetryLater': 'Errore interno del server, riprova più tardi', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Compressione dell\'immagine fallita', 'avatarUpdateFailed': 'Aggiornamento dell\'avatar fallito', 'usernameCannotBeEmpty': 'Il nome utente non può essere vuoto', @@ -970,8 +1217,6 @@ const Map itIT = { 'logoutFailedRetry': 'Disconnessione fallita, riprova', 'accountPermanentlyDeleted': 'Account eliminato permanentemente', 'deleteAccountFailedRetry': 'Eliminazione dell\'account fallita, riprova', - - // 账号服务相关 'clearUserDataFailed': 'Cancellazione dei dati utente fallita', // 清理用户数据失败 'deleteUserDataFailed': 'Eliminazione dei dati utente fallita', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -988,30 +1233,34 @@ const Map itIT = { 'accountServiceInitialized': 'Servizio account inizializzato', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Archiviazione', + 'meetingStoragePermissionExplanation': + "Abbiamo bisogno dell'autorizzazione di archiviazione per permetterti di selezionare e caricare file audio.", + 'meetingStoragePermissionPermanentDenial': + "È 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', - //'bluetooth': '蓝牙', - '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': @@ -1032,80 +1281,94 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigazione in corso', + 'native.notification.navigation.keepRunning': + "Navigazione in corso, mantieni l'app attiva", + 'native.notification.bleAgent.running': + "L'agente assistente vocale è in esecuzione", + 'native.notification.audioRecording.recording': + "Registrazione audio in corso, tocca per tornare all'app", + 'native.notification.music.waiting': 'In attesa di riproduzione', + 'native.notification.music.previous': 'Indietro', + 'native.notification.music.next': 'Avanti', + 'native.notification.music.play': 'Riproduci', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'Riproduzione musica in corso', + + // 版本更新 'newVersionFound': 'Nuova versione trovata', // 版本更新对话框标题 'remindLater': 'Ricordamelo più tardi', // 稍后提醒按钮 'updateNow': 'Aggiorna ora', // 立即更新按钮 @@ -1116,253 +1379,7 @@ const Map itIT = { 'updateErrorRetry': 'Si è verificato un errore durante l\'aggiornamento, riprova più tardi', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Cina", - "美国": "Stati Uniti", - "加拿大": "Canada", - "俄罗斯": "Russia", - "英国": "Regno Unito", - "德国": "Germania", - "意大利": "Italia", - "法国": "Francia", - "西班牙": "Spagna", - "南非": "Sudafrica", - "沙特阿拉伯": "Arabia Saudita", - "土耳其": "Turchia", - "日本": "Giappone", - "韩国": "Corea del Sud", - "新加坡": "Singapore", - "马来西亚": "Malesia", - "泰国": "Tailandia", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippine", - "印度尼西亚": "Indonesia", - "阿联酋": "Emirati Arabi Uniti", - "墨西哥": "Messico", - "巴西": "Brasile", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Nuova Zelanda", - "中国香港": "Hong Kong (Cina)", - "中国澳门": "Macao (Cina)", - "中国台湾": "Taiwan (Cina)", - "埃及": "Egitto", - "希腊": "Grecia", - "荷兰": "Paesi Bassi", - "比利时": "Belgio", - "匈牙利": "Ungheria", - "罗马尼亚": "Romania", - "瑞士": "Svizzera", - "奥地利": "Austria", - "丹麦": "Danimarca", - "瑞典": "Svezia", - "挪威": "Norvegia", - "波兰": "Polonia", - "秘鲁": "Perù", - "智利": "Cile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portogallo", - "卢森堡": "Lussemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islanda", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cipro", - "芬兰": "Finlandia", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Lettonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croazia", - "斯洛文尼亚": "Slovenia", - "捷克": "Repubblica Ceca", - "斯洛伐克": "Slovacchia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israele", - "黎巴嫩": "Libano", - "约旦": "Giordania", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambogia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Est", - "斐济": "Figi", - "所罗门群岛": "Isole Salomone", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Cronologia traduzioni", - "enableRecording": "Abilita registrazione", - "viewAudioFiles": "Visualizza file audio", - "headsetUser": "Utente auricolari", - "phoneUser": "Utente telefono", - "selectSourceLanguage": "Seleziona lingua di origine", - "selectTargetLanguage": "Seleziona lingua di destinazione", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nessuna cronologia", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Cancella cronologia", - "clearHistoryConfirm": - "Sei sicuro di voler cancellare tutta la cronologia delle traduzioni? Questa azione non può essere annullata.", - "unknownLanguage": "Lingua sconosciuta", - "deleteSessionRecord": "Elimina registrazione sessione", - "deleteSessionConfirm": - "Sei sicuro di voler eliminare tutte le registrazioni di traduzione per questa sessione? Questa azione non può essere annullata.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduci file audio", - "noAudioFiles": "Nessun file audio", - "calculating": "Calcolo...", - "playing": "In riproduzione...", - "paused": "In pausa", - "clickToPlay": "Clicca per riprodurre", - "rename": "Rinomina", - "smartTranscription": "Trascrizione intelligente", - "renameAudioFile": "Rinomina file audio", - "enterNewFileName": "Inserisci un nuovo nome file", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registrazione originale", - "recordSummary": "Riepilogo registrazione", - "clickToGenerateSummary": - "Clicca il pulsante qui sotto per generare un riepilogo della sessione", - "summaryContent": "Contenuto del riepilogo", - "copied": "Copiato", - "summaryCopiledToClipboard": "Riepilogo copiato negli appunti", - "extractSummary": "Estrai riepilogo", - "summaryGenerated": "Riepilogo generato", - "generating": "Generazione...", - "regenerate": "Rigenera", - "summaryTimeoutMessage": - "La richiesta di generazione del riepilogo è scaduta, potrebbe essere a causa di problemi di rete o di un server occupato.", - "deleteTranslationRecord": "Elimina registrazione traduzione", - "deleteTranslationConfirm": - "Sei sicuro di voler eliminare questa registrazione di traduzione? Questa azione non può essere annullata.", - "originalText": "Testo originale", - "translatedText": "Testo tradotto", - "sessionSummary": "Riepilogo sessione", - "cannotShare": "Impossibile condividere", - "generateSummaryFirst": "Genera prima un riepilogo", - "translationSessionRecord": "Registrazione sessione di traduzione", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Associazione dispositivo", "connectYourDeepSoundHeadset": "Connetti le tue cuffie Voitrans", "bind": "Associa", @@ -1371,14 +1388,11 @@ const Map itIT = { "autoInputCode": "Inserimento automatico del codice", "skipBinding": "Salta associazione", "rescan": "Riesegui scansione", - "verifyingDevice": "Verifica del dispositivo...", "confirmBinding": "Conferma associazione", "associatingDevice": "Associazione del dispositivo...", "goToBluetoothSettings": "Vai alle impostazioni Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pronto per l'associazione", "preparingPairingEnvironment": "Preparazione dell'ambiente di associazione...", @@ -1390,8 +1404,6 @@ const Map itIT = { "waitingCompletePairing": "Attendi, completamento dell'associazione...", "pairingSuccessRedirecting": "Associazione riuscita! Reindirizzamento alla pagina principale...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Assicurati di essere connesso a un dispositivo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1403,19 +1415,12 @@ const Map itIT = { "authorizationFailedCheckCode": "Autorizzazione fallita, controlla che il codice di autorizzazione sia corretto", "pairingFailedRetry": "Associazione fallita, riprova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Abilita il Bluetooth', 'deviceDisconnected': 'Dispositivo disconnesso', 'readyToStartPairing': 'Pronto per iniziare l associazione', 'checkingEnvironment': 'Controllo dell ambiente...', 'ensureHeadsetOnAndPairingMode': 'Assicurati che le cuffie siano accese e in modalità di associazione', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Creazione di una connessione sicura...', 'needManualBindingAuthCode': "È necessario un codice di autorizzazione per l'associazione manuale...", @@ -1437,21 +1442,30 @@ const Map itIT = { 'bleConnectionFailed': 'Connessione BLE fallita', 'deviceAuthorizationFailedCheckCode': 'Autorizzazione del dispositivo fallita, controlla il codice di autorizzazione', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Feedback utente", 'feedbackInfo': 'Fornisci feedback o suggerimenti', 'feedbackDescription': @@ -1479,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", @@ -1494,7 +1509,60 @@ const Map itIT = { "removeEarbudsEnsureBattery": "Rimuovi entrambi gli auricolari e assicurati che la batteria di entrambi sia superiore al 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nuova versione @version trovata', + 'otaConfirmUpdateNow': 'Aggiornare ora?', + 'otaUpdate': 'Aggiorna', + 'otaUpgradeSuccess': 'Aggiornamento riuscito', + 'otaUpgradeCompleteRepair': + 'Aggiornamento completato!\n\nIl dispositivo deve essere riassociato. Andare alla pagina di associazione?', + 'otaPairLater': 'Associa dopo', + 'otaPairNow': 'Associa ora', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Errore nella verifica connessione BLE: @error', + 'otaBleNotConnected': 'Dispositivo BLE non connesso', + 'otaBleNeedConnection': + 'Connessione BLE richiesta\nAssicurarsi che il dispositivo sia connesso e riprovare', + 'otaDeviceInfoUnavailableTitle': 'Info dispositivo non disponibili', + 'otaCannotGetDeviceInfo': + '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', + 'otaCannotGetProductInfoWithName': + 'Impossibile ottenere info prodotto, nome dispositivo: @deviceName', + 'otaCannotGetBatteryInfo': 'Impossibile ottenere info batteria valide', + 'otaLowBattery': 'Batteria scarica', + 'otaSingleBatteryLow': + 'Batteria troppo scarica\nRequisito: superiore al 20%\nAttuale: @ear @battery%\nCaricare e riprovare', + 'otaDoubleBatteryLow': + 'Batteria troppo scarica\nRequisito: entrambi gli auricolari superiori al 20%\nAttuale: Sinistro @left%, Destro @right%\nCaricare e riprovare', + 'otaBatteryCheckFailed': 'Verifica batteria fallita', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Questo aggiornamento include ottimizzazioni delle prestazioni e correzioni di bug.', + 'otaGetLatestVersionFailed': 'Impossibile ottenere la versione piu recente', + 'otaGetVersionInfoFailed': 'Impossibile ottenere le info di versione', + 'otaCheckingDeviceStatus': 'Verifica stato dispositivo...', + 'otaDownloadFailedCheckNetwork': + 'Download fallito, verificare la connessione di rete', + 'otaDownloadFailed': 'Download fallito', + 'otaPreparingConnection': 'Preparazione connessione...', + 'otaConnectingDevice': 'Connessione al dispositivo...', + 'otaUpgradeStarted': 'Aggiornamento OTA avviato...', + 'otaUpgradeProgressWithPercent': 'Progresso: @percent%', + 'otaUpgradeSuccessComplete': 'Aggiornamento completato con successo', + 'otaUpgradeFailedWithCode': 'Aggiornamento fallito, codice errore: @code', + 'otaUpgradeFailedTitle': 'Aggiornamento fallito', + 'otaUpgradeFailedDesc': + 'Verificare connessione o pacchetto di aggiornamento, codice: @code', + 'otaDeviceDisconnected': 'Dispositivo disconnesso', + 'otaDeviceConnected': 'Dispositivo connesso', + + // 音乐模块 "noMusic": "Nessuna musica", // 暂无音乐 "noPlayingMusic": "Nessuna musica in riproduzione", // 暂无播放音乐 "unknownSong": "Canzone sconosciuta", // 未知歌曲 @@ -1531,33 +1599,133 @@ const Map itIT = { "泰语": "Tailandese", "越南语": "Vietnamita", "印尼语": "Indonesiano", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Turco", "马来语": "Malese", "孟加拉语": "Bengalese", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", + "泰米尔语": 'Tamil', + "泰卢固语": 'Telugu', + "马拉提语": 'Marathi', + "乌尔都语": 'Urdu', "波斯语": "Persiano", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", + "斯瓦希里语": 'Swahili', - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Cina", + "美国": "Stati Uniti", + "加拿大": 'Canada', + "俄罗斯": 'Russia', + "英国": "Regno Unito", + "德国": "Germania", + "意大利": "Italia", + "法国": "Francia", + "西班牙": "Spagna", + "南非": "Sudafrica", + "沙特阿拉伯": "Arabia Saudita", + "土耳其": "Turchia", + "日本": "Giappone", + "韩国": "Corea del Sud", + "新加坡": 'Singapore', + "马来西亚": "Malesia", + "泰国": "Tailandia", + "越南": 'Vietnam', + "印度": 'India', + "巴基斯坦": 'Pakistan', + "菲律宾": "Filippine", + "印度尼西亚": 'Indonesia', + "阿联酋": "Emirati Arabi Uniti", + "墨西哥": "Messico", + "巴西": "Brasile", + "阿根廷": 'Argentina', + "澳大利亚": 'Australia', + "新西兰": "Nuova Zelanda", + "中国香港": "Hong Kong (Cina)", + "中国澳门": "Macao (Cina)", + "中国台湾": "Taiwan (Cina)", + "埃及": "Egitto", + "希腊": "Grecia", + "荷兰": "Paesi Bassi", + "比利时": "Belgio", + "匈牙利": "Ungheria", + "罗马尼亚": 'Romania', + "瑞士": "Svizzera", + "奥地利": 'Austria', + "丹麦": "Danimarca", + "瑞典": "Svezia", + "挪威": "Norvegia", + "波兰": "Polonia", + "秘鲁": "Perù", + "智利": "Cile", + "哥伦比亚": 'Colombia', + "委内瑞拉": 'Venezuela', + "葡萄牙": "Portogallo", + "卢森堡": "Lussemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islanda", + "阿尔巴尼亚": 'Albania', + "马耳他": 'Malta', + "塞浦路斯": "Cipro", + "芬兰": "Finlandia", + "保加利亚": 'Bulgaria', + "立陶宛": "Lituania", + "拉脱维亚": "Lettonia", + "爱沙尼亚": 'Estonia', + "乌克兰": "Ucraina", + "塞尔维亚": 'Serbia', + "克罗地亚": "Croazia", + "斯洛文尼亚": 'Slovenia', + "捷克": "Repubblica Ceca", + "斯洛伐克": "Slovacchia", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": 'Bolivia', + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Marocco", + "阿尔及利亚": 'Algeria', + "突尼斯": 'Tunisia', + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Etiopia", + "肯尼亚": 'Kenya', + "坦桑尼亚": 'Tanzania', + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": "Israele", + "黎巴嫩": "Libano", + "约旦": "Giordania", + "伊拉克": 'Iraq', + "科威特": 'Kuwait', + "巴林": 'Bahrain', + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": 'Mongolia', + "柬埔寨": "Cambogia", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Timor Est", + "斐济": "Figi", + "所罗门群岛": "Isole Salomone", + "刚果民主共和国": 'Repubblica Democratica del Congo', + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": 'Maldive', + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": 'Giamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": 'Papua Nuova Guinea', + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/ja_jp.dart b/lib/core/translations/language/ja_jp.dart index bfa608732..e37b8ddae 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': '続ける', @@ -5,7 +6,7 @@ const Map jaJP = { 'cancel': 'キャンセル', 'retry': '再試行', 'error': 'エラー', - 'success': '成功', + 'success': '成功', // 成功 'connected': '接続済み', 'connecting': '接続中...', 'connectionFailure': '接続失敗', @@ -17,6 +18,11 @@ const Map jaJP = { "responseTimeout": "応答タイムアウト", "unknownError": "不明なエラー", "asrConnectionFailed": "音声認識サービスへの接続に失敗しました。ネットワークを確認して、しばらくしてからもう一度お試しください。", + "justNow": "たった今", + "minutesAgo": "@minutes 分前", + "yesterday": "昨日", + "daysAgo": "@days 日前", + "hoursAgo": "@hours 時間前", // 启动页 "slogan": "世界をつなぐ、音声を超えて", @@ -27,7 +33,7 @@ const Map jaJP = { "explore": "探索", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "システムに従う", "chinese": "中国語", "english": "英語", @@ -71,7 +77,7 @@ const Map jaJP = { "arabic": "アラビア語", "persian": "ペルシア語", - // 登录页 + // 登录模块 "welcome": "ようこそ", "loginTips": "電話番号またはメールアドレスでログイン/登録してください", "accountNumber": "電話番号またはメールアドレス", @@ -98,12 +104,8 @@ const Map jaJP = { "resendVerificationCode": "認証コードを再送信", "login": "ログイン", "usePasswordLogin": "パスワードログインを使用", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 声明", // Voitrans 声明 "welcomeToThisApp": "Voitransへようこそ、十分にお読みください", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "。「同意して進む」をクリックすると、上記の規約を十分に読み、同意したことを示します。「同意しない」をクリックするとアプリケーションが終了します。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "同意しない", // 不同意 @@ -158,7 +160,28 @@ const Map jaJP = { 'right': '右', 'checkConnectionStatusFailed': '接続状態の確認に失敗', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetoothの初期化に失敗しました: @error', + 'needBluetoothAndLocationPermission': 'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です', + 'permissionRequestFailedWithError': '権限リクエストが失敗しました: @error', + 'needPermission': '権限が必要', + 'blePermissionDialogContent': + 'デバイスをスキャンするにはBluetoothと位置情報の権限が必要です。設定から有効にしてください。', + 'needEnableBluetooth': 'Bluetoothを有効にしてください', + 'enableBluetoothDialogContent': 'デバイスをスキャン・接続するにはBluetoothを有効にしてください。', + 'bleScanFailedWithError': 'スキャン失敗: @error', + 'bleConnectionSuccess': '接続成功', + 'bleConnectedToDevice': '@device に接続しました', + 'bleConnectionFailedWithError': '接続失敗: @error', + 'bleDisconnected': '切断されました', + 'bleDeviceDisconnected': 'デバイスが切断されました', + 'bleDisconnectFailedWithError': '切断失敗: @error', + 'signalStrong': '強い', + 'signalMedium': '普通', + 'signalWeak': '弱い', + 'signalVeryWeak': '非常に弱い', + + // 发现页 "searchAi": "AI機能を検索...", "exploreSlogan": "スマートイヤホン、無限の可能性", "exploreSlogan1": "スマートコンパニオン、無限の可能性", @@ -181,211 +204,248 @@ const Map jaJP = { "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", - "asr": "ASR", - "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + "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": "データ量統計", + "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': '利用可能なパッケージ', + 'remainingQuota': '残りのクォータ', + 'totalQuota': '総クォータ', + 'remaining': '残り', + 'featureDescription': '機能説明', + 'paymentSuccess': '支払い成功', + 'paymentFailed': '支払い失敗', + 'gotIt': '了解', + 'paymentFailedTryAgain': '支払いに失敗しました。もう一度お試しください。', + 'selectPaymentMethod': '支払い方法を選択', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay注文の作成に失敗しました', + 'alipayOrderCreateFailed': 'Alipay注文の作成に失敗しました', + 'appleOrderCreateFailed': 'Apple注文の作成に失敗しました', + 'googleOrderCreateFailed': 'Google注文の作成に失敗しました', + 'paypalOrderCreateFailed': 'PayPal注文の作成に失敗しました', + 'paymentException': '支払い例外', + 'paymentLaunchFailed': '支払いの起動に失敗しました', + 'paymentExceptionWithError': '支払い例外:@error', + 'paymentProcessingCheckLater': 'ご注文は処理中です。後で確認してください。', + 'paymentResultQueryException': '支払い結果の照会に失敗しました:@error', + 'orderConfirmedQuotaRefreshed': '注文が確認されました。クォータが更新されました。', + 'paymentCompletedConfirming': '支払い完了。確認中…', + 'paymentCancelled': '支払いがキャンセルされました', + 'paypalOpenedCompleteInBrowser': 'PayPalが開きました。ブラウザで支払いを完了してください。', + 'paypalOpenFailed': 'PayPal支払いページを開けません', + 'paymentTestTitle': '支払いテスト', + 'paymentTestOrderInfo': 'テスト注文情報', + 'paymentTestProductId': '商品ID', + 'paymentTestProductDescription': '商品説明', + 'paymentTestWechatDescription': 'WeChat Pay支払いテスト', + 'paymentTestAlipayDescription': 'Alipay支払いテスト', + 'paymentTestAmount': '金額', + 'paymentTestSelectAmount': 'テスト金額を選択', + 'paying': '支払い中...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': '支払い状況', + 'errorInfoWithMessage': 'エラー:@message', + 'retest': '再テスト', + 'paymentTestInstructionsTitle': '手順', + 'paymentTestInstructionsContent': + '1. テスト金額を選択してください(推奨:¥0.01)\n2. 支払いボタンをクリックして開始\n3. 支払いアプリで支払いを完了\n4. 戻って結果を確認', + 'startingWechatPayment': 'WeChat Payを起動中...', + 'startingAlipayPayment': 'Alipayを起動中...', + 'wechatPaymentSuccess': 'WeChat Pay支払い成功!', + 'wechatPaymentFailed': 'WeChat Pay支払い失敗', + 'wechatPaymentLaunchFailed': 'WeChat Payの起動に失敗しました', + 'cannotLaunchWechatPayment': 'WeChat Payを起動できません', + 'wechatPaymentException': 'WeChat Pay例外', + 'wechatPaymentTestCompleted': 'WeChat Pay支払いテストが完了しました', + 'alipayPaymentSuccess': 'Alipay支払い成功!', + 'alipayPaymentFailed': 'Alipay支払い失敗', + 'alipayPaymentLaunchFailed': 'Alipayの起動に失敗しました', + 'cannotLaunchAlipayPayment': 'Alipayを起動できません', + 'alipayPaymentException': 'Alipay例外', + "insufficientIntegral": "ポイント不足", + "insufficientBalanceDesc": '残高が不足しています。該当のチャージページでチャージしてください。', + "recharge": 'チャージへ', + "aiMemberExpiredDesc": 'AI会員の有効期限が切れています。会員チャージページで更新してください。', + + // 商品模块 - AI商品页 + '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': 'リアルタイム文字起こし', + 'sceneLexicon': 'シーン用語集', + 'subtitleDisplay': '字幕表示', + 'transHeaderDesc1': '低遅延音声でリアルタイム同時通訳とテキスト翻訳。', + 'transHeaderDesc2': '旅行、ビジネス、講演、授業に最適。', + 'translateZhEn': '中英翻訳', + 'lowLatencyVoiceBroadcast': '低遅延音声読み上げ', + 'multiLangTextTranslation': '多言語テキスト翻訳', + 'termOptimizationContextPreserve': '用語最適化と文脈保持', + 'lexiconTourBusinessLife': '旅行/ビジネス/生活の用語集', + 'personalVocabularyMemory': '個人語彙の記憶', + 'conversationSubtitleLargeText': '会話字幕 / 大文字モード', + 'colorHighContrast': '高コントラスト', + 'transDisclaimer': '翻訳精度はマイク、ネットワーク遅延、周囲の騒音に左右されます。', + + // 商品模块 - 会议商品页 + 'meetingRecording': '会議録音', + 'transcriptionAndSummary': '文字起こしと要約', + 'keywordSearch': 'キーワード検索', + 'collaborationSharing': '共同作業と共有', + 'meetingHeaderDesc1': '音声録音、文字起こし、キーワード検索、自動要約で会議効率を向上。', + 'meetingHeaderDesc2': 'ビジネス会議、クラスノート、インタビューの要約に最適。', + 'meetingAutoRecording': '自動録音とセグメント分割', + 'meetingSpeakerTagging': '発言者ラベリング', + 'meetingLongAudioTranscription': '長音声の文字起こし', + 'meetingKeyPointSummary': '主要なポイントの要約', + 'meetingTopicNameSearch': 'トピック/名前で検索', + 'meetingTimelineJump': 'タイムラインジャンプ', + 'meetingExportSummary': '会議要約をエクスポート', + 'meetingMultiPlatformShare': 'マルチプラットフォームで共有', + 'meetingDisclaimer': '静かな環境でご利用ください。性能はマイクとネットワークに依存します。', + + // 商品模块 - VIP会员页 + 'benefitsOverview': '特典概要', + 'higherQuota': 'より多い利用枠', + 'lowerUnitPrice': 'より低い単価', + 'priorityService': '優先サポート', + 'exclusiveSupportChannel': '専用サポート窓口', + 'fastResponse': '迅速な対応', + 'eventsAndDiscounts': 'イベントと割引', + 'memberExclusiveEvents': '会員限定イベント', + 'longTermDiscountPlan': '長期割引プラン', + 'generalPrivileges': '一般特典', + 'earlyAccessNewFeatures': '新機能の先行利用', + 'crossDeviceSync': 'デバイス間同期', + 'vipDisclaimer': '実際の特典はパッケージの詳細により異なり、バージョンアップにより変更される場合があります。', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI ベーシック 100', + 'ai_002_name': 'AI ベーシック 500', + 'ai_003_name': 'AI ベーシック 1000', + 'meet_001_name': '会議ベーシック 100', + 'meet_002_name': '会議ベーシック 500', + 'meet_003_name': '会議ベーシック 1000', + 'trans_001_name': '翻訳ベーシック 100', + 'trans_002_name': '翻訳ベーシック 500', + 'trans_003_name': '翻訳ベーシック 1000', + 'ai_001_desc': '100回分を含みます。AIの主要機能にアクセスできます。', + 'ai_002_desc': '500回分を含みます。AIの主要機能にアクセスできます。', + 'ai_003_desc': '1000回分を含みます。AIの主要機能にアクセスできます。', + 'meet_001_desc': '会議の録音/文字起こしを100件含みます。', + 'meet_002_desc': '会議の録音/文字起こしを500件含みます。', + 'meet_003_desc': '会議の録音/文字起こしを1000件含みます。', + 'trans_001_desc': '翻訳(音声/テキスト)を100回分含みます。', + 'trans_002_desc': '翻訳(音声/テキスト)を500回分含みます。', + 'trans_003_desc': '翻訳(音声/テキスト)を1000回分含みます。', + + // 商品模块 - 页脚 + 'appNameProvider': 'アプリ名:VoiTrans · 提供元:VoiTrans', + 'iapCustomerServiceQQLabel': 'IAPカスタマーサービス QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 '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, ", - // AI 引导步骤 - '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": "会議を開始", 'edit': '編集', 'delete': '削除', @@ -397,40 +457,37 @@ const Map jaJP = { 'recordingDetails': '録音詳細', 'aiSummary': 'AI要約', 'meetingTranscript': '会議記録', - - // Meeting模块 - 导航和基础功能 - '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': '終了して保存', // 结束录音并保存 @@ -449,201 +506,202 @@ const Map jaJP = { '録音中に録音フローティングバー(タイマー/一時停止/再開)を表示するため、他のアプリの上に表示する権限が必要です。', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'システム設定を自動で開けませんでした。設定を開き、手動で「他のアプリの上に表示」を有効にしてください。', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - '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': '要約を再生成', + 'dateAndTime': '日付と時刻', + 'location': '会議場所', + 'attendees': '参加者', + 'inputLocation': '会議場所を入力', + 'inputAttendees': '参加者を入力', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '要約テンプレートを選択', + 'useThisTemplate': 'このテンプレートを使用', + 'lastUsed': '最終使用', + 'create': '作成', + 'templateDetails': 'テンプレートの詳細', + 'tag': 'タグ', + 'description': '説明', + 'template': 'テンプレート', + 'deleteTemplate': 'テンプレートを削除', + 'deleteTemplateConfirm': 'このテンプレートを削除してもよろしいですか?', + 'editTemplate': 'テンプレートを編集', + 'createTemplate': 'テンプレートを作成', + 'name': '名前', + 'templateContentHint': + 'テンプレートの内容を入力してください!ヒント:上のAIボタンをクリックすると、入力した名前と説明に基づいてテンプレートの内容をすばやく生成できます', + 'inputNameHint': '名前を入力してください', + 'inputDescHint': '説明を入力してください', + 'custom': 'カスタム', + 'pleaseEnter': '入力してください', + 'viewAll': 'すべて表示', + 'recordingLanguage': '録音言語', + 'chineseSimplified': '中国語(簡体字)', + 'meetingGenerateNow': '今すぐ生成', + 'keyEventsAnalyzed': '{count}件の重要イベントを分析しました。', + 'aiAnalysisDesc': 'AI分析は録音から重要イベントを抽出し、AI生成の対象として選べるようにします。', + + // Meeting模块 - 文件操作 + 'importing': '音声をインポート中...', + 'batchImporting': 'バッチインポート中...', + 'importingLocalRecordings': 'ローカル録音をインポート中...', + 'importFailed': 'ファイルのインポートに失敗しました: {filePath}、エラー: {error}', + 'importSuccess': 'ローカル録音を{count}件インポートしました', + 'importError': 'インポートに失敗しました: {error}', + 'pleaseSelectAudioFile': '音声ファイルを選択してください', + 'shareAudio': '会議音声を共有', + 'shareComplete': '共有が完了しました', + 'shareFailed': '共有に失敗しました: {error}', + 'fileProcessingFailed': 'ファイル処理に失敗しました: {filePath}、エラー: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'マインドマップを保存', + 'shareMindMap': 'マインドマップを共有', + 'shareSuccess': '共有に成功しました', + + // Meeting模块 - AI问答 + 'askAI': 'AIに質問 ...', + 'askAIPrompt': '今日は何をお手伝いできますか?', + 'continueAsk': '続けて質問', + 'todoList': 'To-Doリスト', + 'extractConclusion': '要約を抽出', + 'generateKeyIndicators': '重要指標を生成', + + // Meeting模块 - 分享与导出 + 'shareLink': '共有リンクを共有', + 'copyTranscript': '文字起こしをコピー', + 'copySummary': '要約をコピー', + 'exportAudio': '音声をエクスポート', + 'exportTranscript': '文字起こしをエクスポート', + 'shareMeetingAudio': '会議音声を共有', + 'exportSummary': '要約をエクスポート', + 'exportAs': 'エクスポート形式', + 'exportingPDF': 'PDFエクスポート中...', + 'export': 'エクスポート', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'この話者のすべての段落に適用', + 'summaryWillBeUpdatedAutomatically': '要約はテンプレートに基づいて自動的に更新されます', + 'nameCurrentSpeaker': '名前を入力', + 'recentlyUsedNames': '最近使用した名前', + 'applyToCurrentParagraph': 'この段落に適用', + 'totalTime': '総時間', + 'summarySpeakerWillBeUpdatedAutomatically': '要約の話者はテンプレートに基づいて自動的に更新されます', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'クラウドに同期', + 'syncToCloudTip': + '録音を自動でクラウドに同期します。VOITRANSアプリまたはVOITRANS Web (web.voitrans.com) から再生・管理・共有できます。', + 'syncToVoitransApp': 'VOITRANSアプリに同期', + 'transcriptionRecord': '文字起こし記録', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': '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', - - // 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', + 'transcriptionRecords': '文字起こし記録', + 'templateCommunity': 'テンプレートコミュニティ', + 'comingSoon': '近日公開', + 'integration': '連携', + 'voitransPrivateCloud': 'VOITRANS プライベートクラウド', + 'enabled': '有効', + 'disabled': '無効', + 'myVoitransDevice': '私のVOITRANSデバイス', + 'helpAndFeedback': 'ヘルプとフィードバック', + 'aboutVoitrans': 'VOITRANSについて', + 'meetingDays': '日', + 'meetingHours': '時間', + 'voitransAiMember': 'Voitrans AI会員', + 'unlockStarterMember': 'スターター会員を解除', + 'bindDeviceToActivate': 'Voitransデバイスを紐付けてStarter会員を有効化', + 'unlockNow': '今すぐ解除', + + // Meeting模块 - 会员与升级 + '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.', - - // 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.', - '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.', - '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', - '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.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'この話者のすべての段落に適用', - 'summaryWillBeUpdatedAutomatically': '要約はテンプレートに基づいて自動的に更新されます', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + '音声録音、文字起こしテキスト、要約をさまざまな形式(TXT、PDF、JPEG)でエクスポートできます。', + 'upgradeMembership': '会員をアップグレード', + 'yearlySubscription': '年次サブスクリプション', + 'monthlySubscription': '月次サブスクリプション', + 'proMonthly': 'Pro ¥60/月', + 'proMonthlyDesc': '7日間無料トライアル、その後¥800/年。トライアル終了前にいつでもキャンセル可能。', + 'sevenDayTrial': '7日間無料トライアル', + 'unlimitedMonthly': '無制限 ¥120/月', + 'unlimitedMonthlyDesc': '7日間無料トライアル、その後¥1600/年。トライアル終了前にいつでもキャンセル可能。', + 'trialNote': '*7日間無料トライアル、その後¥1600/年。トライアル終了前にいつでもキャンセル可能。', + 'proPrice': 'プロ ¥120', + 'proMonthlyPrice': '¥120/月', + 'subscribe': 'サブスクリプションを購入', + 'unlimitedPrice': '無制限 ¥198', + 'unlimitedMonthlyPrice': '¥198/月', + 'upgradeNote': '*会員をアップグレードすると、元のサブスクリプションの残り日数が自動的に計算され、支払いアカウントに返金されます。', + 'buyMoreTranscriptionTime': '文字起こし時間を追加購入', + 'sixThousandMinutes': '6,000分', + 'threeThousandMinutes': '3,000分', + 'sixHundredMinutes': '600分', + 'oneHundredTwentyMinutes': '120分', + 'validityPeriod': '*有効期間: ', + 'validityNote': '購入後すぐに有効になり、アクティベーション後2年間有効です。', + 'purchase': '購入', + + // Meeting模块 - 录音语言 + 'recordLanguage': '録音言語', + 'cantonese': 'カントーン語', + 'sichuan': '四川話', + 'shanghai': '上海話', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': '未知の言語', + 'analysisFailed': '分析に失敗しました。後でもう一度お試しください', + 'transcriptionFailed': '文字起こしに失敗しました。後でもう一度お試しください', + 'summaryFailed': '要約に失敗しました。後でもう一度お試しください', + 'summaryFailedShort': '要約失敗', + 'transcriptionFailedShort': '文字起こし失敗', + + // Meeting模块 - 播放器 + 'playerNotReady': 'オーディオプレーヤーの準備ができていません。お待ちください', + 'playFailed': '再生に失敗しました', + 'audioFileNotFound': '音声ファイルが見つかりません', + 'fetchingAudio': 'クラウドから音声を取得中...', + 'playerLoadFailed': 'オーディオプレーヤーの読み込みに失敗しました', // 设置页 "systemSettings": "システム設定", @@ -652,10 +710,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": "システム設定", @@ -693,42 +750,29 @@ const Map jaJP = { "bleHeadsetFirmwareUpgrade": "BLEイヤホンファームウェアアップグレード", "deviceManagement": "デバイス管理", "manageConnectedDevices": "接続されたBluetoothデバイスを管理", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '現在のバージョンは既に最新です {version}', 'checkUpdateFailed': '更新確認に失敗', 'networkErrorRetry': 'ネットワークエラー、後でもう一度お試しください', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": 'リアルタイム音声会話', "realtimeVoiceChatInfo": 'スマート音声インタラクション機能を体験(プレビュー)', "loading": '読み込み中...', - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "まだデバイスが紐付けられていません", + "pleaseBindDeviceFirst": "管理するには先にデバイスを紐付けてください", + "noMacAddress": "MACアドレスなし", + "licenseCode": "ライセンスコード", + "confirmUnbind": "紐付け解除を確認", + "confirmUnbindMessage": "デバイス「{deviceName}」の紐付けを解除しますか?", + "confirmUnbindAction": "紐付け解除", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "チャット履歴をクリア", "online": "オンライン", @@ -756,22 +800,24 @@ const Map jaJP = { "loadMoreMessages": "さらにメッセージを読み込み...", "loadFailedClickRetry": "読み込みに失敗、クリックして再試行", "swipeUpForMore": "上にスワイプしてさらに表示", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "処理中です。しばらくお待ちください!", // 正在帮您,请稍等! + "voice_interrupt": "中断", // 语音打断 + 'voice_interrupt_tip': + '有効にすると:AIが話している間はあなたの声で中断されず、一度に1つの会話ラウンドのみ処理できます。新しいラウンドを開始するには、ウェイクアップワードを言ってください。', + + // Agent模块 - 预设提示词 + "presetMusic": "音楽をかける", + "presetNavigation": "ナビゲーション", + "presetWeather": "今日の天気", + "presetNews": "今日のニュース", + "presetFood": "近くの飲食店", + "playSomeMusic": "人気の音楽をかけて", + "navigationTo": "ここへ案内", + "todayWeather": "今日の天気は?", + "todayNews": "今日のニュースは?", + "nearbyFood": "近くの美味しいお店は?", + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': 'こんにちは!私は**Lily**です。以下のことでお手伝いできます:\n\n' '• 質問への回答と情報提供\n\n' '• リアルタイム音声翻訳\n\n' @@ -787,18 +833,17 @@ const Map jaJP = { 'startVoiceInput': '音声入力を開始', 'startPhoneCallMode': '通話モードを開始、音声入力を開始', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'ここにメッセージを入力してください...', // 全屏编辑器输入提示 'characterCount': '{count}文字', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'コピー', 'copySuccess': 'コピーに成功', 'report': '報告', 'submitSuccess': '送信に成功', 'submitFailed': '送信に失敗', 'reportSubmitted': '報告を送信しました。できるだけ早く処理いたします', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/危険', 'pornographicVulgar': 'ポルノ/下品', 'misleadingAttack': '誤解を招く/攻撃', @@ -807,17 +852,21 @@ const Map jaJP = { 'copyrightViolation': '私の著作権、人格権などの侵害', 'other': 'その他', 'reportDescriptionHint': '報告の理由を知りたいと思います。遭遇した問題を説明してください。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AIによって生成', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'ツール呼び出し', + 'noResult': '結果なし', + 'noToolCallContentToCopy': 'コピーするツール呼び出し内容がありません', + 'toolCallDetails': 'ツール呼び出し詳細:', + 'toolCallContentCopied': 'ツール呼び出し内容をクリップボードにコピーしました', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'おすすめの音楽をご紹介します:', 'playList': 'プレイリスト', 'moreMusic': 'もっと音楽', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': '時間', // 小时单位 @@ -830,9 +879,31 @@ const Map jaJP = { "driving": "運転", "walking": "徒歩", "bicycling": "自転車", - "tsransit": "Transit", - - //天气卡片 weather_card + "tsransit": "乗り換え", + + // Agent模块 - 导航选择 + 'selectNavigationApp': 'ナビアプリを選択', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Amapでナビゲート', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Baidu Mapsでナビゲート', + 'googleMap': 'Google マップ', + 'useGoogleNavigation': 'Google マップでナビゲート', + 'appleMap': 'Apple マップ', + 'useAppleNavigation': 'Apple マップでナビゲート', + 'builtInNavigation': '内蔵ナビ', + 'useBuiltInNavigation': '内蔵地図でナビゲート', + 'navigationStartFailed': 'ナビの開始に失敗しました', + 'cannotPlayMusicListRetryLater': '音楽リストを再生できません。後でもう一度お試しください', + 'cannotPlaySong': '曲を再生できません', + 'openMapError': '地図を開く際にエラーが発生しました', + 'pleaseInstallAmapApp': 'Amapアプリをインストールしてください', + 'pleaseInstallBaiduMapApp': 'Baidu Mapsアプリをインストールしてください', + 'appleMapStartFailed': 'Apple マップの起動に失敗しました', + 'appleMapUnavailable': 'Apple マップが利用できません', + 'openAppleMapError': 'Apple マップを開く際にエラーが発生しました', + + // Agent模块 - 天气卡片 'weatherQuery': '天気照会:', 'highest': '最高', 'lowest': '最低', @@ -853,18 +924,8 @@ const Map jaJP = { "friday": "金", "saturday": "土", "sunday": "日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴れ", "partlyCloudy": "一部曇り", "partlySunny": "一部晴れ", @@ -885,7 +946,132 @@ const Map jaJP = { "haze": "かすみ", "strongWind": "強風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "画像翻訳", + "textTranslation": "テキスト翻訳", + + // 翻译模块 - 主页 + "translationHistory": "翻訳履歴", + "enableRecording": "録音を有効にする", + "viewAudioFiles": "音声ファイルを表示", + "headsetUser": "ヘッドセットユーザー", + "phoneUser": "電話ユーザー", + "selectSourceLanguage": "ソース言語を選択", + "selectTargetLanguage": "ターゲット言語を選択", + "me": "私", + "counterPart": "相手", + "bluetoothCallStateError": "Bluetoothヘッドセットが電話に接続され、通話状態になっていることを確認してください", + "autoDetect": "自動検出", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'フローティングウィンドウを無効化', + 'enableFloatingWindow': 'フローティングウィンドウを有効化', + 'permissionTip': '権限のヒント', + 'micPermissionRequiredForRecording': '録音にはマイク権限が必要です', + 'deleteTranslationRecordError': '翻訳記録の削除中にエラーが発生しました: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "言語の検出に失敗しました", + "translationFailed": "翻訳に失敗しました", + "translating": "翻訳中", + "translate": "翻訳", + "pleaseInputText": "テキストを入力してください", + "inputTextToTranslate": "翻訳するテキストを入力してください", + "textTooLong": "テキストが長すぎます(最大5000文字)", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "翻訳履歴がありません", + "historyRecords": "履歴記録", + "clearResults": "結果をクリア", + "clearHistory": "履歴をクリア", + "clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。", + "unknownLanguage": "不明な言語", + "deleteSessionRecord": "セッション記録を削除", + "deleteSessionConfirm": "このセッションのすべての翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", + + // 翻译模块 - 图片翻译 + "selectImageSource": "画像の取得元を選択", + "imagePreview": "画像プレビュー", + "translationResult": "翻訳結果", + "recognitionResult": "認識結果", + "translatedImagePreview": "翻訳画像プレビュー", + "translatedImageLoadFailed": "翻訳画像の読み込みに失敗しました", + "pleaseSelectImage": "画像を選択してください", + "imageLoadFailed": "画像の読み込みに失敗しました", + "imageQuality": "画像品質", + "maxSize": "最大サイズ", + "close": "閉じる", + "setImageQuality": "画像品質を設定", + "currentQuality": "現在の品質: @value%", + "setMaxSize": "最大サイズを設定", + "currentMaxSize": "現在: @pxpx", + "waitingForAction": "操作待ち", + "pleaseSelectImageToStart": "開始する画像を選択してください", + "chooseImage": "画像を選択", + "openingCamera": "カメラを起動中...", + "openingPhotoAlbum": "フォトアルバムを開いています...", + "cancelled": "キャンセルしました", + "userCancelledSelection": "ユーザーが選択をキャンセルしました", + "translatingImage": "画像を翻訳中", + "callingImageTranslateService": "画像翻訳サービスを呼び出し中...", + "savingRecord": "記録を保存中", + "savingTranslationResult": "翻訳結果を保存中...", + "translationCompleted": "翻訳完了", + "allStepsCompleted": "すべてのステップが完了しました", + "processingFailed": "処理に失敗しました", + "imageProcessingOrTranslationFailed": + "画像処理または翻訳に失敗しました。再試行してください。\nエラー: {error}", + "imageTooLarge": "画像サイズが4MBを超えています", + "imageTooLargeHint": "画像サイズが4MBを超えています。品質を下げるか、解像度を下げて再試行してください", + "emptyTranslationResult": "画像翻訳APIから空の結果が返されました", + "imageTranslationFailedTryLater": + "画像翻訳に失敗しました。ネットワーク問題またはレート制限の可能性があります。後でもう一度お試しください", + "imageTranslationApiException": "画像翻訳APIで例外が発生しました。ネットワークを確認して再試行してください", + "permissionRequired": "権限が必要です", + "cameraPermissionRequired": "写真を撮るにはカメラ権限が必要です", + "photoAlbumPermissionRequired": "画像を選ぶには写真アルバム権限が必要です", + "translationDetails": "翻訳詳細", + "originalImage": "元の画像", + "sourceLanguage": "ソース言語", + "targetLanguage": "ターゲット言語", + "translationTime": "翻訳時間", + "shareInDevelopment": "共有機能は開発中です", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "音声ファイルを翻訳", + "noAudioFiles": "音声ファイルがありません", + "calculating": "計算中...", + "playing": "再生中...", + "paused": "一時停止", + "clickToPlay": "クリックして再生", + "rename": "名前を変更", + "smartTranscription": "スマート転写", + "renameAudioFile": "音声ファイル名を変更", + "enterNewFileName": "新しいファイル名を入力してください", + + // 翻译模块 - 翻译详情 + "originalRecord": "元の記録", + "recordSummary": "記録要約", + "clickToGenerateSummary": "下のボタンをクリックしてセッション要約を生成", + "summaryContent": "要約内容", + "copied": "コピーしました", + "summaryCopiledToClipboard": "要約をクリップボードにコピーしました", + "extractSummary": "要約を抽出", + "summaryGenerated": "要約が生成されました", + "generating": "生成中...", + "regenerate": "再生成", + "summaryTimeoutMessage": + "要約生成リクエストがタイムアウトしました。ネットワークの問題またはサーバーの過負荷が原因の可能性があります。", + "deleteTranslationRecord": "翻訳記録を削除", + "deleteTranslationConfirm": "この翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", + "originalText": "元のテキスト", + "translatedText": "翻訳されたテキスト", + "sessionSummary": "セッション要約", + "cannotShare": "共有できません", + "generateSummaryFirst": "まず要約を生成してください", + "translationSessionRecord": "翻訳セッション記録", + + // 个人资料模块 "editProfile": "プロフィール編集", "avatar": "アバター", "nickname": "ニックネーム", @@ -898,10 +1084,8 @@ const Map jaJP = { "logoutTips": "現在のアカウントからログアウトしてもよろしいですか?", 'deleteAccount': 'アカウント削除', 'deleteAccountTips': 'アカウントを永続的に削除してもよろしいですか?この操作は元に戻せません。', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'キャッシュをクリア', + 'cleanTips': '個人キャッシュをクリアしてもよろしいですか?', 'networkConnectionFailed': 'ネットワーク接続に失敗しました。ネットワーク設定を確認して再試行してください', 'serverTemporarilyUnavailable': 'サーバーが一時的に利用できません。後でもう一度お試しください', 'loginExpiredPleaseRelogin': 'ログインが期限切れです。再度ログインしてください', @@ -913,10 +1097,6 @@ const Map jaJP = { 'serverError': 'サーバーエラー', 'networkConnectionFailedCheckSettings': 'ネットワーク接続に失敗しました。ネットワーク設定を確認してください', 'serverInternalErrorRetryLater': 'サーバー内部エラー、後でもう一度お試しください', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '画像圧縮に失敗', 'avatarUpdateFailed': 'アバター更新に失敗', 'usernameCannotBeEmpty': 'ユーザー名は空にできません', @@ -927,8 +1107,6 @@ const Map jaJP = { 'logoutFailedRetry': 'ログアウトに失敗しました。再試行してください', 'accountPermanentlyDeleted': 'アカウントが永続的に削除されました', 'deleteAccountFailedRetry': 'アカウント削除に失敗しました。再試行してください', - - // 账号服务相关 'clearUserDataFailed': 'ユーザーデータのクリアに失敗', // 清理用户数据失败 'deleteUserDataFailed': 'ユーザーデータの削除に失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'サードパーティログアウトに成功', // 第三方登录退出成功 @@ -939,29 +1117,32 @@ const Map jaJP = { 'allUserDataClearSuccess': 'すべてのユーザーデータのクリアに成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountServiceが初期化されました', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'ストレージ', + 'meetingStoragePermissionExplanation': + '音声ファイルを選択してアップロードできるように、ストレージ権限が必要です。', + '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', - //'bluetooth': '蓝牙', - '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': '現在の位置情報の取得に使用', @@ -975,66 +1156,57 @@ 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.', -//'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.', + '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': '必要:', + 'permissionUtilPermission': ' 権限', + 'permissionUtilRestricted': ' 権限が制限されています', + 'permissionUtilRestrictedMessage': + 'この機能は現在のデバイスでは利用できないか制限されています。デバイス設定またはシステム制限を確認してください', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1051,15 +1223,7 @@ const Map jaJP = { 'native.notification.music.pause': '一時停止', // 暂停 'native.notification.qqMusic.playing': '音楽を再生中', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '新しいバージョンが見つかりました', // 版本更新对话框标题 'remindLater': '後で通知', // 稍后提醒按钮 'updateNow': '今すぐ更新', // 立即更新按钮 @@ -1068,249 +1232,7 @@ const Map jaJP = { 'cannotOpenAppStore': 'App Storeを開けません。手動で更新してください', // 无法打开应用商店提示 'updateErrorRetry': '更新プロセスでエラーが発生しました。後でもう一度お試しください', // 更新错误重试提示 - //国家列表 - "邮箱": "メールアドレス", - "中国": "中国", - "美国": "アメリカ", - "加拿大": "カナダ", - "俄罗斯": "ロシア", - "英国": "イギリス", - "德国": "ドイツ", - "意大利": "イタリア", - "法国": "フランス", - "西班牙": "スペイン", - "南非": "南アフリカ", - "沙特阿拉伯": "サウジアラビア", - "土耳其": "トルコ", - "日本": "日本", - "韩国": "韓国", - "新加坡": "シンガポール", - "马来西亚": "マレーシア", - "泰国": "タイ", - "越南": "ベトナム", - "印度": "インド", - "巴基斯坦": "パキスタン", - "菲律宾": "フィリピン", - "印度尼西亚": "インドネシア", - "阿联酋": "アラブ首長国連邦", - "墨西哥": "メキシコ", - "巴西": "ブラジル", - "阿根廷": "アルゼンチン", - "澳大利亚": "オーストラリア", - "新西兰": "ニュージーランド", - "中国香港": "香港、中国", - "中国澳门": "マカオ、中国", - "中国台湾": "台湾、中国", - "埃及": "エジプト", - "希腊": "ギリシャ", - "荷兰": "オランダ", - "比利时": "ベルギー", - "匈牙利": "ハンガリー", - "罗马尼亚": "ルーマニア", - "瑞士": "スイス", - "奥地利": "オーストリア", - "丹麦": "デンマーク", - "瑞典": "スウェーデン", - "挪威": "ノルウェー", - "波兰": "ポーランド", - "秘鲁": "ペルー", - "智利": "チリ", - "哥伦比亚": "コロンビア", - "委内瑞拉": "ベネズエラ", - "葡萄牙": "ポルトガル", - "卢森堡": "ルクセンブルク", - "爱尔兰": "アイルランド", - "冰岛": "アイスランド", - "阿尔巴尼亚": "アルバニア", - "马耳他": "マルタ", - "塞浦路斯": "キプロス", - "芬兰": "フィンランド", - "保加利亚": "ブルガリア", - "立陶宛": "リトアニア", - "拉脱维亚": "ラトビア", - "爱沙尼亚": "エストニア", - "乌克兰": "ウクライナ", - "塞尔维亚": "セルビア", - "克罗地亚": "クロアチア", - "斯洛文尼亚": "スロベニア", - "捷克": "チェコ共和国", - "斯洛伐克": "スロバキア", - "危地马拉": "グアテマラ", - "萨尔瓦多": "エルサルバドル", - "洪都拉斯": "ホンジュラス", - "尼加拉瓜": "ニカラグア", - "哥斯达黎加": "コスタリカ", - "巴拿马": "パナマ", - "海地": "ハイチ", - "玻利维亚": "ボリビア", - "厄瓜多尔": "エクアドル", - "巴拉圭": "パラグアイ", - "乌拉圭": "ウルグアイ", - "摩洛哥": "モロッコ", - "阿尔及利亚": "アルジェリア", - "突尼斯": "チュニジア", - "尼日利亚": "ナイジェリア", - "加纳": "ガーナ", - "埃塞俄比亚": "エチオピア", - "肯尼亚": "ケニア", - "坦桑尼亚": "タンザニア", - "乌干达": "ウガンダ", - "孟加拉国": "バングラデシュ", - "以色列": "イスラエル", - "黎巴嫩": "レバノン", - "约旦": "ヨルダン", - "伊拉克": "イラク", - "科威特": "クウェート", - "巴林": "バーレーン", - "卡塔尔": "カタール", - "阿曼": "オマーン", - "阿富汗": "アフガニスタン", - "斯里兰卡": "スリランカ", - "缅甸": "ミャンマー", - "尼泊尔": "ネパール", - "蒙古": "モンゴル", - "柬埔寨": "カンボジア", - "老挝": "ラオス", - "文莱": "ブルネイ", - "东帝汶": "東ティモール", - "斐济": "フィジー", - "所罗门群岛": "ソロモン諸島", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻訳履歴", - "enableRecording": "録音を有効にする", - "viewAudioFiles": "音声ファイルを表示", - "headsetUser": "ヘッドセットユーザー", - "phoneUser": "電話ユーザー", - "selectSourceLanguage": "ソース言語を選択", - "selectTargetLanguage": "ターゲット言語を選択", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "翻訳履歴がありません", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "履歴をクリア", - "clearHistoryConfirm": "すべての翻訳履歴をクリアしてもよろしいですか?この操作は元に戻せません。", - "unknownLanguage": "不明な言語", - "deleteSessionRecord": "セッション記録を削除", - "deleteSessionConfirm": "このセッションのすべての翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "音声ファイルを翻訳", - "noAudioFiles": "音声ファイルがありません", - "calculating": "計算中...", - "playing": "再生中...", - "paused": "一時停止", - "clickToPlay": "クリックして再生", - "rename": "名前を変更", - "smartTranscription": "スマート転写", - "renameAudioFile": "音声ファイル名を変更", - "enterNewFileName": "新しいファイル名を入力してください", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "元の記録", - "recordSummary": "記録要約", - "clickToGenerateSummary": "下のボタンをクリックしてセッション要約を生成", - "summaryContent": "要約内容", - "copied": "コピーしました", - "summaryCopiledToClipboard": "要約をクリップボードにコピーしました", - "extractSummary": "要約を抽出", - "summaryGenerated": "要約が生成されました", - "generating": "生成中...", - "regenerate": "再生成", - "summaryTimeoutMessage": - "要約生成リクエストがタイムアウトしました。ネットワークの問題またはサーバーの過負荷が原因の可能性があります。", - "deleteTranslationRecord": "翻訳記録を削除", - "deleteTranslationConfirm": "この翻訳記録を削除してもよろしいですか?この操作は元に戻せません。", - "originalText": "元のテキスト", - "translatedText": "翻訳されたテキスト", - "sessionSummary": "セッション要約", - "cannotShare": "共有できません", - "generateSummaryFirst": "まず要約を生成してください", - "translationSessionRecord": "翻訳セッション記録", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "デバイスペアリング", "connectYourDeepSoundHeadset": "DeepSoundヘッドセットを接続", "bind": "バインド", @@ -1319,14 +1241,11 @@ const Map jaJP = { "autoInputCode": "コードを自動入力", "skipBinding": "バインドをスキップ", "rescan": "再スキャン", - "verifyingDevice": "デバイスを確認中...", "confirmBinding": "バインドを確認", "associatingDevice": "デバイスを関連付け中...", "goToBluetoothSettings": "Bluetooth設定に移動", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "ペアリング準備完了", "preparingPairingEnvironment": "ペアリング環境を準備中...", "connectDeepSoundViaSystemBluetooth": @@ -1335,8 +1254,6 @@ const Map jaJP = { "establishingDeviceAssociation": "デバイス関連付けを確立中...", "waitingCompletePairing": "お待ちください、ペアリングを完了中...", "pairingSuccessRedirecting": "ペアリング成功!ホームページにリダイレクト中...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "接続されたデバイスがDeepSoundであることを確認してください", "deviceAlreadyBoundToOtherAccount": "このデバイスは既に他のアカウントにバインドされています", "deviceAssociationFailed": "デバイス関連付けに失敗しました。再試行してください", @@ -1344,18 +1261,11 @@ const Map jaJP = { "networkError": "ネットワークエラー", "authorizationFailedCheckCode": "承認に失敗しました。承認コードを確認してください", "pairingFailedRetry": "ペアリングに失敗しました。再試行してください", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Bluetoothを有効にしてください', 'deviceDisconnected': 'デバイスが切断されました', 'readyToStartPairing': 'ペアリング開始準備完了', 'checkingEnvironment': '環境を確認中...', 'ensureHeadsetOnAndPairingMode': 'ヘッドセットがオンでペアリングモードであることを確認してください', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'セキュア接続を確立中...', 'needManualBindingAuthCode': '手動バインド承認コードが必要...', 'pairingSuccessful': 'ペアリング成功!', @@ -1374,21 +1284,29 @@ const Map jaJP = { 'blePairingStartupFailed': 'BLEペアリング開始に失敗', 'bleConnectionFailed': 'BLE接続に失敗', 'deviceAuthorizationFailedCheckCode': 'デバイス承認に失敗しました。承認コードを確認してください', - - ///iOS蓝牙引导窗 - '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": "ウェルカム特典", + "firstBindRewardDesc": "バインド特典を受け取りました。", + "vipLevelLabel": "VIP レベル:", + "expiryLabel": "有効期限:", + "notActivated": "未有効", + "aiChatCreditsLabel": "AI チャットクレジット:", + "translationCreditsLabel": "翻訳クレジット:", + "meetingCreditsLabel": "会議クレジット:", + "ok": "OK", - //用户反馈页 + // 用户反馈模块 "feedback": "フィードバック", 'feedbackInfo': 'フィードバックや提案を提供', 'feedbackDescription': '問題や提案を説明してください', @@ -1413,20 +1331,62 @@ 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": "充電中", "updateContent": "更新内容", "removeEarbudsEnsureBattery": "両方のイヤホンを取り出し、バッテリーレベルが20%以上であることを確認してください", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': '新バージョン @version が見つかりました', + 'otaConfirmUpdateNow': '今すぐアップデートしますか?', + 'otaUpdate': 'アップデート', + 'otaUpgradeSuccess': 'アップグレード成功', + 'otaUpgradeCompleteRepair': + 'ファームウェアのアップグレードが完了しました!\n\nデバイスを再ペアリングする必要があります。ペアリングページに移動しますか?', + 'otaPairLater': '後でペアリング', + 'otaPairNow': '今すぐペアリング', + 'okConfirm': 'OK', + // OTA升级模块 - 设备检查 + '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': '本アップデートにはパフォーマンスの最適化とバグ修正が含まれています。', + 'otaGetLatestVersionFailed': '最新バージョン情報の取得に失敗しました', + 'otaGetVersionInfoFailed': 'バージョン情報の取得に失敗しました', + 'otaCheckingDeviceStatus': 'デバイスの状態を確認中...', + 'otaDownloadFailedCheckNetwork': 'ダウンロード失敗。ネットワーク接続を確認してください', + 'otaDownloadFailed': 'ダウンロード失敗', + 'otaPreparingConnection': 'デバイス接続を準備中...', + 'otaConnectingDevice': 'デバイスに接続中...', + 'otaUpgradeStarted': 'OTAアップグレード開始...', + 'otaUpgradeProgressWithPercent': 'アップグレード進捗: @percent%', + 'otaUpgradeSuccessComplete': 'アップグレードが完了しました', + 'otaUpgradeFailedWithCode': 'アップグレード失敗、エラーコード: @code', + 'otaUpgradeFailedTitle': 'アップグレード失敗', + 'otaUpgradeFailedDesc': 'デバイス接続またはアップデートパッケージを確認してください。エラーコード: @code', + 'otaDeviceDisconnected': 'デバイスが切断されました', + 'otaDeviceConnected': 'デバイスが接続されました', + + // 音乐模块 "noMusic": "音楽がありません", // 暂无音乐 "noPlayingMusic": "再生中の音楽がありません", // 暂无播放音乐 "unknownSong": "不明な曲", // 未知歌曲 @@ -1474,22 +1434,122 @@ const Map jaJP = { "波斯语": "ペルシャ語", "斯瓦希里语": "スワヒリ語", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "メールアドレス", + "中国": "中国", + "美国": "アメリカ", + "加拿大": "カナダ", + "俄罗斯": "ロシア", + "英国": "イギリス", + "德国": "ドイツ", + "意大利": "イタリア", + "法国": "フランス", + "西班牙": "スペイン", + "南非": "南アフリカ", + "沙特阿拉伯": "サウジアラビア", + "土耳其": "トルコ", + "日本": "日本", + "韩国": "韓国", + "新加坡": "シンガポール", + "马来西亚": "マレーシア", + "泰国": "タイ", + "越南": "ベトナム", + "印度": "インド", + "巴基斯坦": "パキスタン", + "菲律宾": "フィリピン", + "印度尼西亚": "インドネシア", + "阿联酋": "アラブ首長国連邦", + "墨西哥": "メキシコ", + "巴西": "ブラジル", + "阿根廷": "アルゼンチン", + "澳大利亚": "オーストラリア", + "新西兰": "ニュージーランド", + "中国香港": "香港、中国", + "中国澳门": "マカオ、中国", + "中国台湾": "台湾、中国", + "埃及": "エジプト", + "希腊": "ギリシャ", + "荷兰": "オランダ", + "比利时": "ベルギー", + "匈牙利": "ハンガリー", + "罗马尼亚": "ルーマニア", + "瑞士": "スイス", + "奥地利": "オーストリア", + "丹麦": "デンマーク", + "瑞典": "スウェーデン", + "挪威": "ノルウェー", + "波兰": "ポーランド", + "秘鲁": "ペルー", + "智利": "チリ", + "哥伦比亚": "コロンビア", + "委内瑞拉": "ベネズエラ", + "葡萄牙": "ポルトガル", + "卢森堡": "ルクセンブルク", + "爱尔兰": "アイルランド", + "冰岛": "アイスランド", + "阿尔巴尼亚": "アルバニア", + "马耳他": "マルタ", + "塞浦路斯": "キプロス", + "芬兰": "フィンランド", + "保加利亚": "ブルガリア", + "立陶宛": "リトアニア", + "拉脱维亚": "ラトビア", + "爱沙尼亚": "エストニア", + "乌克兰": "ウクライナ", + "塞尔维亚": "セルビア", + "克罗地亚": "クロアチア", + "斯洛文尼亚": "スロベニア", + "捷克": "チェコ共和国", + "斯洛伐克": "スロバキア", + "危地马拉": "グアテマラ", + "萨尔瓦多": "エルサルバドル", + "洪都拉斯": "ホンジュラス", + "尼加拉瓜": "ニカラグア", + "哥斯达黎加": "コスタリカ", + "巴拿马": "パナマ", + "海地": "ハイチ", + "玻利维亚": "ボリビア", + "厄瓜多尔": "エクアドル", + "巴拉圭": "パラグアイ", + "乌拉圭": "ウルグアイ", + "摩洛哥": "モロッコ", + "阿尔及利亚": "アルジェリア", + "突尼斯": "チュニジア", + "尼日利亚": "ナイジェリア", + "加纳": "ガーナ", + "埃塞俄比亚": "エチオピア", + "肯尼亚": "ケニア", + "坦桑尼亚": "タンザニア", + "乌干达": "ウガンダ", + "孟加拉国": "バングラデシュ", + "以色列": "イスラエル", + "黎巴嫩": "レバノン", + "约旦": "ヨルダン", + "伊拉克": "イラク", + "科威特": "クウェート", + "巴林": "バーレーン", + "卡塔尔": "カタール", + "阿曼": "オマーン", + "阿富汗": "アフガニスタン", + "斯里兰卡": "スリランカ", + "缅甸": "ミャンマー", + "尼泊尔": "ネパール", + "蒙古": "モンゴル", + "柬埔寨": "カンボジア", + "老挝": "ラオス", + "文莱": "ブルネイ", + "东帝汶": "東ティモール", + "斐济": "フィジー", + "所罗门群岛": "ソロモン諸島", + "刚果民主共和国": "コンゴ民主共和国", + "安哥拉": "アンゴラ", + "苏丹": "サンドウィッチ諸島", + "马尔代夫": "マルディブ", + "不丹": "ブンタン", + "摩纳哥": "モナコ", + "圣马力诺": "サンマリノ", + "牙买加": "ジャマイカ", + "巴哈马": "バーナーーサ", + "巴布亚新几内亚": "パピュアニューギニア", + "萨摩亚": "サモア", }; diff --git a/lib/core/translations/language/ko_kr.dart b/lib/core/translations/language/ko_kr.dart index 68aac84bb..f865bdc11 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': '계속', @@ -16,8 +17,12 @@ const Map koKR = { "requestTimeout": "요청 시간 초과", "responseTimeout": "응답 시간 초과", "unknownError": "알 수 없는 오류", - "asrConnectionFailed": - "음성 인식 서비스 연결에 실패했습니다. 네트워크를 확인한 후 다시 시도해 주세요.", + "asrConnectionFailed": "음성 인식 서비스 연결에 실패했습니다. 네트워크를 확인한 후 다시 시도해 주세요.", + "justNow": "방금 전", + "minutesAgo": "@minutes분 전", + "yesterday": "어제", + "daysAgo": "@days일 전", + "hoursAgo": "@hours시간 전", // 启动页 "slogan": "세상을 연결하다, 소리를 넘어서", @@ -28,7 +33,7 @@ const Map koKR = { "explore": "탐색", "settings": "설정", - // 语言 + // 语言列表 "followingSystem": "시스템 설정 따르기", "chinese": "중국어", "english": "영어", @@ -72,7 +77,7 @@ const Map koKR = { "arabic": "아랍어", "persian": "페르시아어", - // 登录页 + // 登录模块 "welcome": "환영합니다", "loginTips": "휴대폰 번호 또는 이메일로 로그인/가입하세요", "accountNumber": "휴대폰 번호 또는 이메일", @@ -99,12 +104,8 @@ const Map koKR = { "resendVerificationCode": "인증 코드 다시 보내기", "login": "로그인", "usePasswordLogin": "비밀번호로 로그인", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 선언", // Voitrans 声明 "welcomeToThisApp": "Voitrans에 오신 것을 환영합니다. 충분히 읽어주십시오", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", '동의하고 시작하기'를 클릭하면 위 약관을 충분히 읽고 동의한 것으로 간주됩니다. '동의하지 않음'을 클릭하면 앱이 종료됩니다.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "동의하지 않음", // 不同意 @@ -159,7 +160,27 @@ const Map koKR = { 'right': '오른쪽', 'checkConnectionStatusFailed': '연결 상태 확인 실패', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': '블루투스 초기화 실패: @error', + 'needBluetoothAndLocationPermission': '기기를 검색하려면 블루투스 및 위치 권한이 필요합니다', + 'permissionRequestFailedWithError': '권한 요청 실패: @error', + 'needPermission': '권한 필요', + 'blePermissionDialogContent': '기기를 검색하려면 블루투스 및 위치 권한이 필요합니다. 설정에서 활성화해 주세요.', + 'needEnableBluetooth': '블루투스를 켜주세요', + 'enableBluetoothDialogContent': '기기를 검색하고 연결하려면 블루투스를 켜주세요.', + 'bleScanFailedWithError': '검색 실패: @error', + 'bleConnectionSuccess': '연결 성공', + 'bleConnectedToDevice': '@device에 연결됨', + 'bleConnectionFailedWithError': '연결 실패: @error', + 'bleDisconnected': '연결 끊김', + 'bleDeviceDisconnected': '기기 연결이 끊겼습니다', + 'bleDisconnectFailedWithError': '연결 해제 실패: @error', + 'signalStrong': '강함', + 'signalMedium': '보통', + 'signalWeak': '약함', + 'signalVeryWeak': '매우 약함', + + // 发现页 "searchAi": "AI 기능 검색...", "exploreSlogan": "스마트 이어폰, 무한한 가능성", "exploreSlogan1": "스마트 동반자, 무한한 가능성", @@ -182,118 +203,142 @@ const Map koKR = { "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", - "asr": "ASR", - "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': '번역 기본 100', - 'trans_002_name': '번역 기본 500', - 'trans_003_name': '번역 기본 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': '번역 100회 포함(음성/텍스트).', - 'trans_002_desc': '번역 500회 포함(음성/텍스트).', - 'trans_003_desc': '번역 1000회 포함(음성/텍스트).', -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 + // 用量统计模块 + "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": "데이터 용량 통계", + "sourceTextCharacters": "원본 텍스트 글자 수", + "ttsTextCharacters": "TTS 텍스트 글자 수", + "effectiveAudioDuration": "유효 오디오 시간", + "totalSessionDuration": "총 세션 시간", + "costStats": "비용 통계", + "estimatedCost": "예상 비용", + "dailyCostThreshold": "일일 비용 한도", + "monthlyCostThreshold": "월간 비용 한도", + "usageBehaviorStats": "사용 행동 통계", + "mostUsedLanguagePair": "가장 많이 사용한 언어 쌍", + "mostUsedMode": "가장 많이 사용한 모드", + "asrApiCalls": "음성 인식 호출 수", + "totalAudioDuration": "총 오디오 시간", + "audioFileSize": "오디오 파일 크기", + "transcriptBytes": "전사 바이트 수", + "loadFailed": "로드 실패", + "statsLoadFailedTryLater": "통계를 불러오지 못했습니다. 나중에 다시 시도해 주세요.", + "cleanupComplete": "정리 완료", + "cleanedOldData": "90일 이전 데이터를 정리했습니다", + "exportFeature": "내보내기 기능", + "exportInDevelopment": "데이터 내보내기 기능을 개발 중입니다", + + // 商品模块 - 通用 + 'availablePackages': '이용 가능한 패키지', + 'remainingQuota': '잔여 한도', + 'totalQuota': '총 한도', + 'remaining': '잔여', + 'featureDescription': '기능 설명', + 'paymentSuccess': '결제 성공', + 'paymentFailed': '결제 실패', + 'gotIt': '확인', + 'paymentFailedTryAgain': '결제에 실패했습니다. 다시 시도해 주세요.', + 'selectPaymentMethod': '결제 수단 선택', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay 주문 생성에 실패했습니다', + 'alipayOrderCreateFailed': 'Alipay 주문 생성에 실패했습니다', + 'appleOrderCreateFailed': 'Apple 주문 생성에 실패했습니다', + 'googleOrderCreateFailed': 'Google 주문 생성에 실패했습니다', + 'paypalOrderCreateFailed': 'PayPal 주문 생성에 실패했습니다', + 'paymentException': '결제 예외', + 'paymentLaunchFailed': '결제 실행에 실패했습니다', + 'paymentExceptionWithError': '결제 예외: @error', + 'paymentProcessingCheckLater': '주문이 처리 중입니다. 나중에 확인해 주세요.', + 'paymentResultQueryException': '결제 결과 조회에 실패했습니다: @error', + 'orderConfirmedQuotaRefreshed': '주문이 확인되었습니다. 할당량이 갱신되었습니다.', + 'paymentCompletedConfirming': '결제 완료. 확인 중…', + 'paymentCancelled': '결제가 취소되었습니다', + 'paypalOpenedCompleteInBrowser': 'PayPal이 열렸습니다. 브라우저에서 결제를 완료해 주세요.', + 'paypalOpenFailed': 'PayPal 결제 페이지를 열 수 없습니다', + 'paymentTestTitle': '결제 테스트', + 'paymentTestOrderInfo': '테스트 주문 정보', + 'paymentTestProductId': '상품 ID', + 'paymentTestProductDescription': '상품 설명', + 'paymentTestWechatDescription': 'WeChat Pay 결제 테스트', + 'paymentTestAlipayDescription': 'Alipay 결제 테스트', + 'paymentTestAmount': '금액', + 'paymentTestSelectAmount': '테스트 금액 선택', + 'paying': '결제 중...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': '결제 상태', + 'errorInfoWithMessage': '오류: @message', + 'retest': '다시 테스트', + 'paymentTestInstructionsTitle': '안내', + 'paymentTestInstructionsContent': + '1. 테스트 금액을 선택하세요 (권장: ¥0.01)\n2. 결제 버튼을 클릭하여 시작\n3. 결제 앱에서 결제를 완료\n4. 돌아와서 결과를 확인', + 'startingWechatPayment': 'WeChat Pay 시작 중...', + 'startingAlipayPayment': 'Alipay 시작 중...', + 'wechatPaymentSuccess': 'WeChat Pay 결제 성공!', + 'wechatPaymentFailed': 'WeChat Pay 결제 실패', + 'wechatPaymentLaunchFailed': 'WeChat Pay 실행에 실패했습니다', + 'cannotLaunchWechatPayment': 'WeChat Pay를 실행할 수 없습니다', + 'wechatPaymentException': 'WeChat Pay 예외', + 'wechatPaymentTestCompleted': 'WeChat Pay 결제 테스트 완료', + 'alipayPaymentSuccess': 'Alipay 결제 성공!', + 'alipayPaymentFailed': 'Alipay 결제 실패', + 'alipayPaymentLaunchFailed': 'Alipay 실행에 실패했습니다', + 'cannotLaunchAlipayPayment': 'Alipay를 실행할 수 없습니다', + 'alipayPaymentException': 'Alipay 예외', + "insufficientIntegral": "포인트 부족", + "insufficientBalanceDesc": '잔액이 부족합니다. 해당 충전 페이지에서 충전해 주세요.', + "recharge": '충전하러 가기', + "aiMemberExpiredDesc": 'AI 멤버십이 만료되었습니다. 멤버십 충전 페이지에서 갱신해 주세요.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': '음악 및 추천', + 'navigationAndRoutes': '내비게이션 및 경로', + 'nearbySearch': '주변 검색', + 'newsInformation': '뉴스', + 'communicationAssistant': '커뮤니케이션 어시스턴트', + 'aiHeaderDesc1': '더 긴 대화 한도, 더 많은 도구 호출, 확장된 컨텍스트 길이.', + 'aiHeaderDesc2': '에이전트 Q&A, 요약, 분석 및 작업 실행에 적합합니다.', + 'musicSearchPlaybackControl': '음악 라이브러리 검색 및 재생 제어', + 'smartPlaylistAndSimilarRecommendations': '스마트 재생목록 및 유사 곡 추천', + 'routePlanningAndCongestionAvoidance': '경로 계획 및 정체 구간 우회', + 'voiceBroadcastAndWaypoints': '음성 안내 및 경유지 설정', + 'realTimeWeatherForecast': '실시간 날씨 및 예보', + 'clothingAdviceAndTravelReminders': '의류 조언 및 여행 알림', + 'poiSearchFoodGasParking': 'POI 검색: 맛집 / 주유소 / 주차장', + 'ratingsHoursAndDirectRoutes': '평점, 영업 시간 및 바로 경로 안내', + 'hotNewsAndTopicOverview': '인기 뉴스 및 주제 개요', + 'longArticleSummariesAndKeyPoints': '긴 기사 요약 및 핵심 포인트', + 'helpCallAndSMS': '전화 및 문자 도움', + 'templatedMessagesAndScheduleReminders': '템플릿 메시지 및 일정 알림', + 'aiDisclaimer': '기능은 기기 권한, 서비스 가용성 및 네트워크 상태에 따라 달라집니다.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': '실시간 받아쓰기', + 'sceneLexicon': '시나리오 용어집', + 'subtitleDisplay': '자막', 'transHeaderDesc1': '실시간 동시통역과 텍스트 번역, 저지연 음성 방송.', 'transHeaderDesc2': '여행, 비즈니스, 연설, 교육에 적합합니다.', 'translateZhEn': '중-영 번역', @@ -306,30 +351,24 @@ const Map koKR = { 'colorHighContrast': '높은 색 대비', 'transDisclaimer': '번역 품질은 마이크, 네트워크 지연 및 주변 소음에 따라 달라집니다.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 + // 商品模块 - 会议商品页 + 'meetingRecording': '회의 녹음', + 'transcriptionAndSummary': '전사 및 요약', + 'keywordSearch': '키워드 검색', + 'collaborationSharing': '협업 및 공유', + 'meetingHeaderDesc1': '오디오 녹음, 전사, 키워드 검색 및 자동 요약.', + 'meetingHeaderDesc2': '비즈니스 회의, 수업 필기 및 인터뷰 회의록에 적합합니다.', + 'meetingAutoRecording': '자동 녹음 및 분할', + 'meetingSpeakerTagging': '발언자 태깅', + 'meetingLongAudioTranscription': '장시간 오디오 전사', + 'meetingKeyPointSummary': '핵심 사항 추출', + 'meetingTopicNameSearch': '주제/이름으로 검색', + 'meetingTimelineJump': '타임라인 이동', + 'meetingExportSummary': '회의록 내보내기', + 'meetingMultiPlatformShare': '멀티 플랫폼 공유', + 'meetingDisclaimer': '조용한 환경에서 사용하세요. 성능은 마이크와 네트워크에 따라 달라집니다.', + + // 商品模块 - VIP会员页 'benefitsOverview': '혜택 개요', 'higherQuota': '더 높은 사용 한도', 'lowerUnitPrice': '더 낮은 단가', @@ -344,45 +383,68 @@ const Map koKR = { 'crossDeviceSync': '디바이스 간 동기화', 'vipDisclaimer': '실제 혜택은 패키지 세부사항에 따라 달라지며 버전에 따라 변경될 수 있습니다.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI 기본 100', + 'ai_002_name': 'AI 기본 500', + 'ai_003_name': 'AI 기본 1000', + 'meet_001_name': '회의 기본 100', + 'meet_002_name': '회의 기본 500', + 'meet_003_name': '회의 기본 1000', + 'trans_001_name': '번역 기본 100', + 'trans_002_name': '번역 기본 500', + 'trans_003_name': '번역 기본 1000', + 'ai_001_desc': 'AI 핵심 기능 100회 이용 포함.', + 'ai_002_desc': 'AI 핵심 기능 500회 이용 포함.', + 'ai_003_desc': 'AI 핵심 기능 1000회 이용 포함.', + 'meet_001_desc': '회의 녹음/전사 100회 포함.', + 'meet_002_desc': '회의 녹음/전사 500회 포함.', + 'meet_003_desc': '회의 녹음/전사 1000회 포함.', + 'trans_001_desc': '번역 100회 포함(음성/텍스트).', + 'trans_002_desc': '번역 500회 포함(음성/텍스트).', + 'trans_003_desc': '번역 1000회 포함(음성/텍스트).', + + // 商品模块 - 页脚 + 'appNameProvider': '앱: VoiTrans · 제공: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP 고객 서비스 QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 '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, ", - // AI 引导步骤 - '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": "회의 시작", 'edit': '수정', 'delete': '삭제', @@ -394,40 +456,37 @@ const Map koKR = { 'recordingDetails': '녹음 상세 정보', 'aiSummary': 'AI 요약', 'meetingTranscript': '회의 원문', - - // Meeting模块 - 导航和基础功能 - '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': '블루투스 연결', + 'meetingReconnect': '다시 연결', + 'searching': '검색 중...', + 'searchFailed': '검색 실패, 블루투스가 켜져 있는지 확인해 주세요', + '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': '종료하고 저장', // 结束录音并保存 @@ -437,206 +496,210 @@ const Map koKR = { 'meetingRecordStopFailed': '녹음을 중지하지 못했습니다. 다시 시도해주세요.', // 结束录音失败,请重试 'meetingRecordSaveFailed': '녹음을 저장하지 못했습니다. 다시 시도해주세요.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': '녹음 중', // 录音进行中 - 'meetingRecordRecordingNotificationBody': '백그라운드에서 녹음 중입니다. 탭하여 앱으로 돌아가세요.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + '백그라운드에서 녹음 중입니다. 탭하여 앱으로 돌아가세요.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': '다른 앱 위에 표시', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': '통화 중 또는 오디오/비디오 번역 중 번역 결과를 표시하려면 오버레이 권한이 필요합니다. 이를 통해 다른 앱을 사용하는 동안에도 실시간 번역을 볼 수 있습니다.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': '녹음 중 녹음 플로팅 바(타이머/일시정지/계속)를 표시하려면 오버레이 권한이 필요합니다.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': '시스템 설정을 자동으로 열 수 없습니다. 설정을 열고 오버레이 권한을 수동으로 허용해주세요.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + '통화 중 또는 오디오/비디오 번역 중 번역 결과를 표시하려면 오버레이 권한이 필요합니다. 이를 통해 다른 앱을 사용하는 동안에도 실시간 번역을 볼 수 있습니다.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + '녹음 중 녹음 플로팅 바(타이머/일시정지/계속)를 표시하려면 오버레이 권한이 필요합니다.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + '시스템 설정을 자동으로 열 수 없습니다. 설정을 열고 오버레이 권한을 수동으로 허용해주세요.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': '전사 중...', + 'summarizing': '요약 중...', + 'analyzing': '분석 중...', + 'summaryComplete': '요약 완료', + 'generate': '생성', + 'overview': '개요', + 'transcription': '전사', + 'summary': '요약', + 'mindMap': '마인드맵', + 'editSpeaker': '수정', + 'nameSpeaker': '발언자 이름 지정', + + // Meeting模块 - 转写与总结 + 'reSummarize': '다시 요약', + 'dateAndTime': '날짜 및 시간', + 'location': '장소', + 'attendees': '참석자', + 'inputLocation': '장소 입력', + 'inputAttendees': '참석자 입력', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '요약 템플릿 선택', + 'useThisTemplate': '이 템플릿 사용', + 'lastUsed': '최근 사용', + 'create': '생성', + 'templateDetails': '템플릿 상세', + 'tag': '태그', + 'description': '설명', + 'template': '템플릿', + 'deleteTemplate': '템플릿 삭제', + 'deleteTemplateConfirm': '이 템플릿을 삭제하시겠습니까?', + 'editTemplate': '템플릿 편집', + 'createTemplate': '템플릿 생성', + 'name': '이름', + 'templateContentHint': + '템플릿 내용을 입력해 주세요! 팁: 위의 AI 버튼을 클릭하면 입력한 이름과 설명을 기반으로 템플릿 내용을 빠르게 생성할 수 있습니다', + 'inputNameHint': '이름을 입력해 주세요', + 'inputDescHint': '설명을 입력해 주세요', + 'custom': '사용자 정의', + 'pleaseEnter': '입력해 주세요', + 'viewAll': '전체 보기', + 'recordingLanguage': '녹음 언어', + 'chineseSimplified': '중국어 보통화(간체)', + 'meetingGenerateNow': '지금 생성', + 'keyEventsAnalyzed': '{count}개의 주요 이벤트를 분석했습니다.', + 'aiAnalysisDesc': 'AI 분석으로 녹음에서 주요 이벤트를 식별하고, 중요한 이벤트를 선택하여 AI로 생성할 수 있습니다.', + + // Meeting模块 - 文件操作 + 'importing': '가져오는 중...', + 'batchImporting': '일괄 가져오기 중...', + 'importingLocalRecordings': '로컬 녹음 파일 가져오는 중...', + 'importFailed': '파일 가져오기 실패: {filePath}, 오류: {error}', + 'importSuccess': '{count}개의 로컬 녹음 파일을 가져왔습니다', + 'importError': '가져오기 실패: {error}', + 'pleaseSelectAudioFile': '오디오 파일을 선택해 주세요', + 'shareAudio': '회의 오디오 공유', + 'shareComplete': '공유 완료!', + 'shareFailed': '공유 실패: {error}', + 'fileProcessingFailed': '파일 처리 실패: {filePath}, 오류: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '마인드맵 저장', + 'shareMindMap': '마인드맵 공유', + 'shareSuccess': '공유 성공', + + // Meeting模块 - AI问答 + 'askAI': 'AI에게 질문...', + 'askAIPrompt': '오늘 무엇을 도와드릴까요?', + 'continueAsk': '계속 질문하기', + 'todoList': '할 일 목록', + 'extractConclusion': '결론 추출', + 'generateKeyIndicators': '핵심 지표 생성', + + // Meeting模块 - 分享与导出 + 'shareLink': '링크 공유', + 'copyTranscript': '전사 복사', + 'copySummary': '요약 복사', + 'exportAudio': '오디오 내보내기', + 'exportTranscript': '전사 내보내기', + 'shareMeetingAudio': '회의 오디오 공유', + 'exportSummary': '요약 내보내기', + 'exportAs': '다른 형식으로 내보내기', + 'exportingPDF': 'PDF 내보내는 중...', + 'export': '내보내기', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '이 발언자의 모든 문단에 적용', + 'summaryWillBeUpdatedAutomatically': '요약은 템플릿에 따라 자동으로 업데이트됩니다', + 'nameCurrentSpeaker': '현재 발언자 이름 지정', + 'recentlyUsedNames': '최근 사용한 이름', + 'applyToCurrentParagraph': '현재 문단에 적용', + 'totalTime': '총 시간', + 'summarySpeakerWillBeUpdatedAutomatically': '요약의 발언자가 자동으로 업데이트됩니다', + + // Meeting模块 - 云端同步 + 'syncToCloud': '클라우드에 동기화', + 'syncToCloudTip': + '녹음을 클라우드에 자동으로 동기화합니다. VOITRANS APP 또는 VOITRANS Web(web.voitrans.com)을 통해 녹음을 재생, 관리 및 공유할 수 있습니다.', + 'syncToVoitransApp': 'VOITRANS APP에 동기화', + 'transcriptionRecord': '전사 기록', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': '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', - - // 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', - '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.', + 'transcriptionRecords': '전사 기록', + 'templateCommunity': '템플릿 커뮤니티', + 'comingSoon': '곧 출시', + 'integration': '통합', + 'voitransPrivateCloud': 'VOITRANS 프라이빗 클라우드', + 'enabled': '활성화됨', + 'disabled': '비활성화됨', + 'myVoitransDevice': '내 VOITRANS 기기', + 'helpAndFeedback': '도움말 및 피드백', + 'aboutVoitrans': 'VOITRANS 정보', + 'meetingDays': '일', + 'meetingHours': '시간', + 'voitransAiMember': 'Voitrans AI 멤버', + 'unlockStarterMember': '스타터 멤버 잠금 해제', + 'bindDeviceToActivate': 'Voitrans 기기를 연결하여 스타터 멤버십을 활성화하세요', + 'unlockNow': '지금 잠금 해제', + + // Meeting模块 - 会员与升级 + 'comparison': '비교', + 'detailedInfo': '상세 정보', + 'monthlyTranscriptionTime': '월간 전사 시간', + 'unlimited': '무제한', + 'professionalTemplates': '전문 템플릿', + 'limited': '제한됨', + 'fullTemplates': '전체 템플릿', + 'professionalTerms': '전문 용어', + 'customTemplates': '맞춤 템플릿', + 'visualMindMap': '비주얼 마인드맵', + 'speakerIdentification': '발언자 식별', + 'aiVoiceEnhancement': 'AI 음성 향상', + 'audioImport': '오디오 가져오기', + 'multipleExportFormats': '다양한 내보내기 형식', + 'professionalSummaryTemplates': '전문 요약 템플릿', + 'professionalTemplateDesc': '업무 효율성을 높이는 전문 템플릿 디자인. 업종별 요구에 맞춰 맞춤 제작됩니다.', + '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.', + '요약을 넘어서 마인드맵으로 핵심 사항을 정리하고 시각화하여 전체 내용을 더 효과적으로 이해할 수 있습니다.', + '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.', - 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'AI 음성 향상은 다양한 노이즈 감소 설정을 지원하여 배경 소음을 지능적으로 제거하고, 음성 선명도를 높이며, 오디오 재생 품질을 향상시킵니다.', + 'audioImportDesc': '음성 메모, Google 드라이브 등 로컬 또는 타사 앱에서 오디오 파일을 쉽게 가져올 수 있습니다.', '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.', - '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.', + '오디오 녹음, 전사 텍스트 및 요약을 다양한 형식(TXT, PDF, JPEG)으로 내보내 필요에 맞게 활용하세요.', + 'upgradeMembership': '멤버십 업그레이드', + 'yearlySubscription': '연간 구독', + 'monthlySubscription': '월간 구독', + 'proMonthly': 'Pro ¥60/월', + 'proMonthlyDesc': '7일 무료 체험 후 ¥800/년. 체험 기간 종료 전 언제든지 취소 가능.', + 'sevenDayTrial': '7일 무료 체험', + 'unlimitedMonthly': 'Unlimited ¥120/월', + 'unlimitedMonthlyDesc': '7일 무료 체험 후 ¥1600/년. 체험 기간 종료 전 언제든지 취소 가능.', + 'trialNote': '*7일 무료 체험 후 연간 결제, 언제든지 취소 가능.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/월', + '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', - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '이 발언자의 모든 문단에 적용', - 'summaryWillBeUpdatedAutomatically': '요약은 템플릿에 따라 자동으로 업데이트됩니다', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'unlimitedMonthlyPrice': '¥198/월', + 'upgradeNote': '*구독 업그레이드 시, 기존 구독의 잔여 기간이 자동으로 계산되어 결제 계정으로 환불됩니다', + 'buyMoreTranscriptionTime': '전사 시간 추가 구매', + 'sixThousandMinutes': '6,000분', + 'threeThousandMinutes': '3,000분', + 'sixHundredMinutes': '600분', + 'oneHundredTwentyMinutes': '120분', + 'validityPeriod': '*유효 기간: ', + 'validityNote': '구매 후 즉시 활성화되며, 활성화 후 2년간 유효합니다.', + 'purchase': '구매', + + // Meeting模块 - 录音语言 + 'recordLanguage': '녹음 언어', + 'cantonese': '광둥어', + 'sichuan': '쓰촨 방언', + 'shanghai': '상하이 방언', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': '알 수 없는 언어', + 'analysisFailed': '분석에 실패했습니다. 나중에 다시 시도해 주세요', + 'transcriptionFailed': '전사에 실패했습니다. 나중에 다시 시도해 주세요', + 'summaryFailed': '요약에 실패했습니다. 나중에 다시 시도해 주세요', + 'summaryFailedShort': '요약 실패', + 'transcriptionFailedShort': '전사 실패', + + // Meeting模块 - 播放器 + 'playerNotReady': '오디오 플레이어가 준비되지 않았습니다. 잠시 기다려 주세요', + 'playFailed': '재생 실패', + 'audioFileNotFound': '오디오 파일을 찾을 수 없습니다', + 'fetchingAudio': '클라우드에서 오디오를 가져오는 중...', + 'playerLoadFailed': '오디오 플레이어를 로드하지 못했습니다', // 设置页 "systemSettings": "시스템 설정", @@ -645,10 +708,9 @@ const Map koKR = { "translationRecharge": "번역료", "meetingAssistantRecharge": "회의 어시스턴트료", "cloudSync": "클라우드 동기화료", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "memberService": "멤버 서비스", + "bindRewardTitle": "리워드", + "bindRewardSimpleDesc": "첫 기기 연결 보상이 지급되었습니다. 확인을 탭하여 닫으세요.", "joinDevice": "연결된 기기:", "accountId": "계정 ID:", "systemSetting": "시스템 설정", @@ -686,42 +748,29 @@ const Map koKR = { "bleHeadsetFirmwareUpgrade": "BLE 헤드셋 펌웨어 버전 업그레이드", "deviceManagement": "기기 관리", "manageConnectedDevices": "연결된 블루투스 기기 관리", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '현재 최신 버전입니다 {version}', 'checkUpdateFailed': '업데이트 확인 실패', 'networkErrorRetry': '네트워크 오류, 잠시 후 다시 시도하세요', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "실시간 음성 대화", "realtimeVoiceChatInfo": "지능형 음성 상호작용 기능 체험 (기능 미리보기)", "loading": "로딩 중...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", - "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", - -//Agent 模块 - // agent View + "noDevicesBound": "연결된 기기가 없습니다", + "pleaseBindDeviceFirst": "관리하려면 먼저 기기를 연결해 주세요", + "noMacAddress": "MAC 주소 없음", + "licenseCode": "라이선스 코드", + "confirmUnbind": "연결 해제 확인", + "confirmUnbindMessage": "\"{deviceName}\" 기기의 연결을 해제하시겠습니까?", + "confirmUnbindAction": "연결 해제 확인", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "채팅 기록 지우기", "online": "온라인", @@ -749,22 +798,24 @@ const Map koKR = { "loadMoreMessages": "메시지 더 불러오기...", "loadFailedClickRetry": "불러오기 실패, 클릭하여 재시도", "swipeUpForMore": "더 보려면 위로 스와이프하세요", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "도와드리고 있습니다. 잠시만 기다려 주세요!", // 正在帮您,请稍等! + "voice_interrupt": "음성 중단", // 语音打断 + 'voice_interrupt_tip': + '활성화 시: AI가 말하는 동안 사용자의 음성으로 중단되지 않으며, 한 번에 하나의 대화 라운드만 처리할 수 있습니다. 새 라운드를 시작하려면 웨이크업 워드를 말하세요.', + + // Agent模块 - 预设提示词 + "presetMusic": "음악 틀어줘", // 来点音乐 + "presetNavigation": "내비게이션", // 导航 + "presetWeather": "오늘 날씨", // 今日天气 + "presetNews": "오늘 뉴스", // 今日新闻 + "presetFood": "주변 맛집", // 美食 + "playSomeMusic": "인기 음악 틀어줘", // 播放一些流行音乐 + "navigationTo": "안내해줘", // 导航到 + "todayWeather": "오늘 날씨 어때?", // 今日天气 + "todayNews": "오늘 뉴스 뭐 있어?", // 今日新闻 + "nearbyFood": "근처에 맛있는 거 뭐 있어?", // 美食 + + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '안녕하세요! 저는 **샤오옌**입니다. 다음과 같은 도움을 드릴 수 있습니다:\n\n' '• 질문에 답하고 정보 제공\n\n' '• 실시간 음성 번역\n\n' @@ -780,18 +831,17 @@ const Map koKR = { 'startVoiceInput': '음성 입력 시작', 'startPhoneCallMode': '전화 걸기 모드 시작, 음성 입력 시작', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '여기에 메시지를 입력하세요...', // 全屏编辑器输入提示 'characterCount': '{count}자', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '복사', 'copySuccess': '복사 성공', 'report': '신고', 'submitSuccess': '제출 성공', 'submitFailed': '제출 실패', 'reportSubmitted': '신고가 제출되었습니다. 최대한 빨리 처리하겠습니다.', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '유해/안전하지 않음', 'pornographicVulgar': '음란/저속함', 'misleadingAttack': '오해의 소지가 있는 공격', @@ -800,17 +850,21 @@ const Map koKR = { 'copyrightViolation': '내 저작권, 명예 등을 침해', 'other': '기타', 'reportDescriptionHint': '신고 사유를 알고 싶습니다. 겪으신 문제를 설명해주세요.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'AI가 생성함', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': '도구 호출', + 'noResult': '결과 없음', + 'noToolCallContentToCopy': '복사할 도구 호출 내용이 없습니다', + 'toolCallDetails': '도구 호출 세부사항:', + 'toolCallContentCopied': '도구 호출 내용이 클립보드에 복사되었습니다', + + // Agent模块 - 音乐卡片 'recommendedMusic': '추천 음악입니다:', 'playList': '재생 목록', 'moreMusic': '더 많은 음악', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': '시간', // 小时单位 @@ -825,7 +879,29 @@ const Map koKR = { "bicycling": "자전거", "tsransit": "대중교통", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': '내비게이션 앱 선택', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Amap으로 내비게이션', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Baidu Maps로 내비게이션', + 'googleMap': 'Google 지도', + 'useGoogleNavigation': 'Google 지도로 내비게이션', + 'appleMap': 'Apple 지도', + 'useAppleNavigation': 'Apple 지도로 내비게이션', + 'builtInNavigation': '내장 내비게이션', + 'useBuiltInNavigation': '내장 지도로 내비게이션', + 'navigationStartFailed': '내비게이션 시작 실패', + 'cannotPlayMusicListRetryLater': '음악 목록을 재생할 수 없습니다. 나중에 다시 시도해 주세요', + 'cannotPlaySong': '노래를 재생할 수 없습니다', + 'openMapError': '지도를 여는 중 오류가 발생했습니다', + 'pleaseInstallAmapApp': 'Amap 앱을 설치해 주세요', + 'pleaseInstallBaiduMapApp': 'Baidu Maps 앱을 설치해 주세요', + 'appleMapStartFailed': 'Apple 지도 시작 실패', + 'appleMapUnavailable': 'Apple 지도를 사용할 수 없습니다', + 'openAppleMapError': 'Apple 지도를 여는 중 오류가 발생했습니다', + + // Agent模块 - 天气卡片 'weatherQuery': '날씨 정보 조회 중:', 'highest': '최고', 'lowest': '최저', @@ -846,18 +922,8 @@ const Map koKR = { "friday": "금", "saturday": "토", "sunday": "일", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - - // 天气描述 + + // Agent模块 - 天气描述 "sunny": "맑음", "partlyCloudy": "구름 조금", "partlySunny": "대체로 맑음", @@ -878,7 +944,131 @@ const Map koKR = { "haze": "연무", "strongWind": "강풍", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "사진 번역", + "textTranslation": "텍스트 번역", + + // 翻译模块 - 主页 + "translationHistory": "번역 기록", + "enableRecording": "녹음 활성화", + "viewAudioFiles": "녹음 파일 보기", + "headsetUser": "헤드셋 사용자", + "phoneUser": "휴대폰 사용자", + "selectSourceLanguage": "원본 언어 선택", + "selectTargetLanguage": "대상 언어 선택", + "me": "나", + "counterPart": "상대방", + "bluetoothCallStateError": "블루투스 헤드셋이 휴대폰에 연결되어 있고 통화 중인지 확인해 주세요", + "autoDetect": "자동 감지", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': '플로팅 창 비활성화', + 'enableFloatingWindow': '플로팅 창 활성화', + 'permissionTip': '권한 안내', + 'micPermissionRequiredForRecording': '녹음에는 마이크 권한이 필요합니다', + 'deleteTranslationRecordError': '번역 기록 삭제 중 오류 발생: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "언어 감지 실패", + "translationFailed": "번역 실패", + "translating": "번역 중", + "translate": "번역", + "pleaseInputText": "텍스트를 입력해 주세요", + "inputTextToTranslate": "번역할 텍스트를 입력해 주세요", + "textTooLong": "텍스트가 너무 깁니다. 최대 5000자까지 입력 가능합니다", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "기록 없음", + "historyRecords": "기록", + "clearResults": "결과 지우기", + "clearHistory": "기록 지우기", + "clearHistoryConfirm": "모든 번역 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "unknownLanguage": "알 수 없는 언어", + "deleteSessionRecord": "세션 기록 삭제", + "deleteSessionConfirm": "이 세션의 모든 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "이미지 소스 선택", + "imagePreview": "이미지 미리보기", + "translationResult": "번역 결과", + "recognitionResult": "인식 결과", + "translatedImagePreview": "번역된 이미지 미리보기", + "translatedImageLoadFailed": "번역된 이미지를 불러오지 못했습니다", + "pleaseSelectImage": "이미지를 선택해 주세요", + "imageLoadFailed": "이미지 로드 실패", + "imageQuality": "이미지 품질", + "maxSize": "최대 크기", + "close": "닫기", + "setImageQuality": "이미지 품질 설정", + "currentQuality": "현재 품질: @value%", + "setMaxSize": "최대 크기 설정", + "currentMaxSize": "현재: @pxpx", + "waitingForAction": "작업 대기 중", + "pleaseSelectImageToStart": "시작하려면 이미지를 선택해 주세요", + "chooseImage": "이미지 선택", + "openingCamera": "카메라 열기...", + "openingPhotoAlbum": "사진 앨범 열기...", + "cancelled": "취소됨", + "userCancelledSelection": "사용자가 선택을 취소했습니다", + "translatingImage": "이미지 번역 중", + "callingImageTranslateService": "이미지 번역 서비스 호출 중...", + "savingRecord": "기록 저장 중", + "savingTranslationResult": "번역 결과 저장 중...", + "translationCompleted": "번역 완료", + "allStepsCompleted": "모든 단계 완료", + "processingFailed": "처리 실패", + "imageProcessingOrTranslationFailed": + "이미지 처리 또는 번역에 실패했습니다. 다시 시도해 주세요.\nError: {error}", + "imageTooLarge": "이미지 크기가 4MB 제한을 초과합니다", + "imageTooLargeHint": "이미지 크기가 4MB를 초과합니다. 품질이나 크기를 줄인 후 다시 시도해 주세요", + "emptyTranslationResult": "이미지 번역 API가 빈 결과를 반환했습니다", + "imageTranslationFailedTryLater": + "이미지 번역 실패. 네트워크 문제 또는 요청 제한입니다. 나중에 다시 시도해 주세요", + "imageTranslationApiException": "이미지 번역 API 예외. 네트워크를 확인하고 다시 시도해 주세요", + "permissionRequired": "권한 필요", + "cameraPermissionRequired": "사진 촬영에는 카메라 권한이 필요합니다", + "photoAlbumPermissionRequired": "이미지를 선택하려면 사진 앨범 권한이 필요합니다", + "translationDetails": "번역 상세", + "originalImage": "원본 이미지", + "sourceLanguage": "원본 언어", + "targetLanguage": "대상 언어", + "translationTime": "번역 시간", + "shareInDevelopment": "공유 기능 개발 중", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "녹음 파일 번역", + "noAudioFiles": "오디오 파일 없음", + "calculating": "계산 중...", + "playing": "재생 중...", + "paused": "일시 중지됨", + "clickToPlay": "클릭하여 재생", + "rename": "이름 바꾸기", + "smartTranscription": "스마트 받아쓰기", + "renameAudioFile": "오디오 파일 이름 바꾸기", + "enterNewFileName": "새 파일 이름을 입력하세요", + + // 翻译模块 - 翻译详情 + "originalRecord": "원본 기록", + "recordSummary": "기록 요약", + "clickToGenerateSummary": "아래 버튼을 클릭하여 세션 요약 생성", + "summaryContent": "요약 내용", + "copied": "복사됨", + "summaryCopiledToClipboard": "요약이 클립보드에 복사되었습니다", + "extractSummary": "요약 추출", + "summaryGenerated": "요약 생성됨", + "generating": "생성 중...", + "regenerate": "다시 생성", + "summaryTimeoutMessage": "요약 생성 요청 시간 초과, 네트워크 문제 또는 서버 과부하일 수 있습니다.", + "deleteTranslationRecord": "번역 기록 삭제", + "deleteTranslationConfirm": "이 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "originalText": "원본 텍스트", + "translatedText": "번역된 텍스트", + "sessionSummary": "세션 요약", + "cannotShare": "공유할 수 없음", + "generateSummaryFirst": "먼저 요약을 생성하세요", + "translationSessionRecord": "번역 세션 기록", + + // 个人资料模块 "editProfile": "개인 정보 수정", "avatar": "아바타", "nickname": "닉네임", @@ -891,10 +1081,8 @@ const Map koKR = { "logoutTips": "현재 계정에서 로그아웃하시겠습니까?", 'deleteAccount': '계정 삭제', 'deleteAccountTips': '계정을 영구적으로 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': '캐시 지우기', + 'cleanTips': '개인 캐시를 지우시겠습니까?', 'networkConnectionFailed': '네트워크 연결 실패, 네트워크 설정을 확인하고 다시 시도하세요', 'serverTemporarilyUnavailable': '서버가 일시적으로 응답하지 않습니다. 잠시 후 다시 시도하세요', 'loginExpiredPleaseRelogin': '로그인이 만료되었습니다. 다시 로그인하세요', @@ -906,10 +1094,6 @@ const Map koKR = { 'serverError': '서버 오류', 'networkConnectionFailedCheckSettings': '네트워크 연결 실패, 네트워크 설정을 확인하세요', 'serverInternalErrorRetryLater': '서버 내부 오류, 잠시 후 다시 시도하세요', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '이미지 압축 실패', 'avatarUpdateFailed': '아바타 업데이트 실패', 'usernameCannotBeEmpty': '사용자 이름은 비워둘 수 없습니다', @@ -920,8 +1104,6 @@ const Map koKR = { 'logoutFailedRetry': '로그아웃 실패, 다시 시도하세요', 'accountPermanentlyDeleted': '계정이 영구적으로 삭제되었습니다', 'deleteAccountFailedRetry': '계정 삭제 실패, 다시 시도하세요', - - // 账号服务相关 'clearUserDataFailed': '사용자 데이터 지우기 실패', // 清理用户数据失败 'deleteUserDataFailed': '사용자 데이터 삭제 실패', // 删除用户数据失败 'thirdPartyLogoutSuccess': '타사 로그인 로그아웃 성공', // 第三方登录退出成功 @@ -932,29 +1114,31 @@ const Map koKR = { 'allUserDataClearSuccess': '모든 사용자 데이터 지우기 성공', // 所有用户数据清理成功 'accountServiceInitialized': '계정 서비스가 초기화되었습니다', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': '저장소', + 'meetingStoragePermissionExplanation': '오디오 파일을 선택하고 업로드하려면 저장소 권한이 필요합니다.', + 'meetingStoragePermissionPermanentDenial': + '저장소 권한을 영구적으로 거부하셨습니다. 이 기능을 계속 사용하려면 앱 설정에서 저장소 권한을 수동으로 활성화해 주세요.', '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': '전화', 'sms': '문자', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': '연락처', + 'notification': '알림', + 'alarm': '알람', 'calendarWrite': '캘린더 쓰기', 'calendarFullAccess': '캘린더 전체 액세스', 'locationInfo': '위치 정보', 'phonePermissionDesc': '전화 걸기 기능에 사용됩니다', 'smsPermissionDesc': '문자 보내기 기능에 사용됩니다', - 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'alarmPermissionDesc': '정확한 알람을 설정하여 알림이 정시에 울리도록 하는 데 사용됩니다', 'calendarWritePermissionDesc': '캘린더 이벤트 및 알림 생성에 사용됩니다', 'calendarFullAccessPermissionDesc': '캘린더 이벤트 및 알림 읽기 및 관리에 사용됩니다', 'locationPermissionDesc': '현재 위치 정보 가져오기에 사용됩니다', @@ -968,66 +1152,53 @@ const Map koKR = { 'permissionRequestError': '권한 요청 중 오류 발생', 'phonePermissionDetailDesc': '전화 걸기 기능에는 전화 권한이 필요합니다', 'smsPermissionDetailDesc': '문자 보내기 기능에는 문자 권한이 필요합니다', - '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', - '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', + 'contactsPermissionDesc': '연락처 정보에 접근하는 데 사용됩니다', + 'contactsPermissionDetailDesc': '전화 및 문자 기능에는 연락처를 선택하기 위해 연락처 권한이 필요합니다', + 'bluetoothPermissionDesc': '블루투스 기기 연결 및 관리에 사용됩니다', + 'bluetoothPermissionDetailDesc': '블루투스 헤드폰 및 기타 기기에 연결하려면 블루투스 권한이 필요합니다', + 'bluetoothScanPermissionDesc': '주변 블루투스 기기 검색에 사용됩니다', + 'bluetoothScanPermissionDetailDesc': '주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다', + 'bluetoothConnectPermissionDesc': '블루투스 기기 연결에 사용됩니다', + 'bluetoothConnectPermissionDetailDesc': '블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다', + 'notificationPermissionDesc': '알림 메시지 전송에 사용됩니다', + 'notificationPermissionDetailDesc': '중요한 알림과 메시지를 보내려면 알림 권한이 필요합니다', 'appNeedsPermissionForFullFunction': '앱이 전체 기능을 제공하려면 이 권한이 필요합니다', 'permanentDenialText': '{permission} 권한을 영구적으로 거부하셨습니다. 앱 설정에서 활성화해주세요', 'goToSettings': '설정으로 이동', - - // 权限申请 - '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.', + 'bluetoothScan': '블루투스 검색', + 'bluetoothConnect': '블루투스 연결', + 'bluetoothScanExplanation': '앱이 주변 블루투스 기기를 검색하려면 블루투스 검색 권한이 필요합니다.', + 'bluetoothConnectExplanation': '앱이 블루투스 기기에 연결하려면 블루투스 연결 권한이 필요합니다.', + 'locationForBluetoothExplanation': '앱이 블루투스 기기를 검색하려면 위치 권한이 필요합니다.', '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.', + '블루투스 연결 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', + 'locationPermanentDenial': '위치 권한이 영구적으로 거부되었습니다. 설정에서 수동으로 활성화해 주세요.', + 'notificationPermission': '알림', + 'locationPermission': '위치', + 'notificationPermissionExplanation': '음악 재생 상태를 표시하려면 알림 권한이 필요합니다.', + 'locationPermissionExplanation': '현재 위치를 가져오려면 위치 권한이 필요합니다.', '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.', + '알림 권한을 영구적으로 거부하셨습니다. 설정에서 활성화해 주세요.', + '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': '필요: ', + 'permissionUtilPermission': ' 권한', + 'permissionUtilRestricted': ' 권한 제한됨', + 'permissionUtilRestrictedMessage': + '이 기능은 현재 기기에서 사용할 수 없거나 제한되어 있습니다. 기기 설정 또는 시스템 제한 사항을 확인해 주세요', + 'permissionUtilConfirm': '확인', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS @@ -1044,15 +1215,7 @@ const Map koKR = { 'native.notification.music.pause': '일시정지', // 暂停 'native.notification.qqMusic.playing': '음악 재생 중', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '새 버전 발견', // 版本更新对话框标题 'remindLater': '나중에 알림', // 稍后提醒按钮 'updateNow': '지금 업데이트', // 立即更新按钮 @@ -1062,248 +1225,7 @@ const Map koKR = { '앱 스토어를 열 수 없습니다. 수동으로 앱 스토어로 이동하여 업데이트하세요', // 无法打开应用商店提示 'updateErrorRetry': '업데이트 중 오류가 발생했습니다. 잠시 후 다시 시도하세요', // 更新错误重试提示 - //国家列表 - "邮箱": "이메일", - "中国": "중국", - "美国": "미국", - "加拿大": "캐나다", - "俄罗斯": "러시아", - "英国": "영국", - "德国": "독일", - "意大利": "이탈리아", - "法国": "프랑스", - "西班牙": "스페인", - "南非": "남아프리카", - "沙特阿拉伯": "사우디아라비아", - "土耳其": "터키", - "日本": "일본", - "韩国": "대한민국", - "新加坡": "싱가포르", - "马来西亚": "말레이시아", - "泰国": "태국", - "越南": "베트남", - "印度": "인도", - "巴基斯坦": "파키스탄", - "菲律宾": "필리핀", - "印度尼西亚": "인도네시아", - "阿联酋": "아랍에미리트", - "墨西哥": "멕시코", - "巴西": "브라질", - "阿根廷": "아르헨티나", - "澳大利亚": "호주", - "新西兰": "뉴질랜드", - "中国香港": "홍콩 (중국)", - "中国澳门": "마카오 (중국)", - "中国台湾": "대만 (중국)", - "埃及": "이집트", - "希腊": "그리스", - "荷兰": "네덜란드", - "比利时": "벨기에", - "匈牙利": "헝가리", - "罗马尼亚": "루마니아", - "瑞士": "스위스", - "奥地利": "오스트리아", - "丹麦": "덴마크", - "瑞典": "스웨덴", - "挪威": "노르웨이", - "波兰": "폴란드", - "秘鲁": "페루", - "智利": "칠레", - "哥伦比亚": "콜롬비아", - "委内瑞拉": "베네수엘라", - "葡萄牙": "포르투갈", - "卢森堡": "룩셈부르크", - "爱尔兰": "아일랜드", - "冰岛": "아이슬란드", - "阿尔巴尼亚": "알바니아", - "马耳他": "몰타", - "塞浦路斯": "키프로스", - "芬兰": "핀란드", - "保加利亚": "불가리아", - "立陶宛": "리투아니아", - "拉脱维亚": "라트비아", - "爱沙尼亚": "에스토니아", - "乌克兰": "우크라이나", - "塞尔维亚": "세르비아", - "克罗地亚": "크로아티아", - "斯洛文尼亚": "슬로베니아", - "捷克": "체코", - "斯洛伐克": "슬로바키아", - "危地马拉": "과테말라", - "萨尔瓦多": "엘살바도르", - "洪都拉斯": "온두라스", - "尼加拉瓜": "니카라과", - "哥斯达黎加": "코스타리카", - "巴拿马": "파나마", - "海地": "아이티", - "玻利维亚": "볼리비아", - "厄瓜多尔": "에콰도르", - "巴拉圭": "파라과이", - "乌拉圭": "우루과이", - "摩洛哥": "모로코", - "阿尔及利亚": "알제리", - "突尼斯": "튀니지", - "尼日利亚": "나이지리아", - "加纳": "가나", - "埃塞俄比亚": "에티오피아", - "肯尼亚": "케냐", - "坦桑尼亚": "탄자니아", - "乌干达": "우간다", - "孟加拉国": "방글라데시", - "以色列": "이스라엘", - "黎巴嫩": "레바논", - "约旦": "요르단", - "伊拉克": "이라크", - "科威特": "쿠웨이트", - "巴林": "바레인", - "卡塔尔": "카타르", - "阿曼": "오만", - "阿富汗": "아프가니스탄", - "斯里兰卡": "스리랑카", - "缅甸": "미얀마", - "尼泊尔": "네팔", - "蒙古": "몽골", - "柬埔寨": "캄보디아", - "老挝": "라오스", - "文莱": "브루나이", - "东帝汶": "동티모르", - "斐济": "피지", - "所罗门群岛": "솔로몬 제도", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "번역 기록", - "enableRecording": "녹음 활성화", - "viewAudioFiles": "녹음 파일 보기", - "headsetUser": "헤드셋 사용자", - "phoneUser": "휴대폰 사용자", - "selectSourceLanguage": "원본 언어 선택", - "selectTargetLanguage": "대상 언어 선택", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "기록 없음", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "기록 지우기", - "clearHistoryConfirm": "모든 번역 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "unknownLanguage": "알 수 없는 언어", - "deleteSessionRecord": "세션 기록 삭제", - "deleteSessionConfirm": "이 세션의 모든 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "녹음 파일 번역", - "noAudioFiles": "오디오 파일 없음", - "calculating": "계산 중...", - "playing": "재생 중...", - "paused": "일시 중지됨", - "clickToPlay": "클릭하여 재생", - "rename": "이름 바꾸기", - "smartTranscription": "스마트 받아쓰기", - "renameAudioFile": "오디오 파일 이름 바꾸기", - "enterNewFileName": "새 파일 이름을 입력하세요", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "원본 기록", - "recordSummary": "기록 요약", - "clickToGenerateSummary": "아래 버튼을 클릭하여 세션 요약 생성", - "summaryContent": "요약 내용", - "copied": "복사됨", - "summaryCopiledToClipboard": "요약이 클립보드에 복사되었습니다", - "extractSummary": "요약 추출", - "summaryGenerated": "요약 생성됨", - "generating": "생성 중...", - "regenerate": "다시 생성", - "summaryTimeoutMessage": "요약 생성 요청 시간 초과, 네트워크 문제 또는 서버 과부하일 수 있습니다.", - "deleteTranslationRecord": "번역 기록 삭제", - "deleteTranslationConfirm": "이 번역 기록을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "originalText": "원본 텍스트", - "translatedText": "번역된 텍스트", - "sessionSummary": "세션 요약", - "cannotShare": "공유할 수 없음", - "generateSummaryFirst": "먼저 요약을 생성하세요", - "translationSessionRecord": "번역 세션 기록", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "기기 페어링", "connectYourDeepSoundHeadset": "Voitrans 헤드셋 연결", "bind": "연결", @@ -1312,14 +1234,11 @@ const Map koKR = { "autoInputCode": "코드 자동 입력", "skipBinding": "연결 건너뛰기", "rescan": "다시 스캔", - "verifyingDevice": "기기 확인 중...", "confirmBinding": "연결 확인", "associatingDevice": "기기 연결 중...", "goToBluetoothSettings": "블루투스 설정으로 이동", 'bluetooth': '블루투스', - - // 配对状态文本 "readyToPair": "페어링 준비 완료", "preparingPairingEnvironment": "페어링 환경 준비 중...", "connectDeepSoundViaSystemBluetooth": "먼저 시스템 블루투스를 통해 Voitrans 기기를 연결하세요", @@ -1327,8 +1246,6 @@ const Map koKR = { "establishingDeviceAssociation": "기기 연결 설정 중...", "waitingCompletePairing": "잠시만 기다려주세요, 페어링을 완료하는 중입니다...", "pairingSuccessRedirecting": "페어링 성공! 홈 화면으로 이동합니다...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Voitrans 기기에 연결되었는지 확인하세요", "deviceAlreadyBoundToOtherAccount": "이 기기는 이미 다른 계정에 연결되어 있습니다", "deviceAssociationFailed": "기기 연결 실패, 다시 시도하세요", @@ -1336,18 +1253,11 @@ const Map koKR = { "networkError": "네트워크 오류", "authorizationFailedCheckCode": "인증 실패, 인증 코드가 올바른지 확인하세요", "pairingFailedRetry": "페어링 실패, 다시 시도하세요", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '블루투스를 활성화해주세요', 'deviceDisconnected': '기기 연결 해제됨', 'readyToStartPairing': '페어링 시작 준비 완료', 'checkingEnvironment': '환경 확인 중...', 'ensureHeadsetOnAndPairingMode': '헤드셋이 켜져 있고 페어링 모드인지 확인하세요', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '보안 연결 설정 중...', 'needManualBindingAuthCode': '수동 연결 인증 코드가 필요합니다...', 'pairingSuccessful': '페어링 성공!', @@ -1366,21 +1276,28 @@ const Map koKR = { 'blePairingStartupFailed': 'BLE 페어링 시작 실패', 'bleConnectionFailed': 'BLE 연결 실패', 'deviceAuthorizationFailedCheckCode': '기기 인증 실패, 인증 코드를 확인하세요', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideTitle': '수동 블루투스 활성화 필요', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': '다음 단계를 따라 주세요:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': '블루투스 켜기: 설정 → 블루투스 → 켜기', // 开启蓝牙:设置 → 蓝牙 → 开启 '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', // 我知道了 - - //用户反馈页 + '팁: 제어 센터에서 블루투스 아이콘을 길게 눌러 블루투스 설정에 빠르게 접근할 수도 있습니다', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': '알겠습니다', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "환영 보상", + "firstBindRewardDesc": "기기 연결 보상을 받았습니다.", + "vipLevelLabel": "VIP 레벨:", + "expiryLabel": "만료일:", + "notActivated": "미활성화", + "aiChatCreditsLabel": "AI 채팅 크레딧:", + "translationCreditsLabel": "번역 크레딧:", + "meetingCreditsLabel": "회의 크레딧:", + "ok": "확인", + + // 用户反馈模块 "feedback": "사용자 피드백", 'feedbackInfo': '피드백 또는 제안 제공', 'feedbackDescription': '겪으신 문제나 제안을 설명해주세요', @@ -1405,20 +1322,62 @@ const Map koKR = { "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": "충전 중", "updateContent": "업데이트 내용", "removeEarbudsEnsureBattery": "양쪽 이어버드를 꺼내고 배터리가 모두 20% 이상인지 확인하세요", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': '새 버전 @version 발견', + 'otaConfirmUpdateNow': '지금 업데이트하시겠습니까?', + 'otaUpdate': '업데이트', + 'otaUpgradeSuccess': '업그레이드 성공', + 'otaUpgradeCompleteRepair': + '펌웨어 업그레이드가 완료되었습니다!\n\n기기를 다시 페어링해야 합니다. 페어링 페이지로 이동하시겠습니까?', + 'otaPairLater': '나중에 페어링', + 'otaPairNow': '지금 페어링', + 'okConfirm': '확인', + // OTA升级模块 - 设备检查 + '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': '이번 업데이트에는 성능 최적화 및 버그 수정이 포함되어 있습니다.', + 'otaGetLatestVersionFailed': '최신 버전 정보를 가져오지 못했습니다', + 'otaGetVersionInfoFailed': '버전 정보를 가져오지 못했습니다', + 'otaCheckingDeviceStatus': '기기 상태 확인 중...', + 'otaDownloadFailedCheckNetwork': '다운로드 실패, 네트워크 연결을 확인해 주세요', + 'otaDownloadFailed': '다운로드 실패', + 'otaPreparingConnection': '기기 연결 준비 중...', + 'otaConnectingDevice': '기기 연결 중...', + 'otaUpgradeStarted': 'OTA 업그레이드 시작...', + 'otaUpgradeProgressWithPercent': '업그레이드 진행률: @percent%', + 'otaUpgradeSuccessComplete': '업그레이드 완료', + 'otaUpgradeFailedWithCode': '업그레이드 실패, 오류 코드: @code', + 'otaUpgradeFailedTitle': '업그레이드 실패', + 'otaUpgradeFailedDesc': '기기 연결 또는 업데이트 패키지를 확인해 주세요. 오류 코드: @code', + 'otaDeviceDisconnected': '기기 연결 끊김', + 'otaDeviceConnected': '기기 연결 성공', + + // 音乐模块 "noMusic": "음악 없음", // 暂无音乐 "noPlayingMusic": "재생 중인 음악 없음", // 暂无播放音乐 "unknownSong": "알 수 없는 노래", // 未知歌曲 @@ -1466,22 +1425,122 @@ const Map koKR = { "波斯语": "페르시아어", "斯瓦希里语": "스와힐리어", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "이메일", + "中国": "중국", + "美国": "미국", + "加拿大": "캐나다", + "俄罗斯": "러시아", + "英国": "영국", + "德国": "독일", + "意大利": "이탈리아", + "法国": "프랑스", + "西班牙": "스페인", + "南非": "남아프리카", + "沙特阿拉伯": "사우디아라비아", + "土耳其": "터키", + "日本": "일본", + "韩国": "대한민국", + "新加坡": "싱가포르", + "马来西亚": "말레이시아", + "泰国": "태국", + "越南": "베트남", + "印度": "인도", + "巴基斯坦": "파키스탄", + "菲律宾": "필리핀", + "印度尼西亚": "인도네시아", + "阿联酋": "아랍에미리트", + "墨西哥": "멕시코", + "巴西": "브라질", + "阿根廷": "아르헨티나", + "澳大利亚": "호주", + "新西兰": "뉴질랜드", + "中国香港": "홍콩 (중국)", + "中国澳门": "마카오 (중국)", + "中国台湾": "대만 (중국)", + "埃及": "이집트", + "希腊": "그리스", + "荷兰": "네덜란드", + "比利时": "벨기에", + "匈牙利": "헝가리", + "罗马尼亚": "루마니아", + "瑞士": "스위스", + "奥地利": "오스트리아", + "丹麦": "덴마크", + "瑞典": "스웨덴", + "挪威": "노르웨이", + "波兰": "폴란드", + "秘鲁": "페루", + "智利": "칠레", + "哥伦比亚": "콜롬비아", + "委内瑞拉": "베네수엘라", + "葡萄牙": "포르투갈", + "卢森堡": "룩셈부르크", + "爱尔兰": "아일랜드", + "冰岛": "아이슬란드", + "阿尔巴尼亚": "알바니아", + "马耳他": "몰타", + "塞浦路斯": "키프로스", + "芬兰": "핀란드", + "保加利亚": "불가리아", + "立陶宛": "리투아니아", + "拉脱维亚": "라트비아", + "爱沙尼亚": "에스토니아", + "乌克兰": "우크라이나", + "塞尔维亚": "세르비아", + "克罗地亚": "크로아티아", + "斯洛文尼亚": "슬로베니아", + "捷克": "체코", + "斯洛伐克": "슬로바키아", + "危地马拉": "과테말라", + "萨尔瓦多": "엘살바도르", + "洪都拉斯": "온두라스", + "尼加拉瓜": "니카라과", + "哥斯达黎加": "코스타리카", + "巴拿马": "파나마", + "海地": "아이티", + "玻利维亚": "볼리비아", + "厄瓜多尔": "에콰도르", + "巴拉圭": "파라과이", + "乌拉圭": "우루과이", + "摩洛哥": "모로코", + "阿尔及利亚": "알제리", + "突尼斯": "튀니지", + "尼日利亚": "나이지리아", + "加纳": "가나", + "埃塞俄比亚": "에티오피아", + "肯尼亚": "케냐", + "坦桑尼亚": "탄자니아", + "乌干达": "우간다", + "孟加拉国": "방글라데시", + "以色列": "이스라엘", + "黎巴嫩": "레바논", + "约旦": "요르단", + "伊拉克": "이라크", + "科威特": "쿠웨이트", + "巴林": "바레인", + "卡塔尔": "카타르", + "阿曼": "오만", + "阿富汗": "아프가니스탄", + "斯里兰卡": "스리랑카", + "缅甸": "미얀마", + "尼泊尔": "네팔", + "蒙古": "몽골", + "柬埔寨": "캄보디아", + "老挝": "라오스", + "文莱": "브루나이", + "东帝汶": "동티모르", + "斐济": "피지", + "所罗门群岛": "솔로몬 제도", + "刚果民主共和国": "콩고 민주 공화국", + "安哥拉": "앙골라", + "苏丹": "수단", + "马尔代夫": "몰디브", + "不丹": "부탄", + "摩纳哥": "모나코", + "圣马力诺": "산마리노", + "牙买加": "자메이카", + "巴哈马": "바하마", + "巴布亚新几内亚": "파푸아뉴기니", + "萨摩亚": "사모아", }; diff --git a/lib/core/translations/language/lt_lt.dart b/lib/core/translations/language/lt_lt.dart index e22b2fea5..050951b74 100644 --- a/lib/core/translations/language/lt_lt.dart +++ b/lib/core/translations/language/lt_lt.dart @@ -1,4 +1,3 @@ -// const Map ltLT = { // 通用 'continue': 'Tęsti', @@ -19,6 +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": "Ką tik", + "minutesAgo": "Prieš @minutes min.", + "yesterday": "Vakar", + "daysAgo": "Prieš @days d.", + "hoursAgo": "Prieš @hours val.", // 启动页 "slogan": "Jungiantis pasaulį, anapus garso", @@ -29,7 +33,7 @@ const Map ltLT = { "explore": "Atrasti", "settings": "Nustatymai", - // 语言 + // 语言列表 "followingSystem": "Sekti sistemą", "chinese": "Kinų", "english": "Anglų", @@ -73,7 +77,7 @@ const Map ltLT = { "arabic": "Arabų", "persian": "Persų", - // 登录页 + // 登录模块 "welcome": "Sveiki atvykę", "loginTips": "Prisijunkite arba užsiregistruokite naudodami savo telefono numerį arba el. paštą", @@ -102,13 +106,9 @@ const Map ltLT = { "resendVerificationCode": "Išsiųsti patvirtinimo kodą iš naujo", "login": "Prisijungti", "usePasswordLogin": "Prisijungti su slaptažodžiu", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans deklaracija", // Voitrans 声明 "welcomeToThisApp": "Sveiki atvykę į Voitrans, prašome atidžiai perskaityti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", paspaudus 'Sutinku ir tęsti' reiškia, kad jūs visiškai perskaitėte ir sutinkate su aukščiau nurodytomis sutartimis. Paspaudus 'Nesutinku' išeisite iš programos.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nesutinku", // 不同意 @@ -168,7 +168,30 @@ const Map ltLT = { 'right': 'Dešinė', 'checkConnectionStatusFailed': 'Nepavyko patikrinti ryšio būsenos', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Nepavyko inicijuoti Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Norint nuskaityti įrenginius, reikalingi Bluetooth ir vietovės leidimai', + 'permissionRequestFailedWithError': 'Nepavyko gauti leidimų: @error', + 'needPermission': 'Reikalingas leidimas', + 'blePermissionDialogContent': + 'Šiai programai reikia Bluetooth ir vietovės leidimų, kad galėtų nuskaityti įrenginius. Įjunkite juos nustatymuose.', + 'needEnableBluetooth': 'Įjungti Bluetooth', + 'enableBluetoothDialogContent': + 'Į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ų...", "exploreSlogan": "Išmaniosios ausinės, beribės galimybės", "exploreSlogan1": "Išmanus draugas, beribės galimybės", @@ -193,211 +216,274 @@ const Map ltLT = { "usageStats": "Naudojimo statistika", "usageStatsInfo": "Peržiūrėkite jūsų naudojimo statistiką", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "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': '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', + 'paymentFailedTryAgain': 'Mokėjimas nepavyko. Bandykite dar kartą.', + 'selectPaymentMethod': 'Pasirinkite mokėjimo būdą', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Nepavyko sukurti WeChat Pay užsakymo', + 'alipayOrderCreateFailed': 'Nepavyko sukurti Alipay užsakymo', + 'appleOrderCreateFailed': 'Nepavyko sukurti Apple užsakymo', + 'googleOrderCreateFailed': 'Nepavyko sukurti Google užsakymo', + 'paypalOrderCreateFailed': 'Nepavyko sukurti PayPal užsakymo', + 'paymentException': 'Mokėjimo išimtis', + 'paymentLaunchFailed': 'Mokėjimo paleidimas nepavyko', + 'paymentExceptionWithError': 'Mokėjimo išimtis: @error', + 'paymentProcessingCheckLater': + 'Jūsų užsakymas apdorojamas. Patikrinkite vėliau.', + 'paymentResultQueryException': + 'Nepavyko užklausti mokėjimo rezultato: @error', + 'orderConfirmedQuotaRefreshed': + 'Užsakymas patvirtintas. Jūsų kvota buvo atnaujinta.', + 'paymentCompletedConfirming': 'Mokėjimas baigtas. Patvirtinama…', + 'paymentCancelled': 'Mokėjimas atšauktas', + 'paypalOpenedCompleteInBrowser': + 'PayPal atidarytas. Užbaikite mokėjimą naršyklėje.', + 'paypalOpenFailed': 'Nepavyko atidaryti PayPal mokėjimo puslapio', + 'paymentTestTitle': 'Mokėjimo testas', + 'paymentTestOrderInfo': 'Testinio užsakymo informacija', + 'paymentTestProductId': 'Produkto ID', + 'paymentTestProductDescription': 'Produkto aprašymas', + 'paymentTestWechatDescription': 'WeChat Pay mokėjimo testas', + 'paymentTestAlipayDescription': 'Alipay mokėjimo testas', + 'paymentTestAmount': 'Suma', + 'paymentTestSelectAmount': 'Pasirinkite testo sumą', + 'paying': 'Mokama...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Mokėjimo būsena', + 'errorInfoWithMessage': 'Klaida: @message', + 'retest': 'Pakartotinis testas', + 'paymentTestInstructionsTitle': 'Instrukcijos', + 'paymentTestInstructionsContent': + '1. Pasirinkite testo sumą (rekomenduojama: ¥0,01)\n2. Spustelėkite mokėjimo mygtuką, kad pradėtumėte\n3. Užbaikite mokėjimą mokėjimo programoje\n4. Grįžkite patikrinti rezultatą', + 'startingWechatPayment': 'Paleidžiamas WeChat Pay...', + 'startingAlipayPayment': 'Paleidžiamas Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay sėkmingas!', + 'wechatPaymentFailed': 'WeChat Pay nepavyko', + 'wechatPaymentLaunchFailed': 'Nepavyko paleisti WeChat Pay', + 'cannotLaunchWechatPayment': 'Nepavyko paleisti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay išimtis', + 'wechatPaymentTestCompleted': 'WeChat Pay testas baigtas', + 'alipayPaymentSuccess': 'Alipay sėkmingas!', + 'alipayPaymentFailed': 'Alipay nepavyko', + 'alipayPaymentLaunchFailed': 'Nepavyko paleisti Alipay', + 'cannotLaunchAlipayPayment': 'Nepavyko paleisti Alipay', + 'alipayPaymentException': 'Alipay išimtis', + "insufficientIntegral": "Nepakanka taškų", + "insufficientBalanceDesc": + 'Nepakanka lėšų, eikite į atitinkamą papildymo puslapį ir papildykite.', + "recharge": 'Eiti papildyti', + "aiMemberExpiredDesc": + 'AI narystė baigėsi, eikite į narystės papildymo puslapį ir pratęskite.', + + // 商品模块 - AI商品页 + '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.', - - // 会员商品页 - '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', + 'Funkcijos priklauso nuo įrenginio leidimų, paslaugos prieinamumo ir tinklo sąlygų.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transkripcija realiuoju laiku', + 'sceneLexicon': 'Scenarijų žodynėlis', + 'subtitleDisplay': 'Subtitrai', + 'transHeaderDesc1': + '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': + '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': + 'Vertimo kokybė priklauso nuo mikrofono, tinklo delsos ir aplinkos triukšmo.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Susitikimų įrašymas', + 'transcriptionAndSummary': 'Transkripcija ir santrauka', + 'keywordSearch': 'Raktažodžių paieška', + 'collaborationSharing': 'Bendradarbiavimas ir dalijimasis', + 'meetingHeaderDesc1': + 'Garso įrašymas, transkripcija, paieška pagal raktinius žodžius ir automatinė santrauka didesniam susitikimų efektyvumui.', + 'meetingHeaderDesc2': + 'Tinka verslo susitikimams, pamokų užrašams ir pokalbių protokolams.', + 'meetingAutoRecording': 'Automatinis įrašymas ir segmentavimas', + 'meetingSpeakerTagging': 'Kalbėtojų žymėjimas', + 'meetingLongAudioTranscription': 'Ilgo garso transkripcija', + 'meetingKeyPointSummary': 'Pagrindinių taškų ištraukimas', + 'meetingTopicNameSearch': 'Paieška pagal temą / vardą', + 'meetingTimelineJump': 'Šuolis laiko juostoje', + 'meetingExportSummary': 'Eksportuoti protokolą', + 'meetingMultiPlatformShare': 'Dalintis keliose platformose', + 'meetingDisclaimer': + 'Naudokite tyloje; kokybė priklauso nuo mikrofono ir tinklo.', + + // 商品模块 - VIP会员页 + '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.', + 'Tikrosios naudos priklauso nuo paketo detalių ir gali keistis su versijomis.', + + // 商品模块 - 商品名称与描述 + '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': 'Programa: VoiTrans · Teikia: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP klientų aptarnavimo QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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': '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": "Pasakykite Lily: Sukurk susitikimo priminima rytoj 15:00", + "guideMeetingInput": "Sukurk susitikimo priminima rytoj 15:00", + "guideMeetingSend": "Lily sukurs susitikimo priminima", + "guideMeetingEnd": "Priminimas sukurtas - išbandykite kitas komandas", + "guidePhoneStart": "Pasakykite Lily: Paskambink mamai", + "guidePhoneInput": "Paskambink mamai", + "guidePhoneSend": "Lily paskambins", + "guidePhoneEnd": "Skambutis atliktas - išbandykite kitas komandas", + "guideSmsStart": "Pasakykite Lily: Parašyk tėčiui žinutę: Grįšiu pietauti", + "guideSmsInput": "Parašyk tėčiui: Grįšiu pietauti", + "guideSmsSend": "Lily išsiųs žinutę", + "guideSmsEnd": "Žinutė išsiųsta - balso valdymas patogus", + + // Meeting模块 - 首页与导航 "startMeeting": "Pradėti susitikimą", 'edit': 'Redaguoti', 'delete': 'Ištrinti', @@ -409,107 +495,206 @@ const Map ltLT = { 'recordingDetails': 'Įrašo detalės', 'aiSummary': 'AI santrauka', 'meetingTranscript': 'Susitikimo stenograma', - - // Meeting模块 - 导航和基础功能 - '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', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Pasirinkite, ką daryti prieš išeinant', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Baigti ir išsaugoti', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Baigti neišsaugojus', // 结束录音不保存 'meetingRecordContinueInBackground': 'Tęsti įrašymą fone', // 后台继续录音 - 'meetingRecordStopTimeout': 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Baigiant įrašymą baigėsi laikas. Bandykite dar kartą.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Nepavyko sustabdyti įrašymo. Bandykite dar kartą.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Nepavyko išsaugoti įrašo. Bandykite dar kartą.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Vyksta įrašymas', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Įrašoma fone. Palieskite, kad grįžtumėte į programą.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Rodyti virš kitų programų', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': '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', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Kad galėtume rodyti vertimo rezultatus skambučių arba garso/vaizdo vertimo metu, mums reikia leidimo rodyti virš kitų programų. Tai leis matyti vertimus realiuoju laiku naudojant kitas programas.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + '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': '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': 'Generuoti santrauką iš naujo', + 'dateAndTime': 'Data ir laikas', + 'location': 'Vieta', + 'attendees': 'Dalyviai', + 'inputLocation': 'Įveskite vietą', + 'inputAttendees': 'Įveskite dalyvius', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Pasirinkti santraukos šabloną', + 'useThisTemplate': 'Naudoti šį šabloną', + 'lastUsed': 'Naudota paskutinį kartą', + 'create': 'Sukurti', + 'templateDetails': 'Šablono informacija', + 'tag': 'Žyma', + 'description': 'Aprašymas', + 'template': 'Šablonas', + 'deleteTemplate': 'Ištrinti šabloną', + 'deleteTemplateConfirm': 'Ar tikrai norite ištrinti šį šabloną?', + 'editTemplate': 'Redaguoti šabloną', + 'createTemplate': 'Sukurti šabloną', + 'name': 'Pavadinimas', + 'templateContentHint': + 'Prašome įvesti šablono turinį! Patarimas: Spustelėkite AI mygtuką viršuje, kad greitai sugeneruotumėte šablono turinį pagal įvestą pavadinimą ir aprašymą', + 'inputNameHint': 'Prašome įvesti pavadinimą', + 'inputDescHint': 'Prašome įvesti aprašymą', + 'custom': 'Pasirinktinis', + 'pleaseEnter': 'Prašome įvesti', + 'viewAll': 'Rodyti viską', + 'recordingLanguage': 'Įrašymo kalba', + 'chineseSimplified': 'Kinų mandarinų (supaprastinta)', + 'meetingGenerateNow': 'Generuoti dabar', + 'keyEventsAnalyzed': 'Išanalizuota pagrindinių įvykių: {count}.', + 'aiAnalysisDesc': + 'AI analizė nustato pagrindinius įvykius įrašuose, kad galėtumėte pasirinkti svarbius AI generavimui.', + + // Meeting模块 - 文件操作 + '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': 'Bendrinimas nepavyko: {error}', + 'fileProcessingFailed': + 'Failo apdorojimas nepavyko: {filePath}, klaida: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Išsaugoti minčių žemėlapį', + 'shareMindMap': 'Bendrinti minčių žemėlapį', + 'shareSuccess': 'Bendrinta sėkmingai', + + // Meeting模块 - AI问答 + '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': 'Bendrinti nuorodą', + 'copyTranscript': 'Kopijuoti transkripciją', + 'copySummary': 'Kopijuoti santrauką', + 'exportAudio': 'Eksportuoti garsą', + 'exportTranscript': 'Eksportuoti transkripciją', + 'shareMeetingAudio': 'Share Meeting Audio', + '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': 'Pavadinti dabartinį kalbėtoją', + 'recentlyUsedNames': 'Neseniai naudoti vardai', + 'applyToCurrentParagraph': 'Taikyti dabartinei pastraipai', + 'totalTime': 'Bendras laikas', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Santraukos kalbėtojai bus atnaujinami automatiškai', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinchronizuoti su debesimi', + 'syncToCloudTip': + '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', - - // 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', + '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': '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': @@ -517,142 +702,62 @@ 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.', - - // Meeting模块 - 升级会员 - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Taikyti visoms šio kalbėtojo pastraipoms', - 'summaryWillBeUpdatedAutomatically': - 'Santrauka bus automatiškai atnaujinama pagal šabloną', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktyvuojama iškart po pirkimo, galioja 2 metus po aktyvavimo.', + 'purchase': 'Pirkti', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Įrašymo kalba', + 'cantonese': 'Kantonų', + 'sichuan': 'Sičuano tarmė', + 'shanghai': 'Šanchajaus tarmė', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailedShort': 'Santrauka nepavyko', + 'transcriptionFailedShort': 'Transkripcija nepavyko', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Garso grotuvas neparuoštas, palaukite', + 'playFailed': 'Atkūrimas nepavyko', + 'audioFileNotFound': 'Garso failas nerastas', + 'fetchingAudio': 'Gaunamas garso įrašas iš debesies...', + 'playerLoadFailed': 'Garso grotuvo įkėlimas nepavyko', // 设置页 "systemSettings": "Sistemos nustatymai", @@ -661,10 +766,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", @@ -706,43 +811,31 @@ const Map ltLT = { "BLE ausinių programinės įrangos versijos atnaujinimas", "deviceManagement": "Įrenginių valdymas", "manageConnectedDevices": "Valdyti prijungtus Bluetooth įrenginius", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Šiuo metu turite naujausią versiją {version}', 'checkUpdateFailed': 'Nepavyko patikrinti atnaujinimų', 'networkErrorRetry': 'Tinklo klaida, bandykite dar kartą vėliau', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Balso pokalbis realiuoju laiku", "realtimeVoiceChatInfo": "Išbandykite išmaniosios balso sąveikos funkciją (funkcijos peržiūra)", "loading": "Įkeliama...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", - -//Agent 模块 - // agent View + "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", "clearChatHistory": "Išvalyti pokalbių istoriją", "online": "Prisijungęs", @@ -771,22 +864,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Atsakyti į klausimus ir pateikti informaciją\n\n' '• Balso vertimas realiuoju laiku\n\n' @@ -806,18 +901,17 @@ const Map ltLT = { 'startVoiceInput': 'Pradėti balso įvestį', 'startPhoneCallMode': 'Pradėti skambinimo režimą, pradėti balso įvestį', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Įveskite savo žinutę čia...', // 全屏编辑器输入提示 'characterCount': '{count} simbolių', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopijuoti', 'copySuccess': 'Sėkmingai nukopijuota', 'report': 'Pranešti', 'submitSuccess': 'Sėkmingai pateikta', 'submitFailed': 'Pateikimas nepavyko', 'reportSubmitted': 'Pranešimas pateiktas, mes jį apdorosime kuo greičiau', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Žalingas/Nesaugus', 'pornographicVulgar': 'Pornografinis/Vulgarus', 'misleadingAttack': 'Klaidinantis/Užpuolimas', @@ -827,17 +921,22 @@ const Map ltLT = { 'other': 'Kita', 'reportDescriptionHint': 'Norėtume sužinoti, kodėl pranešate, galite aprašyti problemą, su kuria susidūrėte.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Sugeneruota AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + '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ų:', 'playList': 'Grojaraštis', 'moreMusic': 'Daugiau muzikos', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'val.', // 小时单位 @@ -852,7 +951,30 @@ const Map ltLT = { "bicycling": "Važiavimas dviračiu", "tsransit": "Viešasis transportas", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Pasirinkite navigacijos programą', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Naviguoti su Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Naviguoti su Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Naviguoti su Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Naviguoti su Apple Maps', + 'builtInNavigation': 'Integruota navigacija', + 'useBuiltInNavigation': 'Naviguoti su integruotu žemėlapiu', + 'navigationStartFailed': 'Nepavyko pradėti navigacijos', + 'cannotPlayMusicListRetryLater': + '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:', 'highest': 'Aukščiausia', 'lowest': 'Žemiausia', @@ -882,18 +1004,8 @@ const Map ltLT = { "friday": "Penkt", "saturday": "Šešt", "sunday": "Sekm", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Saulėta", "partlyCloudy": "Mažai debesuota", "partlySunny": "Iš dalies saulėta", @@ -914,7 +1026,142 @@ const Map ltLT = { "haze": "Migla", "strongWind": "Stiprus vėjas", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Nuotraukų vertimas", + "textTranslation": "Teksto vertimas", + + // 翻译模块 - 主页 + "translationHistory": "Vertimų istorija", + "enableRecording": "Įjungti įrašymą", + "viewAudioFiles": "Peržiūrėti garso failus", + "headsetUser": "Ausinių naudotojas", + "phoneUser": "Telefono naudotojas", + "selectSourceLanguage": "Pasirinkite šaltinio kalbą", + "selectTargetLanguage": "Pasirinkite tikslo kalbą", + "me": "Aš", + "counterPart": "Pašnekovas", + "bluetoothCallStateError": + "Įsitikinkite, kad Bluetooth ausinės prijungtos prie telefono ir vyksta skambutis", + "autoDetect": "Automatinis aptikimas", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Nepavyko aptikti kalbos", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Išjungti plaukiojantį langą', + 'enableFloatingWindow': 'Įjungti plaukiojantį langą', + 'permissionTip': 'Leidimų patarimas', + 'micPermissionRequiredForRecording': + 'Į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": "Tekstas per ilgas, daugiausia 5000 simbolių", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Dar nėra istorijos", + "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.", + "unknownLanguage": "Nežinoma kalba", + "deleteSessionRecord": "Ištrinti sesijos įrašą", + "deleteSessionConfirm": + "Ar tikrai norite ištrinti visus šios sesijos vertimų įrašus? Šio veiksmo negalima atšaukti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "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": "Vaizdų vertimo API grąžino tuščią rezultatą", + "imageTranslationFailedTryLater": + "Vaizdo vertimas nepavyko. Tinklo problema arba dažnio apribojimas. Bandykite vėliau", + "imageTranslationApiException": + "Vaizdų vertimo API išimtis. Patikrinkite tinklą ir bandykite dar kartą", + "permissionRequired": "Reikalingas leidimas", + "cameraPermissionRequired": + "Norint fotografuoti, reikalingas kameros leidimas", + "photoAlbumPermissionRequired": + "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", + "noAudioFiles": "Dar nėra garso failų", + "calculating": "Skaičiuojama...", + "playing": "Grojama...", + "paused": "Pristabdyta", + "clickToPlay": "Spustelėkite, kad paleistumėte", + "rename": "Pervadinti", + "smartTranscription": "Išmanioji transkripcija", + "renameAudioFile": "Pervadinti garso failą", + "enterNewFileName": "Įveskite naują failo pavadinimą", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalus įrašas", + "recordSummary": "Įrašo santrauka", + "clickToGenerateSummary": + "Spustelėkite mygtuką žemiau, kad sugeneruotumėte sesijos santrauką", + "summaryContent": "Santraukos turinys", + "copied": "Nukopijuota", + "summaryCopiledToClipboard": "Santrauka nukopijuota į iškarpinę", + "extractSummary": "Išgauti santrauką", + "summaryGenerated": "Santrauka sugeneruota", + "generating": "Generuojama...", + "regenerate": "Generuoti iš naujo", + "summaryTimeoutMessage": + "Santraukos generavimo užklausa baigėsi, galbūt dėl tinklo problemų ar užimto serverio.", + "deleteTranslationRecord": "Ištrinti vertimo įrašą", + "deleteTranslationConfirm": + "Ar tikrai norite ištrinti šį vertimo įrašą? Šio veiksmo negalima atšaukti.", + "originalText": "Originalus tekstas", + "translatedText": "Išverstas tekstas", + "sessionSummary": "Sesijos santrauka", + "cannotShare": "Negalima bendrinti", + "generateSummaryFirst": "Pirmiausia sugeneruokite santrauką", + "translationSessionRecord": "Vertimo sesijos įrašas", + + // 个人资料模块 "editProfile": "Redaguoti asmeninę informaciją", "avatar": "Avataras", "nickname": "Slapyvardis", @@ -928,10 +1175,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?', - - // Profile 错误信息 + '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': @@ -949,10 +1194,6 @@ const Map ltLT = { 'Tinklo ryšio klaida, patikrinkite tinklo nustatymus', 'serverInternalErrorRetryLater': 'Vidinė serverio klaida, bandykite dar kartą vėliau', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Vaizdo suspaudimas nepavyko', 'avatarUpdateFailed': 'Avataro atnaujinimas nepavyko', 'usernameCannotBeEmpty': 'Vartotojo vardas negali būti tuščias', @@ -964,8 +1205,6 @@ const Map ltLT = { 'accountPermanentlyDeleted': 'Paskyra visam laikui ištrinta', 'deleteAccountFailedRetry': 'Paskyros ištrynimas nepavyko, bandykite dar kartą', - - // 账号服务相关 'clearUserDataFailed': 'Nepavyko išvalyti vartotojo duomenų', // 清理用户数据失败 'deleteUserDataFailed': 'Nepavyko ištrinti vartotojo duomenų', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -981,29 +1220,33 @@ const Map ltLT = { 'accountServiceInitialized': 'Paskyros paslauga inicijuota', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Saugykla', + 'meetingStoragePermissionExplanation': + 'Mums reikia prieigos prie saugyklos, kad galėtumėte pasirinkti ir įkelti garso failus.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - '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': @@ -1021,80 +1264,91 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija vyksta', + 'native.notification.navigation.keepRunning': + 'Navigacija, laikykite programą atidarytą', + 'native.notification.bleAgent.running': 'Balso asistento agentas veikia', + 'native.notification.audioRecording.recording': + 'Garso įrašas, bakstelėkite, kad grįžtumėte į programą', + 'native.notification.music.waiting': 'Laukiama grojimo', + 'native.notification.music.previous': 'Ankstesnis', + 'native.notification.music.next': 'Kitas', + 'native.notification.music.play': 'Groti', + 'native.notification.music.pause': 'Pauzė', + 'native.notification.qqMusic.playing': 'Grojama muzika', + + // 版本更新 'newVersionFound': 'Rasta nauja versija', // 版本更新对话框标题 'remindLater': 'Priminti vėliau', // 稍后提醒按钮 'updateNow': 'Atnaujinti dabar', // 立即更新按钮 @@ -1105,253 +1359,7 @@ const Map ltLT = { 'updateErrorRetry': 'Atnaujinimo metu įvyko klaida, bandykite dar kartą vėliau', // 更新错误重试提示 - //国家列表 - "邮箱": "El. paštas", - "中国": "Kinija", - "美国": "JAV", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Jungtinė Karalystė", - "德国": "Vokietija", - "意大利": "Italija", - "法国": "Prancūzija", - "西班牙": "Ispanija", - "南非": "Pietų Afrika", - "沙特阿拉伯": "Saudo Arabija", - "土耳其": "Turkija", - "日本": "Japonija", - "韩国": "Pietų Korėja", - "新加坡": "Singapūras", - "马来西亚": "Malaizija", - "泰国": "Tailandas", - "越南": "Vietnamas", - "印度": "Indija", - "巴基斯坦": "Pakistanas", - "菲律宾": "Filipinai", - "印度尼西亚": "Indonezija", - "阿联酋": "JAE", - "墨西哥": "Meksika", - "巴西": "Brazilija", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Naujoji Zelandija", - "中国香港": "Honkongas (Kinija)", - "中国澳门": "Makao (Kinija)", - "中国台湾": "Taivanas (Kinija)", - "埃及": "Egiptas", - "希腊": "Graikija", - "荷兰": "Nyderlandai", - "比利时": "Belgija", - "匈牙利": "Vengrija", - "罗马尼亚": "Rumunija", - "瑞士": "Šveicarija", - "奥地利": "Austrija", - "丹麦": "Danija", - "瑞典": "Švedija", - "挪威": "Norvegija", - "波兰": "Lenkija", - "秘鲁": "Peru", - "智利": "Čilė", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venesuela", - "葡萄牙": "Portugalija", - "卢森堡": "Liuksemburgas", - "爱尔兰": "Airija", - "冰岛": "Islandija", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Kipras", - "芬兰": "Suomija", - "保加利亚": "Bulgarija", - "立陶宛": "Lietuva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estija", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbija", - "克罗地亚": "Kroatija", - "斯洛文尼亚": "Slovėnija", - "捷克": "Čekija", - "斯洛伐克": "Slovakija", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvadoras", - "洪都拉斯": "Hondūras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haitis", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvadoras", - "巴拉圭": "Paragvajus", - "乌拉圭": "Urugvajus", - "摩洛哥": "Marokas", - "阿尔及利亚": "Alžyras", - "突尼斯": "Tunisas", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladešas", - "以色列": "Izraelis", - "黎巴嫩": "Libanas", - "约旦": "Jordanija", - "伊拉克": "Irakas", - "科威特": "Kuveitas", - "巴林": "Bahreinas", - "卡塔尔": "Kataras", - "阿曼": "Omanas", - "阿富汗": "Afganistanas", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mianmaras", - "尼泊尔": "Nepalas", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laosas", - "文莱": "Brunėjus", - "东帝汶": "Rytų Timoras", - "斐济": "Fidžis", - "所罗门群岛": "Saliamono Salos", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Vertimų istorija", - "enableRecording": "Įjungti įrašymą", - "viewAudioFiles": "Peržiūrėti garso failus", - "headsetUser": "Ausinių naudotojas", - "phoneUser": "Telefono naudotojas", - "selectSourceLanguage": "Pasirinkite šaltinio kalbą", - "selectTargetLanguage": "Pasirinkite tikslo kalbą", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Dar nėra istorijos", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Išvalyti istoriją", - "clearHistoryConfirm": - "Ar tikrai norite išvalyti visą vertimų istoriją? Šio veiksmo negalima atšaukti.", - "unknownLanguage": "Nežinoma kalba", - "deleteSessionRecord": "Ištrinti sesijos įrašą", - "deleteSessionConfirm": - "Ar tikrai norite ištrinti visus šios sesijos vertimų įrašus? Šio veiksmo negalima atšaukti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Versti garso failus", - "noAudioFiles": "Dar nėra garso failų", - "calculating": "Skaičiuojama...", - "playing": "Grojama...", - "paused": "Pristabdyta", - "clickToPlay": "Spustelėkite, kad paleistumėte", - "rename": "Pervadinti", - "smartTranscription": "Išmanioji transkripcija", - "renameAudioFile": "Pervadinti garso failą", - "enterNewFileName": "Įveskite naują failo pavadinimą", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalus įrašas", - "recordSummary": "Įrašo santrauka", - "clickToGenerateSummary": - "Spustelėkite mygtuką žemiau, kad sugeneruotumėte sesijos santrauką", - "summaryContent": "Santraukos turinys", - "copied": "Nukopijuota", - "summaryCopiledToClipboard": "Santrauka nukopijuota į iškarpinę", - "extractSummary": "Išgauti santrauką", - "summaryGenerated": "Santrauka sugeneruota", - "generating": "Generuojama...", - "regenerate": "Generuoti iš naujo", - "summaryTimeoutMessage": - "Santraukos generavimo užklausa baigėsi, galbūt dėl tinklo problemų ar užimto serverio.", - "deleteTranslationRecord": "Ištrinti vertimo įrašą", - "deleteTranslationConfirm": - "Ar tikrai norite ištrinti šį vertimo įrašą? Šio veiksmo negalima atšaukti.", - "originalText": "Originalus tekstas", - "translatedText": "Išverstas tekstas", - "sessionSummary": "Sesijos santrauka", - "cannotShare": "Negalima bendrinti", - "generateSummaryFirst": "Pirmiausia sugeneruokite santrauką", - "translationSessionRecord": "Vertimo sesijos įrašas", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Įrenginio susiejimas", "connectYourDeepSoundHeadset": "Prijunkite savo Voitrans ausines", "bind": "Susieti", @@ -1360,14 +1368,11 @@ const Map ltLT = { "autoInputCode": "Automatinis kodo įvedimas", "skipBinding": "Praleisti susiejimą", "rescan": "Nuskaityti iš naujo", - "verifyingDevice": "Tikrinamas įrenginys...", "confirmBinding": "Patvirtinti susiejimą", "associatingDevice": "Asocijuojamas įrenginys...", "goToBluetoothSettings": "Eiti į Bluetooth nustatymus", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pasiruošta susiejimui", "preparingPairingEnvironment": "Ruošiama susiejimo aplinka...", "connectDeepSoundViaSystemBluetooth": @@ -1377,8 +1382,6 @@ const Map ltLT = { "waitingCompletePairing": "Prašome palaukti, baigiamas susiejimas...", "pairingSuccessRedirecting": "Susiejimas sėkmingas! Nukreipiama į pagrindinį puslapį...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Įsitikinkite, kad esate prisijungę prie Voitrans įrenginio", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1394,12 @@ const Map ltLT = { "authorizationFailedCheckCode": "Autorizacija nepavyko, patikrinkite, ar autorizacijos kodas yra teisingas", "pairingFailedRetry": "Susiejimas nepavyko, bandykite dar kartą", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Įjunkite Bluetooth', 'deviceDisconnected': 'Įrenginys atjungtas', 'readyToStartPairing': 'Pasiruošta pradėti susiejimą', 'checkingEnvironment': 'Tikrinama aplinka...', 'ensureHeadsetOnAndPairingMode': 'Įsitikinkite, kad ausinės įjungtos ir yra susiejimo režime', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Kuriama saugi jungtis...', 'needManualBindingAuthCode': 'Reikalingas rankinio susiejimo autorizacijos kodas...', @@ -1425,21 +1421,30 @@ const Map ltLT = { 'bleConnectionFailed': 'BLE ryšys nepavyko', 'deviceAuthorizationFailedCheckCode': 'Įrenginio autorizacija nepavyko, patikrinkite autorizacijos kodą', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Vartotojų atsiliepimai", 'feedbackInfo': 'Pateikite atsiliepimą ar pasiūlymą', 'feedbackDescription': @@ -1468,13 +1473,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", @@ -1483,7 +1489,61 @@ const Map ltLT = { "removeEarbudsEnsureBattery": "Išimkite abi ausines ir įsitikinkite, kad abiejų baterijos lygis yra didesnis nei 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Rasta nauja versija @version', + 'otaConfirmUpdateNow': 'Atnaujinti dabar?', + 'otaUpdate': 'Atnaujinti', + 'otaUpgradeSuccess': 'Atnaujinimas sėkmingas', + 'otaUpgradeCompleteRepair': + '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': 'Klaida tikrinant BLE ryšį: @error', + 'otaBleNotConnected': 'BLE įrenginys neprijungtas', + 'otaBleNeedConnection': + 'Programinės įrangos atnaujinimui reikia BLE įrenginio ryšio\nĮsitikinkite, kad įrenginys prijungtas tinkamai, ir bandykite dar kartą', + 'otaDeviceInfoUnavailableTitle': 'Įrenginio informacija neprieinama', + 'otaCannotGetDeviceInfo': + 'Nepavyko gauti įrenginio informacijos\nPrisijunkite iš naujo arba bandykite vėliau', + 'otaBleCheckFailed': 'BLE ryšio patikra nepavyko', + 'otaCannotGetDeviceInfoCheckConnection': + 'Nepavyko gauti įrenginio informacijos, patikrinkite ryšį', + 'otaCannotGetProductInfoWithName': + 'Nepavyko gauti produkto informacijos, įrenginio pavadinimas: @deviceName', + 'otaCannotGetBatteryInfo': 'Nepavyko gauti tinkamos baterijos informacijos', + 'otaLowBattery': 'Mažas įkrovos lygis', + 'otaSingleBatteryLow': + 'Į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': + 'Į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': + 'Š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': + 'Atsisiuntimas nepavyko, patikrinkite tinklo ryšį', + 'otaDownloadFailed': 'Atsisiuntimas nepavyko', + 'otaPreparingConnection': 'Ruošiamas įrenginio ryšys...', + 'otaConnectingDevice': 'Jungiamasi prie įrenginio...', + 'otaUpgradeStarted': 'OTA upgrade started...', + 'otaUpgradeProgressWithPercent': 'Atnaujinimo eiga: @percent%', + 'otaUpgradeSuccessComplete': 'Atnaujinimas sėkmingai baigtas', + 'otaUpgradeFailedWithCode': 'Atnaujinimas nepavyko, klaidos kodas: @code', + 'otaUpgradeFailedTitle': 'Atnaujinimas nepavyko', + 'otaUpgradeFailedDesc': + 'Patikrinkite įrenginio ryšį arba atnaujinimo paketą, klaidos kodas: @code', + 'otaDeviceDisconnected': 'Įrenginys atjungtas', + 'otaDeviceConnected': 'Įrenginys prijungtas', + + // 音乐模块 "noMusic": "Nėra muzikos", // 暂无音乐 "noPlayingMusic": "Negrojama jokia muzika", // 暂无播放音乐 "unknownSong": "Nežinoma daina", // 未知歌曲 @@ -1531,22 +1591,122 @@ const Map ltLT = { "波斯语": "Persų", "斯瓦希里语": "Svahilių", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "El. paštas", + "中国": "Kinija", + "美国": "JAV", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Jungtinė Karalystė", + "德国": "Vokietija", + "意大利": "Italija", + "法国": "Prancūzija", + "西班牙": "Ispanija", + "南非": "Pietų Afrika", + "沙特阿拉伯": "Saudo Arabija", + "土耳其": "Turkija", + "日本": "Japonija", + "韩国": "Pietų Korėja", + "新加坡": "Singapūras", + "马来西亚": "Malaizija", + "泰国": "Tailandas", + "越南": "Vietnamas", + "印度": "Indija", + "巴基斯坦": "Pakistanas", + "菲律宾": "Filipinai", + "印度尼西亚": "Indonezija", + "阿联酋": "JAE", + "墨西哥": "Meksika", + "巴西": "Brazilija", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Naujoji Zelandija", + "中国香港": "Honkongas (Kinija)", + "中国澳门": "Makao (Kinija)", + "中国台湾": "Taivanas (Kinija)", + "埃及": "Egiptas", + "希腊": "Graikija", + "荷兰": "Nyderlandai", + "比利时": "Belgija", + "匈牙利": "Vengrija", + "罗马尼亚": "Rumunija", + "瑞士": "Šveicarija", + "奥地利": "Austrija", + "丹麦": "Danija", + "瑞典": "Švedija", + "挪威": "Norvegija", + "波兰": "Lenkija", + "秘鲁": "Peru", + "智利": "Čilė", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venesuela", + "葡萄牙": "Portugalija", + "卢森堡": "Liuksemburgas", + "爱尔兰": "Airija", + "冰岛": "Islandija", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Kipras", + "芬兰": "Suomija", + "保加利亚": "Bulgarija", + "立陶宛": "Lietuva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estija", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbija", + "克罗地亚": "Kroatija", + "斯洛文尼亚": "Slovėnija", + "捷克": "Čekija", + "斯洛伐克": "Slovakija", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvadoras", + "洪都拉斯": "Hondūras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haitis", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvadoras", + "巴拉圭": "Paragvajus", + "乌拉圭": "Urugvajus", + "摩洛哥": "Marokas", + "阿尔及利亚": "Alžyras", + "突尼斯": "Tunisas", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladešas", + "以色列": "Izraelis", + "黎巴嫩": "Libanas", + "约旦": "Jordanija", + "伊拉克": "Irakas", + "科威特": "Kuveitas", + "巴林": "Bahreinas", + "卡塔尔": "Kataras", + "阿曼": "Omanas", + "阿富汗": "Afganistanas", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mianmaras", + "尼泊尔": "Nepalas", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laosas", + "文莱": "Brunėjus", + "东帝汶": "Rytų Timoras", + "斐济": "Fidžis", + "所罗门群岛": "Saliamono Salos", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/lv_lv.dart b/lib/core/translations/language/lv_lv.dart index b8f239467..6f90327ec 100644 --- a/lib/core/translations/language/lv_lv.dart +++ b/lib/core/translations/language/lv_lv.dart @@ -18,6 +18,11 @@ const Map lvLV = { "unknownError": "Nezināma kļūda", "asrConnectionFailed": "Neizdevās izveidot savienojumu ar runas atpazīšanas pakalpojumu. Pārbaudiet tīklu vai mēģiniet vēlreiz vēlāk.", + "justNow": "Tikko", + "minutesAgo": "Pirms @minutes minūtēm", + "yesterday": "Vakar", + "daysAgo": "Pirms @days dienām", + "hoursAgo": "Pirms @hours stundām", // 启动页 "slogan": "Pasaules savienošana, pāri skaņai", @@ -28,7 +33,7 @@ const Map lvLV = { "explore": "Izpētīt", "settings": "Iestatījumi", - // 语言 + // 语言列表 "followingSystem": "Sekot sistēmai", "chinese": "Ķīniešu", "english": "Angļu", @@ -72,7 +77,7 @@ const Map lvLV = { "arabic": "Arabiešu", "persian": "Persiešu", - // 登录页 + // 登录模块 "welcome": "Laipni lūdzam", "loginTips": "Piesakieties vai reģistrējieties ar savu tālruņa numuru vai e-pastu", @@ -101,13 +106,9 @@ const Map lvLV = { "resendVerificationCode": "Nosūtīt verifikācijas kodu vēlreiz", "login": "Pieteikties", "usePasswordLogin": "Pieteikties ar paroli", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans deklarācija", // Voitrans 声明 "welcomeToThisApp": "Laipni lūdzam Voitrans, lūdzu, uzmanīgi izlasiet", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", noklikšķinot uz 'Piekrītu un ienākt', jūs apliecināt, ka esat pilnībā izlasījis un piekrītat iepriekš minētajiem līgumiem. Noklikšķinot uz 'Nepiekrītu', jūs iziesiet no lietotnes.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nepiekrītu", // 不同意 @@ -168,7 +169,30 @@ const Map lvLV = { 'right': 'Labais', 'checkConnectionStatusFailed': 'Savienojuma statusa pārbaude neizdevās', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth inicializācija neizdevās: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth un atrašanās vietas atļaujas ir nepieciešamas, lai skenētu ierīces', + 'permissionRequestFailedWithError': 'Atļaujas pieprasījums neizdevās: @error', + 'needPermission': 'Nepieciešama atļauja', + 'blePermissionDialogContent': + 'Šai lietotnei ir nepieciešamas Bluetooth un atrašanās vietas atļaujas, lai skenētu ierīces. Lūdzu, iespējojiet tās iestatījumos.', + 'needEnableBluetooth': 'Iespējot Bluetooth', + 'enableBluetoothDialogContent': + 'Lūdzu, iespējojiet Bluetooth, lai skenētu un savienotu ierīces.', + 'bleScanFailedWithError': 'Skenēšana neizdevās: @error', + 'bleConnectionSuccess': 'Savienojums veiksmīgs', + 'bleConnectedToDevice': 'Savienots ar @device', + 'bleConnectionFailedWithError': 'Savienojums neizdevās: @error', + 'bleDisconnected': 'Atvienots', + 'bleDeviceDisconnected': 'Ierīce atvienota', + 'bleDisconnectFailedWithError': 'Atvienošana neizdevās: @error', + 'signalStrong': 'Spēcīgs', + 'signalMedium': 'Vidējs', + 'signalWeak': 'Vājš', + 'signalVeryWeak': 'Ļoti vājš', + + // 发现页 "searchAi": "Meklēt AI funkcijas...", "exploreSlogan": "Viedās austiņas, bezgalīgas iespējas", "exploreSlogan1": "Viedais pavadonis, bezgalīgas iespējas", @@ -192,211 +216,275 @@ const Map lvLV = { "usageStats": "Pārskatījumu statistika", "usageStatsInfo": "Pārskatiet jūsu lietotāja pārskatījumu statistiku", "scene": "Scenārijs", + // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "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 tērzēšana", + "translationStats": "Tulkošanas statistika", + "meetingStats": "Sapulču statistika", + "today": "Šodien", + "thisWeek": "Šonedēļ", + "thisMonth": "Šomēnes", + "history": "Vēsture", + "currentSessionStats": "Pašreizējās sesijas statistika", + "translationCount": "Tulkojumu skaits", + "sessionDuration": "Sesijas ilgums", + "characters": "Rakstzīmes", + "recordingDuration": "Ieraksta ilgums", + "totalApiCalls": "Kopējie API izsaukumi", + "sessionCount": "Sesiju skaits", + "totalCharacters": "Kopējais rakstzīmju skaits", + "apiCallStats": "API izsaukumu statistika", + "translationApi": "Tulkošanas API", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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": "Datu apjoma statistika", + "sourceTextCharacters": "Avota teksta rakstzīmes", + "ttsTextCharacters": "TTS teksta rakstzīmes", + "effectiveAudioDuration": "Efektīvais audio ilgums", + "totalSessionDuration": "Kopējais sesijas ilgums", + "costStats": "Izmaksu statistika", + "estimatedCost": "Aptuvenas izmaksas", + "dailyCostThreshold": "Dienas izmaksu slieksnis", + "monthlyCostThreshold": "Mēneša izmaksu slieksnis", + "usageBehaviorStats": "Lietošanas paradumu statistika", + "mostUsedLanguagePair": "Visbiežāk lietotais valodu pāris", + "mostUsedMode": "Visbiežāk lietotais režīms", + "asrApiCalls": "ASR izsaukumi", + "totalAudioDuration": "Kopējais audio ilgums", + "audioFileSize": "Audio faila lielums", + "transcriptBytes": "Transkripcijas baiti", + "loadFailed": "Ielāde neizdevās", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Statistikas ielāde neizdevās. Lūdzu, mēģiniet vēlreiz vēlāk.", + "cleanupComplete": "Tīrīšana pabeigta", + "cleanedOldData": "Notīrīti dati, kas vecāki par 90 dienām", + "exportFeature": "Eksporta funkcija", + "exportInDevelopment": "Datu eksports tiek izstrādāts", + + // 商品模块 - 通用 + 'availablePackages': 'Pieejamās paketes', + 'remainingQuota': 'Atlikušā kvota', + 'totalQuota': 'Kopējā kvota', + 'remaining': 'Atlikušais', + 'featureDescription': 'Funkcijas apraksts', + 'paymentSuccess': 'Maksājums veiksmīgs', + 'paymentFailed': 'Maksājums neizdevās', + 'gotIt': 'Sapratu', + 'paymentFailedTryAgain': 'Maksājums neizdevās. Lūdzu, mēģiniet vēlreiz.', + 'selectPaymentMethod': 'Izvēlieties maksājuma veidu', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Neizdevās izveidot WeChat Pay pasūtījumu', + 'alipayOrderCreateFailed': 'Neizdevās izveidot Alipay pasūtījumu', + 'appleOrderCreateFailed': 'Neizdevās izveidot Apple pasūtījumu', + 'googleOrderCreateFailed': 'Neizdevās izveidot Google pasūtījumu', + 'paypalOrderCreateFailed': 'Neizdevās izveidot PayPal pasūtījumu', + 'paymentException': 'Maksājuma izņēmums', + 'paymentLaunchFailed': 'Maksājuma palaišana neizdevās', + 'paymentExceptionWithError': 'Maksājuma izņēmums: @error', + 'paymentProcessingCheckLater': + 'Jūsu pasūtījums tiek apstrādāts. Lūdzu, pārbaudiet vēlāk.', + 'paymentResultQueryException': + 'Neizdevās pieprasīt maksājuma rezultātu: @error', + 'orderConfirmedQuotaRefreshed': + 'Pasūtījums apstiprināts. Jūsu kvota ir atjaunināta.', + 'paymentCompletedConfirming': 'Maksājums pabeigts. Apstiprina…', + 'paymentCancelled': 'Maksājums atcelts', + 'paypalOpenedCompleteInBrowser': + 'PayPal atvērts. Lūdzu, pabeidziet maksājumu pārlūkprogrammā.', + 'paypalOpenFailed': 'Nevar atvērt PayPal maksājuma lapu', + 'paymentTestTitle': 'Maksājuma tests', + 'paymentTestOrderInfo': 'Testa pasūtījuma informācija', + 'paymentTestProductId': 'Produkta ID', + 'paymentTestProductDescription': 'Produkta apraksts', + 'paymentTestWechatDescription': 'WeChat Pay maksājuma tests', + 'paymentTestAlipayDescription': 'Alipay maksājuma tests', + 'paymentTestAmount': 'Summa', + 'paymentTestSelectAmount': 'Izvēlieties testa summu', + 'paying': 'Maksā...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Maksājuma statuss', + 'errorInfoWithMessage': 'Kļūda: @message', + 'retest': 'Atkārtots tests', + 'paymentTestInstructionsTitle': 'Instrukcijas', + 'paymentTestInstructionsContent': + '1. Izvēlieties testa summu (ieteicams: ¥0,01)\n2. Noklikšķiniet uz maksājuma pogas, lai sāktu\n3. Pabeidziet maksājumu maksājuma lietotnē\n4. Atgriezieties, lai pārbaudītu rezultātu', + 'startingWechatPayment': 'Palaižam WeChat Pay...', + 'startingAlipayPayment': 'Palaižam Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay veiksmīgs!', + 'wechatPaymentFailed': 'WeChat Pay neizdevās', + 'wechatPaymentLaunchFailed': 'Neizdevās palaist WeChat Pay', + 'cannotLaunchWechatPayment': 'Nevar palaist WeChat Pay', + 'wechatPaymentException': 'WeChat Pay izņēmums', + 'wechatPaymentTestCompleted': 'WeChat Pay tests pabeigts', + 'alipayPaymentSuccess': 'Alipay veiksmīgs!', + 'alipayPaymentFailed': 'Alipay neizdevās', + 'alipayPaymentLaunchFailed': 'Neizdevās palaist Alipay', + 'cannotLaunchAlipayPayment': 'Nevar palaist Alipay', + 'alipayPaymentException': 'Alipay izņēmums', + "insufficientIntegral": "Nepietiekams atlikums", + "insufficientBalanceDesc": + 'Nepietiekams atlikums, lūdzu, dodieties uz atbilstošo papildināšanas lapu, lai papildinātu.', + "recharge": 'Doties uz papildināšanu', + "aiMemberExpiredDesc": + 'AI dalība ir beigusies, lūdzu, dodieties uz dalības papildināšanas lapu, lai atjaunotu.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Mūzika un ieteikumi', + 'navigationAndRoutes': 'Navigācija un maršruti', + 'nearbySearch': 'Meklēšana tuvumā', + 'newsInformation': 'Jaunumi', + 'communicationAssistant': 'Komunikācijas palīgs', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Garāka sarunu kvota, vairāk rīku izsaukumu, paplašināts konteksta garums.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Piemērots aģenta jautājumiem un atbildēm, apkopošanai, analīzei un uzdevumu izpildei.', + 'musicSearchPlaybackControl': + 'Mūzikas bibliotēkas meklēšana un atskaņošanas vadība', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Viedais atskaņošanas saraksts un līdzīgu dziesmu ieteikumi', '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šrutu plānošana un sastrēgumu izvairīšanās', + 'voiceBroadcastAndWaypoints': 'Balss apraide un maršruta punktu iestatījumi', + 'realTimeWeatherForecast': 'Reāllaika laikapstākļi un prognoze', + 'clothingAdviceAndTravelReminders': 'Apģērba padomi un ceļojumu atgādinājumi', + 'poiSearchFoodGasParking': + 'POI meklēšana: ēdināšana / degviela / autostāvvieta', + 'ratingsHoursAndDirectRoutes': 'Vērtējumi, darba laiki un tiešie maršruti', + 'hotNewsAndTopicOverview': 'Aktuālās ziņas un tēmu pārskats', + 'longArticleSummariesAndKeyPoints': + 'Garu rakstu kopsavilkumi un galvenie punkti', + 'helpCallAndSMS': 'Palīdzība ar zvaniem un SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Veidņu ziņojumi un grafika atgādinājumi', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Funkcijas ir atkarīgas no ierīces atļaujām, pakalpojumu pieejamības un tīkla apstākļiem.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Reāllaika transkripcija', + 'sceneLexicon': 'Scenāriju vārdnīca', + 'subtitleDisplay': 'Subtitri', + 'transHeaderDesc1': + 'Reāllaika sinhronā tulkošana un teksta tulkošana ar zema latentuma balsi.', + 'transHeaderDesc2': 'Piemērots ceļojumiem, biznesam, runām un apmācībām.', + 'translateZhEn': 'Ķīniešu-angļu tulkošana', + 'lowLatencyVoiceBroadcast': 'Zema latentuma balss apraide', + 'multiLangTextTranslation': 'Daudzvalodu teksta tulkošana', + 'termOptimizationContextPreserve': + 'Terminoloģijas optimizācija un konteksta saglabāšana', + 'lexiconTourBusinessLife': 'Ceļojumu/biznesa/dzīves vārdnīcas', + 'personalVocabularyMemory': 'Personīgā vārdu krājuma atmiņa', + 'conversationSubtitleLargeText': 'Sarunu subtitri / Liela teksta režīms', + 'colorHighContrast': 'Augsts krāsu kontrasts', + 'transDisclaimer': + 'Tulkošanas veiktspēja ir atkarīga no mikrofona, tīkla latentuma un apkārtējā trokšņa.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Sapulces ierakstīšana', + 'transcriptionAndSummary': 'Transkripcija un kopsavilkums', + 'keywordSearch': 'Atslēgvārdu meklēšana', + 'collaborationSharing': 'Sadarbība un kopīgošana', + 'meetingHeaderDesc1': + 'Audio ierakstīšana, transkripcija, atslēgvārdu meklēšana un automātisks kopsavilkums sapulču efektivitātes uzlabošanai.', + 'meetingHeaderDesc2': + 'Piemērots biznesa sapulcēm, lekciju piezīmēm un interviju protokoliem.', + 'meetingAutoRecording': 'Automātiska ierakstīšana un segmentēšana', + 'meetingSpeakerTagging': 'Runātāju iezīmēšana', + 'meetingLongAudioTranscription': 'Garu audio transkripcija', + 'meetingKeyPointSummary': 'Galveno punktu izvilkšana', + 'meetingTopicNameSearch': 'Meklēšana pēc tēmas/vārda', + 'meetingTimelineJump': 'Laika līnijas pārlēkšana', + 'meetingExportSummary': 'Eksportēt protokolu', + 'meetingMultiPlatformShare': 'Kopīgot starp platformām', + 'meetingDisclaimer': + 'Lietojiet klusā vidē; veiktspēja ir atkarīga no mikrofona un tīkla.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Priekšrocību pārskats', + 'higherQuota': 'Augstāka lietošanas kvota', + 'lowerUnitPrice': 'Zemāka vienības cena', + 'priorityService': 'Prioritārs pakalpojums', + 'exclusiveSupportChannel': 'Īpašs atbalsta kanāls', + 'fastResponse': 'Ātra problēmu atbilde', + 'eventsAndDiscounts': 'Pasākumi un atlaides', + 'memberExclusiveEvents': 'Biedru ekskluzīvi pasākumi', + 'longTermDiscountPlan': 'Ilgtermiņa atlaižu plāns', + 'generalPrivileges': 'Vispārīgās privilēģijas', + 'earlyAccessNewFeatures': 'Agrīna piekļuve jaunām funkcijām', + 'crossDeviceSync': 'Sinhronizācija starp ierīcēm', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Faktiskās priekšrocības ir atkarīgas no paketes detaļām un var mainīties līdz ar versijām.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI pamata 100', + 'ai_002_name': 'AI pamata 500', + 'ai_003_name': 'AI pamata 1000', + 'meet_001_name': 'Sapulču pamata 100', + 'meet_002_name': 'Sapulču pamata 500', + 'meet_003_name': 'Sapulču pamata 1000', + 'trans_001_name': 'Tulkošanas pamata 100', + 'trans_002_name': 'Tulkošanas pamata 500', + 'trans_003_name': 'Tulkošanas pamata 1000', + 'ai_001_desc': 'Ietver 100 lietojumus. Piekļuve galvenajām AI funkcijām.', + 'ai_002_desc': 'Ietver 500 lietojumus. Piekļuve galvenajām AI funkcijām.', + 'ai_003_desc': 'Ietver 1000 lietojumu. Piekļuve galvenajām AI funkcijām.', + 'meet_001_desc': 'Ietver 100 sapulču ierakstus/transkripcijas.', + 'meet_002_desc': 'Ietver 500 sapulču ierakstus/transkripcijas.', + 'meet_003_desc': 'Ietver 1000 sapulču ierakstu/transkripciju.', + 'trans_001_desc': 'Ietver 100 tulkojumus (balss/teksts).', + 'trans_002_desc': 'Ietver 500 tulkojumus (balss/teksts).', + 'trans_003_desc': 'Ietver 1000 tulkojumu (balss/teksts).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Lietotne: VoiTrans · Nodrošina: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP klientu apkalpošanas QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Izlaist", - '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, ', - // AI 引导步骤 - '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': 'Tālāk', + 'sayLilyHint': 'Sakiet “Lilija, Lilija” mikrofonā', + 'imHere': 'Es esmu šeit~', + 'guideWelcomeWakeAI': + 'Laipni lūdzam Voitrans! Vispirms pamodiniet savu AI “Liliju”.', + 'aiReplyCompleted': 'Lilija ir pabeigusi atbildi!', + 'aiThinking': 'Lilija domā…', + 'guideAwakenSuccess': 'Lieliski! Lilija ir nomodā — lūdziet tai palīdzēt.', + 'confirmInput': 'Apstiprināt ievadi', + 'guideClickSendPrefix': 'Nospiediet sūtīt, ', + 'guideWeatherStart': 'Sakiet Lilijai: “Kāds šodien ir laiks?”', + 'guideWeatherInput': 'Kāds šodien ir laiks?', + 'guideWeatherSend': 'Lilija ziņos par laikapstākļiem reāllaikā', + 'guideWeatherEnd': + 'Lilija var ziņot par laikapstākļiem tiešsaistē — izmēģiniet citas komandas', + 'guideMusicStart': 'Sakiet Lilijai: “Atskaņo rokmūziku”', + 'guideMusicInput': 'Atskaņo rokmūziku', + 'guideMusicSend': 'Lilija atradīs mūziku jums', + 'guideMusicEnd': 'Lilija atrada mūziku — izmēģiniet citas komandas', + 'guideNavStart': 'Sakiet Lilijai: “Navigē uz Šeņdžeņas lidostu”', + 'guideNavInput': 'Navigē uz Šeņdžeņas lidostu', + 'guideNavSend': 'Lilija izplānos maršrutu', + 'guideNavEnd': 'Navigācija iestatīta — izmēģiniet citas komandas', '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', - - // 商务会议助手页 + 'Sakiet Lilijai: “Izveido sapulces atgādinājumu rītdien plkst. 15:00”', + 'guideMeetingInput': 'Izveido sapulces atgādinājumu rītdien plkst. 15:00', + 'guideMeetingSend': 'Lilija izveidos sapulces atgādinājumu', + 'guideMeetingEnd': 'Atgādinājums izveidots — izmēģiniet citas komandas', + 'guidePhoneStart': 'Sakiet Lilijai: “Zvani mammai”', + 'guidePhoneInput': 'Zvani mammai', + 'guidePhoneSend': 'Lilija veiks zvanu', + 'guidePhoneEnd': 'Zvans veikts — izmēģiniet citas komandas', + 'guideSmsStart': + 'Sakiet Lilijai: “Nosūti tētim ziņu: Es būšu mājās uz vakariņām”', + 'guideSmsInput': 'Ziņa tētim: Es būšu mājās uz vakariņām', + 'guideSmsSend': 'Lilija nosūtīs ziņu', + 'guideSmsEnd': 'Ziņa nosūtīta — balss vadība ir ērta', + + // Meeting模块 - 首页与导航 "startMeeting": "Sākt sapulci", 'edit': 'Rediģēt', 'delete': 'Dzēst', @@ -408,250 +496,272 @@ const Map lvLV = { 'recordingDetails': 'Ieraksta detaļas', 'aiSummary': 'AI kopsavilkums', 'meetingTranscript': 'Sapulces atšifrējums', - - // Meeting模块 - 导航和基础功能 - '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': 'Faili', + 'mine': 'Mani', + 'connect': 'Savienot', + 'allFiles': 'Visi faili', + 'searchInAllFiles': 'Meklēt visos failos', + 'from': 'No', + 'sortBy': 'Kārtot pēc', + 'creationTime': 'Izveides laiks', + 'bluetoothConnection': 'Bluetooth savienojums', + 'meetingReconnect': 'Atkārtoti savienot', + 'searching': 'Meklē...', + 'searchFailed': + 'Meklēšana neizdevās, lūdzu, pārbaudiet, vai Bluetooth ir iespējots', + 'aiPenNotFound': 'AI PEN ierīce nav atrasta', + 'connectedToAiPen': 'Savienots ar AI PEN ierīci', + 'checkingNewFiles': 'Pārbauda jaunus failus importēšanai', + 'startingWifi': 'Startē Wi-Fi...', + 'newFilesDetected': 'Atrasti jauni faili, gatavo importēšanai', + 'noNewFiles': 'Nav jaunu failu importēšanai', + 'connectingWifi': 'Savieno ar Wi-Fi...', + 'wifiConnected': 'Wi-Fi savienojums veiksmīgs', + 'downloadingFiles': 'Lejupielādē failus...', + 'downloadingFileProgress': 'Kopā {total} faili, lejupielādē failu {current}', + 'downloadComplete': 'Lejupielāde pabeigta', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Lejupielāde pabeigta, kopā {count} faili, automātiski atgriežas pēc 2 sekundēm', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Sākt ierakstīšanu', + 'liveRecording': 'Tiešraide', + 'audioVideoRecording': 'Audio/video ierakstīšana', + 'callRecording': 'Zvanu ierakstīšana', + 'importAudio': 'Importēt audio', 'meetingRecordExitTitle': 'Iziet no ieraksta', // 退出录音 - 'meetingRecordExitMessage': 'Izvēlieties, ko darīt pirms iziešanas', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Izvēlieties, ko darīt pirms iziešanas', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Beigt un saglabāt', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Beigt nesaglabājot', // 结束录音不保存 'meetingRecordContinueInBackground': 'Turpināt ierakstīšanu fonā', // 后台继续录音 - 'meetingRecordStopTimeout': 'Ieraksta apturēšanai beidzās laiks. Mēģiniet vēlreiz.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Neizdevās apturēt ierakstu. Mēģiniet vēlreiz.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Neizdevās saglabāt ierakstu. Mēģiniet vēlreiz.', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Ieraksta apturēšanai beidzās laiks. Mēģiniet vēlreiz.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Neizdevās apturēt ierakstu. Mēģiniet vēlreiz.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Neizdevās saglabāt ierakstu. Mēģiniet vēlreiz.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Notiek ierakstīšana', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Ierakstīšana fonā. Pieskarieties, lai atgrieztos lietotnē.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Ierakstīšana fonā. Pieskarieties, lai atgrieztos lietotnē.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Rādīt virs citām lietotnēm', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Lai rādītu tulkojuma rezultātus zvanu vai audio/video tulkošanas laikā, mums nepieciešama pārklājuma atļauja. Tas ļauj redzēt tulkojumus reāllaikā, izmantojot citas lietotnes.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Lai ierakstīšanas laikā rādītu peldošo ierakstīšanas joslu (taimeris/pauze/turpināt), mums nepieciešama pārklājuma atļauja.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Nevar automātiski atvērt sistēmas iestatījumus. Lūdzu, atveriet Iestatījumus un manuāli iespējojiet pārklājuma atļauju.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Lai rādītu tulkojuma rezultātus zvanu vai audio/video tulkošanas laikā, mums nepieciešama pārklājuma atļauja. Tas ļauj redzēt tulkojumus reāllaikā, izmantojot citas lietotnes.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Lai ierakstīšanas laikā rādītu peldošo ierakstīšanas joslu (taimeris/pauze/turpināt), mums nepieciešama pārklājuma atļauja.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Nevar automātiski atvērt sistēmas iestatījumus. Lūdzu, atveriet Iestatījumus un manuāli iespējojiet pārklājuma atļauju.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Transkribē...', + 'summarizing': 'Apkopo...', + 'analyzing': 'Analizē...', + 'summaryComplete': 'Kopsavilkums pabeigts', + 'generate': 'Ģenerēt', + 'overview': 'Pārskats', + 'transcription': 'Transkripcija', + 'summary': 'Kopsavilkums', + 'mindMap': 'Domu karte', + 'editSpeaker': 'Rediģēt', + 'nameSpeaker': 'Nosaukt runātāju', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Apkopot atkārtoti', + 'dateAndTime': 'Datums un laiks', + 'location': 'Atrašanās vieta', + 'attendees': 'Dalībnieki', + 'inputLocation': 'Ievadiet atrašanās vietu', + 'inputAttendees': 'Ievadiet dalībniekus', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Izvēlēties kopsavilkuma veidni', + 'useThisTemplate': 'Lietot šo veidni', + 'lastUsed': 'Pēdējo reizi lietots', + 'create': 'Izveidot', + 'templateDetails': 'Veidnes informācija', + 'tag': 'Birka', + 'description': 'Apraksts', + 'template': 'Veidne', + 'deleteTemplate': 'Dzēst veidni', + 'deleteTemplateConfirm': + 'Vai esat pārliecināts, ka vēlaties dzēst šo veidni?', + 'editTemplate': 'Rediģēt veidni', + 'createTemplate': 'Izveidot veidni', + 'name': 'Nosaukums', + 'templateContentHint': + 'Lūdzu, ievadiet veidnes saturu! Padoms: Noklikšķiniet uz AI pogas augšpusē, lai ātri ģenerētu veidnes saturu, pamatojoties uz ievadīto nosaukumu un aprakstu', + 'inputNameHint': 'Lūdzu, ievadiet nosaukumu', + 'inputDescHint': 'Lūdzu, ievadiet aprakstu', + 'custom': 'Pielāgots', + 'pleaseEnter': 'Lūdzu ievadiet', + 'viewAll': 'Skatīt visu', + 'recordingLanguage': 'Ieraksta valoda', + 'chineseSimplified': 'Ķīniešu mandarīnu (vienkāršotā)', + 'meetingGenerateNow': 'Ģenerēt tagad', + 'keyEventsAnalyzed': 'Analizēti {count} galvenie notikumi.', + 'aiAnalysisDesc': + 'AI analīze identificē galvenos notikumus ierakstos, ļaujot jums atlasīt svarīgus notikumus AI ģenerēšanai.', + + // Meeting模块 - 文件操作 + 'importing': 'Importē...', + 'batchImporting': 'Pakešu importēšana...', + 'importingLocalRecordings': 'Importē lokālos ierakstus...', + 'importFailed': 'Faila importēšana neizdevās: {filePath}, kļūda: {error}', + 'importSuccess': 'Veiksmīgi importēti {count} lokālie ieraksti', + 'importError': 'Importēšana neizdevās: {error}', + 'pleaseSelectAudioFile': 'Lūdzu, atlasiet audio failu', + 'shareAudio': 'Kopīgot sapulces audio', + 'shareComplete': 'Kopīgošana pabeigta!', + 'shareFailed': 'Kopīgošana neizdevās: {error}', + 'fileProcessingFailed': + 'Faila apstrāde neizdevās: {filePath}, kļūda: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Saglabāt domu karti', + 'shareMindMap': 'Kopīgot domu karti', + 'shareSuccess': 'Kopīgošana veiksmīga', + + // Meeting模块 - AI问答 + 'askAI': 'Jautāt AI ...', + 'askAIPrompt': 'Kā es varu jums šodien palīdzēt?', + 'continueAsk': 'Turpināt jautāt', + 'todoList': 'Uzdevumu saraksts', + 'extractConclusion': 'Izvilkt secinājumu', + 'generateKeyIndicators': 'Ģenerēt galvenos rādītājus', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Kopīgot saiti', + 'copyTranscript': 'Kopēt transkripciju', + 'copySummary': 'Kopēt kopsavilkumu', + 'exportAudio': 'Eksportēt audio', + 'exportTranscript': 'Eksportēt transkripciju', + 'shareMeetingAudio': 'Kopīgot sapulces audio', + 'exportSummary': 'Eksportēt kopsavilkumu', + 'exportAs': 'Eksportēt kā', + 'exportingPDF': 'Eksportē PDF...', + 'export': 'Eksportēt', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Piemērot visām šī runātāja rindkopām', + 'summaryWillBeUpdatedAutomatically': + 'Kopsavilkums tiks automātiski atjaunināts, pamatojoties uz veidni', + 'nameCurrentSpeaker': 'Nosaukt pašreizējo runātāju', + 'recentlyUsedNames': 'Nesen lietotie vārdi', + 'applyToCurrentParagraph': 'Piemērot pašreizējai rindkopai', + 'totalTime': 'Kopējais laiks', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Kopsavilkuma runātāji tiks automātiski atjaunināti', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinhronizēt ar mākoni', + 'syncToCloudTip': + 'Automātiski sinhronizējiet savus ierakstus ar mākoni — varat atskaņot, pārvaldīt un kopīgot ierakstus caur jebkuru VOITRANS lietotni vai VOITRANS tīmekli (web.voitrans.com).', + 'syncToVoitransApp': 'Sinhronizēt ar VOITRANS lietotni', + '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', - - // 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', + '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': '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.', - - // Meeting模块 - 升级会员 - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + '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/mēnesī', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '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/mēnesī', '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', + 'proMonthlyPrice': '¥120/mēnesī', + 'subscribe': 'Abonēt', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mēnesī', '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ē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 minūtes', + 'threeThousandMinutes': '3 000 minūtes', + 'sixHundredMinutes': '600 minūtes', + 'oneHundredTwentyMinutes': '120 minūtes', + 'validityPeriod': '*Derīguma termiņš: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Piemērot visām šī runātāja rindkopām', - 'summaryWillBeUpdatedAutomatically': - 'Kopsavilkums tiks automātiski atjaunināts, pamatojoties uz veidni', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivizējas uzreiz pēc iegādes, derīgs 2 gadus pēc aktivizēšanas.', + 'purchase': 'Iegādāties', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Ieraksta valoda', + 'cantonese': 'Kantoniešu', + 'sichuan': 'Sičuaņas dialekts', + 'shanghai': 'Šanhajas dialekts', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailed': 'Kopsavilkums neizdevās, lūdzu, mēģiniet vēlreiz vēlāk', + 'summaryFailedShort': 'Kopsavilkums neizdevās', + 'transcriptionFailedShort': 'Transkripcija neizdevās', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio atskaņotājs nav gatavs, lūdzu, uzgaidiet', + 'playFailed': 'Atskaņošana neizdevās', + 'audioFileNotFound': 'Audio fails nav atrasts', + 'fetchingAudio': 'Iegūst audio no mākoņa...', + 'playerLoadFailed': 'Audio atskaņotāja ielāde neizdevās', // 设置页 "systemSettings": "Sistēmas iestatījumi", @@ -660,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", @@ -705,43 +815,32 @@ const Map lvLV = { "BLE austiņu programmaparatūras versijas jaunināšana", "deviceManagement": "Ierīču pārvaldība", "manageConnectedDevices": "Pārvaldīt savienotās Bluetooth ierīces", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Pašlaik jums ir jaunākā versija {version}', 'checkUpdateFailed': 'Neizdevās pārbaudīt atjauninājumus', 'networkErrorRetry': 'Tīkla kļūda, lūdzu, mēģiniet vēlreiz vēlāk', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Reāllaika balss tērzēšana", "realtimeVoiceChatInfo": "Izbaudiet inteliģentās balss mijiedarbības funkciju (funkcijas priekšskatījums)", "loading": "Ielādē...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Notīrīt tērzēšanas vēsturi", "online": "Tiešsaistē", @@ -770,22 +869,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Atbildēt uz jautājumiem un sniegt informāciju\n\n' '• Reāllaika balss tulkošana\n\n' @@ -805,11 +906,11 @@ const Map lvLV = { 'startVoiceInput': 'Sākt balss ievadi', 'startPhoneCallMode': 'Sākt zvanīšanas režīmu, sākt balss ievadi', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ievadiet savu ziņu šeit...', // 全屏编辑器输入提示 'characterCount': '{count} rakstzīmes', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopēt', 'copySuccess': 'Veiksmīgi nokopēts', 'report': 'Ziņot', @@ -817,7 +918,6 @@ const Map lvLV = { 'submitFailed': 'Iesniegšana neizdevās', 'reportSubmitted': 'Ziņojums iesniegts, mēs to apstrādāsim pēc iespējas ātrāk', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Kaitīgs/Nedrošs', 'pornographicVulgar': 'Pornogrāfisks/Vulgārs', 'misleadingAttack': 'Maldinošs/Uzbrukums', @@ -827,17 +927,21 @@ const Map lvLV = { 'other': 'Cits', 'reportDescriptionHint': 'Mēs vēlamies zināt, kāpēc jūs ziņojat, jūs varat aprakstīt problēmu, ar kuru saskārāties.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Ģenerējis AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Rīka izsaukums', + 'noResult': 'Nav rezultātu', + 'noToolCallContentToCopy': 'Nav rīka izsaukuma satura, ko kopēt', + 'toolCallDetails': 'Rīka izsaukuma detaļas:', + 'toolCallContentCopied': 'Rīka izsaukuma saturs nokopēts starpliktuvē', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Šeit ir dažas ieteicamās dziesmas:', 'playList': 'Atskaņošanas saraksts', 'moreMusic': 'Vairāk mūzikas', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'stundas', // 小时单位 @@ -852,7 +956,30 @@ const Map lvLV = { "bicycling": "Riteņbraukšana", "tsransit": "Sabiedriskais transports", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Izvēlēties navigācijas lietotni', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigēt ar Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigēt ar Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigēt ar Google Maps', + 'appleMap': 'Apple Maps', + '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': + '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:', 'highest': 'Augstākā', 'lowest': 'Zemākā', @@ -882,18 +1009,8 @@ const Map lvLV = { "friday": "Piekt.", "saturday": "Sest.", "sunday": "Svēt.", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Saulains", "partlyCloudy": "Daļēji apmācies", "partlySunny": "Daļēji saulains", @@ -914,7 +1031,142 @@ const Map lvLV = { "haze": "Dūmaka", "strongWind": "Stiprs vējš", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Attēlu tulkošana", + "textTranslation": "Teksta tulkošana", + + // 翻译模块 - 主页 + "translationHistory": "Tulkošanas vēsture", + "enableRecording": "Iespējot ierakstīšanu", + "viewAudioFiles": "Skatīt audio failus", + "headsetUser": "Austiņu lietotājs", + "phoneUser": "Tālruņa lietotājs", + "selectSourceLanguage": "Izvēlēties avota valodu", + "selectTargetLanguage": "Izvēlēties mērķa valodu", + "me": "Es", + "counterPart": "Sarunu biedrs", + "bluetoothCallStateError": + "Lūdzu, pārliecinieties, ka Bluetooth austiņas ir pievienotas tālrunim un notiek zvans", + "autoDetect": "Automātiska noteikšana", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Neizdevās noteikt valodu", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Atspējot peldošo logu', + 'enableFloatingWindow': 'Iespējot peldošo logu', + 'permissionTip': 'Atļauju padoms', + 'micPermissionRequiredForRecording': + '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": "Teksts ir pārāk garš, maksimums 5000 rakstzīmes", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Vēl nav vēstures", + "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.", + "unknownLanguage": "Nezināma valoda", + "deleteSessionRecord": "Dzēst sesijas ierakstu", + "deleteSessionConfirm": + "Vai esat pārliecināts, ka vēlaties dzēst visus šīs sesijas tulkošanas ierakstus? Šī darbība nav atgriezeniska.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Attēla apstrāde vai tulkošana neizdevās. Lūdzu, mēģiniet vēlreiz.\nKļūda: {error}", + "imageTooLarge": "Attēla izmērs pārsniedz 4 MB ierobežojumu", + "imageTooLargeHint": + "Attēla izmērs pārsniedz 4 MB. Samaziniet kvalitāti vai izmērus un mēģiniet vēlreiz", + "emptyTranslationResult": "Attēlu tulkošanas API atgrieza tukšu rezultātu", + "imageTranslationFailedTryLater": + "Attēla tulkošana neizdevās. Tīkla problēma vai ātruma ierobežojums. Lūdzu, mēģiniet vēlāk", + "imageTranslationApiException": + "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": + "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", + "noAudioFiles": "Vēl nav audio failu", + "calculating": "Aprēķina...", + "playing": "Atskaņo...", + "paused": "Pauzēts", + "clickToPlay": "Noklikšķiniet, lai atskaņotu", + "rename": "Pārdēvēt", + "smartTranscription": "Viedā transkripcija", + "renameAudioFile": "Pārdēvēt audio failu", + "enterNewFileName": "Lūdzu, ievadiet jaunu faila nosaukumu", + + // 翻译模块 - 翻译详情 + "originalRecord": "Oriģinālais ieraksts", + "recordSummary": "Ieraksta kopsavilkums", + "clickToGenerateSummary": + "Noklikšķiniet uz pogas zemāk, lai ģenerētu sesijas kopsavilkumu", + "summaryContent": "Kopsavilkuma saturs", + "copied": "Nokopēts", + "summaryCopiledToClipboard": "Kopsavilkums nokopēts starpliktuvē", + "extractSummary": "Izvilkt kopsavilkumu", + "summaryGenerated": "Kopsavilkums ģenerēts", + "generating": "Ģenerē...", + "regenerate": "Ģenerēt no jauna", + "summaryTimeoutMessage": + "Kopsavilkuma ģenerēšanas pieprasījums ir beidzies, iespējams, tīkla problēmu vai aizņemta servera dēļ.", + "deleteTranslationRecord": "Dzēst tulkošanas ierakstu", + "deleteTranslationConfirm": + "Vai esat pārliecināts, ka vēlaties dzēst šo tulkošanas ierakstu? Šī darbība nav atgriezeniska.", + "originalText": "Oriģinālais teksts", + "translatedText": "Tulkotais teksts", + "sessionSummary": "Sesijas kopsavilkums", + "cannotShare": "Nevar dalīties", + "generateSummaryFirst": "Lūdzu, vispirms ģenerējiet kopsavilkumu", + "translationSessionRecord": "Tulkošanas sesijas ieraksts", + + // 个人资料模块 "editProfile": "Rediģēt personisko informāciju", "avatar": "Avatars", "nickname": "Segvārds", @@ -929,10 +1181,8 @@ const Map lvLV = { 'deleteAccount': 'Dzēst kontu', 'deleteAccountTips': 'Vai esat pārliecināts, ka vēlaties neatgriezeniski dzēst savu kontu? Šī darbība nav atgriezeniska.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Notīrīt kešatmiņu', + 'cleanTips': 'Vai esat pārliecināts, ka vēlaties notīrīt personīgo kešatmiņu?', 'networkConnectionFailed': 'Tīkla savienojuma kļūda, lūdzu, pārbaudiet tīkla iestatījumus un mēģiniet vēlreiz', 'serverTemporarilyUnavailable': @@ -950,10 +1200,6 @@ const Map lvLV = { 'Tīkla savienojuma kļūda, lūdzu, pārbaudiet tīkla iestatījumus', 'serverInternalErrorRetryLater': 'Iekšēja servera kļūda, lūdzu, mēģiniet vēlreiz vēlāk', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Attēla saspiešana neizdevās', 'avatarUpdateFailed': 'Avatara atjaunināšana neizdevās', 'usernameCannotBeEmpty': 'Lietotājvārds nevar būt tukšs', @@ -965,8 +1211,6 @@ const Map lvLV = { 'accountPermanentlyDeleted': 'Konts ir neatgriezeniski dzēsts', 'deleteAccountFailedRetry': 'Konta dzēšana neizdevās, lūdzu, mēģiniet vēlreiz', - - // 账号服务相关 'clearUserDataFailed': 'Neizdevās notīrīt lietotāja datus', // 清理用户数据失败 'deleteUserDataFailed': 'Neizdevās dzēst lietotāja datus', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -981,29 +1225,33 @@ const Map lvLV = { 'accountServiceInitialized': 'Konta pakalpojums ir inicializēts', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Glabātuve', + 'meetingStoragePermissionExplanation': + 'Mums ir nepieciešama glabātuves atļauja, lai jūs varētu izvēlēties un augšupielādēt audio failus.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - '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': @@ -1022,80 +1270,91 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigācija notiek', + 'native.notification.navigation.keepRunning': + 'Notiek navigācija, turiet lietotni atvērtu', + 'native.notification.bleAgent.running': 'Balss asistenta aģents darbojas', + 'native.notification.audioRecording.recording': + 'Notiek audio ierakstīšana, pieskarieties, lai atgrieztos lietotnē', + 'native.notification.music.waiting': 'Gaida atskaņošanu', + 'native.notification.music.previous': 'Iepriekšējais', + 'native.notification.music.next': 'Nākamais', + 'native.notification.music.play': 'Atskaņot', + 'native.notification.music.pause': 'Pauze', + 'native.notification.qqMusic.playing': 'Atskaņo mūziku', + + // 版本更新 'newVersionFound': 'Atrasta jauna versija', // 版本更新对话框标题 'remindLater': 'Atgādināt vēlāk', // 稍后提醒按钮 'updateNow': 'Atjaunināt tagad', // 立即更新按钮 @@ -1106,253 +1365,7 @@ const Map lvLV = { 'updateErrorRetry': 'Atjaunināšanas laikā radās kļūda, lūdzu, mēģiniet vēlreiz vēlāk', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pasts", - "中国": "Ķīna", - "美国": "ASV", - "加拿大": "Kanāda", - "俄罗斯": "Krievija", - "英国": "Apvienotā Karaliste", - "德国": "Vācija", - "意大利": "Itālija", - "法国": "Francija", - "西班牙": "Spānija", - "南非": "Dienvidāfrika", - "沙特阿拉伯": "Saūda Arābija", - "土耳其": "Turcija", - "日本": "Japāna", - "韩国": "Dienvidkoreja", - "新加坡": "Singapūra", - "马来西亚": "Malaizija", - "泰国": "Taizeme", - "越南": "Vjetnama", - "印度": "Indija", - "巴基斯坦": "Pakistāna", - "菲律宾": "Filipīnas", - "印度尼西亚": "Indonēzija", - "阿联酋": "AAE", - "墨西哥": "Meksika", - "巴西": "Brazīlija", - "阿根廷": "Argentīna", - "澳大利亚": "Austrālija", - "新西兰": "Jaunzēlande", - "中国香港": "Honkonga (Ķīna)", - "中国澳门": "Makao (Ķīna)", - "中国台湾": "Taivāna (Ķīna)", - "埃及": "Ēģipte", - "希腊": "Grieķija", - "荷兰": "Nīderlande", - "比利时": "Beļģija", - "匈牙利": "Ungārija", - "罗马尼亚": "Rumānija", - "瑞士": "Šveice", - "奥地利": "Austrija", - "丹麦": "Dānija", - "瑞典": "Zviedrija", - "挪威": "Norvēģija", - "波兰": "Polija", - "秘鲁": "Peru", - "智利": "Čīle", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venecuēla", - "葡萄牙": "Portugāle", - "卢森堡": "Luksemburga", - "爱尔兰": "Īrija", - "冰岛": "Islande", - "阿尔巴尼亚": "Albānija", - "马耳他": "Malta", - "塞浦路斯": "Kipra", - "芬兰": "Somija", - "保加利亚": "Bulgārija", - "立陶宛": "Lietuva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Igaunija", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbija", - "克罗地亚": "Horvātija", - "斯洛文尼亚": "Slovēnija", - "捷克": "Čehija", - "斯洛伐克": "Slovākija", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvadora", - "洪都拉斯": "Hondurasa", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolīvija", - "厄瓜多尔": "Ekvadora", - "巴拉圭": "Paragvaja", - "乌拉圭": "Urugvaja", - "摩洛哥": "Maroka", - "阿尔及利亚": "Alžīrija", - "突尼斯": "Tunisija", - "尼日利亚": "Nigērija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzānija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeša", - "以色列": "Izraēla", - "黎巴嫩": "Libāna", - "约旦": "Jordānija", - "伊拉克": "Irāka", - "科威特": "Kuveita", - "巴林": "Bahreina", - "卡塔尔": "Katara", - "阿曼": "Omāna", - "阿富汗": "Afganistāna", - "斯里兰卡": "Šrilanka", - "缅甸": "Mjanma", - "尼泊尔": "Nepāla", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laosa", - "文莱": "Bruneja", - "东帝汶": "Austrumtimora", - "斐济": "Fidži", - "所罗门群岛": "Zālamana Salas", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Tulkošanas vēsture", - "enableRecording": "Iespējot ierakstīšanu", - "viewAudioFiles": "Skatīt audio failus", - "headsetUser": "Austiņu lietotājs", - "phoneUser": "Tālruņa lietotājs", - "selectSourceLanguage": "Izvēlēties avota valodu", - "selectTargetLanguage": "Izvēlēties mērķa valodu", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Vēl nav vēstures", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Notīrīt vēsturi", - "clearHistoryConfirm": - "Vai esat pārliecināts, ka vēlaties notīrīt visu tulkošanas vēsturi? Šī darbība nav atgriezeniska.", - "unknownLanguage": "Nezināma valoda", - "deleteSessionRecord": "Dzēst sesijas ierakstu", - "deleteSessionConfirm": - "Vai esat pārliecināts, ka vēlaties dzēst visus šīs sesijas tulkošanas ierakstus? Šī darbība nav atgriezeniska.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tulkot audio failus", - "noAudioFiles": "Vēl nav audio failu", - "calculating": "Aprēķina...", - "playing": "Atskaņo...", - "paused": "Pauzēts", - "clickToPlay": "Noklikšķiniet, lai atskaņotu", - "rename": "Pārdēvēt", - "smartTranscription": "Viedā transkripcija", - "renameAudioFile": "Pārdēvēt audio failu", - "enterNewFileName": "Lūdzu, ievadiet jaunu faila nosaukumu", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Oriģinālais ieraksts", - "recordSummary": "Ieraksta kopsavilkums", - "clickToGenerateSummary": - "Noklikšķiniet uz pogas zemāk, lai ģenerētu sesijas kopsavilkumu", - "summaryContent": "Kopsavilkuma saturs", - "copied": "Nokopēts", - "summaryCopiledToClipboard": "Kopsavilkums nokopēts starpliktuvē", - "extractSummary": "Izvilkt kopsavilkumu", - "summaryGenerated": "Kopsavilkums ģenerēts", - "generating": "Ģenerē...", - "regenerate": "Ģenerēt no jauna", - "summaryTimeoutMessage": - "Kopsavilkuma ģenerēšanas pieprasījums ir beidzies, iespējams, tīkla problēmu vai aizņemta servera dēļ.", - "deleteTranslationRecord": "Dzēst tulkošanas ierakstu", - "deleteTranslationConfirm": - "Vai esat pārliecināts, ka vēlaties dzēst šo tulkošanas ierakstu? Šī darbība nav atgriezeniska.", - "originalText": "Oriģinālais teksts", - "translatedText": "Tulkotais teksts", - "sessionSummary": "Sesijas kopsavilkums", - "cannotShare": "Nevar dalīties", - "generateSummaryFirst": "Lūdzu, vispirms ģenerējiet kopsavilkumu", - "translationSessionRecord": "Tulkošanas sesijas ieraksts", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Ierīces savienošana pārī", "connectYourDeepSoundHeadset": "Savienojiet savas Voitrans austiņas", "bind": "Saistīt", @@ -1361,14 +1374,11 @@ const Map lvLV = { "autoInputCode": "Automātiska koda ievade", "skipBinding": "Izlaist saistīšanu", "rescan": "Skenēt vēlreiz", - "verifyingDevice": "Pārbauda ierīci...", "confirmBinding": "Apstiprināt saistīšanu", "associatingDevice": "Asociē ierīci...", "goToBluetoothSettings": "Doties uz Bluetooth iestatījumiem", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gatavs savienošanai pārī", "preparingPairingEnvironment": "Sagatavo vidi savienošanai pārī...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1388,6 @@ const Map lvLV = { "waitingCompletePairing": "Lūdzu, uzgaidiet, pabeidz savienošanu pārī...", "pairingSuccessRedirecting": "Savienošana pārī veiksmīga! Pāradresē uz sākumlapu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Lūdzu, pārliecinieties, ka esat savienots ar Voitrans ierīci", "deviceAlreadyBoundToOtherAccount": "Šī ierīce jau ir saistīta ar citu kontu", @@ -1391,19 +1399,12 @@ const Map lvLV = { "authorizationFailedCheckCode": "Autorizācija neizdevās, lūdzu, pārbaudiet, vai autorizācijas kods ir pareizs", "pairingFailedRetry": "Savienošana pārī neizdevās, lūdzu, mēģiniet vēlreiz", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Lūdzu, iespējojiet Bluetooth', 'deviceDisconnected': 'Ierīce atvienota', 'readyToStartPairing': 'Gatavs sākt savienošanu pārī', 'checkingEnvironment': 'Pārbauda vidi...', 'ensureHeadsetOnAndPairingMode': 'Lūdzu, pārliecinieties, ka austiņas ir ieslēgtas un savienošanas pārī režīmā', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Izveido drošu savienojumu...', 'needManualBindingAuthCode': 'Nepieciešams manuālas saistīšanas autorizācijas kods...', @@ -1426,21 +1427,31 @@ const Map lvLV = { 'bleConnectionFailed': 'BLE savienojums neizdevās', 'deviceAuthorizationFailedCheckCode': 'Ierīces autorizācija neizdevās, lūdzu, pārbaudiet autorizācijas kodu', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Lietotāju atsauksmes", 'feedbackInfo': 'Sniedziet atsauksmes vai ieteikumus', 'feedbackDescription': @@ -1469,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", @@ -1483,7 +1495,60 @@ const Map lvLV = { "removeEarbudsEnsureBattery": "Izņemiet abas austiņas un pārliecinieties, ka abu baterijas līmenis ir virs 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Atrasta jauna versija @version', + 'otaConfirmUpdateNow': 'Atjaunināt tagad?', + 'otaUpdate': 'Atjaunināt', + 'otaUpgradeSuccess': 'Jaunināšana veiksmīga', + 'otaUpgradeCompleteRepair': + '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': 'Kļūda, pārbaudot BLE savienojumu: @error', + 'otaBleNotConnected': 'BLE ierīce nav savienota', + 'otaBleNeedConnection': + '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': + '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': + 'Nevar iegūt ierīces informāciju, lūdzu, pārbaudiet ierīces savienojumu', + 'otaCannotGetProductInfoWithName': + 'Nevar iegūt produkta informāciju, ierīces nosaukums: @deviceName', + 'otaCannotGetBatteryInfo': 'Nevar iegūt derīgu baterijas informāciju', + 'otaLowBattery': 'Zems baterijas līmenis', + 'otaSingleBatteryLow': + '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': + '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': + 'Š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': + '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 jaunināšana sākta...', + 'otaUpgradeProgressWithPercent': 'Jaunināšanas gaita: @percent%', + 'otaUpgradeSuccessComplete': 'Jaunināšana pabeigta veiksmīgi', + 'otaUpgradeFailedWithCode': 'Jaunināšana neizdevās, kļūdas kods: @code', + 'otaUpgradeFailedTitle': 'Jaunināšana neizdevās', + 'otaUpgradeFailedDesc': + '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", // 暂无音乐 "noPlayingMusic": "Netiek atskaņota mūzika", // 暂无播放音乐 "unknownSong": "Nezināma dziesma", // 未知歌曲 @@ -1531,22 +1596,122 @@ const Map lvLV = { "波斯语": "Persiešu", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-pasts", + "中国": "Ķīna", + "美国": "ASV", + "加拿大": "Kanāda", + "俄罗斯": "Krievija", + "英国": "Apvienotā Karaliste", + "德国": "Vācija", + "意大利": "Itālija", + "法国": "Francija", + "西班牙": "Spānija", + "南非": "Dienvidāfrika", + "沙特阿拉伯": "Saūda Arābija", + "土耳其": "Turcija", + "日本": "Japāna", + "韩国": "Dienvidkoreja", + "新加坡": "Singapūra", + "马来西亚": "Malaizija", + "泰国": "Taizeme", + "越南": "Vjetnama", + "印度": "Indija", + "巴基斯坦": "Pakistāna", + "菲律宾": "Filipīnas", + "印度尼西亚": "Indonēzija", + "阿联酋": "AAE", + "墨西哥": "Meksika", + "巴西": "Brazīlija", + "阿根廷": "Argentīna", + "澳大利亚": "Austrālija", + "新西兰": "Jaunzēlande", + "中国香港": "Honkonga (Ķīna)", + "中国澳门": "Makao (Ķīna)", + "中国台湾": "Taivāna (Ķīna)", + "埃及": "Ēģipte", + "希腊": "Grieķija", + "荷兰": "Nīderlande", + "比利时": "Beļģija", + "匈牙利": "Ungārija", + "罗马尼亚": "Rumānija", + "瑞士": "Šveice", + "奥地利": "Austrija", + "丹麦": "Dānija", + "瑞典": "Zviedrija", + "挪威": "Norvēģija", + "波兰": "Polija", + "秘鲁": "Peru", + "智利": "Čīle", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venecuēla", + "葡萄牙": "Portugāle", + "卢森堡": "Luksemburga", + "爱尔兰": "Īrija", + "冰岛": "Islande", + "阿尔巴尼亚": "Albānija", + "马耳他": "Malta", + "塞浦路斯": "Kipra", + "芬兰": "Somija", + "保加利亚": "Bulgārija", + "立陶宛": "Lietuva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Igaunija", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbija", + "克罗地亚": "Horvātija", + "斯洛文尼亚": "Slovēnija", + "捷克": "Čehija", + "斯洛伐克": "Slovākija", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvadora", + "洪都拉斯": "Hondurasa", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolīvija", + "厄瓜多尔": "Ekvadora", + "巴拉圭": "Paragvaja", + "乌拉圭": "Urugvaja", + "摩洛哥": "Maroka", + "阿尔及利亚": "Alžīrija", + "突尼斯": "Tunisija", + "尼日利亚": "Nigērija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzānija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeša", + "以色列": "Izraēla", + "黎巴嫩": "Libāna", + "约旦": "Jordānija", + "伊拉克": "Irāka", + "科威特": "Kuveita", + "巴林": "Bahreina", + "卡塔尔": "Katara", + "阿曼": "Omāna", + "阿富汗": "Afganistāna", + "斯里兰卡": "Šrilanka", + "缅甸": "Mjanma", + "尼泊尔": "Nepāla", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laosa", + "文莱": "Bruneja", + "东帝汶": "Austrumtimora", + "斐济": "Fidži", + "所罗门群岛": "Zālamana Salas", + "刚果民主共和国": "Kongo Demokrātiskā Republika", + "安哥拉": "Angola", + "苏丹": "Sudāna", + "马尔代夫": "Maldīvija", + "不丹": "Butāna", + "摩纳哥": "Monako", + "圣马力诺": "Sanmarīno", + "牙买加": "Jamaika", + "巴哈马": "Bahamu salas", + "巴布亚新几内亚": "Papua Jaungvineja", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/ms_my.dart b/lib/core/translations/language/ms_my.dart index 74822d50e..a912c8d76 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', @@ -18,6 +19,11 @@ const Map msMY = { "unknownError": "Ralat tidak diketahui", "asrConnectionFailed": "Sambungan ke perkhidmatan pengecaman suara gagal. Sila semak rangkaian atau cuba lagi nanti.", + "justNow": "Sebentar tadi", + "minutesAgo": "@minutes minit yang lalu", + "yesterday": "Semalam", + "daysAgo": "@days hari yang lalu", + "hoursAgo": "@hours jam yang lalu", // 启动页 "slogan": "Menghubungkan dunia, melampaui suara", @@ -28,7 +34,7 @@ const Map msMY = { "explore": "Teroka", "settings": "Tetapan", - // 语言 + // 语言列表 "followingSystem": "Ikut Sistem", "chinese": "Bahasa Cina", "english": "Bahasa Inggeris", @@ -72,7 +78,7 @@ const Map msMY = { "arabic": "Bahasa Arab", "persian": "Bahasa Persian", - // 登录页 + // 登录模块 "welcome": "Selamat Datang", "loginTips": "Sila log masuk atau daftar dengan nombor telefon atau e-mel anda", @@ -101,13 +107,9 @@ const Map msMY = { "resendVerificationCode": "Hantar semula kod pengesahan", "login": "Log Masuk", "usePasswordLogin": "Log masuk dengan kata laluan", - - // 隐私政策弹窗 "loginDeclaration": "Pengisytiharan Voitrans", // Voitrans 声明 "welcomeToThisApp": "Selamat datang ke Voitrans, sila baca dengan teliti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", dengan mengklik 'Setuju dan Masuk' bermakna anda telah membaca sepenuhnya dan bersetuju dengan perjanjian di atas. Mengklik 'Tidak Setuju' akan keluar dari aplikasi.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Tidak Setuju", // 不同意 @@ -167,7 +169,30 @@ const Map msMY = { 'right': 'Kanan', 'checkConnectionStatusFailed': 'Gagal menyemak status sambungan', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inisialisasi Bluetooth gagal: @error', + 'needBluetoothAndLocationPermission': + 'Kebenaran Bluetooth dan lokasi diperlukan untuk mengimbas peranti', + 'permissionRequestFailedWithError': 'Permintaan kebenaran gagal: @error', + 'needPermission': 'Kebenaran Diperlukan', + 'blePermissionDialogContent': + 'Aplikasi ini memerlukan kebenaran Bluetooth dan lokasi untuk mengimbas peranti. Sila aktifkan di Tetapan.', + 'needEnableBluetooth': 'Aktifkan Bluetooth', + 'enableBluetoothDialogContent': + 'Sila aktifkan Bluetooth untuk mengimbas dan menyambung peranti.', + 'bleScanFailedWithError': 'Imbasan gagal: @error', + 'bleConnectionSuccess': 'Sambungan Berjaya', + 'bleConnectedToDevice': 'Disambungkan ke @device', + 'bleConnectionFailedWithError': 'Sambungan gagal: @error', + 'bleDisconnected': 'Terputus', + 'bleDeviceDisconnected': 'Peranti terputus', + 'bleDisconnectFailedWithError': 'Gagal memutuskan sambungan: @error', + 'signalStrong': 'Kuat', + 'signalMedium': 'Sederhana', + 'signalWeak': 'Lemah', + 'signalVeryWeak': 'Sangat Lemah', + + // 发现页 "searchAi": "Cari fungsi AI...", "exploreSlogan": "Fon telinga pintar, kemungkinan tanpa had", "exploreSlogan1": "Teman pintar, kemungkinan tanpa had", @@ -191,211 +216,267 @@ const Map msMY = { "usageStats": "Statistik Penggunaan", "usageStatsInfo": "Lihat statistik penggunaan aplikasi", "scene": "Senario", + // 用量统计模块 - "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": "Sembang AI", + "translationStats": "Statistik Terjemahan", + "meetingStats": "Statistik Mesyuarat", + "today": "Hari Ini", + "thisWeek": "Minggu Ini", + "thisMonth": "Bulan Ini", + "history": "Sejarah", + "currentSessionStats": "Statistik Sesi Semasa", + "translationCount": "Bilangan Terjemahan", + "sessionDuration": "Tempoh Sesi", + "characters": "Aksara", + "recordingDuration": "Tempoh Rakaman", + "totalApiCalls": "Jumlah Panggilan API", + "sessionCount": "Bilangan Sesi", + "totalCharacters": "Jumlah Aksara", + "apiCallStats": "Statistik Panggilan API", + "translationApi": "API Terjemahan", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "dataVolumeStats": "Statistik Jumlah Data", + "sourceTextCharacters": "Aksara Teks Sumber", + "ttsTextCharacters": "Aksara Teks TTS", + "effectiveAudioDuration": "Tempoh Audio Berkesan", + "totalSessionDuration": "Jumlah Tempoh Sesi", + "costStats": "Statistik Kos", + "estimatedCost": "Anggaran Kos", + "dailyCostThreshold": "Had Kos Harian", + "monthlyCostThreshold": "Had Kos Bulanan", + "usageBehaviorStats": "Statistik Tingkah Laku Penggunaan", + "mostUsedLanguagePair": "Pasangan bahasa paling kerap digunakan", + "mostUsedMode": "Mod paling kerap digunakan", + "asrApiCalls": "Panggilan ASR", + "totalAudioDuration": "Jumlah Tempoh Audio", + "audioFileSize": "Saiz Fail Audio", + "transcriptBytes": "Bait Transkrip", + "loadFailed": "Gagal Memuat", + "statsLoadFailedTryLater": "Statistik gagal dimuat. Sila cuba lagi kemudian.", + "cleanupComplete": "Pembersihan Selesai", + "cleanedOldData": "Data lebih 90 hari telah dibersihkan", + "exportFeature": "Ciri Eksport", + "exportInDevelopment": "Eksport data sedang dalam pembangunan", + + // 商品模块 - 通用 + 'availablePackages': 'Pakej Tersedia', + 'remainingQuota': 'Kuota Baki', + 'totalQuota': 'Jumlah Kuota', + 'remaining': 'Baki', + 'featureDescription': 'Penerangan Ciri', + 'paymentSuccess': 'Pembayaran berjaya', + 'paymentFailed': 'Pembayaran gagal', + 'gotIt': 'Faham', + 'paymentFailedTryAgain': 'Pembayaran gagal. Sila cuba lagi.', + 'selectPaymentMethod': 'Pilih kaedah pembayaran', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Gagal mencipta pesanan WeChat', + 'alipayOrderCreateFailed': 'Gagal mencipta pesanan Alipay', + 'appleOrderCreateFailed': 'Gagal mencipta pesanan Apple', + 'googleOrderCreateFailed': 'Gagal mencipta pesanan Google', + 'paypalOrderCreateFailed': 'Gagal mencipta pesanan PayPal', + 'paymentException': 'Pembayaran tidak normal', + 'paymentLaunchFailed': 'Gagal membuka pembayaran', + 'paymentExceptionWithError': 'Pembayaran tidak normal: @error', + 'paymentProcessingCheckLater': + 'Pesanan anda sedang diproses. Sila semak kemudian.', + 'paymentResultQueryException': 'Gagal menyemak keputusan pembayaran: @error', + 'orderConfirmedQuotaRefreshed': + 'Pesanan disahkan. Kuota anda telah dikemas kini.', + 'paymentCompletedConfirming': 'Pembayaran selesai. Sedang mengesahkan…', + 'paymentCancelled': 'Pembayaran dibatalkan', + 'paypalOpenedCompleteInBrowser': + 'PayPal telah dibuka. Sila selesaikan pembayaran dalam pelayar.', + 'paypalOpenFailed': 'Tidak dapat membuka halaman pembayaran PayPal', + 'paymentTestTitle': 'Ujian Pembayaran', + 'paymentTestOrderInfo': 'Maklumat Pesanan Ujian', + 'paymentTestProductId': 'ID Produk', + 'paymentTestProductDescription': 'Penerangan produk', + 'paymentTestWechatDescription': 'Ujian pembayaran WeChat', + 'paymentTestAlipayDescription': 'Ujian pembayaran Alipay', + 'paymentTestAmount': 'Jumlah', + 'paymentTestSelectAmount': 'Pilih jumlah ujian', + 'paying': 'Sedang membayar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status pembayaran', + 'errorInfoWithMessage': 'Ralat: @message', + 'retest': 'Uji semula', + 'paymentTestInstructionsTitle': 'Arahan', + 'paymentTestInstructionsContent': + '1. Pilih jumlah ujian (disyorkan: ¥0.01)\n2. Klik butang pembayaran untuk mula\n3. Selesaikan pembayaran dalam aplikasi pembayaran\n4. Kembali untuk menyemak keputusan', + 'startingWechatPayment': 'Membuka WeChat Pay...', + 'startingAlipayPayment': 'Membuka Alipay...', + 'wechatPaymentSuccess': 'Pembayaran WeChat Pay berjaya!', + 'wechatPaymentFailed': 'Pembayaran WeChat Pay gagal', + 'wechatPaymentLaunchFailed': 'Gagal membuka WeChat Pay', + 'cannotLaunchWechatPayment': 'Tidak dapat membuka WeChat Pay', + 'wechatPaymentException': 'WeChat Pay tidak normal', + 'wechatPaymentTestCompleted': 'Ujian pembayaran WeChat Pay selesai', + 'alipayPaymentSuccess': 'Pembayaran Alipay berjaya!', + 'alipayPaymentFailed': 'Pembayaran Alipay gagal', + 'alipayPaymentLaunchFailed': 'Gagal membuka Alipay', + 'cannotLaunchAlipayPayment': 'Tidak dapat membuka Alipay', + 'alipayPaymentException': 'Alipay tidak normal', + "insufficientIntegral": "Mata tidak mencukupi", + "insufficientBalanceDesc": + 'Baki tidak mencukupi, sila pergi ke halaman tambah nilai yang berkaitan untuk tambah nilai.', + "recharge": 'Tambah Nilai', + "aiMemberExpiredDesc": + 'Keahlian AI telah tamat tempoh, sila pergi ke halaman pembaharuan keahlian untuk memperbaharui.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Muzik & Cadangan', + 'navigationAndRoutes': 'Navigasi & Laluan', + 'nearbySearch': 'Carian Berdekatan', + 'newsInformation': 'Berita', + 'communicationAssistant': 'Pembantu Komunikasi', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Kuota perbualan lebih panjang, lebih banyak panggilan alat, panjang konteks diperluas.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Sesuai untuk soal jawab ejen, ringkasan, analisis, dan pelaksanaan tugas.', + 'musicSearchPlaybackControl': 'Carian pustaka muzik dan kawalan main balik', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Senarai main pintar dan cadangan lagu serupa', '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', + 'Perancangan laluan dan pengelakan kesesakan', + 'voiceBroadcastAndWaypoints': 'Siaran suara dan tetapan titik laluan', + 'realTimeWeatherForecast': 'Cuaca masa nyata dan ramalan', + 'clothingAdviceAndTravelReminders': 'Nasihat pakaian dan peringatan perjalanan', + 'poiSearchFoodGasParking': 'Carian POI: restoran / stesen minyak / tempat letak kereta', + 'ratingsHoursAndDirectRoutes': 'Penilaian, waktu perniagaan, dan penghalaan terus', + 'hotNewsAndTopicOverview': 'Berita hangat dan gambaran topik', + 'longArticleSummariesAndKeyPoints': 'Ringkasan artikel panjang dan perkara utama', + 'helpCallAndSMS': 'Bantuan panggilan dan SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Mesej templat dan peringatan jadual', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Ciri bergantung pada kebenaran peranti, ketersediaan perkhidmatan, dan keadaan rangkaian.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transkripsi Masa Nyata', + 'sceneLexicon': 'Glosari Senario', + 'subtitleDisplay': 'Sari Kata', + 'transHeaderDesc1': + 'Pentafsiran serentak masa nyata dan terjemahan teks dengan suara kependaman rendah.', + 'transHeaderDesc2': 'Sesuai untuk perjalanan, perniagaan, ucapan, dan pengajaran.', + 'translateZhEn': 'Terjemahan Cina-Inggeris', + 'lowLatencyVoiceBroadcast': 'Siaran suara kependaman rendah', + 'multiLangTextTranslation': 'Terjemahan teks berbilang bahasa', + 'termOptimizationContextPreserve': + 'Pengoptimuman istilah dan pemeliharaan konteks', + 'lexiconTourBusinessLife': 'Leksikon pelancongan/perniagaan/kehidupan', + 'personalVocabularyMemory': 'Memori perbendaharaan kata peribadi', + 'conversationSubtitleLargeText': 'Sari kata perbualan / Mod teks besar', + 'colorHighContrast': 'Kontras warna tinggi', + 'transDisclaimer': + 'Prestasi terjemahan bergantung pada mikrofon, kependaman rangkaian, dan bunyi persekitaran.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Rakaman Mesyuarat', + 'transcriptionAndSummary': 'Transkripsi & Ringkasan', + 'keywordSearch': 'Carian Kata Kunci', + 'collaborationSharing': 'Kerjasama & Perkongsian', + 'meetingHeaderDesc1': + 'Rakaman audio, transkripsi, carian kata kunci, dan ringkasan automatik untuk meningkatkan kecekapan mesyuarat.', + 'meetingHeaderDesc2': + 'Sesuai untuk mesyuarat perniagaan, nota kelas, dan minit temu duga.', + 'meetingAutoRecording': 'Rakaman automatik dan segmentasi', + 'meetingSpeakerTagging': 'Pelabelan penutur', + 'meetingLongAudioTranscription': 'Transkripsi audio panjang', + 'meetingKeyPointSummary': 'Pengekstrakan perkara utama', + 'meetingTopicNameSearch': 'Carian mengikut topik/nama', + 'meetingTimelineJump': 'Lompat garis masa', + 'meetingExportSummary': 'Eksport minit', + 'meetingMultiPlatformShare': 'Kongsi merentas platform', + 'meetingDisclaimer': + 'Gunakan di persekitaran yang senyap; prestasi bergantung pada mikrofon dan rangkaian.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Gambaran keseluruhan manfaat', + 'higherQuota': 'Kuota penggunaan lebih tinggi', + 'lowerUnitPrice': 'Harga unit lebih rendah', + 'priorityService': 'Perkhidmatan keutamaan', + 'exclusiveSupportChannel': 'Saluran sokongan khusus', + 'fastResponse': 'Respons isu pantas', + 'eventsAndDiscounts': 'Acara dan diskaun', + 'memberExclusiveEvents': 'Acara eksklusif ahli', + 'longTermDiscountPlan': 'Pelan diskaun jangka panjang', + 'generalPrivileges': 'Keistimewaan am', + 'earlyAccessNewFeatures': 'Akses awal ciri baharu', + 'crossDeviceSync': 'Penyegerakan merentas peranti', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Manfaat sebenar bergantung pada butiran pakej dan mungkin berubah mengikut versi.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Asas 100', + 'ai_002_name': 'AI Asas 500', + 'ai_003_name': 'AI Asas 1000', + 'meet_001_name': 'Mesyuarat Asas 100', + 'meet_002_name': 'Mesyuarat Asas 500', + 'meet_003_name': 'Mesyuarat Asas 1000', + 'trans_001_name': 'Terjemahan Asas 100', + 'trans_002_name': 'Terjemahan Asas 500', + 'trans_003_name': 'Terjemahan Asas 1000', + 'ai_001_desc': 'Termasuk 100 penggunaan. Akses ciri AI teras.', + 'ai_002_desc': 'Termasuk 500 penggunaan. Akses ciri AI teras.', + 'ai_003_desc': 'Termasuk 1000 penggunaan. Akses ciri AI teras.', + 'meet_001_desc': 'Termasuk 100 rakaman/transkripsi mesyuarat.', + 'meet_002_desc': 'Termasuk 500 rakaman/transkripsi mesyuarat.', + 'meet_003_desc': 'Termasuk 1000 rakaman/transkripsi mesyuarat.', + 'trans_001_desc': 'Termasuk 100 terjemahan (suara/teks).', + 'trans_002_desc': 'Termasuk 500 terjemahan (suara/teks).', + 'trans_003_desc': 'Termasuk 1000 terjemahan (suara/teks).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Aplikasi: VoiTrans · Disediakan oleh: VoiTrans', + 'iapCustomerServiceQQLabel': 'Perkhidmatan pelanggan IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Langkau", - '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, ', - // AI 引导步骤 - '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': 'Seterusnya', + 'sayLilyHint': 'Sebut "Lily Lily" ke mikrofon', + 'imHere': 'Saya di sini~', + 'guideWelcomeWakeAI': 'Selamat datang ke Voitrans! Pertama, bangunkan AI anda “Lily”.', + 'aiReplyCompleted': 'Lily telah selesai membalas!', + 'aiThinking': 'Lily sedang berfikir…', + 'guideAwakenSuccess': 'Bagus! Lily sudah bangun—minta ia membantu.', + 'confirmInput': 'Sahkan Input', + 'guideClickSendPrefix': 'Ketik hantar, ', + 'guideWeatherStart': 'Beritahu Lily: “Bagaimana cuaca hari ini?”', + 'guideWeatherInput': 'Bagaimana cuaca hari ini?', + 'guideWeatherSend': 'Lily akan melaporkan cuaca secara masa nyata', + 'guideWeatherEnd': 'Lily boleh melaporkan cuaca langsung—cuba arahan lain', + 'guideMusicStart': 'Beritahu Lily: “Mainkan muzik rock”', + 'guideMusicInput': 'Mainkan muzik rock', + 'guideMusicSend': 'Lily akan mencari muzik untuk anda', + 'guideMusicEnd': 'Lily telah menemui muzik—cuba arahan lain', + 'guideNavStart': 'Beritahu Lily: “Navigasi ke Lapangan Terbang Shenzhen”', + 'guideNavInput': 'Navigasi ke Lapangan Terbang Shenzhen', + 'guideNavSend': 'Lily akan merancang laluan', + 'guideNavEnd': 'Navigasi ditetapkan—cuba arahan lain', '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', - - // 商务会议助手页 + 'Beritahu Lily: “Buat peringatan mesyuarat untuk pukul 3 petang esok”', + 'guideMeetingInput': 'Buat peringatan mesyuarat untuk pukul 3 petang esok', + 'guideMeetingSend': 'Lily akan membuat peringatan mesyuarat', + 'guideMeetingEnd': 'Peringatan dicipta—cuba arahan lain', + 'guidePhoneStart': 'Beritahu Lily: “Hubungi Ibu”', + 'guidePhoneInput': 'Hubungi Ibu', + 'guidePhoneSend': 'Lily akan membuat panggilan', + 'guidePhoneEnd': 'Panggilan dibuat—cuba arahan lain', + 'guideSmsStart': 'Beritahu Lily: “Hantar mesej kepada Ayah: Saya akan pulang untuk makan malam”', + 'guideSmsInput': 'Mesej Ayah: Saya akan pulang untuk makan malam', + 'guideSmsSend': 'Lily akan menghantar mesej', + 'guideSmsEnd': 'Mesej dihantar—kawalan suara sangat mudah', + + // Meeting模块 - 首页与导航 "startMeeting": "Mula Mesyuarat", 'edit': 'Sunting', 'delete': 'Padam', @@ -407,250 +488,269 @@ const Map msMY = { 'recordingDetails': 'Butiran Rakaman', 'aiSummary': 'Ringkasan AI', 'meetingTranscript': 'Transkrip Mesyuarat', - - // Meeting模块 - 导航和基础功能 - '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': 'Fail', + 'mine': 'Milik Saya', + 'connect': 'Sambung', + 'allFiles': 'Semua Fail', + 'searchInAllFiles': 'Cari dalam semua fail', + 'from': 'Daripada', + 'sortBy': 'Isih mengikut', + 'creationTime': 'Masa dicipta', + 'bluetoothConnection': 'Sambungan Bluetooth', + 'meetingReconnect': 'Sambung semula', + 'searching': 'Mencari...', + 'searchFailed': 'Carian gagal, sila semak sama ada Bluetooth diaktifkan', + 'aiPenNotFound': 'Peranti AI PEN tidak ditemui', + 'connectedToAiPen': 'Disambungkan ke peranti AI PEN', + 'checkingNewFiles': 'Menyemak fail baharu untuk diimport', + 'startingWifi': 'Memulakan Wi-Fi...', + 'newFilesDetected': 'Fail baharu dikesan, bersedia untuk import', + 'noNewFiles': 'Tiada fail baharu untuk diimport', + 'connectingWifi': 'Menyambung ke Wi‑Fi...', + 'wifiConnected': 'Wi‑Fi berjaya disambungkan', + 'downloadingFiles': 'Memuat turun fail...', + 'downloadingFileProgress': 'Jumlah {total} fail, memuat turun fail {current}', + 'downloadComplete': 'Muat turun selesai', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Muat turun selesai, jumlah {count} fail, kembali secara automatik dalam 2 saat', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', + 'startRecording': 'Mula Merakam', + 'liveRecording': 'Rakaman Langsung', + 'audioVideoRecording': 'Rakaman Audio/Video', + 'callRecording': 'Rakaman Panggilan', 'importAudio': 'Import Audio', 'meetingRecordExitTitle': 'Keluar dari rakaman', // 退出录音 - 'meetingRecordExitMessage': 'Pilih apa yang perlu dibuat sebelum keluar', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Pilih apa yang perlu dibuat sebelum keluar', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Tamatkan dan simpan', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Tamatkan tanpa menyimpan', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Teruskan rakaman di latar belakang', // 后台继续录音 - 'meetingRecordStopTimeout': 'Masa untuk menghentikan rakaman telah tamat. Sila cuba lagi.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Gagal menghentikan rakaman. Sila cuba lagi.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Gagal menyimpan rakaman. Sila cuba lagi.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Teruskan rakaman di latar belakang', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Masa untuk menghentikan rakaman telah tamat. Sila cuba lagi.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Gagal menghentikan rakaman. Sila cuba lagi.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Gagal menyimpan rakaman. Sila cuba lagi.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Rakaman sedang berjalan', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Merakam di latar belakang. Ketik untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Merakam di latar belakang. Ketik untuk kembali ke aplikasi.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Papar di atas aplikasi lain', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Untuk memaparkan hasil terjemahan semasa panggilan atau terjemahan audio/video, kami memerlukan kebenaran overlay. Ini membolehkan anda melihat terjemahan masa nyata semasa menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Untuk memaparkan bar rakaman terapung (pemasa/jeda/sambung) semasa merakam, kami memerlukan kebenaran overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Tidak dapat membuka tetapan sistem secara automatik. Sila buka Tetapan dan dayakan kebenaran overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Untuk memaparkan hasil terjemahan semasa panggilan atau terjemahan audio/video, kami memerlukan kebenaran overlay. Ini membolehkan anda melihat terjemahan masa nyata semasa menggunakan aplikasi lain.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Untuk memaparkan bar rakaman terapung (pemasa/jeda/sambung) semasa merakam, kami memerlukan kebenaran overlay.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Tidak dapat membuka tetapan sistem secara automatik. Sila buka Tetapan dan dayakan kebenaran overlay secara manual.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Sedang mentranskripsi...', + 'summarizing': 'Sedang meringkaskan...', + 'analyzing': 'Sedang menganalisis...', + 'summaryComplete': 'Ringkasan Selesai', + 'generate': 'Jana', + 'overview': 'Gambaran Keseluruhan', + 'transcription': 'Transkripsi', + 'summary': 'Ringkasan', + 'mindMap': 'Peta Minda', + 'editSpeaker': 'Sunting', + 'nameSpeaker': 'Namakan Penutur', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Ringkaskan Semula', + 'dateAndTime': 'Tarikh & Masa', + 'location': 'Lokasi', + 'attendees': 'Peserta', + 'inputLocation': 'Masukkan Lokasi', + 'inputAttendees': 'Masukkan Peserta', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Pilih Templat Ringkasan', + 'useThisTemplate': 'Gunakan Templat Ini', + 'lastUsed': 'Terakhir Digunakan', + 'create': 'Cipta', + 'templateDetails': 'Butiran Templat', + 'tag': 'Teg', + 'description': 'Penerangan', + 'template': 'Templat', + 'deleteTemplate': 'Padam Templat', + 'deleteTemplateConfirm': 'Adakah anda pasti mahu memadamkan templat ini?', + 'editTemplate': 'Edit Templat', + 'createTemplate': 'Cipta Templat', + 'name': 'Nama', + 'templateContentHint': + 'Sila masukkan kandungan templat! Petua: Klik butang AI di atas untuk menjana kandungan templat dengan cepat berdasarkan nama dan penerangan yang anda masukkan', + 'inputNameHint': 'Sila masukkan nama', + 'inputDescHint': 'Sila masukkan penerangan', + 'custom': 'Tersuai', + 'pleaseEnter': 'Sila masukkan', + 'viewAll': 'Lihat semua', + 'recordingLanguage': 'Bahasa Rakaman', + 'chineseSimplified': 'Mandarin Cina (Ringkas)', + 'meetingGenerateNow': 'Jana Sekarang', + 'keyEventsAnalyzed': 'Menganalisis {count} peristiwa utama.', + 'aiAnalysisDesc': + 'Analisis AI mengenal pasti peristiwa utama dalam rakaman, membolehkan anda memilih peristiwa penting untuk penjanaan AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Mengimport...', + 'batchImporting': 'Import kelompok...', + 'importingLocalRecordings': 'Mengimport rakaman tempatan...', + 'importFailed': 'Import fail gagal: {filePath}, ralat: {error}', + 'importSuccess': 'Berjaya mengimport {count} rakaman tempatan', + 'importError': 'Import gagal: {error}', + 'pleaseSelectAudioFile': 'Sila pilih fail audio', + 'shareAudio': 'Kongsi Audio Mesyuarat', + 'shareComplete': 'Perkongsian selesai!', + 'shareFailed': 'Perkongsian gagal: {error}', + 'fileProcessingFailed': 'Pemprosesan fail gagal: {filePath}, ralat: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Simpan Peta Minda', + 'shareMindMap': 'Kongsi Peta Minda', + 'shareSuccess': 'Perkongsian Berjaya', + + // Meeting模块 - AI问答 + 'askAI': 'Tanya AI ...', + 'askAIPrompt': 'Apa yang boleh saya bantu anda hari ini?', + 'continueAsk': 'Teruskan Bertanya', + 'todoList': 'Senarai Tugasan', + 'extractConclusion': 'Ekstrak Kesimpulan', + 'generateKeyIndicators': 'Jana Penunjuk Utama', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Kongsi Pautan', + 'copyTranscript': 'Salin Transkrip', + 'copySummary': 'Salin Ringkasan', + 'exportAudio': 'Eksport Audio', + 'exportTranscript': 'Eksport Transkrip', + 'shareMeetingAudio': 'Kongsi Audio Mesyuarat', + 'exportSummary': 'Eksport Ringkasan', + 'exportAs': 'Eksport Sebagai', + 'exportingPDF': 'Mengeksport PDF...', + 'export': 'Eksport', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Guna pada semua perenggan penutur ini', + 'summaryWillBeUpdatedAutomatically': + 'Ringkasan akan dikemas kini secara automatik berdasarkan templat', + 'nameCurrentSpeaker': 'Namakan Penutur Semasa', + 'recentlyUsedNames': 'Nama Terkini Digunakan', + 'applyToCurrentParagraph': 'Guna pada Perenggan Semasa', + 'totalTime': 'Jumlah Masa', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Penutur ringkasan akan dikemas kini secara automatik', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Segerak ke Awan', + 'syncToCloudTip': + 'Segerakkan rakaman anda ke awan secara automatik; anda boleh memainkan, mengurus dan berkongsi rakaman melalui VOITRANS APP atau VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Segerak VOITRANS APP', + 'transcriptionRecord': 'Rekod Transkripsi', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': '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', - - // 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', + 'transcriptionRecords': 'Rekod Transkripsi', + 'templateCommunity': 'Komuniti Templat', + 'comingSoon': 'Akan Datang', + 'integration': 'Integrasi', + 'voitransPrivateCloud': 'VOITRANS AWAN PERIBADI', + 'enabled': 'Diaktifkan', + 'disabled': 'Dilumpuhkan', + 'myVoitransDevice': 'Peranti VOITRANS Saya', + 'helpAndFeedback': 'Bantuan & Maklum Balas', + 'aboutVoitrans': 'Mengenai VOITRANS', + 'meetingDays': 'Hari', + 'meetingHours': 'Jam', + 'voitransAiMember': 'Ahli AI Voitrans', + 'unlockStarterMember': 'Buka Kunci Ahli Permulaan', + 'bindDeviceToActivate': + 'Ikat peranti Voitrans untuk mengaktifkan keahlian Starter', + 'unlockNow': 'Buka Kunci Sekarang', + + // Meeting模块 - 会员与升级 + 'comparison': 'Perbandingan', + 'detailedInfo': 'Maklumat Terperinci', + 'monthlyTranscriptionTime': 'Masa Transkripsi Bulanan', + 'unlimited': 'Tanpa Had', + 'professionalTemplates': 'Templat Profesional', + 'limited': 'Terhad', + 'fullTemplates': 'Templat Penuh', + 'professionalTerms': 'Istilah Profesional', + 'customTemplates': 'Templat Tersuai', + 'visualMindMap': 'Peta Minda Visual', + 'speakerIdentification': 'Pengenalan Penutur', + 'aiVoiceEnhancement': 'Peningkatan Suara AI', + 'audioImport': 'Import Audio', + 'multipleExportFormats': 'Pelbagai Format Eksport', + 'professionalSummaryTemplates': 'Templat Ringkasan Profesional', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Reka bentuk templat profesional untuk meningkatkan kecekapan kerja anda. Disesuaikan mengikut keperluan industri.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Anda boleh menyesuaikan gesaan ringkasan mengikut keperluan anda dan menggunakannya untuk menjana ringkasan yang diperlukan.', '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.', + 'Ekstrak maklumat lebih mendalam daripada rakaman secara pintar; jana jadual data, kesimpulan perbincangan utama, senarai tugasan, e-mel laporan dan kandungan berformat lain dengan satu klik.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Melebihi ringkasan - susun dan visualisasikan perkara utama dengan peta minda untuk pemahaman teks penuh yang lebih berkesan.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Temui, kongsi, dan dapatkan inspirasi daripada pustaka templat yang dicipta oleh pengguna.', '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.', + 'Transkripsi audio akan menyokong pengenalan penutur, memulihkan kandungan mesyuarat atau panggilan telefon dengan lebih intuitif. Pada masa yang sama, ringkasan akan lebih tepat.', '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.', + 'Rakaman dan transkripsi anda akan disimpan dengan selamat pada pelayan awan khusus, dengan penyulitan penuh semasa muat naik dan muat turun untuk memastikan privasi dan keselamatan.', 'aiVoiceEnhancementDesc': - 'AI voice enhancement supports multiple noise reduction settings, intelligently eliminates background noise, enhances voice clarity, and improves audio playback quality.', + 'Peningkatan suara AI menyokong pelbagai tetapan pengurangan bunyi bising, menghapuskan bunyi latar secara pintar, meningkatkan kejelasan suara, dan meningkatkan kualiti main balik audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Import fail audio dengan mudah dari aplikasi tempatan atau pihak ketiga, seperti memo suara, Google Drive, dll.', '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', + 'Eksport rakaman audio, teks transkripsi dan ringkasan anda dalam pelbagai format (TXT, PDF, JPEG) mengikut keperluan.', + '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Guna pada semua perenggan penutur ini', - 'summaryWillBeUpdatedAutomatically': - 'Ringkasan akan dikemas kini secara automatik berdasarkan templat', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Diaktifkan serta-merta selepas pembelian, sah selama 2 tahun selepas pengaktifan.', + 'purchase': 'Beli', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Bahasa Rakaman', + 'cantonese': 'Kantonis', + 'sichuan': 'Dialek Sichuan', + 'shanghai': 'Dialek Shanghai', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailedShort': 'Ringkasan gagal', + 'transcriptionFailedShort': 'Transkripsi gagal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Pemain audio belum sedia, sila tunggu', + 'playFailed': 'Gagal memainkan', + 'audioFileNotFound': 'Fail audio tidak ditemui', + 'fetchingAudio': 'Mendapatkan audio dari awan...', + 'playerLoadFailed': 'Pemain audio gagal dimuatkan', // 设置页 "systemSettings": "Tetapan Sistem", @@ -659,10 +759,10 @@ const Map msMY = { "translationRecharge": "Pembayaran Penterjemahan", "meetingAssistantRecharge": "Pembayaran Pembantu Mesyuarat", "cloudSync": "Pembayaran Sinkronisasi awan", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "memberService": "Perkhidmatan Ahli", + "bindRewardTitle": "Ganjaran", "bindRewardSimpleDesc": - "First bind device reward has been issued. Tap OK to close.", + "Ganjaran ikatan peranti pertama telah dikeluarkan. Ketik OK untuk menutup.", "joinDevice": "Peranti disambungkan:", "accountId": "ID Akaun:", "systemSetting": "Tetapan Sistem", @@ -702,43 +802,31 @@ const Map msMY = { "bleHeadsetFirmwareUpgrade": "Naik Taraf Versi Firmware Fon Kepala BLE", "deviceManagement": "Pengurusan Peranti", "manageConnectedDevices": "Urus peranti Bluetooth yang dipasangkan", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Anda sudah menggunakan versi terkini {version}', 'checkUpdateFailed': 'Gagal menyemak kemas kini', 'networkErrorRetry': 'Ralat rangkaian, sila cuba lagi nanti', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Sembang Suara Masa Nyata", "realtimeVoiceChatInfo": "Alami fungsi interaksi suara pintar (pratonton fungsi)", "loading": "Memuatkan...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Peranti Tidak Diketahui", + "deviceTypeClassicBluetoothHeadset": "Fon Kepala Bluetooth Klasik", + "deviceTypeBleBluetoothHeadset": "Fon Kepala Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Perakam Suara Pintar", + "deviceTypeSmartEye": "Cermin Mata Pintar", "unbind": "Nyahikat", - "noDevicesBound": "No devices bound yet", - "pleaseBindDeviceFirst": "Please bind a device first to manage", - "noMacAddress": "No MAC Address", - "licenseCode": "License Code", - "confirmUnbind": "Confirm Unbind", + "noDevicesBound": "Belum ada peranti diikat", + "pleaseBindDeviceFirst": "Sila ikat peranti dahulu untuk diurus", + "noMacAddress": "Tiada Alamat MAC", + "licenseCode": "Kod Lesen", + "confirmUnbind": "Sahkan Nyahikat", "confirmUnbindMessage": - "Are you sure you want to unbind device \"{deviceName}\"?", - "confirmUnbindAction": "Confirm Unbind", + "Adakah anda pasti mahu nyahikat peranti \"{deviceName}\"?", + "confirmUnbindAction": "Sahkan Nyahikat", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Kosongkan Sejarah Sembang", "online": "Dalam Talian", @@ -766,22 +854,24 @@ const Map msMY = { "loadMoreMessages": "Muatkan lebih banyak mesej...", "loadFailedClickRetry": "Gagal memuatkan, klik untuk cuba lagi", "swipeUpForMore": "Leret ke atas untuk lebih banyak", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "callingTool": "Saya sedang membantu anda, sila tunggu!", // 正在帮您,请稍等! + "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": "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": "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' '• Jawab soalan dan berikan maklumat\n\n' '• Terjemahan suara masa nyata\n\n' @@ -801,11 +891,11 @@ const Map msMY = { 'startVoiceInput': 'Mula input suara', 'startPhoneCallMode': 'Mula mod panggilan telefon, mula input suara', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Masukkan mesej anda di sini...', // 全屏编辑器输入提示 'characterCount': '{count} aksara', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Salin', 'copySuccess': 'Berjaya disalin', 'report': 'Lapor', @@ -813,7 +903,6 @@ const Map msMY = { 'submitFailed': 'Gagal dihantar', 'reportSubmitted': 'Laporan telah dihantar, kami akan memprosesnya secepat mungkin', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Berbahaya/Tidak Selamat', 'pornographicVulgar': 'Pornografi/Lucah', 'misleadingAttack': 'Mengelirukan/Serangan', @@ -823,17 +912,21 @@ const Map msMY = { 'other': 'Lain-lain', 'reportDescriptionHint': 'Kami ingin tahu sebab anda melaporkan, anda boleh menerangkan masalah yang anda hadapi.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Dihasilkan oleh AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Panggilan Alat', + 'noResult': 'Tiada Keputusan', + 'noToolCallContentToCopy': 'Tiada kandungan panggilan alat untuk disalin', + 'toolCallDetails': 'Butiran Panggilan Alat:', + 'toolCallContentCopied': 'Kandungan panggilan alat telah disalin ke papan keratan', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Berikut adalah beberapa muzik yang disyorkan:', 'playList': 'Senarai Main', 'moreMusic': 'Lagi Muzik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'jam', // 小时单位 @@ -848,7 +941,30 @@ const Map msMY = { "bicycling": "Berbasikal", "tsransit": "Pengangkutan Awam", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Pilih Aplikasi Navigasi', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigasi dengan Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigasi dengan Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigasi dengan Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigasi dengan Apple Maps', + 'builtInNavigation': 'Navigasi Terbina Dalam', + 'useBuiltInNavigation': 'Navigasi dengan peta terbina dalam', + 'navigationStartFailed': 'Gagal memulakan navigasi', + 'cannotPlayMusicListRetryLater': + 'Tidak dapat memainkan senarai muzik, sila cuba lagi nanti', + 'cannotPlaySong': 'Tidak dapat memainkan lagu', + 'openMapError': 'Ralat membuka peta', + 'pleaseInstallAmapApp': 'Sila pasang aplikasi Amap dahulu', + 'pleaseInstallBaiduMapApp': 'Sila pasang aplikasi Baidu Maps dahulu', + 'appleMapStartFailed': 'Apple Maps gagal dimulakan', + 'appleMapUnavailable': 'Apple Maps tidak tersedia', + 'openAppleMapError': 'Ralat membuka Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Menyemak keadaan cuaca:', 'highest': 'Tertinggi', 'lowest': 'Terendah', @@ -878,18 +994,8 @@ const Map msMY = { "friday": "Jumaat", "saturday": "Sabtu", "sunday": "Ahad", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Cerah", "partlyCloudy": "Separuh Berawan", "partlySunny": "Separuh Cerah", @@ -910,9 +1016,143 @@ const Map msMY = { "haze": "Jerebu", "strongWind": "Angin kencang", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Terjemahan Gambar", + "textTranslation": "Terjemahan Teks", + + // 翻译模块 - 主页 + "translationHistory": "Sejarah Terjemahan", + "enableRecording": "Dayakan Rakaman", + "viewAudioFiles": "Lihat Fail Audio", + "headsetUser": "Pengguna Fon Kepala", + "phoneUser": "Pengguna Telefon", + "selectSourceLanguage": "Pilih bahasa sumber", + "selectTargetLanguage": "Pilih bahasa sasaran", + "me": "Saya", + "counterPart": "Rakan Bicara", + "bluetoothCallStateError": + "Sila pastikan fon kepala Bluetooth disambungkan ke telefon dan sedang dalam keadaan panggilan", + "autoDetect": "Kesan Automatik", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Pengesanan bahasa gagal", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Nyahdayakan Tetingkap Terapung', + 'enableFloatingWindow': 'Dayakan Tetingkap Terapung', + 'permissionTip': 'Petua Kebenaran', + 'micPermissionRequiredForRecording': + 'Kebenaran mikrofon diperlukan untuk rakaman', + 'deleteTranslationRecordError': 'Ralat memadam rekod terjemahan: @error', + "translationFailed": "Terjemahan gagal", + "translating": "Sedang menterjemah", + "translate": "Terjemah", + "pleaseInputText": "Sila masukkan teks", + "inputTextToTranslate": "Sila masukkan teks untuk diterjemahkan", + "textTooLong": "Teks terlalu panjang, maksimum 5000 aksara", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Tiada sejarah lagi", + "historyRecords": "Rekod Sejarah", + "clearResults": "Kosongkan Hasil", + "clearHistory": "Kosongkan Sejarah", + "clearHistoryConfirm": + "Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.", + "unknownLanguage": "Bahasa Tidak Diketahui", + "deleteSessionRecord": "Padam Rekod Sesi", + "deleteSessionConfirm": + "Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Pilih Sumber Imej", + "imagePreview": "Pratonton Imej", + "translationResult": "Hasil Terjemahan", + "recognitionResult": "Hasil Pengecaman", + "translatedImagePreview": "Pratonton Imej Terjemahan", + "translatedImageLoadFailed": "Gagal memuatkan imej terjemahan", + "pleaseSelectImage": "Sila pilih imej", + "imageLoadFailed": "Imej gagal dimuatkan", + "imageQuality": "Kualiti Imej", + "maxSize": "Saiz Maksimum", + "close": "Tutup", + "setImageQuality": "Tetapkan Kualiti Imej", + "currentQuality": "Kualiti semasa: @value%", + "setMaxSize": "Tetapkan Saiz Maksimum", + "currentMaxSize": "Semasa: @pxpx", + "waitingForAction": "Menunggu tindakan", + "pleaseSelectImageToStart": "Sila pilih imej untuk mula", + "chooseImage": "Pilih Imej", + "openingCamera": "Membuka kamera...", + "openingPhotoAlbum": "Membuka album foto...", + "cancelled": "Dibatalkan", + "userCancelledSelection": "Pengguna membatalkan pilihan", + "translatingImage": "Sedang menterjemah imej", + "callingImageTranslateService": "Memanggil perkhidmatan terjemahan imej...", + "savingRecord": "Menyimpan Rekod", + "savingTranslationResult": "Menyimpan hasil terjemahan...", + "translationCompleted": "Terjemahan Selesai", + "allStepsCompleted": "Semua langkah selesai", + "processingFailed": "Pemprosesan Gagal", + "imageProcessingOrTranslationFailed": + "Pemprosesan imej atau terjemahan gagal. Sila cuba lagi.\nRalat: {error}", + "imageTooLarge": "Saiz imej melebihi had 4MB", + "imageTooLargeHint": + "Saiz imej melebihi 4MB. Kurangkan kualiti atau dimensi dan cuba lagi", + "emptyTranslationResult": "API terjemahan imej mengembalikan hasil kosong", + "imageTranslationFailedTryLater": + "Terjemahan imej gagal. Masalah rangkaian atau had kadar. Sila cuba kemudian", + "imageTranslationApiException": + "Pengecualian API terjemahan imej. Semak rangkaian dan cuba lagi", + "permissionRequired": "Kebenaran Diperlukan", + "cameraPermissionRequired": + "Kebenaran kamera diperlukan untuk mengambil foto", + "photoAlbumPermissionRequired": + "Kebenaran album foto diperlukan untuk memilih imej", + "translationDetails": "Butiran Terjemahan", + "originalImage": "Imej Asal", + "sourceLanguage": "Bahasa Sumber", + "targetLanguage": "Bahasa Sasaran", + "translationTime": "Masa Terjemahan", + "shareInDevelopment": "Ciri perkongsian sedang dalam pembangunan", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Terjemah Fail Audio", + "noAudioFiles": "Tiada fail audio lagi", + "calculating": "Mengira...", + "playing": "Memainkan...", + "paused": "Dijeda", + "clickToPlay": "Klik untuk main", + "rename": "Namakan semula", + "smartTranscription": "Transkripsi Pintar", + "renameAudioFile": "Namakan semula fail audio", + "enterNewFileName": "Sila masukkan nama fail baharu", + + // 翻译模块 - 翻译详情 + "originalRecord": "Rekod Asal", + "recordSummary": "Ringkasan Rekod", + "clickToGenerateSummary": "Klik butang di bawah untuk menjana ringkasan sesi", + "summaryContent": "Kandungan Ringkasan", + "copied": "Disalin", + "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan keratan", + "extractSummary": "Ekstrak Ringkasan", + "summaryGenerated": "Ringkasan telah dijana", + "generating": "Menjana...", + "regenerate": "Jana semula", + "summaryTimeoutMessage": + "Permintaan menjana ringkasan telah tamat masa, mungkin disebabkan oleh masalah rangkaian atau pelayan sibuk.", + "deleteTranslationRecord": "Padam Rekod Terjemahan", + "deleteTranslationConfirm": + "Adakah anda pasti mahu memadam rekod terjemahan ini? Tindakan ini tidak boleh dibatalkan.", + "originalText": "Teks Asal", + "translatedText": "Teks Terjemahan", + "sessionSummary": "Ringkasan Sesi", + "cannotShare": "Tidak dapat berkongsi", + "generateSummaryFirst": "Sila jana ringkasan terlebih dahulu", + "translationSessionRecord": "Rekod Sesi Terjemahan", + + // 个人资料模块 "editProfile": "Sunting Maklumat Peribadi", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Nama Samaran", "save": "Simpan", "about": "Mengenai", @@ -924,10 +1164,8 @@ const Map msMY = { 'deleteAccount': 'Padam Akaun', 'deleteAccountTips': 'Adakah anda pasti mahu memadam akaun anda secara kekal? Tindakan ini tidak boleh dibatalkan', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Kosongkan Cache', + 'cleanTips': 'Adakah anda pasti mahu mengosongkan cache peribadi?', 'networkConnectionFailed': 'Sambungan rangkaian gagal, sila semak tetapan rangkaian anda dan cuba lagi', 'serverTemporarilyUnavailable': @@ -946,10 +1184,6 @@ const Map msMY = { 'Sambungan rangkaian gagal, sila semak tetapan rangkaian anda', 'serverInternalErrorRetryLater': 'Ralat dalaman pelayan, sila cuba lagi nanti', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Mampatan imej gagal', 'avatarUpdateFailed': 'Kemas kini avatar gagal', 'usernameCannotBeEmpty': 'Nama pengguna tidak boleh kosong', @@ -960,8 +1194,6 @@ const Map msMY = { 'logoutFailedRetry': 'Log keluar gagal, sila cuba lagi', 'accountPermanentlyDeleted': 'Akaun telah dipadam secara kekal', 'deleteAccountFailedRetry': 'Gagal memadam akaun, sila cuba lagi', - - // 账号服务相关 'clearUserDataFailed': 'Gagal mengosongkan data pengguna', // 清理用户数据失败 'deleteUserDataFailed': 'Gagal memadam data pengguna', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Log keluar pihak ketiga berjaya', // 第三方登录退出成功 @@ -975,29 +1207,33 @@ const Map msMY = { 'accountServiceInitialized': 'Perkhidmatan Akaun telah dimulakan', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storan', + 'meetingStoragePermissionExplanation': + 'Kami memerlukan kebenaran storan supaya anda boleh memilih dan memuat naik fail audio.', + 'meetingStoragePermissionPermanentDenial': + 'Dikesan anda telah menafikan kebenaran storan secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran storan secara manual.', 'getPermissionStatusFailed': 'Gagal mendapatkan status kebenaran', 'communicationPermissions': 'Kebenaran Komunikasi', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Kebenaran Bluetooth', + 'notificationPermissions': 'Kebenaran Notifikasi', + 'storagePermissions': 'Kebenaran Storan', + 'microphonePermissions': 'Kebenaran Mikrofon', + 'alarmPermissions': 'Kebenaran Penggera', 'calendarPermissions': 'Kebenaran Kalendar', 'locationPermissions': 'Kebenaran Lokasi', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Kenalan', + 'notification': 'Pemberitahuan', + 'alarm': 'Penggera', 'calendarWrite': 'Tulis Kalendar', 'calendarFullAccess': 'Akses Penuh Kalendar', 'locationInfo': 'Maklumat Lokasi', 'phonePermissionDesc': 'Digunakan untuk fungsi membuat panggilan', 'smsPermissionDesc': 'Digunakan untuk fungsi menghantar SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Digunakan untuk menetapkan penggera tepat supaya peringatan dicetus tepat pada masanya', 'calendarWritePermissionDesc': 'Digunakan untuk membuat acara kalendar dan peringatan', 'calendarFullAccessPermissionDesc': @@ -1015,80 +1251,92 @@ const Map msMY = { 'phonePermissionDetailDesc': 'Fungsi panggilan memerlukan kebenaran telefon', 'smsPermissionDetailDesc': 'Fungsi menghantar SMS memerlukan kebenaran SMS', 'alarmPermissionDetailDesc': - 'This permission is required to set exact alarms and ensure reminders trigger on time', + 'Kebenaran ini diperlukan untuk menetapkan penggera tepat dan memastikan peringatan dicetus tepat pada masanya', 'calendarWritePermissionDetailDesc': 'Membuat acara kalendar memerlukan kebenaran menulis kalendar', 'calendarFullAccessPermissionDetailDesc': 'Mengurus acara kalendar memerlukan kebenaran penuh kalendar', 'locationPermissionDetailDesc': 'Mendapatkan maklumat lokasi memerlukan kebenaran lokasi', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Digunakan untuk mengakses maklumat kenalan', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Fungsi panggilan telefon dan SMS memerlukan kebenaran kenalan untuk memilih kenalan', 'bluetoothPermissionDesc': - 'Used for connecting and managing Bluetooth devices', + 'Digunakan untuk menyambung dan mengurus peranti Bluetooth', 'bluetoothPermissionDetailDesc': - 'Connecting to Bluetooth headphones and other devices requires Bluetooth permission', - 'bluetoothScanPermissionDesc': 'Used for scanning nearby Bluetooth devices', + 'Menyambung ke fon kepala Bluetooth dan peranti lain memerlukan kebenaran Bluetooth', + 'bluetoothScanPermissionDesc': + 'Digunakan untuk mengimbas peranti Bluetooth berdekatan', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Mengimbas peranti Bluetooth berdekatan memerlukan kebenaran imbas Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Digunakan untuk menyambung ke peranti Bluetooth', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Menyambung ke peranti Bluetooth memerlukan kebenaran sambung Bluetooth', + 'notificationPermissionDesc': 'Digunakan untuk menghantar mesej pemberitahuan', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikasi memerlukan kebenaran notifikasi untuk menghantar amaran dan mesej penting kepada anda', 'appNeedsPermissionForFullFunction': 'Aplikasi memerlukan kebenaran ini untuk fungsi penuh', 'permanentDenialText': 'Anda telah menafikan kebenaran {permission} secara kekal, sila pergi ke tetapan aplikasi untuk mendayakannya', 'goToSettings': 'Pergi ke Tetapan', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', + 'bluetoothScan': 'Imbasan Bluetooth', + 'bluetoothConnect': 'Sambung Bluetooth', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikasi memerlukan kebenaran imbas Bluetooth untuk mengimbas peranti Bluetooth berdekatan.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikasi memerlukan kebenaran sambung Bluetooth untuk menyambung ke peranti Bluetooth.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikasi memerlukan kebenaran lokasi untuk mengimbas peranti Bluetooth.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Kebenaran imbas Bluetooth telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Kebenaran sambung Bluetooth telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Kebenaran lokasi telah ditolak secara kekal, sila pergi ke tetapan untuk mendayakannya secara manual.', + 'notificationPermission': 'Pemberitahuan', + 'locationPermission': 'Lokasi', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Kebenaran notifikasi diperlukan untuk memaparkan status main balik muzik.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Kebenaran lokasi diperlukan untuk mendapatkan lokasi semasa.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Anda telah menafikan kebenaran notifikasi secara kekal, sila pergi ke tetapan untuk mendayakannya.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Anda telah menafikan kebenaran lokasi secara kekal, sila pergi ke tetapan untuk mendayakannya.', + 'storagePermission': 'Storan', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Kami memerlukan kebenaran mikrofon untuk merakam kandungan audio.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Kami memerlukan kebenaran storan supaya anda boleh memilih dan memuat naik fail audio.', 'microphonePermissionPermanentDenial': - 'Microphone permission has been permanently denied. To continue using this feature, please go to app settings to manually enable microphone permission.', + 'Kebenaran mikrofon telah ditolak secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran mikrofon secara manual.', 'storagePermissionPermanentDenial': - 'Storage permission has been permanently denied. To continue using this feature, please go to app settings to manually enable storage permission.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Kebenaran storan telah ditolak secara kekal. Untuk terus menggunakan ciri ini, sila pergi ke tetapan aplikasi untuk mendayakan kebenaran storan secara manual.', + 'permissionUtilNeed': 'Perlu ', + 'permissionUtilPermission': ' Kebenaran', + 'permissionUtilRestricted': ' Kebenaran Terhad', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Ciri ini tidak tersedia atau terhad pada peranti semasa, sila semak tetapan peranti atau sekatan sistem', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasi sedang berjalan', + 'native.notification.navigation.keepRunning': + 'Sedang menavigasi, pastikan aplikasi terus berjalan', + 'native.notification.bleAgent.running': 'Ejen pembantu suara sedang berjalan', + 'native.notification.audioRecording.recording': + 'Sedang merakam audio, ketik untuk kembali ke aplikasi', + 'native.notification.music.waiting': 'Menunggu untuk dimainkan', + 'native.notification.music.previous': 'Sebelumnya', + 'native.notification.music.next': 'Seterusnya', + 'native.notification.music.play': 'Main', + 'native.notification.music.pause': 'Jeda', + 'native.notification.qqMusic.playing': 'Sedang memainkan muzik', + + // 版本更新 'newVersionFound': 'Versi Baharu Ditemui', // 版本更新对话框标题 'remindLater': 'Ingatkan Kemudian', // 稍后提醒按钮 'updateNow': 'Kemas Kini Sekarang', // 立即更新按钮 @@ -1099,252 +1347,7 @@ const Map msMY = { 'updateErrorRetry': 'Berlaku ralat semasa kemas kini, sila cuba lagi nanti', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mel", - "中国": "China", - "美国": "Amerika Syarikat", - "加拿大": "Kanada", - "俄罗斯": "Rusia", - "英国": "United Kingdom", - "德国": "Jerman", - "意大利": "Itali", - "法国": "Perancis", - "西班牙": "Sepanyol", - "南非": "Afrika Selatan", - "沙特阿拉伯": "Arab Saudi", - "土耳其": "Turki", - "日本": "Jepun", - "韩国": "Korea Selatan", - "新加坡": "Singapura", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipina", - "印度尼西亚": "Indonesia", - "阿联酋": "Emiriah Arab Bersatu", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Mesir", - "希腊": "Greece", - "荷兰": "Belanda", - "比利时": "Belgium", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Switzerland", - "奥地利": "Austria", - "丹麦": "Denmark", - "瑞典": "Sweden", - "挪威": "Norway", - "波兰": "Poland", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Lithuania", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraine", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Republik Czech", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Morocco", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Solomon Islands", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Sejarah Terjemahan", - "enableRecording": "Dayakan Rakaman", - "viewAudioFiles": "Lihat Fail Audio", - "headsetUser": "Pengguna Fon Kepala", - "phoneUser": "Pengguna Telefon", - "selectSourceLanguage": "Pilih bahasa sumber", - "selectTargetLanguage": "Pilih bahasa sasaran", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Tiada sejarah lagi", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Kosongkan Sejarah", - "clearHistoryConfirm": - "Adakah anda pasti mahu mengosongkan semua sejarah terjemahan? Tindakan ini tidak boleh dibatalkan.", - "unknownLanguage": "Bahasa Tidak Diketahui", - "deleteSessionRecord": "Padam Rekod Sesi", - "deleteSessionConfirm": - "Adakah anda pasti mahu memadam semua rekod terjemahan untuk sesi ini? Tindakan ini tidak boleh dibatalkan.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Terjemah Fail Audio", - "noAudioFiles": "Tiada fail audio lagi", - "calculating": "Mengira...", - "playing": "Memainkan...", - "paused": "Dijeda", - "clickToPlay": "Klik untuk main", - "rename": "Namakan semula", - "smartTranscription": "Transkripsi Pintar", - "renameAudioFile": "Namakan semula fail audio", - "enterNewFileName": "Sila masukkan nama fail baharu", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Rekod Asal", - "recordSummary": "Ringkasan Rekod", - "clickToGenerateSummary": "Klik butang di bawah untuk menjana ringkasan sesi", - "summaryContent": "Kandungan Ringkasan", - "copied": "Disalin", - "summaryCopiledToClipboard": "Ringkasan telah disalin ke papan keratan", - "extractSummary": "Ekstrak Ringkasan", - "summaryGenerated": "Ringkasan telah dijana", - "generating": "Menjana...", - "regenerate": "Jana semula", - "summaryTimeoutMessage": - "Permintaan menjana ringkasan telah tamat masa, mungkin disebabkan oleh masalah rangkaian atau pelayan sibuk.", - "deleteTranslationRecord": "Padam Rekod Terjemahan", - "deleteTranslationConfirm": - "Adakah anda pasti mahu memadam rekod terjemahan ini? Tindakan ini tidak boleh dibatalkan.", - "originalText": "Teks Asal", - "translatedText": "Teks Terjemahan", - "sessionSummary": "Ringkasan Sesi", - "cannotShare": "Tidak dapat berkongsi", - "generateSummaryFirst": "Sila jana ringkasan terlebih dahulu", - "translationSessionRecord": "Rekod Sesi Terjemahan", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Pemasangan Peranti", "connectYourDeepSoundHeadset": "Sambungkan Fon Kepala Voitrans Anda", "bind": "Ikat", @@ -1353,14 +1356,11 @@ const Map msMY = { "autoInputCode": "Masukkan kod secara automatik", "skipBinding": "Langkau Pengikatan", "rescan": "Imbas Semula", - "verifyingDevice": "Mengesahkan peranti...", "confirmBinding": "Sahkan Pengikatan", "associatingDevice": "Mengaitkan peranti...", "goToBluetoothSettings": "Pergi ke Tetapan Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Sedia untuk dipasangkan", "preparingPairingEnvironment": "Menyediakan persekitaran pemasangan...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1370,6 @@ const Map msMY = { "waitingCompletePairing": "Sila tunggu, melengkapkan pemasangan...", "pairingSuccessRedirecting": "Pemasangan berjaya! Mengalihkan ke halaman utama...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sila pastikan anda disambungkan ke peranti Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1381,12 @@ const Map msMY = { "authorizationFailedCheckCode": "Kebenaran gagal, sila semak sama ada kod kebenaran betul", "pairingFailedRetry": "Pemasangan gagal, sila cuba lagi", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Sila dayakan Bluetooth', 'deviceDisconnected': 'Peranti diputuskan sambungan', 'readyToStartPairing': 'Sedia untuk memulakan pemasangan', 'checkingEnvironment': 'Menyemak persekitaran...', 'ensureHeadsetOnAndPairingMode': 'Sila pastikan fon kepala dihidupkan dan dalam mod pemasangan', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Mewujudkan sambungan selamat...', 'needManualBindingAuthCode': 'Kod kebenaran pengikatan manual diperlukan...', 'pairingSuccessful': 'Pemasangan berjaya!', @@ -1415,21 +1406,30 @@ const Map msMY = { 'bleConnectionFailed': 'Sambungan BLE gagal', 'deviceAuthorizationFailedCheckCode': 'Kebenaran peranti gagal, sila semak kod kebenaran', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': 'Pengaktifan Bluetooth Manual Diperlukan', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Sila ikuti langkah-langkah ini:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Aktifkan Bluetooth: Tetapan → Bluetooth → Hidupkan', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Sambung Peranti: Cari peranti anda di "Peranti Saya" dan ketik untuk sambung', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Kembali ke aplikasi untuk meneruskan proses pemasangan', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 + 'Tip: Anda juga boleh tekan lama ikon Bluetooth di Pusat Kawalan untuk akses cepat ke tetapan Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Saya Faham', // 我知道了 + + // 配对模块 - 绑定奖励 + "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Maklum Balas Pengguna", 'feedbackInfo': 'Berikan maklum balas atau cadangan', 'feedbackDescription': @@ -1457,13 +1457,14 @@ const Map msMY = { "connectionFailed": "Sambungan Gagal", "retryConnection": "Cuba Sambung Semula", "ota_updateNow": "Kemas Kini Sekarang", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Gagal mendapatkan maklumat versi. Sila cuba lagi kemudian.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Tidak dapat mendapatkan maklumat peranti. Sila semak sambungan dan cuba lagi.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Tidak dapat mengenal pasti peranti. Sila sambung semula dan cuba lagi.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Versi firmware tidak normal. Sila sambung semula dan cuba lagi.", "keepConnectedDontClose": "Pastikan peranti sentiasa bersambung, jangan tutup aplikasi", "doNotDisconnect": "Jangan putuskan sambungan", @@ -1472,7 +1473,60 @@ const Map msMY = { "removeEarbudsEnsureBattery": "Keluarkan kedua-dua fon telinga, dan pastikan bateri kedua-duanya melebihi 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Versi baharu @version ditemui', + 'otaConfirmUpdateNow': 'Kemas kini sekarang?', + 'otaUpdate': 'Kemas kini', + 'otaUpgradeSuccess': 'Naik Taraf Berjaya', + 'otaUpgradeCompleteRepair': + 'Naik taraf firmware selesai!\n\nPeranti perlu dipasang semula untuk berfungsi dengan betul. Pergi ke halaman pemasangan sekarang?', + 'otaPairLater': 'Pasang Kemudian', + 'otaPairNow': 'Pasang Sekarang', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Ralat semasa menyemak sambungan BLE: @error', + 'otaBleNotConnected': 'Peranti BLE Tidak Bersambung', + 'otaBleNeedConnection': + 'Naik taraf firmware memerlukan sambungan peranti BLE\nSila pastikan peranti disambungkan dengan betul dan cuba lagi', + 'otaDeviceInfoUnavailableTitle': 'Maklumat Peranti Tidak Tersedia', + 'otaCannotGetDeviceInfo': + 'Tidak dapat mendapatkan maklumat peranti\nSila sambung semula peranti atau cuba lagi kemudian', + 'otaBleCheckFailed': 'Semakan Sambungan BLE Gagal', + 'otaCannotGetDeviceInfoCheckConnection': + 'Tidak dapat mendapatkan maklumat peranti, sila semak sambungan peranti', + 'otaCannotGetProductInfoWithName': + 'Tidak dapat mendapatkan maklumat produk, nama peranti: @deviceName', + 'otaCannotGetBatteryInfo': 'Tidak dapat mendapatkan maklumat bateri yang sah', + 'otaLowBattery': 'Bateri Rendah', + 'otaSingleBatteryLow': + 'Bateri peranti terlalu rendah untuk naik taraf firmware\nKeperluan: bateri mesti melebihi 20%\nSemasa: @ear @battery%\nSila cas dan cuba lagi', + 'otaDoubleBatteryLow': + 'Bateri peranti terlalu rendah untuk naik taraf firmware\nKeperluan: kedua-dua fon telinga mesti melebihi 20%\nSemasa: Kiri @left%, Kanan @right%\nSila cas dan cuba lagi', + 'otaBatteryCheckFailed': 'Semakan Bateri Gagal', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Kemas kini ini termasuk pengoptimuman prestasi dan pembetulan pepijat.', + 'otaGetLatestVersionFailed': 'Gagal mendapatkan maklumat versi terkini', + 'otaGetVersionInfoFailed': 'Gagal mendapatkan maklumat versi', + 'otaCheckingDeviceStatus': 'Menyemak status peranti...', + 'otaDownloadFailedCheckNetwork': + 'Muat turun gagal, sila semak sambungan rangkaian', + 'otaDownloadFailed': 'Muat Turun Gagal', + 'otaPreparingConnection': 'Menyediakan sambungan peranti...', + 'otaConnectingDevice': 'Menyambung ke peranti...', + 'otaUpgradeStarted': 'Naik taraf OTA bermula...', + 'otaUpgradeProgressWithPercent': 'Kemajuan naik taraf: @percent%', + 'otaUpgradeSuccessComplete': 'Naik taraf selesai dengan berjaya', + 'otaUpgradeFailedWithCode': 'Naik taraf gagal, kod ralat: @code', + 'otaUpgradeFailedTitle': 'Naik Taraf Gagal', + 'otaUpgradeFailedDesc': + 'Sila semak sambungan peranti atau pakej kemas kini, kod ralat: @code', + 'otaDeviceDisconnected': 'Peranti terputus', + 'otaDeviceConnected': 'Peranti bersambung', + + // 音乐模块 "noMusic": "Tiada Muzik", // 暂无音乐 "noPlayingMusic": "Tiada muzik dimainkan", // 暂无播放音乐 "unknownSong": "Lagu Tidak Diketahui", // 未知歌曲 @@ -1520,22 +1574,122 @@ const Map msMY = { "波斯语": "Bahasa Parsi", "斯瓦希里语": "Bahasa Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mel", + "中国": 'China', + "美国": "Amerika Syarikat", + "加拿大": "Kanada", + "俄罗斯": "Rusia", + "英国": 'United Kingdom', + "德国": "Jerman", + "意大利": "Itali", + "法国": "Perancis", + "西班牙": "Sepanyol", + "南非": "Afrika Selatan", + "沙特阿拉伯": "Arab Saudi", + "土耳其": "Turki", + "日本": "Jepun", + "韩国": "Korea Selatan", + "新加坡": "Singapura", + "马来西亚": 'Malaysia', + "泰国": 'Thailand', + "越南": 'Vietnam', + "印度": 'India', + "巴基斯坦": 'Pakistan', + "菲律宾": "Filipina", + "印度尼西亚": 'Indonesia', + "阿联酋": "Emiriah Arab Bersatu", + "墨西哥": "Meksiko", + "巴西": 'Brazil', + "阿根廷": 'Argentina', + "澳大利亚": 'Australia', + "新西兰": 'New Zealand', + "中国香港": "Hong Kong (China)", + "中国澳门": "Macau (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Mesir", + "希腊": "Yunani", + "荷兰": "Belanda", + "比利时": 'Belgium', + "匈牙利": 'Hungary', + "罗马尼亚": 'Romania', + "瑞士": 'Switzerland', + "奥地利": 'Austria', + "丹麦": 'Denmark', + "瑞典": 'Sweden', + "挪威": "Norway", + "波兰": 'Poland', + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": "Kolombia", + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": 'Luxembourg', + "爱尔兰": 'Ireland', + "冰岛": 'Iceland', + "阿尔巴尼亚": 'Albania', + "马耳他": 'Malta', + "塞浦路斯": 'Cyprus', + "芬兰": 'Finland', + "保加利亚": 'Bulgaria', + "立陶宛": 'Lithuania', + "拉脱维亚": 'Latvia', + "爱沙尼亚": 'Estonia', + "乌克兰": 'Ukraine', + "塞尔维亚": 'Serbia', + "克罗地亚": 'Croatia', + "斯洛文尼亚": 'Slovenia', + "捷克": "Republik Czech", + "斯洛伐克": 'Slovakia', + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": 'Bolivia', + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Maghribi", + "阿尔及利亚": 'Algeria', + "突尼斯": 'Tunisia', + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Habsyah", + "肯尼亚": 'Kenya', + "坦桑尼亚": 'Tanzania', + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": 'Israel', + "黎巴嫩": "Lubnan", + "约旦": 'Jordan', + "伊拉克": 'Iraq', + "科威特": 'Kuwait', + "巴林": 'Bahrain', + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": 'Mongolia', + "柬埔寨": "Kemboja", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Timor-Leste", + "斐济": 'Fiji', + "所罗门群岛": "Kepulauan Solomon", + "刚果民主共和国": "Republik Demokratik Congo", + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": 'Maldives', + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": 'Jamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": 'Papua New Guinea', + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/nb_no.dart b/lib/core/translations/language/nb_no.dart index a5916d6d3..af103f38a 100644 --- a/lib/core/translations/language/nb_no.dart +++ b/lib/core/translations/language/nb_no.dart @@ -1,3 +1,4 @@ +// 挪威-挪威语 const Map nbNO = { // 通用 'continue': 'Fortsett', @@ -18,6 +19,11 @@ const Map nbNO = { "unknownError": "Ukjent feil", "asrConnectionFailed": "Tilkobling til talegjenkjenningstjenesten mislyktes. Kontroller nettverket eller prøv igjen senere.", + "justNow": "Nettopp nå", + "minutesAgo": "@minutes minutter siden", + "yesterday": "I går", + "daysAgo": "@days dager siden", + "hoursAgo": "@hours timer siden", // 启动页 "slogan": "Kobler sammen verden, hinsides lyd", @@ -28,7 +34,7 @@ const Map nbNO = { "explore": "Utforsk", "settings": "Innstillinger", - // 语言 + // 语言列表 "followingSystem": "Følg systemet", "chinese": "Kinesisk", "english": "Engelsk", @@ -43,9 +49,9 @@ const Map nbNO = { "russian": "Russisk", "vietnamese": "Vietnamesisk", "italian": "Italiensk", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indonesisk", - "thai": "Thai", + "thai": 'Thai', "malay": "Malayisk", "turkish": "Tyrkisk", "polish": "Polsk", @@ -72,7 +78,7 @@ const Map nbNO = { "arabic": "Arabisk", "persian": "Persisk", - // 登录页 + // 登录模块 "welcome": "Velkommen", "loginTips": "Logg inn eller registrer deg med telefonnummer eller e-post", "accountNumber": "Telefonnummer eller e-post", @@ -100,13 +106,9 @@ const Map nbNO = { "resendVerificationCode": "Send verifiseringskode på nytt", "login": "Logg inn", "usePasswordLogin": "Logg inn med passord", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans-erklæring", // Voitrans 声明 "welcomeToThisApp": "Velkommen til Voitrans, vennligst les nøye", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", ved å klikke 'Godta og gå inn' bekrefter du at du har lest og godtar de ovennevnte avtalene. Ved å klikke 'Avslå' vil du avslutte applikasjonen.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Avslå", // 不同意 @@ -117,7 +119,7 @@ const Map nbNO = { "reconnect": "Koble til på nytt", "connectingDevice": "Kobler til enhet...", "connectedTo": "Tilkoblet", - "signal": "Signal", + "signal": 'Signal', "deviceId": "Enhets-ID", "firmwareVersion": "Firmware-versjon", "disconnectedDevice": @@ -167,7 +169,31 @@ const Map nbNO = { 'right': 'Høyre', 'checkConnectionStatusFailed': 'Kontroll av tilkoblingsstatus mislyktes', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth-initialisering 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.', + 'needEnableBluetooth': 'Aktiver Bluetooth', + 'enableBluetoothDialogContent': + 'Aktiver Bluetooth for å skanne og koble til enheter.', + 'bleScanFailedWithError': 'Skanning mislyktes: @error', + 'bleConnectionSuccess': 'Tilkobling vellykket', + 'bleConnectedToDevice': 'Koblet til @device', + 'bleConnectionFailedWithError': 'Tilkobling mislyktes: @error', + 'bleDisconnected': 'Frakoblet', + 'bleDeviceDisconnected': 'Enhet frakoblet', + 'bleDisconnectFailedWithError': 'Frakobling mislyktes: @error', + 'signalStrong': 'Sterkt signal', + 'signalMedium': 'Middels signal', + 'signalWeak': 'Svakt signal', + 'signalVeryWeak': 'Veldig svakt signal', + + // 发现页 "searchAi": "Søk etter AI-funksjoner...", "exploreSlogan": "Smarte ørepropper, uendelige muligheter", "exploreSlogan1": "Smart følgesvenn, uendelige muligheter", @@ -191,211 +217,272 @@ const Map nbNO = { "usageStats": "Brukstatistikk", "usageStatsInfo": "Vis brukstatistikk for din app", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "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": "Opprydding fullført", + "cleanedOldData": "Slettet data eldre enn 90 dager", + "exportFeature": "Eksportfunksjon", + "exportInDevelopment": "Dataeksport er under utvikling", + + // 商品模块 - 通用 + '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": + 'Ikke nok saldo. Gå til riktig påfyllingsside for å fylle på.', + "recharge": 'Gå til påfylling', + "aiMemberExpiredDesc": + 'AI-medlemskapet er utløpt. Gå til medlemskapets påfyllingsside for å fornye.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musikk og anbefalinger', + 'navigationAndRoutes': 'Navigasjon og ruter', + 'nearbySearch': 'Søk i nærheten', + 'newsInformation': 'Nyheter', + 'communicationAssistant': 'Kommunikasjonsassistent', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Lengre samtalekvoter, flere verktøykall og utvidet kontekstlengde.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Passer for agent-spørsmål, oppsummering, analyse og oppgaveutførelse.', + 'musicSearchPlaybackControl': 'Søk i musikkbibliotek og avspillingskontroll', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Smart spilleliste og lignende låtanbefalinger', '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', + 'Ruteplanlegging og unngåelse av trafikk', + 'voiceBroadcastAndWaypoints': 'Talesending og veipunktsinnstillinger', + 'realTimeWeatherForecast': 'Sanntidsvær og værmelding', + 'clothingAdviceAndTravelReminders': 'Klesråd og reisepåminnelser', + 'poiSearchFoodGasParking': 'POI-søk: restaurant / bensin / parkering', + 'ratingsHoursAndDirectRoutes': 'Vurderinger, åpningstider og direkteruter', + 'hotNewsAndTopicOverview': 'Populære nyheter og temaoversikt', + 'longArticleSummariesAndKeyPoints': + 'Sammendrag av lange artikler og nøkkelpunkter', + 'helpCallAndSMS': 'Hjelp med samtaler og SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Meldingsmaler og planlagte påminnelser', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Funksjoner avhenger av enhetstillatelser, tjenestetilgjengelighet og nettverksforhold.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Sanntidstranskripsjon', + 'sceneLexicon': 'Scenarieordliste', + 'subtitleDisplay': 'Undertekster', + 'transHeaderDesc1': + 'Sanntid simultantolking og tekstoversettelse med lav forsinkelse.', + 'transHeaderDesc2': + 'Passer for reise, forretninger, foredrag og undervisning.', + 'translateZhEn': 'Kinesisk–engelsk oversettelse', + 'lowLatencyVoiceBroadcast': 'Talesending med lav forsinkelse', + 'multiLangTextTranslation': 'Flerspråklig tekstoversettelse', + 'termOptimizationContextPreserve': + 'Terminologioptimalisering og bevaring av kontekst', + 'lexiconTourBusinessLife': 'Reise-/Forretnings-/Livsstilsordlister', + 'personalVocabularyMemory': 'Personlig ordforrådshukommelse', + 'conversationSubtitleLargeText': 'Samtaleteksting / Stor-tekst-modus', + 'colorHighContrast': 'Høy fargekontrast', + 'transDisclaimer': + 'Oversettelsesytelsen avhenger av mikrofon, nettverksforsinkelse og bakgrunnsstøy.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Møteopptak', + 'transcriptionAndSummary': 'Transkripsjon og sammendrag', + 'keywordSearch': 'Nøkkelordsøk', + 'collaborationSharing': 'Samarbeid og deling', + 'meetingHeaderDesc1': + 'Lydopptak, transkripsjon, nøkkelordsøk og automatisk oppsummering for å øke møteffektiviteten.', + 'meetingHeaderDesc2': + 'Passer for forretningsmøter, klassenotater og intervjureferater.', + 'meetingAutoRecording': 'Automatisk opptak og segmentering', + 'meetingSpeakerTagging': 'Talermerkering', + 'meetingLongAudioTranscription': 'Lang lydtranskripsjon', + 'meetingKeyPointSummary': 'Uttrekking av nøkkelpunkter', + 'meetingTopicNameSearch': 'Søk etter emne/navn', + 'meetingTimelineJump': 'Tidslinjesprang', + 'meetingExportSummary': 'Eksporter referat', + 'meetingMultiPlatformShare': 'Del på tvers av plattformer', + 'meetingDisclaimer': + 'Bruk i rolige omgivelser; ytelsen avhenger av mikrofon og nettverk.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Fordeler oversikt', + 'higherQuota': 'Høyere brukskvote', + 'lowerUnitPrice': 'Lavere enhetspris', + 'priorityService': 'Prioritert service', + 'exclusiveSupportChannel': 'Dedikert støttekanal', + 'fastResponse': 'Rask problemrespons', + 'eventsAndDiscounts': 'Arrangementer og rabatter', + 'memberExclusiveEvents': 'Eksklusive medlemsarrangementer', + 'longTermDiscountPlan': 'Langsiktig rabattplan', + 'generalPrivileges': 'Generelle privilegier', + 'earlyAccessNewFeatures': 'Tidlig tilgang til nye funksjoner', + 'crossDeviceSync': 'Synkronisering på tvers av enheter', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', - - // 新手引导 / Onboarding - 'skip': "Hopp over", - '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, ', - // AI 引导步骤 - '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', + 'Faktiske fordeler avhenger av pakkedetaljene og kan endres med versjoner.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Basis 100', + 'ai_002_name': 'AI Basis 500', + 'ai_003_name': 'AI Basis 1000', + 'meet_001_name': 'Møte Basis 100', + 'meet_002_name': 'Møte Basis 500', + 'meet_003_name': 'Møte Basis 1000', + 'trans_001_name': 'Oversettelse Basis 100', + 'trans_002_name': 'Oversettelse Basis 500', + 'trans_003_name': 'Oversettelse Basis 1000', + 'ai_001_desc': + 'Inkluderer 100 brukstilfeller. Tilgang til kjerne-AI-funksjoner.', + 'ai_002_desc': + 'Inkluderer 500 brukstilfeller. Tilgang til kjerne-AI-funksjoner.', + 'ai_003_desc': + 'Inkluderer 1000 brukstilfeller. Tilgang til kjerne-AI-funksjoner.', + '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 · Levert av: VoiTrans', + 'iapCustomerServiceQQLabel': 'QQ for IAP-kundeservice: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 + 'skip': 'Hopp over', + 'next': 'Neste', + 'sayLilyHint': 'Si "Lily Lily" til mikrofonen', + 'imHere': 'Jeg er her~', + 'guideWelcomeWakeAI': + 'Velkommen til Voitrans! Vekk AI-en din \u201cLily\u201d først.', + 'aiReplyCompleted': 'Lily har fullført svaret!', + 'aiThinking': 'Lily tenker\u2026', + 'guideAwakenSuccess': 'Flott! Lily er v\u00e5ken\u2014be om hjelp.', + 'confirmInput': 'Bekreft inndata', + 'guideClickSendPrefix': 'Trykk send, ', + 'guideWeatherStart': 'Si til Lily: «Hvordan er været i dag?»', + 'guideWeatherInput': 'Hvordan er været i dag?', + 'guideWeatherSend': 'Lily vil rapportere været i sanntid', + 'guideWeatherEnd': 'Lily kan rapportere været live—prøv andre kommandoer', + 'guideMusicStart': 'Si til Lily: «Spill litt rockemusikk»', + 'guideMusicInput': 'Spill litt rockemusikk', + 'guideMusicSend': 'Lily vil finne musikk for deg', + 'guideMusicEnd': 'Lily fant musikk—prøv andre kommandoer', + 'guideNavStart': 'Si til Lily: «Naviger til Shenzhen Airport»', + 'guideNavInput': 'Naviger til Shenzhen Airport', + 'guideNavSend': 'Lily vil planlegge ruten', + 'guideNavEnd': 'Navigasjon satt—prøv andre kommandoer', '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', - - // 商务会议助手页 + 'Si til Lily: «Lag en møte-påminnelse for kl. 15 i morgen»', + 'guideMeetingInput': 'Lag en møte-påminnelse for kl. 15 i morgen', + 'guideMeetingSend': 'Lily vil lage en møte-påminnelse', + 'guideMeetingEnd': 'Påminnelse opprettet—prøv andre kommandoer', + 'guidePhoneStart': 'Si til Lily: «Ring mamma»', + 'guidePhoneInput': 'Ring mamma', + 'guidePhoneSend': 'Lily vil ringe', + 'guidePhoneEnd': 'Samtale startet—prøv andre kommandoer', + 'guideSmsStart': + 'Si til Lily: «Send pappa en melding: Jeg kommer hjem til middag»', + 'guideSmsInput': 'Melding til pappa: Jeg kommer hjem til middag', + 'guideSmsSend': 'Lily vil sende meldingen', + 'guideSmsEnd': 'Melding sendt—talestyring er praktisk', + + // Meeting模块 - 首页与导航 "startMeeting": "Start møte", 'edit': 'Rediger', 'delete': 'Slett', @@ -407,250 +494,268 @@ const Map nbNO = { 'recordingDetails': 'Opptaksdetaljer', 'aiSummary': 'AI-sammendrag', 'meetingTranscript': 'Møtetranskripsjon', - - // Meeting模块 - 导航和基础功能 - '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': 'Filer', + 'mine': 'Min', + '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': 'Starter Wi‑Fi...', + 'newFilesDetected': 'Nye filer funnet, forbereder import', + 'noNewFiles': 'Ingen nye filer å importere', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Start opptak', + 'liveRecording': 'Direkteopptak', + 'audioVideoRecording': 'Lyd-/videoopptak', + 'callRecording': 'Samtaleopptak', + 'importAudio': 'Importer lyd', '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.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + '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': 'Transkriberer...', + 'summarizing': 'Oppsummerer...', + 'analyzing': 'Analyserer...', + 'summaryComplete': 'Sammendrag fullført', + 'generate': 'Generer', + 'overview': 'Oversikt', + 'transcription': 'Transkripsjon', + 'summary': 'Sammendrag', + 'mindMap': 'Tankekart', + 'editSpeaker': 'Rediger', + 'nameSpeaker': 'Gi navn til taler', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Oppsummer på nytt', + 'dateAndTime': 'Dato og tid', + 'location': 'Sted', + 'attendees': 'Deltakere', + 'inputLocation': 'Skriv inn sted', + 'inputAttendees': 'Skriv inn deltakere', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Velg sammendragsmal', + 'useThisTemplate': 'Bruk denne malen', + 'lastUsed': 'Sist brukt', + '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': 'Vis alle', + 'recordingLanguage': 'Opptaksspråk', + 'chineseSimplified': 'Kinesisk mandarin (forenklet)', + 'meetingGenerateNow': 'Generer nå', + 'keyEventsAnalyzed': 'Analyserte {count} nøkkelhendelser.', + 'aiAnalysisDesc': + 'AI-analysen identifiserer nøkkelhendelser i opptak, slik at du kan velge viktige hendelser for AI-generering.', + + // Meeting模块 - 文件操作 + 'importing': 'Importerer...', + 'batchImporting': 'Batch-importerer...', + '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': 'Del møte-lyd', + 'shareComplete': 'Deling fullført!', + 'shareFailed': 'Deling mislyktes: {error}', + 'fileProcessingFailed': 'Filbehandling mislyktes: {filePath}, feil: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Lagre tankekart', + 'shareMindMap': 'Del tankekart', + 'shareSuccess': 'Deling vellykket', + + // Meeting模块 - AI问答 + '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': 'Del lenke', + 'copyTranscript': 'Kopier transkripsjon', + 'copySummary': 'Kopier sammendrag', + 'exportAudio': 'Eksporter lyd', + 'exportTranscript': 'Eksporter transkripsjon', + 'shareMeetingAudio': 'Del møte-lyd', + 'exportSummary': 'Eksporter sammendrag', + 'exportAs': 'Eksporter som', + 'exportingPDF': 'Eksporterer PDF...', + 'export': 'Eksporter', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Bruk på alle avsnitt for denne taleren', + 'summaryWillBeUpdatedAutomatically': + 'Sammendraget oppdateres automatisk basert på malen', + 'nameCurrentSpeaker': 'Gi navn til gjeldende taler', + 'recentlyUsedNames': 'Nylig brukte navn', + 'applyToCurrentParagraph': 'Bruk på gjeldende avsnitt', + 'totalTime': 'Total tid', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Talerne i sammendraget oppdateres automatisk', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synkroniser til skyen', + 'syncToCloudTip': + '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', - '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', - - // 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', + 'enabled': 'Aktivert', + 'disabled': 'Deaktivert', + 'myVoitransDevice': 'Min VOITRANS-enhet', + 'helpAndFeedback': 'Hjelp og tilbakemelding', + 'aboutVoitrans': 'Om VOITRANS', + 'meetingDays': 'Dager', + 'meetingHours': 'Timer', + 'voitransAiMember': 'Voitrans AI-medlem', + 'unlockStarterMember': 'Lås opp Starter-medlemskap', + 'bindDeviceToActivate': + 'Koble til Voitrans-enheten for å aktivere Starter-medlemskap', + 'unlockNow': 'Lås opp nå', + + // Meeting模块 - 会员与升级 + 'comparison': 'Sammenligning', + 'detailedInfo': 'Detaljert informasjon', + 'monthlyTranscriptionTime': 'Månedlig transkripsjonstid', + 'unlimited': 'Ubegrenset', + 'professionalTemplates': 'Profesjonelle maler', + 'limited': 'Begrenset', + 'fullTemplates': 'Alle maler', + 'professionalTerms': 'Fagterminologi', + 'customTemplates': 'Egendefinerte maler', + 'visualMindMap': 'Visuelt tankekart', + 'speakerIdentification': 'Taleridentifikasjon', + 'aiVoiceEnhancement': 'AI-stemmeforbedring', + 'audioImport': 'Lydimport', + 'multipleExportFormats': 'Flere eksportformater', + 'professionalSummaryTemplates': 'Profesjonelle sammendragsmaler', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesjonelle maler som forbedrer arbeidseffektiviteten. Tilpasset bransjens behov.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Du kan tilpasse sammendrags‑promptene etter behov og bruke dem til å generere ønskede sammendrag.', '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.', + 'Mer enn sammendrag: organiser og visualiser nøkkelpunkter med tankekart for bedre forståelse av hele teksten.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Oppdag, del og finn inspirasjon i malbiblioteket laget av brukere.', '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.', + 'Transkripsjon av lyd støtter taleridentifikasjon for å gjenskape innhold fra møter og telefonsamtaler mer intuitivt. Sammendraget blir samtidig mer presist.', '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.', + 'AI-stemmeforbedring støtter flere innstillinger for støyreduksjon, fjerner bakgrunnsstøy intelligent, forbedrer stemmeklarhet og gir bedre lydkvalitet.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importer enkelt lydfiler fra lokale eller tredjepartsapper, som taleopptak, Google Drive osv.', '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', + 'Eksporter lydopptak, transkripsjonstekst og sammendrag i ulike formater (TXT, PDF, JPEG) etter behov.', + 'upgradeMembership': 'Oppgrader medlemskapet', + 'yearlySubscription': 'Årlig abonnement', + 'monthlySubscription': 'Månedlig abonnement', + 'proMonthly': 'Pro ¥60/mnd', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 dagers gratis prøveperiode, deretter ¥800/år. Avbryt når som helst før prøveperioden slutter.', + 'sevenDayTrial': '7 dagers gratis prøveperiode', + 'unlimitedMonthly': 'Ubegrenset ¥120/mnd', '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 dagers gratis prøveperiode, deretter ¥1600/år. Avbryt når som helst før prøveperioden slutter.', + 'trialNote': + '*7 dagers gratis prøveperiode, deretter årlig betaling. Kan avbrytes når som helst.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mnd', + 'subscribe': 'Abonner', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mnd', '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: ', + '*Etter oppgradering av abonnementet blir gjenværende dager i det opprinnelige abonnementet automatisk beregnet og refundert til betalingskontoen din', + 'buyMoreTranscriptionTime': 'Kjøp mer transkripsjonstid', + 'sixThousandMinutes': '6 000 minutter', + 'threeThousandMinutes': '3 000 minutter', + 'sixHundredMinutes': '600 minutter', + 'oneHundredTwentyMinutes': '120 minutter', + 'validityPeriod': '*Gyldighetsperiode: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Bruk på alle avsnitt for denne taleren', - 'summaryWillBeUpdatedAutomatically': - 'Sammendraget oppdateres automatisk basert på malen', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktiveres umiddelbart etter kjøp og er gyldig i 2 år etter aktivering.', + 'purchase': 'Kjøp', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Opptaksspråk', + 'cantonese': 'Kantonesisk', + 'sichuan': 'Sichuan-dialekt', + 'shanghai': 'Shanghai-dialekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Ukjent språk', + 'analysisFailed': 'Analyse mislyktes, prøv igjen senere', + 'transcriptionFailed': 'Transkribering mislyktes, prøv igjen senere', + 'summaryFailed': 'Sammendrag mislyktes, prøv igjen senere', + 'summaryFailedShort': 'Sammendrag mislyktes', + 'transcriptionFailedShort': 'Transkribering mislyktes', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Lydspilleren er ikke klar, vennligst vent', + 'playFailed': 'Avspilling mislyktes', + 'audioFileNotFound': 'Lydfilen ble ikke funnet', + 'fetchingAudio': 'Henter lyd fra skyen...', + 'playerLoadFailed': 'Lydspilleren kunne ikke lastes', // 设置页 "systemSettings": "Systeminnstillinger", @@ -659,10 +764,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", @@ -704,46 +809,34 @@ const Map nbNO = { "Oppgradering av firmware-versjon for BLE-hodesett", "deviceManagement": "Enhetsadministrasjon", "manageConnectedDevices": "Administrer tilkoblede Bluetooth-enheter", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Du har allerede den nyeste versjonen {version}', 'checkUpdateFailed': 'Kunne ikke se etter oppdateringer', 'networkErrorRetry': 'Nettverksfeil, prøv igjen senere', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Sanntids talechat", "realtimeVoiceChatInfo": "Opplev intelligent taleinteraksjonsfunksjon (funksjonsforhåndsvisning)", "loading": "Laster inn...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Ukjent enhet", + "deviceTypeClassicBluetoothHeadset": "Klassisk Bluetooth-headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth-headset", + "deviceTypeSmartVoiceRecorder": "Smart stemmeopptaker", + "deviceTypeSmartEye": 'Smarte briller', "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Tøm chat-historikk", - "online": "Online", + "online": 'Online', "ttsSpeed": "Talefart", "ttsSpeedDefaultHint": "Standard +25 %", "inputMessage": "Skriv melding...", @@ -769,22 +862,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Å svare på spørsmål og gi informasjon\n\n' '• Sanntids stemmeoversettelse\n\n' @@ -804,18 +899,17 @@ const Map nbNO = { 'startVoiceInput': 'Start taleinndata', 'startPhoneCallMode': 'Start anropsmodus, start taleinndata', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Skriv meldingen din her...', // 全屏编辑器输入提示 'characterCount': '{count} tegn', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopier', 'copySuccess': 'Kopiert', 'report': 'Rapporter', 'submitSuccess': 'Sendt inn', 'submitFailed': 'Innsending mislyktes', 'reportSubmitted': 'Rapport sendt, vi vil behandle den så snart som mulig', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadelig/Usikker', 'pornographicVulgar': 'Pornografisk/Vulgær', 'misleadingAttack': 'Villedende/Angrep', @@ -825,17 +919,21 @@ const Map nbNO = { 'other': 'Annet', 'reportDescriptionHint': 'Vi vil gjerne vite hvorfor du rapporterer, du kan beskrive problemet du opplevde.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generert av AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Verktøykall', + 'noResult': 'Ingen resultat', + 'noToolCallContentToCopy': 'Ingen verktøykall å kopiere', + 'toolCallDetails': 'Verktøykalldetaljer:', + 'toolCallContentCopied': 'Verktøykall kopiert til utklippstavlen', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Her er noen anbefalte sanger:', 'playList': 'Spilleliste', 'moreMusic': 'Mer musikk', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'timer', // 小时单位 @@ -850,7 +948,30 @@ const Map nbNO = { "bicycling": 'Sykling', "tsransit": 'Kollektivtransport', - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Velg navigasjonsapp', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Naviger med Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Naviger med Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Naviger med Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Naviger med Apple Maps', + 'builtInNavigation': 'Innebygd navigasjon', + 'useBuiltInNavigation': 'Naviger med innebygd kart', + 'navigationStartFailed': 'Kunne ikke starte navigasjon', + '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', + 'pleaseInstallBaiduMapApp': 'Installer Baidu Maps-appen først', + 'appleMapStartFailed': 'Apple Maps kunne ikke starte', + 'appleMapUnavailable': 'Apple Maps er ikke tilgjengelig', + 'openAppleMapError': 'Feil ved åpning av Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Spør om værforhold:', 'highest': 'Høyeste', 'lowest': 'Laveste', @@ -880,18 +1001,8 @@ const Map nbNO = { "friday": "Fre", "saturday": "Lør", "sunday": "Søn", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sol", "partlyCloudy": "Delvis skyet", "partlySunny": "Delvis sol", @@ -912,9 +1023,144 @@ const Map nbNO = { "haze": "Dis", "strongWind": "Sterk vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Bildeoversettelse", + "textTranslation": "Tekstoversettelse", + + // 翻译模块 - 主页 + "translationHistory": "Oversettelseshistorikk", + "enableRecording": "Aktiver opptak", + "viewAudioFiles": "Vis lydfiler", + "headsetUser": "Hodesettbruker", + "phoneUser": "Telefonbruker", + "selectSourceLanguage": "Velg kildespråk", + "selectTargetLanguage": "Velg målspråk", + "me": "Jeg", + "counterPart": "Samtalepartner", + "bluetoothCallStateError": + "Sørg for at Bluetooth-headsettet er koblet til telefonen og at en samtale pågår", + "autoDetect": "Automatisk deteksjon", // 自动检测 + + // 翻译模块 - 文本翻译 + "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": "Oversettelse mislyktes", + "translating": "Oversetter", + "translate": "Oversett", + "pleaseInputText": "Skriv inn tekst", + "inputTextToTranslate": "Skriv inn teksten som skal oversettes", + "textTooLong": "Teksten er for lang, maks 5000 tegn", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen historikk ennå", + "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.", + "unknownLanguage": "Ukjent språk", + "deleteSessionRecord": "Slett sesjonsopptak", + "deleteSessionConfirm": + "Er du sikker på at du vil slette alle oversettelsesopptak for denne sesjonen? Denne handlingen kan ikke angres.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Bildebehandling eller oversettelse mislyktes. Prøv igjen.\nFeil: {error}", + "imageTooLarge": 'Bildestørrelsen overskrider 4 MB-grensen', + "imageTooLargeHint": + 'Bildestørrelsen overskrider 4 MB. Reduser kvalitet eller dimensjoner og prøv på nytt', + "emptyTranslationResult": + "Bildeoversettelses-API returnerte et tomt resultat", + "imageTranslationFailedTryLater": + "Bildeoversettelse mislyktes. Nettverksproblem eller hastighetsbegrensning. Prøv igjen senere", + "imageTranslationApiException": + "Unntak i bildeoversettelses-API. Sjekk nettverket og prøv igjen", + "permissionRequired": "Tillatelse kreves", + "cameraPermissionRequired": "Kameratillatelse kreves for å ta bilder", + "photoAlbumPermissionRequired": + "Fotoalbumtillatelse kreves for å velge bilder", + "translationDetails": "Oversettelsesdetaljer", + "originalImage": 'Originalbilde', + "sourceLanguage": 'Kildespråk', + "targetLanguage": 'Målspråk', + "translationTime": "Oversettelsestid", + "shareInDevelopment": 'Delingsfunksjonen er under utvikling', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Oversett lydfiler", + "noAudioFiles": "Ingen lydfiler ennå", + "calculating": "Beregner...", + "playing": "Spiller av...", + "paused": "Pauset", + "clickToPlay": "Klikk for å spille av", + "rename": "Gi nytt navn", + "smartTranscription": "Smart transkripsjon", + "renameAudioFile": "Gi lydfilen nytt navn", + "enterNewFileName": "Vennligst skriv inn et nytt filnavn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalt opptak", + "recordSummary": "Opptakssammendrag", + "clickToGenerateSummary": + "Klikk på knappen nedenfor for å generere et sesjonssammendrag", + "summaryContent": "Sammendragsinnhold", + "copied": "Kopiert", + "summaryCopiledToClipboard": "Sammendraget er kopiert til utklippstavlen", + "extractSummary": "Trekk ut sammendrag", + "summaryGenerated": "Sammendrag generert", + "generating": "Genererer...", + "regenerate": "Generer på nytt", + "summaryTimeoutMessage": + "Forespørselen om å generere sammendrag utløp, muligens på grunn av nettverksproblemer eller travel server.", + "deleteTranslationRecord": "Slett oversettelsesopptak", + "deleteTranslationConfirm": + "Er du sikker på at du vil slette dette oversettelsesopptaket? Denne handlingen kan ikke angres.", + "originalText": "Originaltekst", + "translatedText": "Oversatt tekst", + "sessionSummary": "Sesjonssammendrag", + "cannotShare": "Kan ikke dele", + "generateSummaryFirst": "Vennligst generer et sammendrag først", + "translationSessionRecord": "Oversettelsessesjonsopptak", + + // 个人资料模块 "editProfile": "Rediger personlig informasjon", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Kallenavn", "save": "Lagre", "about": "Om", @@ -926,10 +1172,8 @@ const Map nbNO = { 'deleteAccount': 'Slett konto', 'deleteAccountTips': 'Er du sikker på at du vil slette kontoen din permanent? Denne handlingen kan ikke angres.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Tøm buffer', + 'cleanTips': 'Er du sikker på at du vil slette personlig hurtigbuffer?', 'networkConnectionFailed': 'Nettverkstilkobling mislyktes, sjekk nettverksinnstillingene og prøv igjen', 'serverTemporarilyUnavailable': @@ -947,10 +1191,6 @@ const Map nbNO = { 'networkConnectionFailedCheckSettings': 'Nettverkstilkobling mislyktes, sjekk nettverksinnstillingene', 'serverInternalErrorRetryLater': 'Intern serverfeil, prøv igjen senere', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildekomprimering mislyktes', 'avatarUpdateFailed': 'Avatar-oppdatering mislyktes', 'usernameCannotBeEmpty': 'Brukernavn kan ikke være tomt', @@ -961,8 +1201,6 @@ const Map nbNO = { 'logoutFailedRetry': 'Utlogging mislyktes, prøv igjen', 'accountPermanentlyDeleted': 'Kontoen er permanent slettet', 'deleteAccountFailedRetry': 'Sletting av konto mislyktes, prøv igjen', - - // 账号服务相关 'clearUserDataFailed': 'Fjerning av brukerdata mislyktes', // 清理用户数据失败 'deleteUserDataFailed': 'Sletting av brukerdata mislyktes', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Utlogging fra tredjepart vellykket', // 第三方登录退出成功 @@ -975,21 +1213,25 @@ const Map nbNO = { 'accountServiceInitialized': 'Kontotjenesten er initialisert', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Lagring', + 'meetingStoragePermissionExplanation': + 'Vi trenger lagringstillatelse slik at du kan velge og laste opp lydfiler.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kontakter', + 'notification': 'Varsler', 'alarm': 'Alarm', 'calendarWrite': 'Skriv til kalender', 'calendarFullAccess': 'Full tilgang til kalender', @@ -997,7 +1239,7 @@ const Map nbNO = { 'phonePermissionDesc': 'Brukes for å ringe', 'smsPermissionDesc': 'Brukes for å sende SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Brukes til å sette nøyaktige alarmer for å sikre at påminnelser utløses i tide', 'calendarWritePermissionDesc': 'Brukes for å opprette kalenderhendelser og påminnelser', 'calendarFullAccessPermissionDesc': @@ -1014,80 +1256,91 @@ 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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Tilkobling til Bluetooth-enheter krever Bluetooth-tilkoblingstillatelse', + 'notificationPermissionDesc': 'Brukes til å sende varslingsmeldinger', '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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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', + + // 版本更新 'newVersionFound': 'Ny versjon funnet', // 版本更新对话框标题 'remindLater': 'Minn meg senere', // 稍后提醒按钮 'updateNow': 'Oppdater nå', // 立即更新按钮 @@ -1098,269 +1351,20 @@ const Map nbNO = { 'updateErrorRetry': 'Det oppstod en feil under oppdateringen, prøv igjen senere', // 更新错误重试提示 - //国家列表 - "邮箱": "E-post", - "中国": "Kina", - "美国": "USA", - "加拿大": "Canada", - "俄罗斯": "Russland", - "英国": "Storbritannia", - "德国": "Tyskland", - "意大利": "Italia", - "法国": "Frankrike", - "西班牙": "Spania", - "南非": "Sør-Afrika", - "沙特阿拉伯": "Saudi-Arabia", - "土耳其": "Tyrkia", - "日本": "Japan", - "韩国": "Sør-Korea", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filippinene", - "印度尼西亚": "Indonesia", - "阿联酋": "De forente arabiske emirater", - "墨西哥": "Mexico", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "New Zealand", - "中国香港": "Hongkong (Kina)", - "中国澳门": "Macao (Kina)", - "中国台湾": "Taiwan (Kina)", - "埃及": "Egypt", - "希腊": "Hellas", - "荷兰": "Nederland", - "比利时": "Belgia", - "匈牙利": "Ungarn", - "罗马尼亚": "Romania", - "瑞士": "Sveits", - "奥地利": "Østerrike", - "丹麦": "Danmark", - "瑞典": "Sverige", - "挪威": "Norge", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxembourg", - "爱尔兰": "Irland", - "冰岛": "Island", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Kypros", - "芬兰": "Finland", - "保加利亚": "Bulgaria", - "立陶宛": "Litauen", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estland", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Kroatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Tsjekkia", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerie", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Libanon", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodsja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Øst-Timor", - "斐济": "Fiji", - "所罗门群岛": "Salomonøyene", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Oversettelseshistorikk", - "enableRecording": "Aktiver opptak", - "viewAudioFiles": "Vis lydfiler", - "headsetUser": "Hodesettbruker", - "phoneUser": "Telefonbruker", - "selectSourceLanguage": "Velg kildespråk", - "selectTargetLanguage": "Velg målspråk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen historikk ennå", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Tøm historikk", - "clearHistoryConfirm": - "Er du sikker på at du vil tømme all oversettelseshistorikk? Denne handlingen kan ikke angres.", - "unknownLanguage": "Ukjent språk", - "deleteSessionRecord": "Slett sesjonsopptak", - "deleteSessionConfirm": - "Er du sikker på at du vil slette alle oversettelsesopptak for denne sesjonen? Denne handlingen kan ikke angres.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Oversett lydfiler", - "noAudioFiles": "Ingen lydfiler ennå", - "calculating": "Beregner...", - "playing": "Spiller av...", - "paused": "Pauset", - "clickToPlay": "Klikk for å spille av", - "rename": "Gi nytt navn", - "smartTranscription": "Smart transkripsjon", - "renameAudioFile": "Gi lydfilen nytt navn", - "enterNewFileName": "Vennligst skriv inn et nytt filnavn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalt opptak", - "recordSummary": "Opptakssammendrag", - "clickToGenerateSummary": - "Klikk på knappen nedenfor for å generere et sesjonssammendrag", - "summaryContent": "Sammendragsinnhold", - "copied": "Kopiert", - "summaryCopiledToClipboard": "Sammendraget er kopiert til utklippstavlen", - "extractSummary": "Trekk ut sammendrag", - "summaryGenerated": "Sammendrag generert", - "generating": "Genererer...", - "regenerate": "Generer på nytt", - "summaryTimeoutMessage": - "Forespørselen om å generere sammendrag utløp, muligens på grunn av nettverksproblemer eller travel server.", - "deleteTranslationRecord": "Slett oversettelsesopptak", - "deleteTranslationConfirm": - "Er du sikker på at du vil slette dette oversettelsesopptaket? Denne handlingen kan ikke angres.", - "originalText": "Originaltekst", - "translatedText": "Oversatt tekst", - "sessionSummary": "Sesjonssammendrag", - "cannotShare": "Kan ikke dele", - "generateSummaryFirst": "Vennligst generer et sammendrag først", - "translationSessionRecord": "Oversettelsessesjonsopptak", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Enhetsparing", "connectYourDeepSoundHeadset": "Koble til ditt Voitrans-hodesett", - "bind": "Bind", + "bind": 'Koble til', "authorizeBind": "Autoriser binding", "enterCode": "Vennligst skriv inn koden", "autoInputCode": "Automatisk innsetting av kode", "skipBinding": "Hopp over binding", "rescan": "Skann på nytt", - "verifyingDevice": "Verifiserer enhet...", "confirmBinding": "Bekreft binding", "associatingDevice": "Knytter til enhet...", "goToBluetoothSettings": "Gå til Bluetooth-innstillinger", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klar til å pare", "preparingPairingEnvironment": "Forbereder paringsmiljø...", "connectDeepSoundViaSystemBluetooth": @@ -1370,8 +1374,6 @@ const Map nbNO = { "waitingCompletePairing": "Vennligst vent, fullfører paring...", "pairingSuccessRedirecting": "Paring vellykket! Omdirigerer til startsiden...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Sørg for at du er koblet til en Voitrans-enhet", "deviceAlreadyBoundToOtherAccount": @@ -1383,19 +1385,12 @@ const Map nbNO = { "authorizationFailedCheckCode": "Autorisasjon mislyktes, sjekk om autorisasjonskoden er riktig", "pairingFailedRetry": "Paring mislyktes, prøv igjen", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vennligst aktiver Bluetooth', 'deviceDisconnected': 'Enheten er frakoblet', 'readyToStartPairing': 'Klar til å starte paring', 'checkingEnvironment': 'Sjekker miljø...', 'ensureHeadsetOnAndPairingMode': 'Sørg for at hodesettet er på og i paringsmodus', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Oppretter sikker tilkobling...', 'needManualBindingAuthCode': 'Manuell bindingsautorisasjonskode kreves...', 'pairingSuccessful': 'Paring vellykket!', @@ -1415,21 +1410,30 @@ const Map nbNO = { 'bleConnectionFailed': 'BLE-tilkobling mislyktes', 'deviceAuthorizationFailedCheckCode': 'Enhetsautorisasjon mislyktes, sjekk autorisasjonskoden', - - ///iOS蓝牙引导窗 - '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Bruker-tilbakemelding", 'feedbackInfo': 'Gi tilbakemelding eller forslag', 'feedbackDescription': 'Beskriv problemet du opplevde eller forslaget ditt', @@ -1456,13 +1460,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", @@ -1470,7 +1475,60 @@ const Map nbNO = { "removeEarbudsEnsureBattery": "Ta ut begge øreproppene og sørg for at batterinivået på begge er over 20 %", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Ny versjon @version funnet', + 'otaConfirmUpdateNow': 'Oppdater nå?', + 'otaUpdate': 'Oppdater', + 'otaUpgradeSuccess': 'Oppgradering vellykket', + 'otaUpgradeCompleteRepair': + 'Firmware-oppgradering fullført!\n\nEnheten må pares på nytt. Gå til paringssiden?', + 'otaPairLater': 'Par senere', + 'otaPairNow': 'Par nå', + 'okConfirm': 'OK', + + // 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', + 'otaDeviceInfoUnavailableTitle': 'Enhetsinfo utilgjengelig', + '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', + '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', + 'otaBatteryCheckFailed': 'Batterikontroll mislyktes', + + // OTA升级模块 - 升级状态 + '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', + 'otaDownloadFailed': 'Nedlasting mislyktes', + 'otaPreparingConnection': 'Forbereder enhetstilkobling...', + 'otaConnectingDevice': 'Kobler til enhet...', + 'otaUpgradeStarted': 'OTA-oppgradering startet...', + 'otaUpgradeProgressWithPercent': 'Oppgraderingsforløp: @percent%', + 'otaUpgradeSuccessComplete': 'Oppgradering fullført', + 'otaUpgradeFailedWithCode': 'Oppgradering mislyktes, feilkode: @code', + 'otaUpgradeFailedTitle': 'Oppgradering mislyktes', + 'otaUpgradeFailedDesc': + 'Sjekk tilkobling eller oppdateringspakke, feilkode: @code', + 'otaDeviceDisconnected': 'Enhet frakoblet', + 'otaDeviceConnected': 'Enhet tilkoblet', + + // 音乐模块 "noMusic": "Ingen musikk", // 暂无音乐 "noPlayingMusic": "Ingen musikk spilles av", // 暂无播放音乐 "unknownSong": "Ukjent sang", // 未知歌曲 @@ -1504,36 +1562,136 @@ const Map nbNO = { "克罗地亚语": "Kroatisk", "加泰隆语": "Katalansk", "阿拉伯语": "Arabisk", - "泰语": "Thai", + "泰语": 'Thai', "越南语": "Vietnamesisk", "印尼语": "Indonesisk", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Tyrkisk", "马来语": "Malayisk", - "孟加拉语": "Bengali", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", + "孟加拉语": 'Bengali', + "泰米尔语": 'Tamil', + "泰卢固语": 'Telugu', + "马拉提语": 'Marathi', + "乌尔都语": 'Urdu', "波斯语": "Persisk", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", + "斯瓦希里语": 'Swahili', - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-post", + "中国": "Kina", + "美国": "USA", + "加拿大": 'Canada', + "俄罗斯": "Russland", + "英国": "Storbritannia", + "德国": "Tyskland", + "意大利": "Italia", + "法国": "Frankrike", + "西班牙": "Spania", + "南非": "Sør-Afrika", + "沙特阿拉伯": "Saudi-Arabia", + "土耳其": "Tyrkia", + "日本": 'Japan', + "韩国": "Sør-Korea", + "新加坡": 'Singapore', + "马来西亚": 'Malaysia', + "泰国": 'Thailand', + "越南": 'Vietnam', + "印度": 'India', + "巴基斯坦": 'Pakistan', + "菲律宾": "Filippinene", + "印度尼西亚": 'Indonesia', + "阿联酋": "De forente arabiske emirater", + "墨西哥": 'Mexico', + "巴西": "Brasil", + "阿根廷": 'Argentina', + "澳大利亚": 'Australia', + "新西兰": 'New Zealand', + "中国香港": "Hongkong (Kina)", + "中国澳门": "Macao (Kina)", + "中国台湾": "Taiwan (Kina)", + "埃及": 'Egypt', + "希腊": "Hellas", + "荷兰": "Nederland", + "比利时": "Belgia", + "匈牙利": "Ungarn", + "罗马尼亚": 'Romania', + "瑞士": "Sveits", + "奥地利": "Østerrike", + "丹麦": "Danmark", + "瑞典": "Sverige", + "挪威": "Norge", + "波兰": "Polen", + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": 'Colombia', + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": 'Luxembourg', + "爱尔兰": "Irland", + "冰岛": "Island", + "阿尔巴尼亚": 'Albania', + "马耳他": 'Malta', + "塞浦路斯": "Kypros", + "芬兰": 'Finland', + "保加利亚": 'Bulgaria', + "立陶宛": "Litauen", + "拉脱维亚": 'Latvia', + "爱沙尼亚": "Estland", + "乌克兰": "Ukraina", + "塞尔维亚": 'Serbia', + "克罗地亚": "Kroatia", + "斯洛文尼亚": 'Slovenia', + "捷克": "Tsjekkia", + "斯洛伐克": 'Slovakia', + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": 'Bolivia', + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Marokko", + "阿尔及利亚": "Algerie", + "突尼斯": 'Tunisia', + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Etiopia", + "肯尼亚": 'Kenya', + "坦桑尼亚": 'Tanzania', + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": 'Israel', + "黎巴嫩": "Libanon", + "约旦": 'Jordan', + "伊拉克": "Irak", + "科威特": 'Kuwait', + "巴林": 'Bahrain', + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": 'Afghanistan', + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": 'Mongolia', + "柬埔寨": "Kambodsja", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Øst-Timor", + "斐济": 'Fiji', + "所罗门群岛": "Salomonøyene", + "刚果民主共和国": 'Den demokratiske republikken Kongo', + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": 'Maldivene', + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": 'Jamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": 'Papua Ny-Guinea', + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/nl_nl.dart b/lib/core/translations/language/nl_nl.dart index cd366c984..2aff56245 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', @@ -18,6 +19,11 @@ const Map nlNL = { "unknownError": "Onbekende fout", "asrConnectionFailed": "Verbinding met de spraakherkenningsservice is mislukt. Controleer de netwerkverbinding of probeer het later opnieuw.", + "justNow": "Zojuist", + "minutesAgo": "@minutes minuten geleden", + "yesterday": "Gisteren", + "daysAgo": "@days dagen geleden", + "hoursAgo": "@hours uur geleden", // 启动页 "slogan": "De wereld verbinden, voorbij het geluid", @@ -28,7 +34,7 @@ const Map nlNL = { "explore": "Ontdekken", "settings": "Instellingen", - // 语言 + // 语言列表 "followingSystem": "Systeem volgen", "chinese": "Chinees", "english": "Engels", @@ -70,9 +76,9 @@ const Map nlNL = { "serbian": "Servisch", "icelandic": "IJslands", "arabic": "Arabisch", - "persian": "Persisch", + "persian": "Perzisch", - // 登录页 + // 登录模块 "welcome": "Welkom", "loginTips": "Log in of registreer u met uw telefoonnummer of e-mailadres", "accountNumber": "Telefoonnummer of e-mail", @@ -100,13 +106,9 @@ const Map nlNL = { "resendVerificationCode": "Verificatiecode opnieuw verzenden", "login": "Inloggen", "usePasswordLogin": "Inloggen met wachtwoord", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Verklaring", // Voitrans 声明 "welcomeToThisApp": "Welkom bij Voitrans, lees aandachtig door", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", door op 'Akkoord en doorgaan' te klikken, geeft u aan dat u de bovenstaande overeenkomsten volledig hebt gelezen en ermee akkoord gaat. Door op 'Niet akkoord' te klikken, wordt de applicatie afgesloten.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Niet akkoord", // 不同意 @@ -167,236 +169,199 @@ const Map nlNL = { 'right': 'Rechts', 'checkConnectionStatusFailed': 'Controle van verbindingsstatus mislukt', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth-initialisatie mislukt: @error', + 'needBluetoothAndLocationPermission': + 'Bluetooth- en locatiemachtigingen zijn vereist om apparaten te scannen', + 'permissionRequestFailedWithError': 'Machtigingsverzoek mislukt: @error', + 'needPermission': 'Machtiging vereist', + 'blePermissionDialogContent': + 'Deze app heeft Bluetooth- en locatiemachtigingen nodig om apparaten te scannen. Schakel ze in via Instellingen.', + 'needEnableBluetooth': 'Bluetooth inschakelen', + 'enableBluetoothDialogContent': + 'Schakel Bluetooth in om apparaten te scannen en te verbinden.', + 'bleScanFailedWithError': 'Scan mislukt: @error', + 'bleConnectionSuccess': 'Verbinding geslaagd', + 'bleConnectedToDevice': 'Verbonden met @device', + 'bleConnectionFailedWithError': 'Verbinding mislukt: @error', + 'bleDisconnected': 'Verbinding verbroken', + 'bleDeviceDisconnected': 'Apparaat losgekoppeld', + 'bleDisconnectFailedWithError': 'Loskoppelen mislukt: @error', + 'signalStrong': 'Sterk', + 'signalMedium': 'Gemiddeld', + 'signalWeak': 'Zwak', + 'signalVeryWeak': 'Zeer zwak', + + // 发现页 "searchAi": "Zoek AI-functies...", "exploreSlogan": "Slimme oortjes, eindeloze mogelijkheden", "exploreSlogan1": "Slimme metgezel, eindeloze mogelijkheden", "exploreSlogan2": "Slimme bril, eindeloze mogelijkheden", - "exploreAi": "Ontdek de AI-functies die door Voitrans worden aangeboden", - "aiFunction": "AI-functies", - "allRoundAssistant": "Alles-in-één assistent", - "allRoundAssistantInfo": - "Helpt u bij het oplossen van verschillende problemen", - "simultaneousTranslation": "Simultaanvertolking", - "faceToFaceTranslation": "Face-to-face vertaling", - 'audioVideoTranslation': 'Audio- en videovertaling', - 'callTranslation': 'Gespreksvertaling', - "simultaneousTranslationInfo": "Realtime vertaling in meer dan 80 talen", - "aiGirlfriend": "AI-vriendin", - "aiGirlfriendInfo": "Intelligente metgezel, chat op elk moment", - "healthConsultant": "Multifunctionele AI-chat", - "healthConsultantInfo": "Biedt meer AI-chatfuncties", - "conferenceAssistant": "Assistent voor zakelijke bijeenkomsten", - "conferenceAssistantInfo": - "Realtime notuleren van vergaderingen, meertalige vertaling", - "usageStats": "Gebruikstatistieken", - "usageStatsInfo": " Bekijk de gebruikstatistieken van uw applicatie", - "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", - "asr": "ASR", - "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 + "exploreSlogan3": "Slimme pen, eindeloze mogelijkheden", + + // 商品模块 - 通用 + "quota": "Quota", + "times": "Keer", + "minutes_unit": "Minuten", + "purchase": "Kopen", + "purchaseSuccess": "Aankoop geslaagd", + "purchaseFailed": "Aankoop mislukt", + "purchaseCancelled": "Aankoop geannuleerd", + "purchaseRestored": "Aankoop hersteld", + "restorePurchase": "Aankoop herstellen", + "productNotFound": "Product niet gevonden", + "alreadyPurchased": "Al aangeschaft", + "purchaseProcessing": "Aankoop verwerken", + "paymentFailed": "Betaling mislukt", + "verificationFailed": "Verificatie mislukt", + "purchaseNotAllowed": "Aankoop niet toegestaan op dit apparaat", + + // 商品模块 - 支付方式 + "selectPaymentMethod": "Selecteer betaalwijze", + "wechatPay": "WeChat Pay", + "alipay": "Alipay", + "paypal": "PayPal", + "appleIAP": "Apple IAP", + "googleIAP": "Google IAP", + + // 商品模块 - 使用统计 + "usageStatistics": "Gebruiksstatistieken", + "totalUsage": "Totaal gebruik", + "usageHistory": "Gebruiksgeschiedenis", + "exportData": "Gegevens exporteren", + "cleanupOldData": "Oude gegevens opschonen", + "cleanupComplete": "Opruimen voltooid", + "cleanedOldData": "Gegevens ouder dan 90 dagen gewist", + "exportFeature": "Exportfunctie", + "exportInDevelopment": "Gegevensexport is in ontwikkeling", + + // 商品模块 - AI产品页 + "aiProductTitle": "AI-assistent", + "aiProductSubtitle": "Slimme AI-assistent voor dagelijks gebruik", + "musicAndRecommendation": "Muziek & Aanbevelingen", + "navigationAndRoutes": "Navigatie & Routes", + "nearbySearch": "Zoeken in de buurt", + "newsInformation": "Nieuws & Informatie", + "communicationAssistant": "Communicatieassistent", + "aiHeaderDesc1": "Uw persoonlijke AI-assistent, altijd beschikbaar", + "aiHeaderDesc2": + "Ondersteunt spraakbediening, muziek, navigatie, nieuws en meer", + "aiFeatureTitle": "Functies", + "aiFeatureMusic": "Muziek afspelen op verzoek", + "aiFeatureMusicDesc": + "Vraag Lily om uw favoriete muziek te spelen, gebaseerd op genre, artiest of stemming", + "aiFeatureNavigation": "Intelligente navigatie", + "aiFeatureNavigationDesc": + "Lily helpt u de beste route te vinden en geeft realtime verkeersinformatie", + "aiFeatureNearby": "Zoeken in de buurt", + "aiFeatureNearbyDesc": + "Vind restaurants, winkels en diensten in uw directe omgeving", + "aiFeatureNews": "Nieuws & Informatie", + "aiFeatureNewsDesc": + "Blijf op de hoogte met het laatste nieuws en gepersonaliseerde informatie", + "aiFeatureCommunication": "Communicatieassistent", + "aiFeatureCommunicationDesc": + "Stuur berichten, maak afspraken en beheer uw contacten via spraak", + + // 商品模块 - 翻译产品页 + "translationProductTitle": "Vertaling", + "translationProductSubtitle": "Realtime meertalige vertaling", + "translationHeaderDesc1": "Realtime vertaling in meer dan 50 talen", + "translationHeaderDesc2": + "Ideaal voor reizen, zakelijke vergaderingen en internationale communicatie", + + // 商品模块 - Meeting产品页 + "meetingProductTitle": "Vergadering", + "meetingProductSubtitle": "Professionele vergaderoplossing", + "transcriptionAndSummary": "Transcriptie & Samenvatting", + "keywordSearch": "Trefwoordzoeken", + "collaborationSharing": "Samenwerking & Delen", + "meetingHeaderDesc2": + "AI-aangedreven transcriptie en samenvatting voor productieve vergaderingen", + "meetingSpeakerTagging": "Sprekeridentificatie", + "meetingLongAudioTranscription": "Lange audiotranscriptie", + "meetingKeyPointSummary": "Kernpuntensamenvatting", + "meetingTopicNameSearch": "Onderwerpzoeken op naam", + "meetingTimelineJump": "Tijdlijnsprong", + "meetingExportSummary": "Samenvatting exporteren", + "meetingMultiPlatformShare": "Delen op meerdere platforms", + + // 商品模块 - VIP会员页 + "vipTitle": "VIP-lidmaatschap", + "vipSubtitle": "Geniet van exclusieve voordelen", + "benefitsOverview": "Voordelenomzicht", + "higherQuota": "Hoger quota", + "lowerUnitPrice": "Lagere eenheidsprijs", + "priorityService": "Prioriteitsservice", + "exclusiveSupportChannel": "Exclusief supportkanaal", + "fastResponse": "Snelle reactie", + "eventsAndDiscounts": "Evenementen & Kortingen", + "memberExclusiveEvents": "Exclusieve ledevenementen", + "longTermDiscountPlan": "Langetermijnkortingsplan", + "generalPrivileges": "Algemene voordelen", + "earlyAccessNewFeatures": "Vroege toegang tot nieuwe functies", + "vipDisclaimer": + "VIP-voordelen zijn van toepassing op alle services binnen het platform", + + // 商品模块 - 商品名称 + 'meet_001_name': 'Vergadering Basis 100', + 'meet_002_name': 'Vergadering Basis 500', + 'meet_003_name': 'Vergadering Basis 1000', + 'ai_001_name': 'AI Basis 100', + 'ai_002_name': 'AI Basis 500', + 'ai_003_name': 'AI Basis 1000', + + // 商品模块 - 商品描述 + 'meet_001_desc': 'Bevat 100 minuten vergadertranscriptie.', + 'meet_002_desc': 'Bevat 500 minuten vergadertranscriptie.', + 'meet_003_desc': 'Bevat 1000 minuten vergadertranscriptie.', + 'ai_001_desc': 'Bevat 100 gebruiken. Toegang tot kern-AI-functies.', + 'ai_002_desc': 'Bevat 500 gebruiken. Toegang tot kern-AI-functies.', + 'ai_003_desc': 'Bevat 1000 gebruiken. Toegang tot kern-AI-functies.', + + // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding - 'skip': "Overslaan", - '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, ', - // AI 引导步骤 - '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', - - // 商务会议助手页 + // 新手引导 + "skip": "Overslaan", + "next": "Volgende", + "sayLilyHint": "Zeg \u201cLily Lily\u201d tegen de microfoon", + "imHere": "Ik ben er~", + "guideWelcomeWakeAI": "Welkom bij Voitrans! Activeer eerst je AI \u201cLily\u201d.", + "aiReplyCompleted": "Lily heeft het antwoord afgerond!", + "aiThinking": "Lily denkt na\u2026", + "guideAwakenSuccess": "Geweldig! Lily is wakker\u2014vraag om hulp.", + "confirmInput": "Invoer bevestigen", + "guideClickSendPrefix": "Tik op verzenden, ", + "guideWeatherStart": "Zeg tegen Lily: \u201cWat is het weer vandaag?\u201d", + "guideWeatherInput": "Wat is het meer vandaag?", + "guideWeatherSend": "Lily meldt het meer in realtime", + "guideWeatherEnd": "Lily kan live weerberichten geven\u2014probeer andere opdrachten", + "guideMusicStart": "Zeg tegen Lily: \u201cSpeel rockmuziek\u201d", + "guideMusicInput": "Speel rockmuziek", + "guideMusicSend": "Lily zoekt muziek voor je", + "guideMusicEnd": "Lily heeft muziek gevonden\u2014probeer andere opdrachten", + "guideNavStart": "Zeg tegen Lily: \u201cNavigeer naar de luchthaven\u201d", + "guideNavInput": "Navigeer naar de luchthaven", + "guideNavSend": "Lily plant de route", + "guideNavEnd": "Navigatie ingesteld\u2014probeer andere opdrachten", + "guideMeetingStart": + "Zeg tegen Lily: \u201cMaak een vergaderherinnering voor morgen om 15:00\u201d", + "guideMeetingInput": "Maak een vergaderherinnering voor morgen om 15:00", + "guideMeetingSend": "Lily maakt een vergaderherinnering", + "guideMeetingEnd": "Herinnering aangemaakt\u2014probeer andere opdrachten", + "guidePhoneStart": "Zeg tegen Lily: \u201cBel mama\u201d", + "guidePhoneInput": "Bel mama", + "guidePhoneSend": "Lily belt voor je", + "guidePhoneEnd": "Oproep geplaatst\u2014probeer andere opdrachten", + "guideSmsStart": "Zeg tegen Lily: \u201cStuur papa een bericht: ik eet thuis\u201d", + "guideSmsInput": "Stuur papa een bericht: ik eet thuis", + "guideSmsSend": "Lily stuurt het bericht", + "guideSmsEnd": "Bericht verzonden\u2014spraakbediening is handig", + + // Meeting模块 - 首页与导航 "startMeeting": "Start vergadering", 'edit': 'Bewerken', 'delete': 'Verwijderen', @@ -408,250 +373,270 @@ const Map nlNL = { 'recordingDetails': 'Opnamedetails', 'aiSummary': 'AI-samenvatting', 'meetingTranscript': 'Vergadertranscript', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Wi-Fi starten...', + 'newFilesDetected': 'Nieuwe bestanden gedetecteerd, importeren voorbereiden', + 'noNewFiles': 'Geen nieuwe bestanden om te importeren', + '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': 'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Kies wat je wilt doen voordat je vertrekt', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Beëindigen en opslaan', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Beëindigen zonder op te slaan', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Opname op de achtergrond voortzetten', // 后台继续录音 - 'meetingRecordStopTimeout': 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Opname op de achtergrond voortzetten', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Time-out bij het stoppen van de opname. Probeer het opnieuw.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Kan de opname niet stoppen. Probeer het opnieuw.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Kan de opname niet opslaan. Probeer het opnieuw.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Opname bezig', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Opname op de achtergrond. Tik om terug te keren naar de app.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Weergeven over andere apps', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Om vertaalresultaten tijdens gesprekken of audio-/videotranslatie te tonen, hebben we overlay-machtiging nodig. Zo kun je realtime vertalingen zien terwijl je andere apps gebruikt.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Om tijdens het opnemen de zwevende opnamebalk (timer/pauze/hervatten) te tonen, hebben we overlay-machtiging nodig.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Kan de systeeminstellingen niet automatisch openen. Open Instellingen en schakel de overlay-machtiging handmatig in.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Transcriberen...', + 'summarizing': 'Samenvatten...', + 'analyzing': 'Analyseren...', + 'summaryComplete': 'Samenvatting voltooid', + 'generate': 'Genereren', + 'overview': 'Overzicht', + 'transcription': 'Transcriptie', + 'summary': 'Samenvatting', + 'mindMap': 'Mindmap', + 'editSpeaker': 'Bewerken', + 'nameSpeaker': 'Spreker benoemen', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Opnieuw samenvatten', + 'dateAndTime': 'Datum & Tijd', + 'location': 'Locatie', + 'attendees': 'Deelnemers', + 'inputLocation': 'Locatie invoeren', + 'inputAttendees': 'Deelnemers invoeren', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Samenvattingssjabloon selecteren', + 'useThisTemplate': 'Dit sjabloon gebruiken', + 'lastUsed': 'Laatst gebruikt', + 'create': 'Aanmaken', + 'templateDetails': 'Sjabloondetails', + 'tag': 'Label', + 'description': 'Beschrijving', + 'template': 'Sjabloon', + 'deleteTemplate': 'Sjabloon verwijderen', + 'deleteTemplateConfirm': 'Weet u zeker dat u dit sjabloon wilt verwijderen?', + 'editTemplate': 'Sjabloon bewerken', + 'createTemplate': 'Sjabloon aanmaken', + 'name': 'Naam', + 'templateContentHint': + 'Voer de inhoud van het sjabloon in! Tip: Klik op de AI-knop hierboven om snel sjablooninhoud te genereren op basis van de naam en beschrijving die u hebt ingevoerd', + 'inputNameHint': 'Voer een naam in', + 'inputDescHint': 'Voer een beschrijving in', + 'custom': 'Aangepast', + 'pleaseEnter': 'Voer alstublieft in', + 'viewAll': 'Alles bekijken', + 'recordingLanguage': 'Opnametaal', + 'chineseSimplified': 'Chinees Mandarijn (vereenvoudigd)', + 'meetingGenerateNow': 'Nu genereren', + 'keyEventsAnalyzed': '{count} belangrijke gebeurtenissen geanalyseerd.', + 'aiAnalysisDesc': + 'AI-analyse identificeert belangrijke gebeurtenissen in opnames, zodat u belangrijke gebeurtenissen kunt selecteren voor AI-generatie.', + + // Meeting模块 - 文件操作 + 'importing': 'Importeren...', + 'batchImporting': 'Bulkimport bezig...', + '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': 'Vergaderaudio delen', + 'shareComplete': 'Delen voltooid!', + 'shareFailed': 'Delen mislukt: {error}', + 'fileProcessingFailed': + 'Bestandsverwerking mislukt: {filePath}, fout: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Mindmap opslaan', + 'shareMindMap': 'Mindmap delen', + 'shareSuccess': 'Delen geslaagd', + + // Meeting模块 - AI问答 + 'askAI': 'AI vragen...', + 'askAIPrompt': 'Waarmee kan ik u vandaag helpen?', + 'continueAsk': 'Verder vragen', + 'todoList': 'Takenlijst', + 'extractConclusion': 'Conclusie extraheren', + 'generateKeyIndicators': 'Kernindicatoren genereren', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Link delen', + 'copyTranscript': 'Transcriptie kopiëren', + 'copySummary': 'Samenvatting kopiëren', + 'exportAudio': 'Audio exporteren', + 'exportTranscript': 'Transcriptie exporteren', + 'shareMeetingAudio': 'Vergaderaudio delen', + 'exportSummary': 'Samenvatting exporteren', + 'exportAs': 'Exporteren als', + 'exportingPDF': 'PDF exporteren...', + 'export': 'Exporteren', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", + 'summaryWillBeUpdatedAutomatically': + 'De samenvatting wordt automatisch bijgewerkt op basis van de sjabloon', + 'nameCurrentSpeaker': 'Huidige spreker benoemen', + 'recentlyUsedNames': 'Recent gebruikte namen', + 'applyToCurrentParagraph': 'Toepassen op huidige alinea', + 'totalTime': 'Totale tijd', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Samenvattingssprekers worden automatisch bijgewerkt', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synchroniseren met cloud', + 'syncToCloudTip': + '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', - - // 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', + 'aboutVoitrans': 'Over VOITRANS', + 'meetingDays': 'Dagen', + 'meetingHours': 'Uren', + 'voitransAiMember': 'Voitrans AI Lid', + 'unlockStarterMember': 'Startlidmaatschap ontgrendelen', + 'bindDeviceToActivate': + 'Koppel Voitrans-apparaat om Starter-lidmaatschap te activeren', + 'unlockNow': 'Nu ontgrendelen', + + // Meeting模块 - 会员与升级 + 'comparison': 'Vergelijking', + 'detailedInfo': 'Gedetailleerde informatie', + 'monthlyTranscriptionTime': 'Maandelijkse transcriptietijd', + 'unlimited': 'Onbeperkt', + 'professionalTemplates': 'Professionele sjablonen', + 'limited': 'Beperkt', + 'fullTemplates': 'Volledige sjablonen', + 'professionalTerms': 'Professionele terminologie', + 'customTemplates': 'Aangepaste sjablonen', + 'visualMindMap': 'Visuele mindmap', + 'speakerIdentification': 'Sprekeridentificatie', + 'aiVoiceEnhancement': 'AI-stemverbetering', + 'audioImport': 'Audio importeren', + 'multipleExportFormats': 'Meerdere exportindelingen', + 'professionalSummaryTemplates': 'Professionele samenvattingssjablonen', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Professioneel sjabloonontwerp om uw werkefficiëntie te verbeteren. Aangepast aan branchebehoeften.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'U kunt samenvattingsprompts aanpassen aan uw behoeften en ze gebruiken om de gewenste samenvattingen te genereren.', '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.', + 'Voorbij samenvattingen: organiseer en visualiseer kernpunten met mindmaps voor een effectiever begrip van de volledige tekst.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Ontdek, deel en haal inspiratie uit de sjabloonbibliotheek gemaakt door gebruikers.', '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.', + 'Audiotranscriptie ondersteunt sprekeridentificatie, herstelt vergadering- of telefoongespreksinhoud intuïtiever. Tegelijk wordt de samenvatting nauwkeuriger.', '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.', + 'AI-stemverbetering ondersteunt meerdere ruisonderdrukkingsinstellingen, elimineert achtergrondgeluid intelligent, verbetert stemhelderheid en verbetert de afspeelkwaliteit van audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importeer eenvoudig audiobestanden van lokale of externe applicaties, zoals spraaknotities, Google Drive, enz.', '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', + 'Exporteer uw audio-opnames, transcriptietekst en samenvattingen in verschillende indelingen (TXT, PDF, JPEG) naar wens.', + 'upgradeMembership': 'Lidmaatschap upgraden', + 'yearlySubscription': 'Jaarlijks abonnement', + 'monthlySubscription': 'Maandelijks abonnement', + 'proMonthly': 'Pro \u00a560/maand', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7 dagen gratis proefperiode, daarna \u00a5800/jaar. Annuleer op elk moment voor het einde van de proefperiode.', + 'sevenDayTrial': '7 dagen gratis proefperiode', + 'unlimitedMonthly': 'Onbeperkt \u00a5120/maand', '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', + '7 dagen gratis proefperiode, daarna \u00a51600/jaar. Annuleer op elk moment voor het einde van de proefperiode.', + 'trialNote': + '*Gratis proefperiode van 7 dagen, daarna jaarlijks gefactureerd, op elk moment annuleerbaar.', + 'proPrice': 'Pro \u00a5120', + 'proMonthlyPrice': '\u00a5120/maand', + 'subscribe': 'Abonneren', + 'unlimitedPrice': 'Onbeperkt \u00a5198', + 'unlimitedMonthlyPrice': '\u00a5198/maand', '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: ', + '*Na het upgraden van het abonnement worden de resterende dagen van het oorspronkelijke abonnement automatisch berekend en teruggestort op uw betaalrekening', + 'buyMoreTranscriptionTime': 'Meer transcriptietijd kopen', + 'sixThousandMinutes': '6.000 minuten', + 'threeThousandMinutes': '3.000 minuten', + 'sixHundredMinutes': '600 minuten', + 'oneHundredTwentyMinutes': '120 minuten', + 'validityPeriod': '*Geldigheidsperiode: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': "Toepassen op alle alinea's van deze spreker", - 'summaryWillBeUpdatedAutomatically': - 'De samenvatting wordt automatisch bijgewerkt op basis van de sjabloon', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Direct geactiveerd na aankoop, geldig gedurende 2 jaar na activering.', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Opnametaal', + 'cantonese': 'Kantonees', + 'sichuan': 'Sichuan-dialect', + 'shanghai': 'Shanghais dialect', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Onbekende taal', + 'analysisFailed': 'Analyse mislukt, probeer het later opnieuw', + 'transcriptionFailed': 'Transcriptie mislukt, probeer het later opnieuw', + 'summaryFailed': 'Samenvatting mislukt, probeer het later opnieuw', + 'summaryFailedShort': 'Samenvatting mislukt', + 'transcriptionFailedShort': 'Transcriptie mislukt', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audiospeler is niet gereed, even geduld', + 'playFailed': 'Afspelen mislukt', + 'audioFileNotFound': 'Audiobestand niet gevonden', + 'fetchingAudio': 'Audio ophalen uit de cloud...', + 'playerLoadFailed': 'Audiospeler kan niet laden', // 设置页 "systemSettings": "Systeeminstellingen", @@ -660,10 +645,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", @@ -703,43 +688,31 @@ const Map nlNL = { "bleHeadsetFirmwareUpgrade": "Upgrade van BLE-headset firmwareversie", "deviceManagement": "Apparaatbeheer", "manageConnectedDevices": "Beheer gekoppelde Bluetooth-apparaten", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'U hebt al de nieuwste versie {version}', 'checkUpdateFailed': 'Controleren op updates mislukt', 'networkErrorRetry': 'Netwerkfout, probeer het later opnieuw', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtime spraakchat", "realtimeVoiceChatInfo": "Ervaar de intelligente spraakinteractiefunctie (functievoorbeeld)", "loading": "Laden...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Chatgeschiedenis wissen", "online": "Online", @@ -768,22 +741,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Vragen beantwoorden en informatie verstrekken\n\n' '• Realtime spraakvertaling\n\n' @@ -803,11 +778,11 @@ const Map nlNL = { 'startVoiceInput': 'Start spraakinvoer', 'startPhoneCallMode': 'Start belmodus, start spraakinvoer', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Voer uw bericht hier in...', // 全屏编辑器输入提示 'characterCount': '{count} tekens', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiëren', 'copySuccess': 'Succesvol gekopieerd', 'report': 'Rapporteren', @@ -815,7 +790,6 @@ const Map nlNL = { 'submitFailed': 'Indienen mislukt', 'reportSubmitted': 'Rapport ingediend, we zullen het zo snel mogelijk verwerken', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Schadelijk/Onveilig', 'pornographicVulgar': 'Pornografisch/Vulgair', 'misleadingAttack': 'Misleidend/Aanval', @@ -825,17 +799,22 @@ const Map nlNL = { 'other': 'Overig', 'reportDescriptionHint': 'We willen weten waarom u rapporteert, u kunt het probleem dat u tegenkwam beschrijven.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Gegenereerd door AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Gereedschapsoproep', + 'noResult': 'Geen resultaat', + 'noToolCallContentToCopy': + 'Geen inhoud van gereedschapsoproep om te kopieren', + 'toolCallDetails': 'Details gereedschapsoproep:', + 'toolCallContentCopied': 'Inhoud gekopieerd naar klembord', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Hier zijn enkele aanbevolen muziekstukken:', 'playList': 'Afspeellijst', 'moreMusic': 'Meer muziek', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'uur', // 小时单位 @@ -850,7 +829,30 @@ const Map nlNL = { "bicycling": 'Fietsen', "tsransit": 'Openbaar vervoer', - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Navigatie-app selecteren', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigeren met Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigeren met Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigeren met Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigeren met Apple Maps', + 'builtInNavigation': 'Ingebouwde navigatie', + 'useBuiltInNavigation': 'Navigeren met ingebouwde kaart', + 'navigationStartFailed': 'Navigatie starten mislukt', + 'cannotPlayMusicListRetryLater': + 'Kan muzieklijst niet afspelen, probeer het later opnieuw', + 'cannotPlaySong': 'Kan nummer niet afspelen', + 'openMapError': 'Fout bij openen van kaart', + 'pleaseInstallAmapApp': 'Installeer eerst de Amap-app', + 'pleaseInstallBaiduMapApp': 'Installeer eerst de Baidu Maps-app', + 'appleMapStartFailed': 'Apple Maps starten mislukt', + 'appleMapUnavailable': 'Apple Maps niet beschikbaar', + 'openAppleMapError': 'Fout bij openen van Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Weersomstandigheden opvragen:', 'highest': 'Hoogste', 'lowest': 'Laagste', @@ -879,18 +881,8 @@ const Map nlNL = { "friday": "Vr", "saturday": "Za", "sunday": "Zo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Zonnig", "partlyCloudy": "Licht bewolkt", "partlySunny": "Gedeeltelijk zonnig", @@ -911,7 +903,142 @@ const Map nlNL = { "haze": "Nevel", "strongWind": "Harde wind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Afbeeldingsvertaling", + "textTranslation": "Tekstvertaling", + + // 翻译模块 - 主页 + "translationHistory": "Vertaalgeschiedenis", + "enableRecording": "Opname inschakelen", + "viewAudioFiles": "Audiobestanden bekijken", + "headsetUser": "Headset-gebruiker", + "phoneUser": "Telefoongebruiker", + "selectSourceLanguage": "Selecteer brontaal", + "selectTargetLanguage": "Selecteer doeltaal", + "me": "Ik", + "counterPart": "Gesprekspartner", + "bluetoothCallStateError": + "Zorg ervoor dat de Bluetooth-headset met de telefoon is verbonden en in gesprek is", + "autoDetect": "Automatisch detecteren", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Taaldetectie mislukt", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Zwevend venster uitschakelen', + 'enableFloatingWindow': 'Zwevend venster inschakelen', + 'permissionTip': 'Machtigingstip', + 'micPermissionRequiredForRecording': + 'Microfoonmachtiging vereist voor opname', + 'deleteTranslationRecordError': 'Fout bij verwijderen vertaalrecord: @error', + "translationFailed": "Vertalen mislukt", + "translating": "Vertalen", + "translate": "Vertaal", + "pleaseInputText": "Voer tekst in", + "inputTextToTranslate": "Voer de tekst in om te vertalen", + "textTooLong": "Tekst te lang, max. 5000 tekens", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nog geen geschiedenis", + "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.", + "unknownLanguage": "Onbekende taal", + "deleteSessionRecord": "Sessie-opname verwijderen", + "deleteSessionConfirm": + "Weet u zeker dat u alle vertaalopnamen voor deze sessie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": "Huidige kwaliteit: @value%", + "setMaxSize": "Maximale grootte instellen", + "currentMaxSize": "Huidig: @pxpx", + "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": + "Afbeeldingsverwerking of vertaling mislukt. Probeer het opnieuw.\nFout: {error}", + "imageTooLarge": "Afbeelding is groter dan de limiet van 4 MB", + "imageTooLargeHint": + "Afbeelding is groter dan 4 MB. Verlaag de kwaliteit of afmetingen en probeer opnieuw", + "emptyTranslationResult": + "Afbeeldingsvertaal-API retourneerde een leeg resultaat", + "imageTranslationFailedTryLater": + "Afbeeldingsvertaling mislukt. Netwerkprobleem of snelheidslimiet. Probeer het later opnieuw", + "imageTranslationApiException": + "Uitzondering in afbeeldingsvertaal-API. Controleer het netwerk en probeer het opnieuw", + "permissionRequired": "Machtiging vereist", + "cameraPermissionRequired": "Cameramachtiging vereist om foto's te maken", + "photoAlbumPermissionRequired": + "Fotoalbumtoestemming vereist om afbeeldingen te kiezen", + "translationDetails": "Vertaaldetails", + "originalImage": "Originele afbeelding", + "sourceLanguage": "Brontaal", + "targetLanguage": "Doeltaal", + "translationTime": "Vertaaltijd", + "shareInDevelopment": "Deelfunctie in ontwikkeling", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Audiobestanden vertalen", + "noAudioFiles": "Nog geen audiobestanden", + "calculating": "Berekenen...", + "playing": "Afspelen...", + "paused": "Gepauzeerd", + "clickToPlay": "Klik om af te spelen", + "rename": "Hernoemen", + "smartTranscription": "Slimme transcriptie", + "renameAudioFile": "Audiobestand hernoemen", + "enterNewFileName": "Voer een nieuwe bestandsnaam in", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originele opname", + "recordSummary": "Opnamesamenvatting", + "clickToGenerateSummary": + "Klik op de onderstaande knop om een sessiesamenvatting te genereren", + "summaryContent": "Samenvattingsinhoud", + "copied": "Gekopieerd", + "summaryCopiledToClipboard": "Samenvatting gekopieerd naar klembord", + "extractSummary": "Samenvatting extraheren", + "summaryGenerated": "Samenvatting gegenereerd", + "generating": "Genereren...", + "regenerate": "Opnieuw genereren", + "summaryTimeoutMessage": + "Het genereren van de samenvatting is verlopen, mogelijk vanwege netwerkproblemen of een drukke server.", + "deleteTranslationRecord": "Vertaalopname verwijderen", + "deleteTranslationConfirm": + "Weet u zeker dat u deze vertaalopname wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "originalText": "Originele tekst", + "translatedText": "Vertaalde tekst", + "sessionSummary": "Sessiesamenvatting", + "cannotShare": "Kan niet delen", + "generateSummaryFirst": "Genereer eerst een samenvatting", + "translationSessionRecord": "Vertaalsessie-opname", + + // 个人资料模块 "editProfile": "Persoonlijke informatie bewerken", "avatar": "Avatar", "nickname": "Bijnaam", @@ -925,10 +1052,8 @@ const Map nlNL = { 'deleteAccount': 'Account verwijderen', 'deleteAccountTips': 'Weet u zeker dat u uw account permanent wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Cache wissen', + 'cleanTips': 'Weet u zeker dat u de persoonlijke cache wilt wissen?', 'networkConnectionFailed': 'Netwerkverbinding mislukt, controleer uw netwerkinstellingen en probeer het opnieuw', 'serverTemporarilyUnavailable': @@ -946,10 +1071,6 @@ const Map nlNL = { 'Netwerkverbinding mislukt, controleer uw netwerkinstellingen', 'serverInternalErrorRetryLater': 'Interne serverfout, probeer het later opnieuw', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Beeldcompressie mislukt', 'avatarUpdateFailed': 'Avatar-update mislukt', 'usernameCannotBeEmpty': 'Gebruikersnaam mag niet leeg zijn', @@ -961,8 +1082,6 @@ const Map nlNL = { 'accountPermanentlyDeleted': 'Account is permanent verwijderd', 'deleteAccountFailedRetry': 'Verwijderen van account mislukt, probeer het opnieuw', - - // 账号服务相关 'clearUserDataFailed': 'Wissen van gebruikersgegevens mislukt', // 清理用户数据失败 'deleteUserDataFailed': 'Verwijderen van gebruikersgegevens mislukt', // 删除用户数据失败 @@ -979,21 +1098,25 @@ const Map nlNL = { 'accountServiceInitialized': 'Accountservice is geïnitialiseerd', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Opslag', + 'meetingStoragePermissionExplanation': + 'We hebben opslagmachtiging nodig zodat u audiobestanden kunt selecteren en uploaden.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Contacten', + 'notification': 'Meldingen', 'alarm': 'Alarm', 'calendarWrite': 'Kalender schrijven', 'calendarFullAccess': 'Volledige kalendertoegang', @@ -1002,7 +1125,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': @@ -1022,80 +1145,91 @@ 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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Voor het verbinden met Bluetooth-apparaten is Bluetooth-verbindingsmachtiging vereist', + 'notificationPermissionDesc': 'Gebruikt voor het verzenden van meldingen', '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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Opslagmachtiging is permanent geweigerd. Ga naar de app-instellingen om de opslagmachtiging handmatig in te schakelen.', + 'permissionUtilNeed': 'Nodig ', + '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigatie actief', + 'native.notification.navigation.keepRunning': 'Navigeren, houd de app actief', + 'native.notification.bleAgent.running': 'Spraakassistent is actief', + 'native.notification.audioRecording.recording': + 'Audio opnemen, tik om terug te keren naar de app', + 'native.notification.music.waiting': 'Wachten op afspelen', + 'native.notification.music.previous': 'Vorige', + 'native.notification.music.next': 'Volgende', + 'native.notification.music.play': 'Afspelen', + 'native.notification.music.pause': 'Pauzeren', + 'native.notification.qqMusic.playing': 'Muziek afspelen', + + // 版本更新 'newVersionFound': 'Nieuwe versie gevonden', // 版本更新对话框标题 'remindLater': 'Later herinneren', // 稍后提醒按钮 'updateNow': 'Nu bijwerken', // 立即更新按钮 @@ -1106,253 +1240,7 @@ const Map nlNL = { 'updateErrorRetry': 'Er is een fout opgetreden tijdens het bijwerken, probeer het later opnieuw', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "Verenigde Staten", - "加拿大": "Canada", - "俄罗斯": "Rusland", - "英国": "Verenigd Koninkrijk", - "德国": "Duitsland", - "意大利": "Italië", - "法国": "Frankrijk", - "西班牙": "Spanje", - "南非": "Zuid-Afrika", - "沙特阿拉伯": "Saoedi-Arabië", - "土耳其": "Turkije", - "日本": "Japan", - "韩国": "Zuid-Korea", - "新加坡": "Singapore", - "马来西亚": "Maleisië", - "泰国": "Thailand", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipijnen", - "印度尼西亚": "Indonesië", - "阿联酋": "Verenigde Arabische Emiraten", - "墨西哥": "Mexico", - "巴西": "Brazilië", - "阿根廷": "Argentinië", - "澳大利亚": "Australië", - "新西兰": "Nieuw-Zeeland", - "中国香港": "Hongkong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egypte", - "希腊": "Griekenland", - "荷兰": "Nederland", - "比利时": "België", - "匈牙利": "Hongarije", - "罗马尼亚": "Roemenië", - "瑞士": "Zwitserland", - "奥地利": "Oostenrijk", - "丹麦": "Denemarken", - "瑞典": "Zweden", - "挪威": "Noorwegen", - "波兰": "Polen", - "秘鲁": "Peru", - "智利": "Chili", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburg", - "爱尔兰": "Ierland", - "冰岛": "IJsland", - "阿尔巴尼亚": "Albanië", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Finland", - "保加利亚": "Bulgarije", - "立陶宛": "Litouwen", - "拉脱维亚": "Letland", - "爱沙尼亚": "Estland", - "乌克兰": "Oekraïne", - "塞尔维亚": "Servië", - "克罗地亚": "Kroatië", - "斯洛文尼亚": "Slovenië", - "捷克": "Tsjechië", - "斯洛伐克": "Slowakije", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haïti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Marokko", - "阿尔及利亚": "Algerije", - "突尼斯": "Tunesië", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopië", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Oeganda", - "孟加拉国": "Bangladesh", - "以色列": "Israël", - "黎巴嫩": "Libanon", - "约旦": "Jordanië", - "伊拉克": "Irak", - "科威特": "Koeweit", - "巴林": "Bahrein", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolië", - "柬埔寨": "Cambodja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Oost-Timor", - "斐济": "Fiji", - "所罗门群岛": "Salomonseilanden", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Vertaalgeschiedenis", - "enableRecording": "Opname inschakelen", - "viewAudioFiles": "Audiobestanden bekijken", - "headsetUser": "Headset-gebruiker", - "phoneUser": "Telefoongebruiker", - "selectSourceLanguage": "Selecteer brontaal", - "selectTargetLanguage": "Selecteer doeltaal", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nog geen geschiedenis", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Geschiedenis wissen", - "clearHistoryConfirm": - "Weet u zeker dat u alle vertaalgeschiedenis wilt wissen? Deze actie kan niet ongedaan worden gemaakt.", - "unknownLanguage": "Onbekende taal", - "deleteSessionRecord": "Sessie-opname verwijderen", - "deleteSessionConfirm": - "Weet u zeker dat u alle vertaalopnamen voor deze sessie wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Audiobestanden vertalen", - "noAudioFiles": "Nog geen audiobestanden", - "calculating": "Berekenen...", - "playing": "Afspelen...", - "paused": "Gepauzeerd", - "clickToPlay": "Klik om af te spelen", - "rename": "Hernoemen", - "smartTranscription": "Slimme transcriptie", - "renameAudioFile": "Audiobestand hernoemen", - "enterNewFileName": "Voer een nieuwe bestandsnaam in", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originele opname", - "recordSummary": "Opnamesamenvatting", - "clickToGenerateSummary": - "Klik op de onderstaande knop om een sessiesamenvatting te genereren", - "summaryContent": "Samenvattingsinhoud", - "copied": "Gekopieerd", - "summaryCopiledToClipboard": "Samenvatting gekopieerd naar klembord", - "extractSummary": "Samenvatting extraheren", - "summaryGenerated": "Samenvatting gegenereerd", - "generating": "Genereren...", - "regenerate": "Opnieuw genereren", - "summaryTimeoutMessage": - "Het genereren van de samenvatting is verlopen, mogelijk vanwege netwerkproblemen of een drukke server.", - "deleteTranslationRecord": "Vertaalopname verwijderen", - "deleteTranslationConfirm": - "Weet u zeker dat u deze vertaalopname wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", - "originalText": "Originele tekst", - "translatedText": "Vertaalde tekst", - "sessionSummary": "Sessiesamenvatting", - "cannotShare": "Kan niet delen", - "generateSummaryFirst": "Genereer eerst een samenvatting", - "translationSessionRecord": "Vertaalsessie-opname", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Apparaat koppelen", "connectYourDeepSoundHeadset": "Verbind uw Voitrans-headset", "bind": "Koppelen", @@ -1361,14 +1249,11 @@ const Map nlNL = { "autoInputCode": "Code automatisch invoeren", "skipBinding": "Koppeling overslaan", "rescan": "Opnieuw scannen", - "verifyingDevice": "Apparaat verifiëren...", "confirmBinding": "Koppeling bevestigen", "associatingDevice": "Apparaat associëren...", "goToBluetoothSettings": "Ga naar Bluetooth-instellingen", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Klaar om te koppelen", "preparingPairingEnvironment": "Koppelingsomgeving voorbereiden...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1263,6 @@ const Map nlNL = { "waitingCompletePairing": "Even geduld, koppeling wordt voltooid...", "pairingSuccessRedirecting": "Koppelen geslaagd! Wordt doorgestuurd naar de startpagina...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Zorg ervoor dat u bent verbonden met een Voitrans-apparaat", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1274,12 @@ const Map nlNL = { "authorizationFailedCheckCode": "Autorisatie mislukt, controleer of de autorisatiecode correct is", "pairingFailedRetry": "Koppelen mislukt, probeer het opnieuw", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Schakel Bluetooth in', 'deviceDisconnected': 'Apparaat losgekoppeld', 'readyToStartPairing': 'Klaar om te beginnen met koppelen', 'checkingEnvironment': 'Omgeving controleren...', 'ensureHeadsetOnAndPairingMode': 'Zorg ervoor dat de headset is ingeschakeld en in de koppelingsmodus staat', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Beveiligde verbinding tot stand brengen...', 'needManualBindingAuthCode': 'Handmatige koppelingsautorisatiecode vereist...', @@ -1425,21 +1301,30 @@ const Map nlNL = { 'bleConnectionFailed': 'BLE-verbinding mislukt', 'deviceAuthorizationFailedCheckCode': 'Apparaatautorisatie mislukt, controleer de autorisatiecode', - - ///iOS蓝牙引导窗 - '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 \u2192 Bluetooth \u2192 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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Gebruikersfeedback", 'feedbackInfo': 'Geef feedback of suggesties', 'feedbackDescription': @@ -1468,13 +1353,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", @@ -1482,7 +1368,60 @@ const Map nlNL = { "removeEarbudsEnsureBattery": "Haal beide oortjes eruit en zorg ervoor dat de batterij van beide meer dan 20% is", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nieuwe versie @version gevonden', + 'otaConfirmUpdateNow': 'Nu bijwerken?', + 'otaUpdate': 'Bijwerken', + 'otaUpgradeSuccess': 'Upgrade geslaagd', + 'otaUpgradeCompleteRepair': + 'Firmware-update voltooid!\n\nHet apparaat moet opnieuw worden gekoppeld. Naar koppelingspagina?', + 'otaPairLater': 'Later koppelen', + 'otaPairNow': 'Nu koppelen', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Fout bij controle BLE-verbinding: @error', + 'otaBleNotConnected': 'BLE-apparaat niet verbonden', + 'otaBleNeedConnection': + 'BLE-verbinding vereist\nZorg dat het apparaat verbonden is en probeer opnieuw', + 'otaDeviceInfoUnavailableTitle': 'Apparaatinfo niet beschikbaar', + 'otaCannotGetDeviceInfo': + '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', + 'otaCannotGetProductInfoWithName': + 'Kan productinfo niet ophalen, apparaatnaam: @deviceName', + 'otaCannotGetBatteryInfo': 'Kan geen geldige batterij-info ophalen', + 'otaLowBattery': 'Batterij bijna leeg', + 'otaSingleBatteryLow': + 'Batterij te laag\nVereiste: boven 20%\nHuidig: @ear @battery%\nLaad op en probeer opnieuw', + 'otaDoubleBatteryLow': + 'Batterij te laag\nVereiste: beide oordopjes boven 20%\nHuidig: Links @left%, Rechts @right%\nLaad op en probeer opnieuw', + 'otaBatteryCheckFailed': 'Batterijcontrole mislukt', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Deze update bevat prestatieverbeteringen en bugfixes.', + 'otaGetLatestVersionFailed': 'Kan nieuwste versie niet ophalen', + 'otaGetVersionInfoFailed': 'Kan versie-info niet ophalen', + 'otaCheckingDeviceStatus': 'Apparaatstatus controleren...', + 'otaDownloadFailedCheckNetwork': + 'Download mislukt, controleer de netwerkverbinding', + 'otaDownloadFailed': 'Download mislukt', + 'otaPreparingConnection': 'Verbinding voorbereiden...', + 'otaConnectingDevice': 'Verbinden met apparaat...', + 'otaUpgradeStarted': 'OTA-upgrade gestart...', + 'otaUpgradeProgressWithPercent': 'Voortgang: @percent%', + 'otaUpgradeSuccessComplete': 'Upgrade succesvol voltooid', + 'otaUpgradeFailedWithCode': 'Upgrade mislukt, foutcode: @code', + 'otaUpgradeFailedTitle': 'Upgrade mislukt', + 'otaUpgradeFailedDesc': + 'Controleer de verbinding of het updatepakket, foutcode: @code', + 'otaDeviceDisconnected': 'Apparaat losgekoppeld', + 'otaDeviceConnected': 'Apparaat verbonden', + + // 音乐模块 "noMusic": "Geen muziek", // 暂无音乐 "noPlayingMusic": "Geen muziek aan het afspelen", // 暂无播放音乐 "unknownSong": "Onbekend nummer", // 未知歌曲 @@ -1490,62 +1429,162 @@ const Map nlNL = { "playAll": "Alles afspelen", // 播放全部 // 语言名称 - "中文(简体)": "Chinees (vereenvoudigd)", - "中文(繁体)": "Chinees (traditioneel)", - "中文(香港繁体)": "Chinees (Hongkong traditioneel)", - "英语": "Engels", - "日语": "Japans", - "韩语": "Koreaans", - "法语": "Frans", - "西班牙语": "Spaans", - "葡萄牙语": "Portugees", - "意大利语": "Italiaans", - "德语": "Duits", - "俄语": "Russisch", - "波兰语": "Pools", - "荷兰语": "Nederlands", - "瑞典语": "Zweeds", - "捷克语": "Tsjechisch", - "现代希腊语": "Modern Grieks", - "罗马尼亚语": "Roemeens", - "匈牙利语": "Hongaars", - "乌克兰语": "Oekraïens", - "丹麦语": "Deens", - "芬兰语": "Fins", - "挪威语": "Noors", - "克罗地亚语": "Kroatisch", - "加泰隆语": "Catalaans", - "阿拉伯语": "Arabisch", - "泰语": "Thais", - "越南语": "Vietnamees", - "印尼语": "Indonesisch", - "印地语": "Hindi", - "土耳其语": "Turks", - "马来语": "Maleis", - "孟加拉语": "Bengaals", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", - "波斯语": "Perzisch", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + "\u4e2d\u6587(\u7b80\u4f53)": "Chinees (vereenvoudigd)", + "\u4e2d\u6587(\u7e41\u4f53)": "Chinees (traditioneel)", + "\u4e2d\u6587(\u9999\u6e2f\u7e41\u4f53)": "Chinees (Hongkong traditioneel)", + "\u82f1\u8bed": "Engels", + "\u65e5\u8bed": "Japans", + "\u97e9\u8bed": "Koreaans", + "\u6cd5\u8bed": "Frans", + "\u897f\u73ed\u7259\u8bed": "Spaans", + "\u8461\u8404\u7259\u8bed": "Portugees", + "\u610f\u5927\u5229\u8bed": "Italiaans", + "\u5fb7\u8bed": "Duits", + "\u4fc4\u8bed": "Russisch", + "\u6ce2\u5170\u8bed": "Pools", + "\u8377\u5170\u8bed": "Nederlands", + "\u745e\u5178\u8bed": "Zweeds", + "\u6377\u514b\u8bed": "Tsjechisch", + "\u73b0\u4ee3\u5e0c\u814a\u8bed": "Modern Grieks", + "\u7f57\u9a6c\u5c3c\u4e9a\u8bed": "Roemeens", + "\u5308\u7259\u5229\u8bed": "Hongaars", + "\u4e4c\u514b\u5170\u8bed": "Oekraïens", + "\u4e39\u9ea6\u8bed": "Deens", + "\u82ac\u5170\u8bed": "Fins", + "\u632a\u5a01\u8bed": "Noors", + "\u514b\u7f57\u5730\u4e9a\u8bed": "Kroatisch", + "\u52a0\u6cf0\u9686\u8bed": "Catalaans", + "\u963f\u62c9\u4f2f\u8bed": "Arabisch", + "\u6cf0\u8bed": "Thais", + "\u8d8a\u5357\u8bed": "Vietnamees", + "\u5370\u5c3c\u8bed": "Indonesisch", + "\u5370\u5730\u8bed": "Hindi", + "\u571f\u8033\u5176\u8bed": "Turks", + "\u9a6c\u6765\u8bed": "Maleis", + "\u5b5f\u52a0\u62c9\u8bed": "Bengaals", + "\u6cf0\u7c73\u5c14\u8bed": "Tamil", + "\u6cf0\u5362\u56fa\u8bed": "Telugu", + "\u9a6c\u62c9\u63d0\u8bed": "Marathi", + "\u4e4c\u5c14\u90fd\u8bed": "Urdu", + "\u6ce2\u65af\u8bed": "Perzisch", + "\u65af\u74e6\u5e0c\u91cc\u8bed": "Swahili", + + // 国家列表 + "\u90ae\u7bb1": "E-mail", + "\u4e2d\u56fd": "China", + "\u7f8e\u56fd": "Verenigde Staten", + "\u52a0\u62ff\u5927": "Canada", + "\u4fc4\u7f57\u65af": "Rusland", + "\u82f1\u56fd": "Verenigd Koninkrijk", + "\u5fb7\u56fd": "Duitsland", + "\u610f\u5927\u5229": "Italië", + "\u6cd5\u56fd": "Frankrijk", + "\u897f\u73ed\u7259": "Spanje", + "\u5357\u975e": "Zuid-Afrika", + "\u6c99\u7279\u963f\u62c9\u4f2f": "Saoedi-Arabië", + "\u571f\u8033\u5176": "Turkije", + "\u65e5\u672c": "Japan", + "\u97e9\u56fd": "Zuid-Korea", + "\u65b0\u52a0\u5761": "Singapore", + "\u9a6c\u6765\u897f\u4e9a": "Maleisië", + "\u6cf0\u56fd": "Thailand", + "\u8d8a\u5357": "Vietnam", + "\u5370\u5ea6": "India", + "\u5df4\u57fa\u65af\u5766": "Pakistan", + "\u83f2\u5f8b\u5bbe": "Filipijnen", + "\u5370\u5ea6\u5c3c\u897f\u4e9a": "Indonesië", + "\u963f\u8054\u914b": "Verenigde Arabische Emiraten", + "\u58a8\u897f\u54e5": "Mexico", + "\u5df4\u897f": "Brazilië", + "\u963f\u6839\u5ef7": "Argentinië", + "\u6fb3\u5927\u5229\u4e9a": "Australië", + "\u65b0\u897f\u5170": "Nieuw-Zeeland", + "\u4e2d\u56fd\u9999\u6e2f": "Hongkong (China)", + "\u4e2d\u56fd\u6fb3\u95e8": "Macau (China)", + "\u4e2d\u56fd\u53f0\u6e7e": "Taiwan (China)", + "\u57c3\u53ca": "Egypte", + "\u5e0c\u814a": "Griekenland", + "\u8377\u5170": "Nederland", + "\u6bd4\u5229\u65f6": "België", + "\u5308\u7259\u5229": "Hongarije", + "\u7f57\u9a6c\u5c3c\u4e9a": "Roemenië", + "\u745e\u58eb": "Zwitserland", + "\u5965\u5730\u5229": "Oostenrijk", + "\u4e39\u9ea6": "Denemarken", + "\u745e\u5178": "Zweden", + "\u632a\u5a01": "Noorwegen", + "\u6ce2\u5170": "Polen", + "\u79d8\u9c81": "Peru", + "\u667a\u5229": "Chili", + "\u54e5\u4f26\u6bd4\u4e9a": "Colombia", + "\u59d4\u5185\u745e\u62c9": "Venezuela", + "\u8461\u8404\u7259": "Portugal", + "\u5362\u68ee\u5821": "Luxemburg", + "\u7231\u5c14\u5170": "Ierland", + "\u51b0\u5c9b": "IJsland", + "\u963f\u5c14\u5df4\u5c3c\u4e9a": "Albanië", + "\u9a6c\u8033\u4ed6": "Malta", + "\u585e\u6d66\u8def\u65af": "Cyprus", + "\u82ac\u5170": "Finland", + "\u4fdd\u52a0\u5229\u4e9a": "Bulgarije", + "\u7acb\u9676\u5b9b": "Litouwen", + "\u62c9\u8131\u7ef4\u4e9a": "Letland", + "\u7231\u6c99\u5c3c\u4e9a": "Estland", + "\u4e4c\u514b\u5170": "Oekraïne", + "\u585e\u5c14\u7ef4\u4e9a": "Servië", + "\u514b\u7f57\u5730\u4e9a": "Kroatië", + "\u65af\u6d1b\u6587\u5c3c\u4e9a": "Slovenië", + "\u6377\u514b": "Tsjechië", + "\u65af\u6d1b\u4f10\u514b": "Slowakije", + "\u5371\u5730\u9a6c\u62c9": "Guatemala", + "\u8428\u5c14\u74e6\u591a": "El Salvador", + "\u6d2a\u90fd\u62c9\u65af": "Honduras", + "\u5c3c\u52a0\u62c9\u74dc": "Nicaragua", + "\u54e5\u65af\u8fbe\u9ece\u52a0": "Costa Rica", + "\u5df4\u62ff\u9a6c": "Panama", + "\u6d77\u5730": "Haïti", + "\u73bb\u5229\u7ef4\u4e9a": "Bolivia", + "\u5384\u74dc\u591a\u5c14": "Ecuador", + "\u5df4\u62c9\u572d": "Paraguay", + "\u4e70\u683c\u74dc\u4f9d": "Uruguay", + "\u6469\u6d1b\u54e5": "Marokko", + "\u963f\u5c14\u53ca\u5229\u4e9a": "Algerije", + "\u7a81\u5c3c\u65af": "Tunesië", + "\u5c3c\u65e5\u5229\u4e9a": "Nigeria", + "\u52a0\u7eb3": "Ghana", + "\u57c3\u585e\u4fc4\u6bd4\u4e9a": "Ethiopië", + "\u80af\u5c3c\u4e9a": "Kenia", + "\u5766\u6851\u5c3c\u4e9a": "Tanzania", + "\u4e4c\u5e72\u8fbe": "Oeganda", + "\u5b5f\u52a0\u62c9\u56fd": "Bangladesh", + "\u4ee5\u8272\u5217": "Israël", + "\u9ecb\u5df4\u5ae9": "Libanon", + "\u7ea6\u65e6": "Jordanië", + "\u4f0a\u62c9\u514b": "Irak", + "\u79d1\u5a01\u7279": "Koeweit", + "\u5df4\u6797": "Bahrein", + "\u5361\u5854\u5c14": "Qatar", + "\u963f\u66fc": "Oman", + "\u963f\u5bcc\u6c57": "Afghanistan", + "\u65af\u91cc\u5170\u5361": "Sri Lanka", + "\u7f05\u7538": "Myanmar", + "\u5c3c\u6cca\u5c14": "Nepal", + "\u8499\u53e4": "Mongolië", + "\u67ec\u57d4\u5be8": "Cambodja", + "\u8001\u631d": "Laos", + "\u6587\u83b1": "Brunei", + "\u4e1c\u5e1d\u6c76": "Oost-Timor", + "\u6590\u6d4e": "Fiji", + "\u6240\u7f57\u95e8\u7fa4\u5c9b": "Salomonseilanden", + "\u521a\u679c\u6c11\u4e3b\u5171\u548c\u56fd": "Democratische Republiek Congo", + "\u5b89\u54e5\u62c9": "Angola", + "\u82cf\u4e39": "Sudan", + "\u9a6c\u5c14\u4ee3\u592b": "Malediven", + "\u4e0d\u4e39": "Bhutan", + "\u6469\u7eb3\u54e5": "Monaco", + "\u5723\u9a6c\u529b\u8bfa": "San Marino", + "\u7259\u4e70\u52a0": "Jamaica", + "\u5df4\u54c8\u9a6c": "Bahama's", + "\u5df4\u5e03\u4e9a\u65b0\u51e0\u5185\u4e9a": "Papoea-Nieuw-Guinea", + "\u8428\u6469\u4e9a": "Samoa", }; diff --git a/lib/core/translations/language/pl_pl.dart b/lib/core/translations/language/pl_pl.dart index 213225eb5..861f05e30 100644 --- a/lib/core/translations/language/pl_pl.dart +++ b/lib/core/translations/language/pl_pl.dart @@ -1,3 +1,4 @@ +// 波兰-波兰语 const Map plPL = { // 通用 'continue': 'Kontynuuj', @@ -18,6 +19,11 @@ const Map plPL = { "unknownError": "Nieznany błąd", "asrConnectionFailed": "Nie udało się połączyć z usługą rozpoznawania mowy. Sprawdź sieć lub spróbuj ponownie później.", + "justNow": "Przed chwilą", + "minutesAgo": "@minutes min temu", + "yesterday": "Wczoraj", + "daysAgo": "@days dni temu", + "hoursAgo": "@hours godz. temu", // 启动页 "slogan": "Łącząc świat, poza dźwiękiem", @@ -28,7 +34,7 @@ const Map plPL = { "explore": "Odkrywaj", "settings": "Ustawienia", - // 语言 + // 语言列表 "followingSystem": "Zgodnie z systemem", "chinese": "Chiński", "english": "Angielski", @@ -72,7 +78,7 @@ const Map plPL = { "arabic": "Arabski", "persian": "Perski", - // 登录页 + // 登录模块 "welcome": "Witaj", "loginTips": "Zaloguj się lub zarejestruj za pomocą numeru telefonu lub adresu e-mail", @@ -101,13 +107,9 @@ const Map plPL = { "resendVerificationCode": "Wyślij kod weryfikacyjny ponownie", "login": "Zaloguj się", "usePasswordLogin": "Zaloguj się hasłem", - - // 隐私政策弹窗 "loginDeclaration": "Oświadczenie Voitrans", // Voitrans 声明 "welcomeToThisApp": "Witaj w Voitrans, prosimy o uważne przeczytanie", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", kliknięcie 'Zgadzam się i wchodzę' oznacza, że przeczytałeś i zgadzasz się z powyższymi umowami. Kliknięcie 'Nie zgadzam się' spowoduje wyjście z aplikacji.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nie zgadzam się", // 不同意 @@ -168,7 +170,31 @@ const Map plPL = { 'checkConnectionStatusFailed': 'Sprawdzenie stanu połączenia nie powiodło się', -// 发现页 + // 蓝牙扫描模块 + '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', + 'needPermission': 'Wymagane uprawnienia', + '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.', + 'bleScanFailedWithError': 'Skanowanie nie powiodło się: @error', + 'bleConnectionSuccess': 'Połączenie udane', + 'bleConnectedToDevice': 'Połączono z @device', + 'bleConnectionFailedWithError': 'Połączenie nie powiodło się: @error', + 'bleDisconnected': 'Rozłączono', + 'bleDeviceDisconnected': 'Urządzenie rozłączone', + 'bleDisconnectFailedWithError': 'Rozłączenie nie powiodło się: @error', + 'signalStrong': 'Silny', + 'signalMedium': 'Średni', + 'signalWeak': 'Słaby', + 'signalVeryWeak': 'Bardzo słaby', + + // 发现页 "searchAi": "Szukaj funkcji AI...", "exploreSlogan": "Inteligentne słuchawki, nieskończone możliwości", "exploreSlogan1": "Inteligentny towarzysz, nieskończone możliwości", @@ -193,211 +219,273 @@ const Map plPL = { "usageStats": "Statystyki użycia", "usageStatsInfo": "Przeglądaj statystyki użycia aplikacji", "scene": "Scenariusz", + // 用量统计模块 - "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": "Czat AI", + "translationStats": "Statystyki tłumaczeń", + "meetingStats": "Statystyki spotkań", + "today": "Dzisiaj", + "thisWeek": "Ten tydzień", + "thisMonth": "Ten miesiąc", + "history": "Historia", + "currentSessionStats": "Statystyki bieżącej sesji", + "translationCount": "Liczba tłumaczeń", + "sessionDuration": "Czas trwania sesji", + "characters": "Znaki", + "recordingDuration": "Czas nagrywania", + "totalApiCalls": "Łączna liczba wywołań API", + "sessionCount": "Liczba sesji", + "totalCharacters": "Łączna liczba znaków", + "apiCallStats": "Statystyki wywołań API", + "translationApi": "API tłumaczeń", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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": "Statystyki wolumenu danych", + "sourceTextCharacters": "Znaki tekstu źródłowego", + "ttsTextCharacters": "Znaki tekstu TTS", + "effectiveAudioDuration": "Efektywny czas trwania audio", + "totalSessionDuration": "Łączny czas trwania sesji", + "costStats": "Statystyki kosztów", + "estimatedCost": "Szacowany koszt", + "dailyCostThreshold": "Dzienny limit kosztów", + "monthlyCostThreshold": "Miesięczny limit kosztów", + "usageBehaviorStats": "Statystyki zachowań użytkownika", + "mostUsedLanguagePair": "Najczęściej używana para językowa", + "mostUsedMode": "Najczęściej używany tryb", + "asrApiCalls": "Wywołania ASR", + "totalAudioDuration": "Łączny czas trwania audio", + "audioFileSize": "Rozmiar pliku audio", + "transcriptBytes": "Rozmiar transkrypcji", + "loadFailed": "Ładowanie nie powiodło się", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) + "Ładowanie statystyk nie powiodło się. Spróbuj ponownie później.", + "cleanupComplete": "Czyszczenie zakończone", + "cleanedOldData": "Wyczyszczono dane starsze niż 90 dni", + "exportFeature": "Funkcja eksportu", + "exportInDevelopment": "Eksport danych jest w trakcie rozwoju", + + // 商品模块 - 通用 + '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": + 'Niewystarczające saldo. Przejdź do odpowiedniej strony doładowania, aby doładować.', + "recharge": 'Przejdź do doładowania', + "aiMemberExpiredDesc": + 'Członkostwo AI wygasło. Przejdź do strony doładowania członkostwa, aby odnowić.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Muzyka i rekomendacje', + 'navigationAndRoutes': 'Nawigacja i trasy', + 'nearbySearch': 'Wyszukiwanie w pobliżu', + 'newsInformation': 'Wiadomości', + 'communicationAssistant': 'Asystent komunikacji', + 'aiHeaderDesc1': + 'Większa pula rozmów, więcej wywołań narzędzi, dłuższy kontekst.', + 'aiHeaderDesc2': + 'Odpowiednie do pytań i odpowiedzi, podsumowań, analizy i wykonywania zadań.', + 'musicSearchPlaybackControl': + 'Wyszukiwanie w bibliotece i sterowanie odtwarzaniem muzyki', + 'smartPlaylistAndSimilarRecommendations': + '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': + 'Szablonowe wiadomości i zaplanowane przypomnienia', + 'aiDisclaimer': + 'Funkcje zależą od uprawnień urządzenia, dostępności usług i warunków sieci.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transkrypcja w czasie rzeczywistym', + 'sceneLexicon': 'Słownik scenariuszy', + 'subtitleDisplay': 'Napisy', + 'transHeaderDesc1': + 'Tłumaczenie symultaniczne i tłumaczenie tekstu w czasie rzeczywistym z niskim opóźnieniem.', + 'transHeaderDesc2': + 'Odpowiednie do podróży, spotkań biznesowych, przemówień i nauki.', + 'translateZhEn': 'Tłumaczenie chińsko-angielskie', + 'lowLatencyVoiceBroadcast': 'Transmisja głosowa z niskim opóźnieniem', + 'multiLangTextTranslation': 'Wielojęzyczne tłumaczenie tekstu', + 'termOptimizationContextPreserve': + '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': + 'Wydajność tłumaczenia zależy od mikrofonu, opóźnień sieci i hałasu otoczenia.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Nagrywanie spotkania', + 'transcriptionAndSummary': 'Transkrypcja i podsumowanie', + 'keywordSearch': 'Wyszukiwanie słów kluczowych', + 'collaborationSharing': 'Współpraca i udostępnianie', + 'meetingHeaderDesc1': + 'Nagrywanie audio, transkrypcja, wyszukiwanie słów kluczowych i automatyczne podsumowanie, aby zwiększyć efektywność spotkań.', + 'meetingHeaderDesc2': + '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': + 'Używaj w cichym otoczeniu; wydajność zależy od mikrofonu i sieci.', + + // 商品模块 - VIP会员页 + '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': + 'Rzeczywiste korzyści zależą od szczegółów pakietu i mogą się zmieniać wraz z wersjami.', + + // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', 'ai_002_name': 'AI Basic 500', 'ai_003_name': 'AI Basic 1000', 'meet_001_name': 'Meeting Basic 100', 'meet_002_name': 'Meeting Basic 500', 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + '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': 'Aplikacja: VoiTrans · Dostarczone przez: VoiTrans', + 'iapCustomerServiceQQLabel': 'Obsługa klienta IAP QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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', - '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', - - // 商务会议助手页 + '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': 'Przypomnienie utworzone — wypróbuj inne polecenia', + 'guidePhoneStart': 'Powiedz Lily: "Zadzwoń do mamy"', + 'guidePhoneInput': 'Zadzwoń do mamy', + 'guidePhoneSend': 'Lily wykona połączenie', + 'guidePhoneEnd': 'Połączenie wykonane — wypróbuj inne polecenia', + 'guideSmsStart': 'Powiedz Lily: "Wyślij SMS do taty: Wrócę na obiad"', + 'guideSmsInput': 'SMS do taty: Wrócę na obiad', + 'guideSmsSend': 'Lily wyśle wiadomość', + 'guideSmsEnd': 'Wiadomość wysłana — sterowanie głosem jest wygodne', + + // Meeting模块 - 首页与导航 "startMeeting": "Rozpocznij spotkanie", 'edit': 'Edytuj', 'delete': 'Usuń', @@ -409,250 +497,272 @@ const Map plPL = { 'recordingDetails': 'Szczegóły nagrania', 'aiSummary': 'Podsumowanie AI', 'meetingTranscript': 'Transkrypcja spotkania', - - // Meeting模块 - 导航和基础功能 - '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', - //'generating': '正在生成...', - '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': 'Podsumuj ponownie', + 'dateAndTime': 'Data i godzina', + 'location': 'Lokalizacja', + 'attendees': 'Uczestnicy', + 'inputLocation': 'Wpisz lokalizację', + 'inputAttendees': 'Wpisz uczestników', + + // Meeting模块 - 模版与生成 + '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': + 'Analiza AI identyfikuje kluczowe zdarzenia w nagraniach, umożliwiając wybór ważnych zdarzeń do generowania AI.', + + // Meeting模块 - 文件操作 + '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': 'Udostępnij mapę myśli', + 'shareSuccess': 'Udostępnianie zakończone sukcesem', + + // Meeting模块 - AI问答 + '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': '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': 'Nazwij bieżącego mówcę', + 'recentlyUsedNames': 'Ostatnio używane nazwy', + 'applyToCurrentParagraph': 'Zastosuj do bieżącego akapitu', + 'totalTime': 'Łączny czas', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Mówcy w podsumowaniu będą aktualizowani automatycznie', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synchronizuj z chmurą', + 'syncToCloudTip': + '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', - - // 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', + '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': '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.', - - // Meeting模块 - 升级会员 - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Zastosuj do wszystkich akapitów tego mówcy', - 'summaryWillBeUpdatedAutomatically': - 'Podsumowanie będzie automatycznie aktualizowane na podstawie szablonu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktywowane natychmiast po zakupie, ważne przez 2 lata od aktywacji.', + 'purchase': 'Kup', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Język nagrania', + 'cantonese': 'Kantoński', + 'sichuan': 'Dialekt syczuański', + 'shanghai': 'Dialekt szanghajski', + + // Meeting模块 - 错误提示 + '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', // 设置页 "systemSettings": "Ustawienia systemowe", @@ -661,10 +771,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", @@ -706,43 +816,31 @@ const Map plPL = { "Aktualizacja wersji oprogramowania układowego słuchawek BLE", "deviceManagement": "Zarządzanie urządzeniami", "manageConnectedDevices": "Zarządzaj sparowanymi urządzeniami Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Masz już najnowszą wersję {version}', 'checkUpdateFailed': 'Sprawdzenie aktualizacji nie powiodło się', 'networkErrorRetry': 'Błąd sieci, spróbuj ponownie później', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Czat głosowy w czasie rzeczywistym", "realtimeVoiceChatInfo": "Doświadcz funkcji inteligentnej interakcji głosowej (podgląd funkcji)", "loading": "Ładowanie...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Wyczyść historię czatu", "online": "Online", @@ -771,22 +869,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Odpowiadać na pytania i dostarczać informacji\n\n' '• Tłumaczyć głosowo w czasie rzeczywistym\n\n' @@ -807,11 +907,11 @@ const Map plPL = { 'startPhoneCallMode': 'Rozpocznij tryb dzwonienia, rozpocznij wprowadzanie głosowe', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Wpisz swoją wiadomość tutaj...', // 全屏编辑器输入提示 'characterCount': '{count} znaków', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiuj', 'copySuccess': 'Skopiowano pomyślnie', 'report': 'Zgłoś', @@ -819,7 +919,6 @@ const Map plPL = { 'submitFailed': 'Przesyłanie nie powiodło się', 'reportSubmitted': 'Zgłoszenie zostało przesłane, zajmiemy się nim jak najszybciej', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Szkodliwe/Niebezpieczne', 'pornographicVulgar': 'Pornograficzne/Wulgarne', 'misleadingAttack': 'Wprowadzające w błąd/Atak', @@ -830,17 +929,21 @@ const Map plPL = { 'other': 'Inne', 'reportDescriptionHint': 'Chcielibyśmy wiedzieć, dlaczego zgłaszasz, możesz opisać problem, z którym się spotkałeś.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Wygenerowano przez AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Wywołanie narzędzia', + 'noResult': 'Brak wyniku', + 'noToolCallContentToCopy': 'Brak treści wywołania narzędzia do skopiowania', + 'toolCallDetails': 'Szczegóły wywołania narzędzia:', + 'toolCallContentCopied': 'Treść wywołania narzędzia skopiowana do schowka', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Oto kilka polecanych utworów:', 'playList': 'Lista odtwarzania', 'moreMusic': 'Więcej muzyki', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'godz.', // 小时单位 @@ -855,7 +958,30 @@ const Map plPL = { "bicycling": 'Rowerem', "tsransit": 'Transport publiczny', - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Wybierz aplikację nawigacyjną', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Nawiguj z Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Nawiguj z Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Nawiguj z Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Nawiguj z Apple Maps', + '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', + 'cannotPlaySong': 'Nie można odtworzyć utworu', + 'openMapError': 'Błąd otwierania mapy', + 'pleaseInstallAmapApp': 'Najpierw zainstaluj aplikację Amap', + 'pleaseInstallBaiduMapApp': 'Najpierw zainstaluj aplikację Baidu Maps', + 'appleMapStartFailed': 'Nie udało się uruchomić Apple Maps', + 'appleMapUnavailable': 'Apple Maps niedostępne', + 'openAppleMapError': 'Błąd otwierania Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Zapytanie o warunki pogodowe:', 'highest': 'Najwyższa', 'lowest': 'Najniższa', @@ -885,18 +1011,8 @@ const Map plPL = { "friday": "Pt", "saturday": "Sob", "sunday": "Niedz", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Słonecznie", "partlyCloudy": "Częściowe zachmurzenie", "partlySunny": "Częściowo słonecznie", @@ -917,7 +1033,141 @@ const Map plPL = { "haze": "Smog", "strongWind": "Silny wiatr", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Tłumaczenie obrazu", + "textTranslation": "Tłumaczenie tekstu", + + // 翻译模块 - 主页 + "translationHistory": "Historia tłumaczeń", + "enableRecording": "Włącz nagrywanie", + "viewAudioFiles": "Wyświetl pliki audio", + "headsetUser": "Użytkownik słuchawek", + "phoneUser": "Użytkownik telefonu", + "selectSourceLanguage": "Wybierz język źródłowy", + "selectTargetLanguage": "Wybierz język docelowy", + "me": "Ja", + "counterPart": "Rozmówca", + "bluetoothCallStateError": + "Upewnij się, że zestaw słuchawkowy Bluetooth jest połączony z telefonem i trwa rozmowa", + "autoDetect": "Automatyczne wykrywanie", // 自动检测 + + // 翻译模块 - 文本翻译 + "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', + 'deleteTranslationRecordError': 'Błąd usuwania rekordu tłumaczenia: @error', + "translationFailed": "Tłumaczenie nie powiodło się", + "translating": "Tłumaczenie", + "translate": "Tłumacz", + "pleaseInputText": "Wprowadź tekst", + "inputTextToTranslate": "Wprowadź tekst do przetłumaczenia", + "textTooLong": "Tekst jest zbyt długi, maks. 5000 znaków", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Brak historii", + "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ąć.", + "unknownLanguage": "Nieznany język", + "deleteSessionRecord": "Usuń zapis sesji", + "deleteSessionConfirm": + "Czy na pewno chcesz usunąć wszystkie zapisy tłumaczeń dla tej sesji? Tej operacji nie można cofnąć.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Przetwarzanie obrazu lub tłumaczenie nie powiodło się. Spróbuj ponownie.\nBłąd: {error}", + "imageTooLarge": "Rozmiar obrazu przekracza limit 4 MB", + "imageTooLargeHint": + "Rozmiar obrazu przekracza 4 MB. Zmniejsz jakość lub wymiary i spróbuj ponownie", + "emptyTranslationResult": "API tłumaczenia obrazu zwróciło pusty wynik", + "imageTranslationFailedTryLater": + "Tłumaczenie obrazu nie powiodło się. Problem z siecią lub limit. Spróbuj później", + "imageTranslationApiException": + "Wyjątek API tłumaczenia obrazu. Sprawdź sieć i spróbuj ponownie", + "permissionRequired": "Wymagane uprawnienie", + "cameraPermissionRequired": "Wymagane uprawnienie aparatu do robienia zdjęć", + "photoAlbumPermissionRequired": + "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", + "noAudioFiles": "Brak plików audio", + "calculating": "Obliczanie...", + "playing": "Odtwarzanie...", + "paused": "Wstrzymano", + "clickToPlay": "Kliknij, aby odtworzyć", + "rename": "Zmień nazwę", + "smartTranscription": "Inteligentna transkrypcja", + "renameAudioFile": "Zmień nazwę pliku audio", + "enterNewFileName": "Wprowadź nową nazwę pliku", + + // 翻译模块 - 翻译详情 + "originalRecord": "Oryginalny zapis", + "recordSummary": "Podsumowanie zapisu", + "clickToGenerateSummary": + "Kliknij przycisk poniżej, aby wygenerować podsumowanie sesji", + "summaryContent": "Treść podsumowania", + "copied": "Skopiowano", + "summaryCopiledToClipboard": "Podsumowanie skopiowano do schowka", + "extractSummary": "Wyodrębnij podsumowanie", + "summaryGenerated": "Wygenerowano podsumowanie", + "generating": "Generowanie...", + "regenerate": "Wygeneruj ponownie", + "summaryTimeoutMessage": + "Przekroczono czas oczekiwania na żądanie wygenerowania podsumowania, może to być spowodowane problemami z siecią lub zajętym serwerem.", + "deleteTranslationRecord": "Usuń zapis tłumaczenia", + "deleteTranslationConfirm": + "Czy na pewno chcesz usunąć ten zapis tłumaczenia? Tej operacji nie można cofnąć.", + "originalText": "Tekst oryginalny", + "translatedText": "Tekst przetłumaczony", + "sessionSummary": "Podsumowanie sesji", + "cannotShare": "Nie można udostępnić", + "generateSummaryFirst": "Najpierw wygeneruj podsumowanie", + "translationSessionRecord": "Zapis sesji tłumaczenia", + + // 个人资料模块 "editProfile": "Edytuj dane osobowe", "avatar": "Awatar", "nickname": "Pseudonim", @@ -931,10 +1181,8 @@ const Map plPL = { 'deleteAccount': 'Usuń konto', 'deleteAccountTips': 'Czy na pewno chcesz trwale usunąć swoje konto? Tej operacji nie można cofnąć.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Wyczyść pamięć podręczną', + 'cleanTips': 'Czy na pewno chcesz wyczyścić osobistą pamięć podręczną?', 'networkConnectionFailed': 'Błąd połączenia sieciowego, sprawdź ustawienia sieci i spróbuj ponownie', 'serverTemporarilyUnavailable': @@ -952,10 +1200,6 @@ const Map plPL = { 'Błąd połączenia sieciowego, sprawdź ustawienia sieci', 'serverInternalErrorRetryLater': 'Wewnętrzny błąd serwera, spróbuj ponownie później', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresja obrazu nie powiodła się', 'avatarUpdateFailed': 'Aktualizacja awatara nie powiodła się', 'usernameCannotBeEmpty': 'Nazwa użytkownika nie może być pusta', @@ -967,8 +1211,6 @@ const Map plPL = { 'accountPermanentlyDeleted': 'Konto zostało trwale usunięte', 'deleteAccountFailedRetry': 'Usuwanie konta nie powiodło się, spróbuj ponownie', - - // 账号服务相关 'clearUserDataFailed': 'Wyczyszczenie danych użytkownika nie powiodło się', // 清理用户数据失败 'deleteUserDataFailed': @@ -987,21 +1229,25 @@ const Map plPL = { 'accountServiceInitialized': 'Usługa konta została zainicjowana', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Pamięć', + 'meetingStoragePermissionExplanation': + 'Potrzebujemy uprawnień do pamięci, aby można było wybrać i przesłać pliki audio.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kontakty', + 'notification': 'Powiadomienia', 'alarm': 'Alarm', 'calendarWrite': 'Zapis do kalendarza', 'calendarFullAccess': 'Pełny dostęp do kalendarza', @@ -1009,7 +1255,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': @@ -1028,80 +1274,92 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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', + + // 版本更新 'newVersionFound': 'Znaleziono nową wersję', // 版本更新对话框标题 'remindLater': 'Przypomnij później', // 稍后提醒按钮 'updateNow': 'Zaktualizuj teraz', // 立即更新按钮 @@ -1112,253 +1370,7 @@ const Map plPL = { 'updateErrorRetry': 'Wystąpił błąd podczas aktualizacji, spróbuj ponownie później', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Chiny", - "美国": "Stany Zjednoczone", - "加拿大": "Kanada", - "俄罗斯": "Rosja", - "英国": "Wielka Brytania", - "德国": "Niemcy", - "意大利": "Włochy", - "法国": "Francja", - "西班牙": "Hiszpania", - "南非": "Republika Południowej Afryki", - "沙特阿拉伯": "Arabia Saudyjska", - "土耳其": "Turcja", - "日本": "Japonia", - "韩国": "Korea Południowa", - "新加坡": "Singapur", - "马来西亚": "Malezja", - "泰国": "Tajlandia", - "越南": "Wietnam", - "印度": "Indie", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipiny", - "印度尼西亚": "Indonezja", - "阿联酋": "Zjednoczone Emiraty Arabskie", - "墨西哥": "Meksyk", - "巴西": "Brazylia", - "阿根廷": "Argentyna", - "澳大利亚": "Australia", - "新西兰": "Nowa Zelandia", - "中国香港": "Hongkong (Chiny)", - "中国澳门": "Makau (Chiny)", - "中国台湾": "Tajwan (Chiny)", - "埃及": "Egipt", - "希腊": "Grecja", - "荷兰": "Holandia", - "比利时": "Belgia", - "匈牙利": "Węgry", - "罗马尼亚": "Rumunia", - "瑞士": "Szwajcaria", - "奥地利": "Austria", - "丹麦": "Dania", - "瑞典": "Szwecja", - "挪威": "Norwegia", - "波兰": "Polska", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Wenezuela", - "葡萄牙": "Portugalia", - "卢森堡": "Luksemburg", - "爱尔兰": "Irlandia", - "冰岛": "Islandia", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cypr", - "芬兰": "Finlandia", - "保加利亚": "Bułgaria", - "立陶宛": "Litwa", - "拉脱维亚": "Łotwa", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Chorwacja", - "斯洛文尼亚": "Słowenia", - "捷克": "Czechy", - "斯洛伐克": "Słowacja", - "危地马拉": "Gwatemala", - "萨尔瓦多": "Salwador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostaryka", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Boliwia", - "厄瓜多尔": "Ekwador", - "巴拉圭": "Paragwaj", - "乌拉圭": "Urugwaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Algieria", - "突尼斯": "Tunezja", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenia", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesz", - "以色列": "Izrael", - "黎巴嫩": "Liban", - "约旦": "Jordania", - "伊拉克": "Irak", - "科威特": "Kuwejt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Mjanma", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Kambodża", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor Wschodni", - "斐济": "Fidżi", - "所罗门群岛": "Wyspy Salomona", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Historia tłumaczeń", - "enableRecording": "Włącz nagrywanie", - "viewAudioFiles": "Wyświetl pliki audio", - "headsetUser": "Użytkownik słuchawek", - "phoneUser": "Użytkownik telefonu", - "selectSourceLanguage": "Wybierz język źródłowy", - "selectTargetLanguage": "Wybierz język docelowy", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Brak historii", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Wyczyść historię", - "clearHistoryConfirm": - "Czy na pewno chcesz wyczyścić całą historię tłumaczeń? Tej operacji nie można cofnąć.", - "unknownLanguage": "Nieznany język", - "deleteSessionRecord": "Usuń zapis sesji", - "deleteSessionConfirm": - "Czy na pewno chcesz usunąć wszystkie zapisy tłumaczeń dla tej sesji? Tej operacji nie można cofnąć.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Przetłumacz pliki audio", - "noAudioFiles": "Brak plików audio", - "calculating": "Obliczanie...", - "playing": "Odtwarzanie...", - "paused": "Wstrzymano", - "clickToPlay": "Kliknij, aby odtworzyć", - "rename": "Zmień nazwę", - "smartTranscription": "Inteligentna transkrypcja", - "renameAudioFile": "Zmień nazwę pliku audio", - "enterNewFileName": "Wprowadź nową nazwę pliku", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Oryginalny zapis", - "recordSummary": "Podsumowanie zapisu", - "clickToGenerateSummary": - "Kliknij przycisk poniżej, aby wygenerować podsumowanie sesji", - "summaryContent": "Treść podsumowania", - "copied": "Skopiowano", - "summaryCopiledToClipboard": "Podsumowanie skopiowano do schowka", - "extractSummary": "Wyodrębnij podsumowanie", - "summaryGenerated": "Wygenerowano podsumowanie", - "generating": "Generowanie...", - "regenerate": "Wygeneruj ponownie", - "summaryTimeoutMessage": - "Przekroczono czas oczekiwania na żądanie wygenerowania podsumowania, może to być spowodowane problemami z siecią lub zajętym serwerem.", - "deleteTranslationRecord": "Usuń zapis tłumaczenia", - "deleteTranslationConfirm": - "Czy na pewno chcesz usunąć ten zapis tłumaczenia? Tej operacji nie można cofnąć.", - "originalText": "Tekst oryginalny", - "translatedText": "Tekst przetłumaczony", - "sessionSummary": "Podsumowanie sesji", - "cannotShare": "Nie można udostępnić", - "generateSummaryFirst": "Najpierw wygeneruj podsumowanie", - "translationSessionRecord": "Zapis sesji tłumaczenia", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Parowanie urządzenia", "connectYourDeepSoundHeadset": "Połącz swoje słuchawki Voitrans", "bind": "Powiąż", @@ -1367,14 +1379,11 @@ const Map plPL = { "autoInputCode": "Automatyczne wprowadzanie kodu", "skipBinding": "Pomiń powiązanie", "rescan": "Skanuj ponownie", - "verifyingDevice": "Weryfikacja urządzenia...", "confirmBinding": "Potwierdź powiązanie", "associatingDevice": "Kojarzenie urządzenia...", "goToBluetoothSettings": "Przejdź do ustawień Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gotowy do parowania", "preparingPairingEnvironment": "Przygotowywanie środowiska do parowania...", "connectDeepSoundViaSystemBluetooth": @@ -1384,8 +1393,6 @@ const Map plPL = { "waitingCompletePairing": "Poczekaj, kończenie parowania...", "pairingSuccessRedirecting": "Parowanie zakończone sukcesem! Przekierowywanie na stronę główną...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Upewnij się, że jesteś połączony z urządzeniem Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1398,19 +1405,12 @@ const Map plPL = { "authorizationFailedCheckCode": "Autoryzacja nie powiodła się, sprawdź, czy kod autoryzacji jest poprawny", "pairingFailedRetry": "Parowanie nie powiodło się, spróbuj ponownie", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Włącz Bluetooth', 'deviceDisconnected': 'Urządzenie odłączone', 'readyToStartPairing': 'Gotowy do rozpoczęcia parowania', 'checkingEnvironment': 'Sprawdzanie środowiska...', 'ensureHeadsetOnAndPairingMode': 'Upewnij się, że słuchawki są włączone i w trybie parowania', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Ustanawianie bezpiecznego połączenia...', 'needManualBindingAuthCode': 'Wymagany jest kod autoryzacji do ręcznego powiązania...', @@ -1433,21 +1433,30 @@ const Map plPL = { 'bleConnectionFailed': 'Połączenie BLE nie powiodło się', 'deviceAuthorizationFailedCheckCode': 'Autoryzacja urządzenia nie powiodła się, sprawdź kod autoryzacji', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Opinie użytkowników", 'feedbackInfo': 'Prześlij opinię lub sugestię', 'feedbackDescription': 'Opisz problem, który napotkałeś, lub swoją sugestię', @@ -1475,13 +1484,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", @@ -1490,7 +1500,62 @@ const Map plPL = { "removeEarbudsEnsureBattery": "Wyjmij obie słuchawki i upewnij się, że poziom naładowania baterii obu wynosi ponad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Znaleziono nową wersję @version', + '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?', + 'otaPairLater': 'Sparuj później', + 'otaPairNow': 'Sparuj teraz', + 'okConfirm': 'OK', + + // 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', + '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', + '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', + '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', + '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', + 'otaGetVersionInfoFailed': 'Nie udało się pobrać informacji o wersji', + 'otaCheckingDeviceStatus': 'Sprawdzanie stanu urządzenia...', + '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...', + 'otaUpgradeStarted': 'Aktualizacja OTA rozpoczęta...', + 'otaUpgradeProgressWithPercent': 'Postęp aktualizacji: @percent%', + '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', + 'otaDeviceDisconnected': 'Urządzenie rozłączone', + 'otaDeviceConnected': 'Urządzenie podłączone', + + // 音乐模块 "noMusic": "Brak muzyki", // 暂无音乐 "noPlayingMusic": "Brak odtwarzanej muzyki", // 暂无播放音乐 "unknownSong": "Nieznana piosenka", // 未知歌曲 @@ -1538,22 +1603,122 @@ const Map plPL = { "波斯语": "Perski", "斯瓦希里语": "Suahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": "Chiny", + "美国": "Stany Zjednoczone", + "加拿大": "Kanada", + "俄罗斯": "Rosja", + "英国": "Wielka Brytania", + "德国": "Niemcy", + "意大利": "Włochy", + "法国": "Francja", + "西班牙": "Hiszpania", + "南非": "Republika Południowej Afryki", + "沙特阿拉伯": "Arabia Saudyjska", + "土耳其": "Turcja", + "日本": "Japonia", + "韩国": "Korea Południowa", + "新加坡": "Singapur", + "马来西亚": "Malezja", + "泰国": "Tajlandia", + "越南": "Wietnam", + "印度": "Indie", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipiny", + "印度尼西亚": "Indonezja", + "阿联酋": "Zjednoczone Emiraty Arabskie", + "墨西哥": "Meksyk", + "巴西": "Brazylia", + "阿根廷": "Argentyna", + "澳大利亚": "Australia", + "新西兰": "Nowa Zelandia", + "中国香港": "Hongkong (Chiny)", + "中国澳门": "Makau (Chiny)", + "中国台湾": "Tajwan (Chiny)", + "埃及": "Egipt", + "希腊": "Grecja", + "荷兰": "Holandia", + "比利时": "Belgia", + "匈牙利": "Węgry", + "罗马尼亚": "Rumunia", + "瑞士": "Szwajcaria", + "奥地利": "Austria", + "丹麦": "Dania", + "瑞典": "Szwecja", + "挪威": "Norwegia", + "波兰": "Polska", + "秘鲁": "Peru", + "智利": "Chile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Wenezuela", + "葡萄牙": "Portugalia", + "卢森堡": "Luksemburg", + "爱尔兰": "Irlandia", + "冰岛": "Islandia", + "阿尔巴尼亚": "Albania", + "马耳他": "Malta", + "塞浦路斯": "Cypr", + "芬兰": "Finlandia", + "保加利亚": "Bułgaria", + "立陶宛": "Litwa", + "拉脱维亚": "Łotwa", + "爱沙尼亚": "Estonia", + "乌克兰": "Ukraina", + "塞尔维亚": "Serbia", + "克罗地亚": "Chorwacja", + "斯洛文尼亚": "Słowenia", + "捷克": "Czechy", + "斯洛伐克": "Słowacja", + "危地马拉": "Gwatemala", + "萨尔瓦多": "Salwador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostaryka", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Boliwia", + "厄瓜多尔": "Ekwador", + "巴拉圭": "Paragwaj", + "乌拉圭": "Urugwaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Algieria", + "突尼斯": "Tunezja", + "尼日利亚": "Nigeria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiopia", + "肯尼亚": "Kenia", + "坦桑尼亚": "Tanzania", + "乌干达": "Uganda", + "孟加拉国": "Bangladesz", + "以色列": "Izrael", + "黎巴嫩": "Liban", + "约旦": "Jordania", + "伊拉克": "Irak", + "科威特": "Kuwejt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Mjanma", + "尼泊尔": "Nepal", + "蒙古": "Mongolia", + "柬埔寨": "Kambodża", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Timor Wschodni", + "斐济": "Fidżi", + "所罗门群岛": "Wyspy Salomona", + "刚果民主共和国": "Demokratyczna Republika Konga", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Malediwy", + "不丹": "Bhutan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamajka", + "巴哈马": "Bahamy", + "巴布亚新几内亚": "Papua Nowa Gwinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/pt_pt.dart b/lib/core/translations/language/pt_pt.dart index a8ae57835..f83cf83d1 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,6 +19,11 @@ const Map ptPT = { "unknownError": "Erro Desconhecido", "asrConnectionFailed": "Falha na ligação ao serviço de reconhecimento de voz. Verifique a rede ou tente novamente mais tarde.", + "justNow": "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", @@ -28,7 +34,7 @@ const Map ptPT = { "explore": "Explorar", "settings": "Definições", - // 语言 + // 语言列表 "followingSystem": "Seguir Sistema", "chinese": "Chinês", "english": "Inglês", @@ -49,7 +55,7 @@ const Map ptPT = { "malay": "Malaio", "turkish": "Turco", "polish": "Polaco", - "filipino": "Filipino", + "filipino": 'Filipino', "dutch": "Holandês", "swedish": "Sueco", "danish": "Dinamarquês", @@ -72,7 +78,7 @@ const Map ptPT = { "arabic": "Árabe", "persian": "Persa", - // 登录页 + // 登录模块 "welcome": "Bem-vindo", "loginTips": "Faça login ou registe-se com o seu número de telemóvel ou e-mail", @@ -101,13 +107,9 @@ const Map ptPT = { "resendVerificationCode": "Reenviar código de verificação", "login": "Iniciar Sessão", "usePasswordLogin": "Iniciar sessão com palavra-passe", - - // 隐私政策弹窗 "loginDeclaration": "Declaração Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bem-vindo à Voitrans, por favor, leia atentamente", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", clicar em 'Concordo e Entrar' significa que leu e concorda com os acordos acima. Clicar em 'Discordo' sairá da aplicação.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Discordo", // 不同意 @@ -170,7 +172,31 @@ const Map ptPT = { 'right': 'Direita', 'checkConnectionStatusFailed': 'Falha ao verificar o estado da conexão', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Falha na inicializacao do Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Sao necessarias permissoes de Bluetooth e localizacao para procurar dispositivos', + 'permissionRequestFailedWithError': + 'Falha na solicitacao de permissao: @error', + 'needPermission': 'Permissao necessaria', + 'blePermissionDialogContent': + 'Este aplicativo precisa de permissoes de Bluetooth e localizacao para procurar dispositivos. Ative-as nas Configuracoes.', + 'needEnableBluetooth': 'Ativar Bluetooth', + 'enableBluetoothDialogContent': + 'Ative o Bluetooth para procurar e conectar dispositivos.', + 'bleScanFailedWithError': 'Falha na busca: @error', + 'bleConnectionSuccess': 'Conexao bem-sucedida', + 'bleConnectedToDevice': 'Conectado a @device', + 'bleConnectionFailedWithError': 'Falha na conexao: @error', + 'bleDisconnected': 'Desconectado', + 'bleDeviceDisconnected': 'Dispositivo desconectado', + 'bleDisconnectFailedWithError': 'Falha ao desconectar: @error', + 'signalStrong': 'Forte', + 'signalMedium': 'Medio', + 'signalWeak': 'Fraco', + 'signalVeryWeak': 'Muito fraco', + + // 发现页 "searchAi": "Pesquisar funções de IA...", "exploreSlogan": "Auriculares inteligentes, possibilidades infinitas", "exploreSlogan1": "Companhia inteligente, possibilidades infinitas", @@ -195,118 +221,161 @@ const Map ptPT = { "usageStats": "Estatísticas de Uso", "usageStatsInfo": "Visualize as estatísticas de uso da sua aplicação", "scene": "Cenário", + // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "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", - //"aiSummary": "AI摘要", - "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.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Tradução Básica 100', - 'trans_002_name': 'Tradução Básica 500', - 'trans_003_name': 'Tradução Básica 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Inclui 100 traduções (voz/texto).', - 'trans_002_desc': 'Inclui 500 traduções (voz/texto).', - 'trans_003_desc': 'Inclui 1000 traduções (voz/texto).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + "Falha ao carregar estatísticas. Tente novamente mais tarde.", + "cleanupComplete": "Limpeza Concluída", + "cleanedOldData": "Dados com mais de 90 dias foram eliminados", + "exportFeature": "Função de Exportação", + "exportInDevelopment": "A exportação de dados está em desenvolvimento", + + // 商品模块 - 通用 + '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', + 'paymentFailedTryAgain': 'Pagamento falhou. Por favor, tente novamente.', + 'selectPaymentMethod': 'Selecione o método de pagamento', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Falha ao criar pedido do WeChat', + 'alipayOrderCreateFailed': 'Falha ao criar pedido do Alipay', + 'appleOrderCreateFailed': 'Falha ao criar pedido da Apple', + 'googleOrderCreateFailed': 'Falha ao criar pedido do Google', + 'paypalOrderCreateFailed': 'Falha ao criar pedido do PayPal', + 'paymentException': 'Exceção de pagamento', + 'paymentLaunchFailed': 'Falha ao iniciar o pagamento', + 'paymentExceptionWithError': 'Exceção de pagamento: @error', + 'paymentProcessingCheckLater': + 'O seu pedido está a ser processado. Por favor, verifique mais tarde.', + 'paymentResultQueryException': + 'Falha ao consultar o resultado do pagamento: @error', + 'orderConfirmedQuotaRefreshed': + 'Pedido confirmado. A sua quota foi atualizada.', + 'paymentCompletedConfirming': 'Pagamento concluído. A confirmar…', + 'paymentCancelled': 'Pagamento cancelado', + 'paypalOpenedCompleteInBrowser': + 'PayPal aberto. Por favor, conclua o pagamento no seu navegador.', + 'paypalOpenFailed': 'Não é possível abrir a página de pagamento do PayPal', + 'paymentTestTitle': 'Teste de pagamento', + 'paymentTestOrderInfo': 'Informações do pedido de teste', + 'paymentTestProductId': 'ID do produto', + 'paymentTestProductDescription': 'Descrição do produto', + 'paymentTestWechatDescription': 'Teste de pagamento via WeChat', + 'paymentTestAlipayDescription': 'Teste de pagamento via Alipay', + 'paymentTestAmount': 'Montante', + 'paymentTestSelectAmount': 'Selecione o montante de teste', + 'paying': 'A pagar...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Estado do pagamento', + 'errorInfoWithMessage': 'Erro: @message', + 'retest': 'Testar novamente', + 'paymentTestInstructionsTitle': 'Instruções', + 'paymentTestInstructionsContent': + '1. Selecione um montante de teste (recomendado: ¥0.01)\n2. Clique no botão de pagamento para iniciar\n3. Conclua o pagamento na aplicação de pagamento\n4. Volte para verificar o resultado', + 'startingWechatPayment': 'A iniciar o WeChat Pay...', + 'startingAlipayPayment': 'A iniciar o Alipay...', + 'wechatPaymentSuccess': 'Pagamento via WeChat Pay bem-sucedido!', + 'wechatPaymentFailed': 'Falha no WeChat Pay', + 'wechatPaymentLaunchFailed': 'Falha ao iniciar o WeChat Pay', + 'cannotLaunchWechatPayment': 'Não é possível iniciar o WeChat Pay', + 'wechatPaymentException': 'Exceção do WeChat Pay', + 'wechatPaymentTestCompleted': 'Teste do WeChat Pay concluído', + 'alipayPaymentSuccess': 'Pagamento via Alipay bem-sucedido!', + 'alipayPaymentFailed': 'Falha no Alipay', + 'alipayPaymentLaunchFailed': 'Falha ao iniciar o Alipay', + 'cannotLaunchAlipayPayment': 'Não é possível iniciar o Alipay', + 'alipayPaymentException': 'Exceção do Alipay', + "insufficientIntegral": "Pontos insuficientes", + "insufficientBalanceDesc": + 'Saldo insuficiente. Vá à página de recarga correspondente para recarregar.', + "recharge": 'Ir para recarregar', + "aiMemberExpiredDesc": + 'A subscrição de IA expirou. Vá à página de recarga da subscrição para renovar.', + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Música e Recomendações', + 'navigationAndRoutes': 'Navegação e Rotas', + 'nearbySearch': 'Pesquisa Nas Proximidades', + 'newsInformation': 'Notícias', + 'communicationAssistant': 'Assistente de Comunicação', + 'aiHeaderDesc1': + 'Maior quota de conversação, mais chamadas de ferramentas, comprimento de contexto alargado.', + 'aiHeaderDesc2': + 'Adequado para Q&A de agente, resumo, análise e execução de tarefas.', + 'musicSearchPlaybackControl': + 'Pesquisa de biblioteca musical e controlo de reprodução', + 'smartPlaylistAndSimilarRecommendations': + 'Lista de reprodução inteligente e recomendações de músicas semelhantes', + 'routePlanningAndCongestionAvoidance': + 'Planeamento de rotas e evitamento de congestionamento', + 'voiceBroadcastAndWaypoints': + 'Transmissão de voz e configuração de pontos de passagem', + 'realTimeWeatherForecast': 'Meteorologia em tempo real e previsão', + 'clothingAdviceAndTravelReminders': + 'Conselhos de vestuário e lembretes de viagem', + 'poiSearchFoodGasParking': + 'Pesquisa POI: restauração / combustível / estacionamento', + 'ratingsHoursAndDirectRoutes': + 'Avaliações, horário de funcionamento e rota direta', + 'hotNewsAndTopicOverview': 'Notícias em destaque e visão geral de tópicos', + 'longArticleSummariesAndKeyPoints': + 'Resumos de artigos longos e pontos-chave', + 'helpCallAndSMS': 'Auxílio em chamadas e SMS', + 'templatedMessagesAndScheduleReminders': + 'Mensagens de modelo e lembretes de agenda', + 'aiDisclaimer': + 'As funcionalidades dependem das permissões do dispositivo, da disponibilidade do serviço e das condições de rede.', - // 同传/翻译商品页描述 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transcrição em Tempo Real', + 'sceneLexicon': 'Glossário de Cenário', + 'subtitleDisplay': 'Legendas', 'transHeaderDesc1': 'Interpretação simultânea e tradução de texto em tempo real, com voz de baixa latência.', 'transHeaderDesc2': 'Adequado para viagens, negócios, palestras e ensino.', @@ -323,30 +392,27 @@ const Map ptPT = { 'transDisclaimer': 'O desempenho da tradução depende do microfone, da latência da rede e do ruído ambiente.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - '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.', + // 商品模块 - 会议商品页 + 'meetingRecording': 'Gravação de reuniões', + 'transcriptionAndSummary': 'Transcrição e Resumo', + 'keywordSearch': 'Pesquisa por Palavras-chave', + 'collaborationSharing': 'Colaboração e Partilha', + 'meetingHeaderDesc1': + 'Gravação de áudio, transcrição, pesquisa por palavras-chave e resumo automático para aumentar a eficiência das reuniões.', + 'meetingHeaderDesc2': + 'Adequado para reuniões de negócios, apontamentos de aulas e atas de entrevistas.', + 'meetingAutoRecording': 'Gravação automática e segmentação', + 'meetingSpeakerTagging': 'Identificação de oradores', + 'meetingLongAudioTranscription': 'Transcrição de áudio longo', + 'meetingKeyPointSummary': 'Extração de pontos-chave', + 'meetingTopicNameSearch': 'Pesquisa por tópico/nome', + 'meetingTimelineJump': 'Salto na linha do tempo', + 'meetingExportSummary': 'Exportar atas', + 'meetingMultiPlatformShare': 'Partilhar entre plataformas', + 'meetingDisclaimer': + 'Use em ambientes silenciosos; o desempenho depende do microfone e da rede.', - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Visão geral de benefícios', 'higherQuota': 'Maior quota de utilização', 'lowerUnitPrice': 'Preço unitário inferior', @@ -362,45 +428,75 @@ const Map ptPT = { 'vipDisclaimer': 'Os benefícios reais dependem dos detalhes do pacote e podem mudar entre versões.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Básico 100', + 'ai_002_name': 'AI Básico 500', + 'ai_003_name': 'AI Básico 1000', + 'meet_001_name': 'Reunião Básica 100', + 'meet_002_name': 'Reunião Básica 500', + 'meet_003_name': 'Reunião Básica 1000', + 'trans_001_name': 'Tradução Básica 100', + 'trans_002_name': 'Tradução Básica 500', + 'trans_003_name': 'Tradução Básica 1000', + 'ai_001_desc': + '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).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Fornecido por: VoiTrans', + 'iapCustomerServiceQQLabel': 'Serviço de apoio IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 '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", - 'guideClickSendPrefix': "Tap send, ", - // AI 引导步骤 - 'guideWeatherStart': "Tell Lily: “What’s the weather today?”", - 'guideWeatherInput': "What’s the weather today?", - 'guideWeatherSend': "Lily will report the weather in real time", - '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': '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': "Toque em enviar, ", + 'guideWeatherStart': "Diga à Lily: “Como está o tempo hoje?”", + 'guideWeatherInput': "Como está o tempo hoje?", + 'guideWeatherSend': "A Lily irá informar o tempo em tempo real", + 'guideWeatherEnd': + "A Lily pode relatar o tempo ao vivo—experimente outros comandos", + 'guideMusicStart': 'Diga à Lily: “Toque um pouco de música rock”', + 'guideMusicInput': 'Toque um pouco de música rock', + 'guideMusicSend': 'A Lily irá encontrar música para si', + 'guideMusicEnd': 'A Lily encontrou música—experimente outros comandos', + 'guideNavStart': 'Diga à Lily: “Navegar para o Aeroporto de Shenzhen”', + 'guideNavInput': 'Navegar para o Aeroporto de Shenzhen', + 'guideNavSend': 'A Lily irá planear a rota', + 'guideNavEnd': 'Navegação definida—experimente outros comandos', '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", - - // 商务会议助手页 + 'Diga à Lily: “Crie um lembrete de reunião para amanhã às 15h”', + 'guideMeetingInput': 'Criar um lembrete de reunião para amanhã às 15h', + 'guideMeetingSend': 'A Lily irá criar um lembrete de reunião', + 'guideMeetingEnd': 'Lembrete criado—experimente outros comandos', + 'guidePhoneStart': 'Diga à Lily: “Ligar para a Mãe”', + 'guidePhoneInput': 'Ligar para a Mãe', + 'guidePhoneSend': 'A Lily irá fazer a chamada', + 'guidePhoneEnd': 'Chamada efetuada—experimente outros comandos', + 'guideSmsStart': + 'Diga à Lily: “Envie uma mensagem ao Pai: Estou a chegar para o jantar”', + 'guideSmsInput': 'Mensagem ao Pai: Estou a chegar para o jantar', + 'guideSmsSend': 'A Lily irá enviar a mensagem', + 'guideSmsEnd': 'Mensagem enviada—o controlo por voz é prático', + + // Meeting模块 - 首页与导航 "startMeeting": "Iniciar Reunião", 'edit': 'Editar', 'delete': 'Eliminar', @@ -412,40 +508,39 @@ const Map ptPT = { 'recordingDetails': 'Detalhes da Gravação', 'aiSummary': 'Resumo IA', 'meetingTranscript': 'Transcrição da Reunião', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'A iniciar Wi-Fi...', + 'newFilesDetected': 'Novos ficheiros detetados, a preparar importação', + 'noNewFiles': 'Sem novos ficheiros para importar', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Iniciar gravação', + 'liveRecording': 'Gravação ao vivo', + 'audioVideoRecording': 'Gravação de áudio/vídeo', + 'callRecording': 'Gravação de chamadas', + 'importAudio': 'Importar Áudio', 'meetingRecordExitTitle': 'Sair da gravação', // 退出录音 'meetingRecordExitMessage': 'Escolha o que fazer antes de sair', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Terminar e guardar', // 结束录音并保存 @@ -468,202 +563,214 @@ 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', - //'generating': '正在生成...', - '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': 'Resumir novamente', + 'dateAndTime': 'Data e hora', + 'location': 'Local', + 'attendees': 'Participantes', + 'inputLocation': 'Introduzir local', + 'inputAttendees': 'Introduzir participantes', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Selecionar modelo de resumo', + 'useThisTemplate': 'Usar este modelo', + 'lastUsed': 'Último usado', + 'create': 'Criar', + 'templateDetails': 'Detalhes do modelo', + 'tag': 'Etiqueta', + 'description': 'Descrição', + 'template': 'Modelo', + 'deleteTemplate': 'Eliminar modelo', + 'deleteTemplateConfirm': 'Tem a certeza de que deseja eliminar este modelo?', + 'editTemplate': 'Editar modelo', + 'createTemplate': 'Criar modelo', + 'name': 'Nome', + 'templateContentHint': + 'Por favor, insira o conteúdo do modelo! Dica: Clique no botão de IA acima para gerar rapidamente o conteúdo do modelo com base no nome e na descrição que introduziu', + 'inputNameHint': 'Por favor, insira o nome', + 'inputDescHint': 'Por favor, insira a descrição', + 'custom': 'Personalizado', + 'pleaseEnter': 'Por favor, insira', + 'viewAll': 'Ver tudo', + 'recordingLanguage': 'Idioma de gravação', + 'chineseSimplified': 'Chinês mandarim (simplificado)', + 'meetingGenerateNow': 'Gerar agora', + 'keyEventsAnalyzed': '{count} eventos-chave analisados.', + 'aiAnalysisDesc': + 'A análise de IA identifica eventos-chave nas gravações, permitindo-lhe selecionar eventos importantes para a geração por IA.', + + // Meeting模块 - 文件操作 + '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': 'Partilhar mapa mental', + 'shareSuccess': 'Partilha bem-sucedida', + + // Meeting模块 - AI问答 + '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': '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': 'Nomear orador atual', + 'recentlyUsedNames': 'Nomes usados recentemente', + 'applyToCurrentParagraph': 'Aplicar ao parágrafo atual', + 'totalTime': 'Tempo total', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Os oradores do resumo serão atualizados automaticamente', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sincronizar com a nuvem', + 'syncToCloudTip': + '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', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - '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', + 'enabled': 'Ativado', + 'disabled': 'Desativado', + 'myVoitransDevice': 'O meu dispositivo VOITRANS', + 'helpAndFeedback': 'Ajuda e feedback', + 'aboutVoitrans': 'Sobre o VOITRANS', + 'meetingDays': 'Dias', + 'meetingHours': 'Horas', + 'voitransAiMember': 'Membro Voitrans AI', + 'unlockStarterMember': 'Desbloquear Membro Inicial', + 'bindDeviceToActivate': + 'Vincular dispositivo Voitrans para ativar a subscrição Starter', + 'unlockNow': 'Desbloquear agora', + + // Meeting模块 - 会员与升级 + 'comparison': 'Comparação', + 'detailedInfo': 'Informações detalhadas', + 'monthlyTranscriptionTime': 'Tempo mensal de transcrição', + 'unlimited': 'Ilimitado', + 'professionalTemplates': 'Modelos profissionais', + 'limited': 'Limitado', + '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.', + 'Além dos resumos – organize e visualize os pontos-chave com mapas mentais para uma compreensão mais eficaz do texto completo.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Descubra, partilhe e inspire-se na biblioteca de modelos criados pelos utilizadores.', '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.', + 'A transcrição de áudio suportará a identificação de oradores, restaurando de forma mais intuitiva o conteúdo de reuniões ou chamadas telefónicas. Ao mesmo tempo, o resumo será mais preciso.', '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.', + 'O melhoramento de voz por IA suporta várias configurações de redução de ruído, elimina inteligentemente o ruído de fundo, melhora a clareza da voz e melhora a qualidade de reprodução de áudio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importe facilmente ficheiros de áudio de aplicações locais ou de terceiros, como notas de voz, 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', + '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/mês', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Período de experimentação gratuito de 7 dias, depois ¥800/ano. Cancele a qualquer momento antes de o período terminar.', + 'sevenDayTrial': 'Período de experimentação gratuito de 7 dias', + 'unlimitedMonthly': 'Unlimited ¥120/mês', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Período de experimentação gratuito de 7 dias, depois ¥1600/ano. Cancele a qualquer momento antes de o período terminar.', + 'trialNote': '*Período de experimentação gratuito durante 7 dias, depois cobrado anualmente, cancele a qualquer momento.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mês', + 'subscribe': 'Subscrever', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mês', '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: ', + '*Após atualizar a subscrição, os dias restantes da subscrição original serão automaticamente calculados e reembolsados na sua conta de pagamento', + 'buyMoreTranscriptionTime': 'Comprar mais tempo de transcrição', + 'sixThousandMinutes': '6.000 minutos', + 'threeThousandMinutes': '3.000 minutos', + 'sixHundredMinutes': '600 minutos', + 'oneHundredTwentyMinutes': '120 minutos', + 'validityPeriod': '*Período de validade: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplicar a todos os parágrafos deste orador', - 'summaryWillBeUpdatedAutomatically': - 'O resumo será atualizado automaticamente com base no modelo', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Ativado imediatamente após a compra, válido por 2 anos após a ativação.', + 'purchase': 'Comprar', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Idioma de gravação', + 'cantonese': 'Cantonês', + 'sichuan': 'Dialeto de Sichuan', + 'shanghai': 'Dialeto de Xangai', + + // Meeting模块 - 错误提示 + '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', + 'summaryFailedShort': 'Resumo falhou', + 'transcriptionFailedShort': 'Transcrição falhou', + + // Meeting模块 - 播放器 + 'playerNotReady': 'O reprodutor de áudio não está pronto, por favor aguarde', + 'playFailed': 'Reprodução falhou', + 'audioFileNotFound': 'Ficheiro de áudio não encontrado', + 'fetchingAudio': 'A obter áudio da nuvem...', + 'playerLoadFailed': 'Falha ao carregar o reprodutor de áudio', // 设置页 "systemSettings": "Definições do Sistema", @@ -672,10 +779,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", @@ -718,46 +825,34 @@ const Map ptPT = { "Atualização da Versão do Firmware dos Auriculares BLE", "deviceManagement": "Gestão de Dispositivos", "manageConnectedDevices": "Gerir dispositivos Bluetooth emparelhados", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Já tem a versão mais recente {version}', 'checkUpdateFailed': 'Falha ao verificar atualizações', 'networkErrorRetry': 'Erro de rede, tente novamente mais tarde', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat de Voz em Tempo Real", "realtimeVoiceChatInfo": "Experimente a função de interação de voz inteligente (pré-visualização da função)", "loading": "A carregar...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Limpar Histórico de Chat", - "online": "Online", + "online": 'Online', "ttsSpeed": "Velocidade da voz", "ttsSpeedDefaultHint": "Padrão +25%", "inputMessage": "Introduzir mensagem...", @@ -783,22 +878,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Responder a perguntas e fornecer informações\n\n' '• Traduzir voz em tempo real\n\n' @@ -818,18 +915,17 @@ const Map ptPT = { 'startVoiceInput': 'Iniciar entrada de voz', 'startPhoneCallMode': 'Iniciar modo de chamada, iniciar entrada de voz', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Introduza a sua mensagem aqui...', // 全屏编辑器输入提示 'characterCount': '{count} caracteres', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiar', 'copySuccess': 'Copiado com sucesso', 'report': 'Denunciar', 'submitSuccess': 'Enviado com sucesso', 'submitFailed': 'Falha no envio', 'reportSubmitted': 'Denúncia enviada, iremos processá-la em breve', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Nocivo/Inseguro', 'pornographicVulgar': 'Pornográfico/Vulgar', 'misleadingAttack': 'Enganoso/Ataque', @@ -839,17 +935,22 @@ const Map ptPT = { 'other': 'Outro', 'reportDescriptionHint': 'Gostaríamos de saber o motivo da sua denúncia, pode descrever o problema que encontrou.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Gerado por IA', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Chamada de ferramenta', + 'noResult': 'Sem resultado', + 'noToolCallContentToCopy': + 'Sem conteudo de chamada de ferramenta para copiar', + 'toolCallDetails': 'Detalhes da chamada de ferramenta:', + 'toolCallContentCopied': 'Conteudo copiado para a area de transferencia', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Aqui estão algumas músicas recomendadas:', 'playList': 'Lista de Reprodução', 'moreMusic': 'Mais Música', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'horas', // 小时单位 @@ -864,7 +965,30 @@ const Map ptPT = { "bicycling": "De bicicleta", "tsransit": "Transportes Públicos", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Selecionar aplicativo de navegacao', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navegar com Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navegar com Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navegar com Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navegar com Apple Maps', + 'builtInNavigation': 'Navegacao integrada', + 'useBuiltInNavigation': 'Navegar com mapa integrado', + 'navigationStartFailed': 'Falha ao iniciar a navegacao', + 'cannotPlayMusicListRetryLater': + 'Nao foi possivel reproduzir a lista de musicas, tente novamente mais tarde', + 'cannotPlaySong': 'Nao foi possivel reproduzir a musica', + 'openMapError': 'Erro ao abrir o mapa', + 'pleaseInstallAmapApp': 'Instale primeiro o aplicativo Amap', + 'pleaseInstallBaiduMapApp': 'Instale primeiro o aplicativo Baidu Maps', + 'appleMapStartFailed': 'Falha ao iniciar Apple Maps', + 'appleMapUnavailable': 'Apple Maps indisponivel', + 'openAppleMapError': 'Erro ao abrir Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'A consultar as condições meteorológicas:', 'highest': 'Máxima', 'lowest': 'Mínima', @@ -894,18 +1018,8 @@ const Map ptPT = { "friday": "Sex", "saturday": "Sáb", "sunday": "Dom", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Ensolarado", "partlyCloudy": "Pouco Nublado", "partlySunny": "Parcialmente Ensolarado", @@ -926,9 +1040,147 @@ const Map ptPT = { "haze": "Névoa Seca", "strongWind": "Vento Forte", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Tradução de imagens", + "textTranslation": "Tradução de texto", + + // 翻译模块 - 主页 + "translationHistory": "Histórico de Traduções", + "enableRecording": "Ativar Gravação", + "viewAudioFiles": "Ver Ficheiros de Áudio", + "headsetUser": "Utilizador de Auriculares", + "phoneUser": "Utilizador de Telemóvel", + "selectSourceLanguage": "Selecionar idioma de origem", + "selectTargetLanguage": "Selecionar idioma de destino", + "me": "Eu", + "counterPart": "Interlocutor", + "bluetoothCallStateError": + "Certifique-se de que os auriculares Bluetooth estão ligados ao telemóvel e em estado de chamada", + "autoDetect": "Deteção automática", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Falha ao detetar idioma", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Desativar janela flutuante', + 'enableFloatingWindow': 'Ativar janela flutuante', + 'permissionTip': 'Dica de permissao', + 'micPermissionRequiredForRecording': + 'Permissao de microfone necessaria para gravacao', + 'deleteTranslationRecordError': + 'Erro ao excluir registro de traducao: @error', + "translationFailed": "Falha na tradução", + "translating": "A traduzir", + "translate": "Traduzir", + "pleaseInputText": "Introduza o texto", + "inputTextToTranslate": "Introduza o texto a traduzir", + "textTooLong": "Texto demasiado longo, máximo de 5000 caracteres", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ainda não há histórico", + "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.", + "unknownLanguage": "Idioma Desconhecido", + "deleteSessionRecord": "Eliminar Registo da Sessão", + "deleteSessionConfirm": + "Tem a certeza que quer eliminar todos os registos de tradução desta sessão? Esta ação não pode ser revertida.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": 'Atual: @pxpx', + "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": + "Falha no processamento ou na tradução da imagem. Tente novamente.\nErro: {error}", + "imageTooLarge": 'O tamanho da imagem excede o limite de 4 MB', + "imageTooLargeHint": + 'O tamanho da imagem excede 4 MB. Reduza a qualidade ou as dimensões e tente novamente', + "emptyTranslationResult": + "A API de tradução de imagens devolveu um resultado vazio", + "imageTranslationFailedTryLater": + "A tradução de imagens falhou. Problema de rede ou limite de pedidos. Tente mais tarde", + "imageTranslationApiException": + "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": + "É necessária permissão de álbum de fotos para selecionar imagens", + "translationDetails": "Detalhes da tradução", + "originalImage": 'Imagem original', + "sourceLanguage": 'Idioma de origem', + "targetLanguage": 'Idioma de destino', + "translationTime": "Tempo de tradução", + "shareInDevelopment": 'Funcionalidade de partilha em desenvolvimento', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Traduzir Ficheiros de Áudio", + "noAudioFiles": "Ainda não há ficheiros de áudio", + "calculating": "A calcular...", + "playing": "A reproduzir...", + "paused": "Em pausa", + "clickToPlay": "Clique para reproduzir", + "rename": "Renomear", + "smartTranscription": "Transcrição Inteligente", + "renameAudioFile": "Renomear ficheiro de áudio", + "enterNewFileName": "Introduza um novo nome de ficheiro", + + // 翻译模块 - 翻译详情 + "originalRecord": "Registo Original", + "recordSummary": "Resumo do Registo", + "clickToGenerateSummary": + "Clique no botão abaixo para gerar um resumo da sessão", + "summaryContent": "Conteúdo do Resumo", + "copied": "Copiado", + "summaryCopiledToClipboard": "Resumo copiado para a área de transferência", + "extractSummary": "Extrair Resumo", + "summaryGenerated": "Resumo gerado", + "generating": "A gerar...", + "regenerate": "Regenerar", + "summaryTimeoutMessage": + "O pedido de geração de resumo expirou, pode ser devido a problemas de rede ou servidor ocupado.", + "deleteTranslationRecord": "Eliminar Registo de Tradução", + "deleteTranslationConfirm": + "Tem a certeza que quer eliminar este registo de tradução? Esta ação não pode ser revertida.", + "originalText": "Texto Original", + "translatedText": "Texto Traduzido", + "sessionSummary": "Resumo da Sessão", + "cannotShare": "Não é possível partilhar", + "generateSummaryFirst": "Por favor, gere primeiro um resumo", + "translationSessionRecord": "Registo da Sessão de Tradução", + + // 个人资料模块 "editProfile": "Editar Informações Pessoais", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Alcunha", "save": "Guardar", "about": "Sobre", @@ -940,10 +1192,8 @@ const Map ptPT = { 'deleteAccount': 'Eliminar Conta', 'deleteAccountTips': 'Tem a certeza que quer eliminar permanentemente a sua conta? Esta ação não pode ser revertida.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Limpar cache', + 'cleanTips': 'Tem a certeza que quer limpar a cache pessoal?', 'networkConnectionFailed': 'Falha na ligação à rede, verifique as definições de rede e tente novamente', 'serverTemporarilyUnavailable': @@ -962,10 +1212,6 @@ const Map ptPT = { 'Falha na ligação à rede, verifique as definições de rede', 'serverInternalErrorRetryLater': 'Erro interno do servidor, tente novamente mais tarde', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Falha na compressão da imagem', 'avatarUpdateFailed': 'Falha na atualização do avatar', 'usernameCannotBeEmpty': 'O nome de utilizador não pode estar vazio', @@ -976,8 +1222,6 @@ const Map ptPT = { 'logoutFailedRetry': 'Falha ao terminar a sessão, tente novamente', 'accountPermanentlyDeleted': 'A conta foi eliminada permanentemente', 'deleteAccountFailedRetry': 'Falha ao eliminar a conta, tente novamente', - - // 账号服务相关 'clearUserDataFailed': 'Falha ao limpar os dados do utilizador', // 清理用户数据失败 'deleteUserDataFailed': 'Falha ao eliminar os dados do utilizador', // 删除用户数据失败 @@ -995,29 +1239,33 @@ const Map ptPT = { 'accountServiceInitialized': 'Serviço de Conta inicializado', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Armazenamento', + 'meetingStoragePermissionExplanation': + 'Precisamos da permissão de armazenamento para que possa selecionar e enviar ficheiros de áudio.', + 'meetingStoragePermissionPermanentDenial': + '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', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Contactos', + 'notification': 'Notificação', + 'alarm': 'Alarme', 'calendarWrite': 'Escrever no Calendário', 'calendarFullAccess': 'Acesso Total ao Calendário', 'locationInfo': 'Informações de Localização', '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': @@ -1036,80 +1284,91 @@ 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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Para ligar a dispositivos Bluetooth, é necessária permissão de ligação Bluetooth', + 'notificationPermissionDesc': 'Utilizado para enviar mensagens de notificação', '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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + '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': 'Necessário ', + '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navegação em curso', + 'native.notification.navigation.keepRunning': + 'A navegar, mantenha a aplicação em execução', + 'native.notification.bleAgent.running': + 'O assistente de voz está em execução', + 'native.notification.audioRecording.recording': + 'A gravar áudio, toque para voltar à aplicação', + 'native.notification.music.waiting': 'A aguardar reprodução', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Seguinte', + 'native.notification.music.play': 'Reproduzir', + 'native.notification.music.pause': 'Pausa', + 'native.notification.qqMusic.playing': 'A reproduzir música', + + // 版本更新 'newVersionFound': 'Nova Versão Encontrada', // 版本更新对话框标题 'remindLater': 'Lembrar Mais Tarde', // 稍后提醒按钮 'updateNow': 'Atualizar Agora', // 立即更新按钮 @@ -1120,253 +1379,7 @@ const Map ptPT = { 'updateErrorRetry': 'Ocorreu um erro durante a atualização, por favor, tente novamente mais tarde', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "Estados Unidos", - "加拿大": "Canadá", - "俄罗斯": "Rússia", - "英国": "Reino Unido", - "德国": "Alemanha", - "意大利": "Itália", - "法国": "França", - "西班牙": "Espanha", - "南非": "África do Sul", - "沙特阿拉伯": "Arábia Saudita", - "土耳其": "Turquia", - "日本": "Japão", - "韩国": "Coreia do Sul", - "新加坡": "Singapura", - "马来西亚": "Malásia", - "泰国": "Tailândia", - "越南": "Vietname", - "印度": "Índia", - "巴基斯坦": "Paquistão", - "菲律宾": "Filipinas", - "印度尼西亚": "Indonésia", - "阿联酋": "Emirados Árabes Unidos", - "墨西哥": "México", - "巴西": "Brasil", - "阿根廷": "Argentina", - "澳大利亚": "Austrália", - "新西兰": "Nova Zelândia", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macau (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egito", - "希腊": "Grécia", - "荷兰": "Países Baixos", - "比利时": "Bélgica", - "匈牙利": "Hungria", - "罗马尼亚": "Roménia", - "瑞士": "Suíça", - "奥地利": "Áustria", - "丹麦": "Dinamarca", - "瑞典": "Suécia", - "挪威": "Noruega", - "波兰": "Polónia", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colômbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugal", - "卢森堡": "Luxemburgo", - "爱尔兰": "Irlanda", - "冰岛": "Islândia", - "阿尔巴尼亚": "Albânia", - "马耳他": "Malta", - "塞浦路斯": "Chipre", - "芬兰": "Finlândia", - "保加利亚": "Bulgária", - "立陶宛": "Lituânia", - "拉脱维亚": "Letónia", - "爱沙尼亚": "Estónia", - "乌克兰": "Ucrânia", - "塞尔维亚": "Sérvia", - "克罗地亚": "Croácia", - "斯洛文尼亚": "Eslovénia", - "捷克": "República Checa", - "斯洛伐克": "Eslováquia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicarágua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panamá", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Equador", - "巴拉圭": "Paraguai", - "乌拉圭": "Uruguai", - "摩洛哥": "Marrocos", - "阿尔及利亚": "Argélia", - "突尼斯": "Tunísia", - "尼日利亚": "Nigéria", - "加纳": "Gana", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Quénia", - "坦桑尼亚": "Tanzânia", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Líbano", - "约旦": "Jordânia", - "伊拉克": "Iraque", - "科威特": "Kuwait", - "巴林": "Bahrein", - "卡塔尔": "Catar", - "阿曼": "Omã", - "阿富汗": "Afeganistão", - "斯里兰卡": "Sri Lanka", - "缅甸": "Mianmar", - "尼泊尔": "Nepal", - "蒙古": "Mongólia", - "柬埔寨": "Camboja", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Ilhas Salomão", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Histórico de Traduções", - "enableRecording": "Ativar Gravação", - "viewAudioFiles": "Ver Ficheiros de Áudio", - "headsetUser": "Utilizador de Auriculares", - "phoneUser": "Utilizador de Telemóvel", - "selectSourceLanguage": "Selecionar idioma de origem", - "selectTargetLanguage": "Selecionar idioma de destino", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ainda não há histórico", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Limpar Histórico", - "clearHistoryConfirm": - "Tem a certeza que quer limpar todo o histórico de traduções? Esta ação não pode ser revertida.", - "unknownLanguage": "Idioma Desconhecido", - "deleteSessionRecord": "Eliminar Registo da Sessão", - "deleteSessionConfirm": - "Tem a certeza que quer eliminar todos os registos de tradução desta sessão? Esta ação não pode ser revertida.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Traduzir Ficheiros de Áudio", - "noAudioFiles": "Ainda não há ficheiros de áudio", - "calculating": "A calcular...", - "playing": "A reproduzir...", - "paused": "Em pausa", - "clickToPlay": "Clique para reproduzir", - "rename": "Renomear", - "smartTranscription": "Transcrição Inteligente", - "renameAudioFile": "Renomear ficheiro de áudio", - "enterNewFileName": "Introduza um novo nome de ficheiro", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Registo Original", - "recordSummary": "Resumo do Registo", - "clickToGenerateSummary": - "Clique no botão abaixo para gerar um resumo da sessão", - "summaryContent": "Conteúdo do Resumo", - "copied": "Copiado", - "summaryCopiledToClipboard": "Resumo copiado para a área de transferência", - "extractSummary": "Extrair Resumo", - "summaryGenerated": "Resumo gerado", - "generating": "A gerar...", - "regenerate": "Regenerar", - "summaryTimeoutMessage": - "O pedido de geração de resumo expirou, pode ser devido a problemas de rede ou servidor ocupado.", - "deleteTranslationRecord": "Eliminar Registo de Tradução", - "deleteTranslationConfirm": - "Tem a certeza que quer eliminar este registo de tradução? Esta ação não pode ser revertida.", - "originalText": "Texto Original", - "translatedText": "Texto Traduzido", - "sessionSummary": "Resumo da Sessão", - "cannotShare": "Não é possível partilhar", - "generateSummaryFirst": "Por favor, gere primeiro um resumo", - "translationSessionRecord": "Registo da Sessão de Tradução", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Emparelhamento de Dispositivo", "connectYourDeepSoundHeadset": "Conecte os seus Auriculares Voitrans", "bind": "Vincular", @@ -1375,14 +1388,11 @@ const Map ptPT = { "autoInputCode": "Introdução automática do código", "skipBinding": "Saltar Vinculação", "rescan": "Digitalizar Novamente", - "verifyingDevice": "A verificar dispositivo...", "confirmBinding": "Confirmar Vinculação", "associatingDevice": "A associar dispositivo...", "goToBluetoothSettings": "Ir para Definições de Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pronto para emparelhar", "preparingPairingEnvironment": "A preparar ambiente de emparelhamento...", "connectDeepSoundViaSystemBluetooth": @@ -1392,8 +1402,6 @@ const Map ptPT = { "waitingCompletePairing": "Aguarde, a concluir o emparelhamento...", "pairingSuccessRedirecting": "Emparelhamento bem-sucedido! A redirecionar para a página inicial...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Certifique-se de que está conectado a um dispositivo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1406,19 +1414,12 @@ const Map ptPT = { "authorizationFailedCheckCode": "Falha na autorização, verifique se o código de autorização está correto", "pairingFailedRetry": "Falha no emparelhamento, tente novamente", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Por favor, ative o Bluetooth', 'deviceDisconnected': 'Dispositivo desconectado', 'readyToStartPairing': 'Pronto para iniciar o emparelhamento', 'checkingEnvironment': 'A verificar ambiente...', 'ensureHeadsetOnAndPairingMode': 'Certifique-se de que os auriculares estão ligados e em modo de emparelhamento', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'A estabelecer conexão segura...', 'needManualBindingAuthCode': 'É necessário um código de autorização de vinculação manual...', @@ -1441,21 +1442,31 @@ const Map ptPT = { 'bleConnectionFailed': 'Falha na conexão BLE', 'deviceAuthorizationFailedCheckCode': 'Falha na autorização do dispositivo, verifique o código de autorização', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Feedback do Utilizador", 'feedbackInfo': 'Forneça feedback ou sugestões', 'feedbackDescription': 'Descreva o problema que encontrou ou a sua sugestão', @@ -1483,13 +1494,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", @@ -1498,7 +1510,61 @@ const Map ptPT = { "removeEarbudsEnsureBattery": "Retire ambos os auriculares e certifique-se de que a bateria de ambos está acima de 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nova versao @version encontrada', + 'otaConfirmUpdateNow': 'Atualizar agora?', + 'otaUpdate': 'Atualizar', + 'otaUpgradeSuccess': 'Atualizacao bem-sucedida', + 'otaUpgradeCompleteRepair': + 'Atualizacao concluida!\n\nO dispositivo precisa ser emparelhado novamente. Ir para emparelhamento?', + 'otaPairLater': 'Emparelhar depois', + 'otaPairNow': 'Emparelhar agora', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Erro ao verificar conexao BLE: @error', + 'otaBleNotConnected': 'Dispositivo BLE nao conectado', + 'otaBleNeedConnection': + 'Conexao BLE necessaria\nVerifique a conexao e tente novamente', + 'otaDeviceInfoUnavailableTitle': 'Informacoes do dispositivo indisponiveis', + 'otaCannotGetDeviceInfo': + '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', + 'otaCannotGetProductInfoWithName': + 'Nao foi possivel obter informacoes do produto, nome: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nao foi possivel obter informacoes de bateria validas', + 'otaLowBattery': 'Bateria fraca', + 'otaSingleBatteryLow': + 'Bateria muito baixa\nRequisito: acima de 20%\nAtual: @ear @battery%\nCarregue e tente novamente', + 'otaDoubleBatteryLow': + 'Bateria muito baixa\nRequisito: ambos acima de 20%\nAtual: Esquerdo @left%, Direito @right%\nCarregue e tente novamente', + 'otaBatteryCheckFailed': 'Verificacao de bateria falhou', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Esta atualizacao inclui otimizacoes de desempenho e correcoes de bugs.', + 'otaGetLatestVersionFailed': 'Falha ao obter a versao mais recente', + 'otaGetVersionInfoFailed': 'Falha ao obter informacoes de versao', + 'otaCheckingDeviceStatus': 'Verificando status do dispositivo...', + 'otaDownloadFailedCheckNetwork': + 'Download falhou, verifique a conexao de rede', + 'otaDownloadFailed': 'Download falhou', + 'otaPreparingConnection': 'Preparando conexao do dispositivo...', + 'otaConnectingDevice': 'Conectando ao dispositivo...', + 'otaUpgradeStarted': 'Atualizacao OTA iniciada...', + 'otaUpgradeProgressWithPercent': 'Progresso: @percent%', + 'otaUpgradeSuccessComplete': 'Atualizacao concluida com sucesso', + 'otaUpgradeFailedWithCode': 'Atualizacao falhou, codigo de erro: @code', + 'otaUpgradeFailedTitle': 'Atualizacao falhou', + 'otaUpgradeFailedDesc': + 'Verifique a conexao ou o pacote de atualizacao, codigo: @code', + 'otaDeviceDisconnected': 'Dispositivo desconectado', + 'otaDeviceConnected': 'Dispositivo conectado', + + // 音乐模块 "noMusic": "Sem Música", // 暂无音乐 "noPlayingMusic": "Nenhuma música a tocar", // 暂无播放音乐 "unknownSong": "Música Desconhecida", // 未知歌曲 @@ -1538,30 +1604,130 @@ const Map ptPT = { "印地语": "Híndi", "土耳其语": "Turco", "马来语": "Malaio", - "孟加拉语": "Bengali", + "孟加拉语": 'Bengali', "泰米尔语": "Tâmil", "泰卢固语": "Telugo", "马拉提语": "Marata", - "乌尔都语": "Urdu", + "乌尔都语": 'Urdu', "波斯语": "Persa", "斯瓦希里语": "Suaíli", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": 'China', + "美国": "Estados Unidos", + "加拿大": "Canadá", + "俄罗斯": "Rússia", + "英国": "Reino Unido", + "德国": "Alemanha", + "意大利": "Itália", + "法国": "França", + "西班牙": "Espanha", + "南非": "África do Sul", + "沙特阿拉伯": "Arábia Saudita", + "土耳其": "Turquia", + "日本": "Japão", + "韩国": "Coreia do Sul", + "新加坡": "Singapura", + "马来西亚": "Malásia", + "泰国": "Tailândia", + "越南": "Vietname", + "印度": "Índia", + "巴基斯坦": "Paquistão", + "菲律宾": "Filipinas", + "印度尼西亚": "Indonésia", + "阿联酋": "Emirados Árabes Unidos", + "墨西哥": "México", + "巴西": "Brasil", + "阿根廷": 'Argentina', + "澳大利亚": "Austrália", + "新西兰": "Nova Zelândia", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macau (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egito", + "希腊": "Grécia", + "荷兰": "Países Baixos", + "比利时": "Bélgica", + "匈牙利": "Hungria", + "罗马尼亚": "Roménia", + "瑞士": "Suíça", + "奥地利": "Áustria", + "丹麦": "Dinamarca", + "瑞典": "Suécia", + "挪威": "Noruega", + "波兰": "Polónia", + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": "Colômbia", + "委内瑞拉": 'Venezuela', + "葡萄牙": 'Portugal', + "卢森堡": "Luxemburgo", + "爱尔兰": "Irlanda", + "冰岛": "Islândia", + "阿尔巴尼亚": "Albânia", + "马耳他": 'Malta', + "塞浦路斯": "Chipre", + "芬兰": "Finlândia", + "保加利亚": "Bulgária", + "立陶宛": "Lituânia", + "拉脱维亚": "Letónia", + "爱沙尼亚": "Estónia", + "乌克兰": "Ucrânia", + "塞尔维亚": "Sérvia", + "克罗地亚": "Croácia", + "斯洛文尼亚": "Eslovénia", + "捷克": "República Checa", + "斯洛伐克": "Eslováquia", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": "Nicarágua", + "哥斯达黎加": 'Costa Rica', + "巴拿马": "Panamá", + "海地": 'Haiti', + "玻利维亚": "Bolívia", + "厄瓜多尔": "Equador", + "巴拉圭": "Paraguai", + "乌拉圭": "Uruguai", + "摩洛哥": "Marrocos", + "阿尔及利亚": "Argélia", + "突尼斯": "Tunísia", + "尼日利亚": "Nigéria", + "加纳": "Gana", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Quénia", + "坦桑尼亚": "Tanzânia", + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": 'Israel', + "黎巴嫩": "Líbano", + "约旦": "Jordânia", + "伊拉克": "Iraque", + "科威特": 'Kuwait', + "巴林": "Bahrein", + "卡塔尔": "Catar", + "阿曼": "Omã", + "阿富汗": "Afeganistão", + "斯里兰卡": 'Sri Lanka', + "缅甸": "Mianmar", + "尼泊尔": 'Nepal', + "蒙古": "Mongólia", + "柬埔寨": "Camboja", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Timor-Leste", + "斐济": 'Fiji', + "所罗门群岛": "Ilhas Salomão", + "刚果民主共和国": 'República Democrática do Congo', + "安哥拉": 'Angola', + "苏丹": 'Sudão', + "马尔代夫": 'Maldivas', + "不丹": 'Butão', + "摩纳哥": 'Mónaco', + "圣马力诺": 'San Marino', + "牙买加": 'Jamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": 'Papua Nova Guiné', + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/ro_ro.dart b/lib/core/translations/language/ro_ro.dart index 585e9695b..31df65088 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,6 +19,11 @@ const Map roRO = { "unknownError": "Eroare necunoscută", "asrConnectionFailed": "Conexiunea la serviciul de recunoaștere vocală a eșuat. Verificați rețeaua sau încercați din nou mai târziu.", + "justNow": "Adesso", + "minutesAgo": "@minutes minute fa", + "yesterday": "Ieri", + "daysAgo": "@days zile fa", + "hoursAgo": "@hours ore fa", // 启动页 "slogan": "Conectând lumea, dincolo de sunet", @@ -28,7 +34,7 @@ const Map roRO = { "explore": "Explorează", "settings": "Setări", - // 语言 + // 语言列表 "followingSystem": "Urmează sistemul", "chinese": "Chineză", "english": "Engleză", @@ -43,7 +49,7 @@ const Map roRO = { "russian": "Rusă", "vietnamese": "Vietnameză", "italian": "Italiană", - "hindi": "Hindi", + "hindi": 'Hindi', "indonesian": "Indoneziană", "thai": "Thailandeză", "malay": "Malaeză", @@ -72,7 +78,7 @@ const Map roRO = { "arabic": "Arabă", "persian": "Persană", - // 登录页 + // 登录模块 "welcome": "Bun venit", "loginTips": "Autentificați-vă sau înregistrați-vă cu numărul de telefon sau e-mail", @@ -101,13 +107,9 @@ const Map roRO = { "resendVerificationCode": "Retrimite codul de verificare", "login": "Autentificare", "usePasswordLogin": "Autentificare cu parolă", - - // 隐私政策弹窗 "loginDeclaration": "Declarația Voitrans", // Voitrans 声明 "welcomeToThisApp": "Bun venit la Voitrans, vă rugăm să citiți cu atenție", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ", apăsând 'De acord și intră' înseamnă că ați citit complet și sunteți de acord cu acordurile de mai sus. Apăsând 'Nu sunt de acord' veți ieși din aplicație.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Nu sunt de acord", // 不同意 @@ -170,7 +172,30 @@ const Map roRO = { 'right': 'Dreapta', 'checkConnectionStatusFailed': 'Verificarea stării conexiunii a eșuat', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Initializarea Bluetooth a esuat: @error', + 'needBluetoothAndLocationPermission': + 'Sunt necesare permisiuni Bluetooth si locatie pentru scanare', + 'permissionRequestFailedWithError': 'Solicitarea permisiunii a esuat: @error', + 'needPermission': 'Permisiune necesara', + 'blePermissionDialogContent': + 'Aplicatia necesita permisiuni Bluetooth si locatie pentru scanarea dispozitivelor. Activati-le din Setari.', + 'needEnableBluetooth': 'Activati Bluetooth', + 'enableBluetoothDialogContent': + 'Activati Bluetooth pentru a scana si conecta dispozitive.', + 'bleScanFailedWithError': 'Scanare esuata: @error', + 'bleConnectionSuccess': 'Conectare reusita', + 'bleConnectedToDevice': 'Conectat la @device', + 'bleConnectionFailedWithError': 'Conectare esuata: @error', + 'bleDisconnected': 'Deconectat', + 'bleDeviceDisconnected': 'Dispozitiv deconectat', + 'bleDisconnectFailedWithError': 'Deconectare esuata: @error', + 'signalStrong': 'Puternic', + 'signalMedium': 'Mediu', + 'signalWeak': 'Slab', + 'signalVeryWeak': 'Foarte slab', + + // 发现页 "searchAi": "Căutați funcții AI...", "exploreSlogan": "Căști inteligente, posibilități infinite", "exploreSlogan1": "Companion inteligent, posibilități infinite", @@ -194,211 +219,271 @@ const Map roRO = { "usageStats": "Statistici de utilizare", "usageStatsInfo": "Vizualizați istoricul utilizării aplicației", "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", - //"aiSummary": "AI摘要", - "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.", - "cleanupComplete": "Cleanup Complete", - "cleanedOldData": "Cleaned data older than 90 days", - "exportFeature": "Export Feature", - "exportInDevelopment": "Data export is under development", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Nu s-au putut încărca statisticile. Încercați din nou mai târziu.", + "cleanupComplete": "Curățenie finalizată", + "cleanedOldData": "Date mai vechi de 90 de zile au fost șterse", + "exportFeature": "Funcție export", + "exportInDevelopment": "Exportul datelor este în curs de dezvoltare", + + // 商品模块 - 通用 + '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', + 'paymentFailedTryAgain': 'Plata a eșuat. Vă rugăm să reîncercați.', + 'selectPaymentMethod': 'Selectați metoda de plată', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Crearea comenzii WeChat Pay a eșuat', + 'alipayOrderCreateFailed': 'Crearea comenzii Alipay a eșuat', + 'appleOrderCreateFailed': 'Crearea comenzii Apple a eșuat', + 'googleOrderCreateFailed': 'Crearea comenzii Google a eșuat', + 'paypalOrderCreateFailed': 'Crearea comenzii PayPal a eșuat', + 'paymentException': 'Excepție la plată', + 'paymentLaunchFailed': 'Lansarea plății a eșuat', + 'paymentExceptionWithError': 'Excepție la plată: @error', + 'paymentProcessingCheckLater': + 'Comanda dvs. este în curs de procesare. Verificați mai târziu.', + 'paymentResultQueryException': + 'Interogarea rezultatului plății a eșuat: @error', + 'orderConfirmedQuotaRefreshed': + 'Comanda a fost confirmată. Cota dvs. a fost reîmprospătată.', + 'paymentCompletedConfirming': 'Plată finalizată. Se confirmă…', + 'paymentCancelled': 'Plată anulată', + 'paypalOpenedCompleteInBrowser': + 'PayPal deschis. Vă rugăm să finalizați plata în browser.', + 'paypalOpenFailed': 'Nu se poate deschide pagina de plată PayPal', + 'paymentTestTitle': 'Test de plată', + 'paymentTestOrderInfo': 'Informații comandă de test', + 'paymentTestProductId': 'ID produs', + 'paymentTestProductDescription': 'Descrierea produsului', + 'paymentTestWechatDescription': 'Test plată WeChat Pay', + 'paymentTestAlipayDescription': 'Test plată Alipay', + 'paymentTestAmount': 'Sumă', + 'paymentTestSelectAmount': 'Selectați suma de test', + 'paying': 'Se plătește...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Starea plății', + 'errorInfoWithMessage': 'Eroare: @message', + 'retest': 'Retestare', + 'paymentTestInstructionsTitle': 'Instrucțiuni', + 'paymentTestInstructionsContent': + '1. Selectați o sumă de test (recomandat: ¥0,01)\n2. Faceți clic pe butonul de plată pentru a începe\n3. Finalizați plata în aplicația de plată\n4. Reveniți pentru a verifica rezultatul', + 'startingWechatPayment': 'Se lansează WeChat Pay...', + 'startingAlipayPayment': 'Se lansează Alipay...', + 'wechatPaymentSuccess': 'WeChat Pay reușit!', + 'wechatPaymentFailed': 'WeChat Pay eșuat', + 'wechatPaymentLaunchFailed': 'Lansarea WeChat Pay a eșuat', + 'cannotLaunchWechatPayment': 'Nu se poate lansa WeChat Pay', + 'wechatPaymentException': 'Excepție WeChat Pay', + 'wechatPaymentTestCompleted': 'Test WeChat Pay finalizat', + 'alipayPaymentSuccess': 'Alipay reușit!', + 'alipayPaymentFailed': 'Alipay eșuat', + 'alipayPaymentLaunchFailed': 'Lansarea Alipay a eșuat', + 'cannotLaunchAlipayPayment': 'Nu se poate lansa Alipay', + 'alipayPaymentException': 'Excepție Alipay', + "insufficientIntegral": "Puncte insuficiente", + "insufficientBalanceDesc": + '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": + 'Abonamentul AI a expirat. Vă rugăm să accesați pagina de reîncărcare a abonamentului pentru a reînnoi.', + + // 商品模块 - AI商品页 + '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.', - - // 会员商品页 - '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', + 'Funcțiile depind de permisiunile dispozitivului, disponibilitatea serviciilor și condițiile rețelei.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transcriere în timp real', + 'sceneLexicon': 'Glosar de scenarii', + 'subtitleDisplay': 'Subtitrări', + 'transHeaderDesc1': + 'Interpretare simultană în timp real și traducere de text cu voce cu latență redusă.', + 'transHeaderDesc2': 'Potrivit pentru călătorii, afaceri, discursuri și predare.', + 'translateZhEn': 'Traducere chineză–engleză', + 'lowLatencyVoiceBroadcast': 'Difuzare vocală cu latență redusă', + 'multiLangTextTranslation': 'Traducere text multilingvă', + 'termOptimizationContextPreserve': + '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': + 'Performanța traducerii depinde de microfon, latența rețelei și zgomotul ambiental.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Înregistrare ședință', + 'transcriptionAndSummary': 'Transcriere și rezumat', + 'keywordSearch': 'Căutare cuvinte cheie', + 'collaborationSharing': 'Colaborare și partajare', + 'meetingHeaderDesc1': + 'Înregistrare audio, transcriere, căutare cuvinte cheie și rezumat automat pentru a crește eficiența ședințelor.', + 'meetingHeaderDesc2': + 'Potrivit pentru ședințe de afaceri, notițe de clasă și minute de interviu.', + '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': + 'Utilizați în medii liniștite; performanța depinde de microfon și rețea.', + + // 商品模块 - VIP会员页 + '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 De bază 100', + 'ai_002_name': 'AI De bază 500', + 'ai_003_name': 'AI De bază 1000', + 'meet_001_name': 'Şedință De bază 100', + 'meet_002_name': 'Şedință De bază 500', + 'meet_003_name': 'Şedință De bază 1000', + 'trans_001_name': 'Traducere Basic 100', + 'trans_002_name': 'Traducere Basic 500', + 'trans_003_name': 'Traducere Basic 1000', + 'ai_001_desc': 'Include 100 utilizări. Acces la funcțiile de bază AI.', + 'ai_002_desc': 'Include 500 utilizări. Acces la funcțiile de bază AI.', + 'ai_003_desc': 'Include 1000 utilizări. Acces la funcțiile de bază AI.', + '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': 'Aplicație: VoiTrans · Furnizat de: VoiTrans', + 'iapCustomerServiceQQLabel': 'Serviciu clienți IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': "Omite", - '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, ', - // AI 引导步骤 - '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': 'Următor', + 'sayLilyHint': 'Spune “Lily Lily” la microfon', + 'imHere': 'Sunt aici~', + 'guideWelcomeWakeAI': 'Bun venit la Voitrans! Mai întâi, trezește-ți AI-ul “Lily”.', + 'aiReplyCompleted': 'Lily a terminat răspunsul!', + 'aiThinking': 'Lily se gândește…', + 'guideAwakenSuccess': 'Minunat! Lily s-a trezit—cere-i ajutorul.', + 'confirmInput': 'Confirmă introducerea', + 'guideClickSendPrefix': 'Apasă trimitere, ', + 'guideWeatherStart': 'Spune-i lui Lily: “Cum este vremea astăzi?”', + 'guideWeatherInput': 'Cum este vremea astăzi?', + 'guideWeatherSend': 'Lily va raporta vremea în timp real', + 'guideWeatherEnd': 'Lily poate raporta vremea live—încearcă alte comenzi', + 'guideMusicStart': 'Spune-i lui Lily: “Pune ceva muzică rock”', + 'guideMusicInput': 'Pune ceva muzică rock', + 'guideMusicSend': 'Lily va găsi muzică pentru tine', + 'guideMusicEnd': 'Lily a găsit muzică—încearcă alte comenzi', + 'guideNavStart': 'Spune-i lui Lily: “Navighează la Aeroportul Shenzhen”', + 'guideNavInput': 'Navighează la Aeroportul Shenzhen', + 'guideNavSend': 'Lily va planifica ruta', + 'guideNavEnd': 'Navigare setată—încearcă alte comenzi', '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', - - // 商务会议助手页 + 'Spune-i lui Lily: “Creează un memento de ședință pentru mâine la ora 15:00”', + 'guideMeetingInput': 'Creează un memento de ședință pentru mâine la ora 15:00', + 'guideMeetingSend': 'Lily va crea un memento de ședință', + 'guideMeetingEnd': 'Memento creat—încearcă alte comenzi', + 'guidePhoneStart': 'Spune-i lui Lily: “Sună mama”', + 'guidePhoneInput': 'Sună mama', + 'guidePhoneSend': 'Lily va efectua apelul', + 'guidePhoneEnd': 'Apel efectuat—încearcă alte comenzi', + 'guideSmsStart': 'Spune-i lui Lily: “Trimite-i un mesaj tatei: Vin acasă la cină”', + 'guideSmsInput': 'Trimite-i un mesaj tatei: Vin acasă la cină', + 'guideSmsSend': 'Lily va trimite mesajul', + 'guideSmsEnd': 'Mesaj trimis—controlul vocal este convenabil', + + // Meeting模块 - 首页与导航 "startMeeting": "Începe ședința", 'edit': 'Editează', 'delete': 'Șterge', @@ -410,250 +495,270 @@ const Map roRO = { 'recordingDetails': 'Detalii înregistrare', 'aiSummary': 'Rezumat AI', 'meetingTranscript': 'Transcriere ședință', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Se pornește Wi-Fi...', + 'newFilesDetected': 'Fișiere noi detectate, se pregătește importul', + 'noNewFiles': 'Nu există fișiere noi de importat', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Începe înregistrarea', + 'liveRecording': 'Înregistrare live', + 'audioVideoRecording': 'Înregistrare audio/video', + 'callRecording': 'Înregistrare apel', + 'importAudio': 'Importare audio', 'meetingRecordExitTitle': 'Ieși din înregistrare', // 退出录音 'meetingRecordExitMessage': 'Alege ce să faci înainte de a ieși', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Încheie și salvează', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Încheie fără a salva', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Continuă înregistrarea în fundal', // 后台继续录音 - 'meetingRecordStopTimeout': 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Continuă înregistrarea în fundal', // 后台继续录音 + 'meetingRecordStopTimeout': + 'A expirat timpul pentru oprirea înregistrării. Încearcă din nou.', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Nu s-a putut opri înregistrarea. Încearcă din nou.', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Nu s-a putut salva înregistrarea. Încearcă din nou.', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Înregistrare în curs', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Se înregistrează în fundal. Atinge pentru a reveni la aplicație.', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Afișare peste alte aplicații', // 悬浮窗权限 - 'overlayPermissionTranslationDesc': 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': 'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': 'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'overlayPermissionTranslationDesc': + 'Pentru a afișa rezultatele traducerii în timpul apelurilor sau al traducerii audio/video, avem nevoie de permisiunea de suprapunere. Astfel poți vedea traduceri în timp real în timp ce folosești alte aplicații.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 + 'overlayPermissionRecordingDesc': + 'Pentru a afișa bara flotantă de înregistrare (cronometru/pauză/continuă) în timpul înregistrării, avem nevoie de permisiunea de suprapunere.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 + 'overlayPermissionOpenSettingsFailed': + 'Nu se pot deschide automat setările de sistem. Deschide Setări și activează manual permisiunea de suprapunere.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + 'transcribing': 'Se transcrie...', + 'summarizing': 'Se rezumă...', + 'analyzing': 'Se analizează...', + 'summaryComplete': 'Rezumat finalizat', + 'generate': 'Generează', + 'overview': 'Prezentare generală', + 'transcription': 'Transcriere', + 'summary': 'Rezumat', + 'mindMap': 'Hartă mentală', + 'editSpeaker': 'Editează', + 'nameSpeaker': 'Denumiți vorbitorul', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Regenerează rezumatul', + 'dateAndTime': 'Dată și oră', + 'location': 'Locație', + 'attendees': 'Participanți', + 'inputLocation': 'Introduceți locația', + 'inputAttendees': 'Introduceți participanții', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Selectați șablonul de rezumat', + 'useThisTemplate': 'Folosiți acest șablon', + 'lastUsed': 'Ultima utilizare', + 'create': 'Creează', + 'templateDetails': 'Detalii șablon', + 'tag': 'Etichetă', + 'description': 'Descriere', + 'template': 'Șablon', + 'deleteTemplate': 'Șterge șablon', + 'deleteTemplateConfirm': 'Sunteți sigur că doriți să ștergeți acest șablon?', + 'editTemplate': 'Editează șablon', + 'createTemplate': 'Creează șablon', + 'name': 'Nume', + 'templateContentHint': + 'Vă rugăm să introduceți conținutul șablonului! Sfat: Faceți clic pe butonul AI de mai sus pentru a genera rapid conținutul șablonului pe baza numelui și descrierii introduse', + 'inputNameHint': 'Vă rugăm să introduceți numele', + 'inputDescHint': 'Vă rugăm să introduceți descrierea', + 'custom': 'Personalizat', + 'pleaseEnter': 'Vă rugăm introduceți', + 'viewAll': 'Vedeți toate', + 'recordingLanguage': 'Limba înregistrării', + 'chineseSimplified': 'Chineză mandarină (simplificată)', + 'meetingGenerateNow': 'Generează acum', + 'keyEventsAnalyzed': 'Au fost analizate {count} evenimente cheie.', + 'aiAnalysisDesc': + 'Analiza AI identifică evenimente-cheie în înregistrări, permițându-vă să selectați evenimente importante pentru generarea AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Se importă...', + 'batchImporting': 'Import în masă...', + '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': 'Partajează audio ședință', + 'shareComplete': 'Partajare finalizată!', + 'shareFailed': 'Partajarea a eșuat: {error}', + 'fileProcessingFailed': + 'Procesarea fișierului a eșuat: {filePath}, eroare: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Salvează harta mentală', + 'shareMindMap': 'Partajează harta mentală', + 'shareSuccess': 'Partajare reușită', + + // Meeting模块 - AI问答 + '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': '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': 'Numește vorbitorul curent', + 'recentlyUsedNames': 'Nume folosite recent', + 'applyToCurrentParagraph': 'Aplică la paragraful curent', + 'totalTime': 'Timp total', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Vorbitorii din rezumat vor fi actualizați automat', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sincronizează în cloud', + 'syncToCloudTip': + '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', - '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', - - // 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', + 'enabled': 'Activat', + 'disabled': 'Dezactivat', + 'myVoitransDevice': 'Dispozitivul meu VOITRANS', + 'helpAndFeedback': 'Ajutor și feedback', + 'aboutVoitrans': 'Despre VOITRANS', + 'meetingDays': 'Zile', + 'meetingHours': 'Ore', + 'voitransAiMember': 'Membru AI Voitrans', + 'unlockStarterMember': 'Deblochează abonamentul Starter', + 'bindDeviceToActivate': + 'Asociați dispozitivul Voitrans pentru a activa abonamentul Starter', + 'unlockNow': 'Deblochează acum', + + // Meeting模块 - 会员与升级 + 'comparison': 'Comparație', + 'detailedInfo': 'Informații detaliate', + 'monthlyTranscriptionTime': 'Timp lunar de transcriere', + 'unlimited': 'Nelimitat', + 'professionalTemplates': 'Șabloane profesionale', + 'limited': 'Limitat', + 'fullTemplates': 'Șabloane complete', + 'professionalTerms': 'Termeni profesioniști', + 'customTemplates': 'Șabloane personalizate', + 'visualMindMap': 'Hartă mentală vizuală', + 'speakerIdentification': 'Identificarea vorbitorului', + 'aiVoiceEnhancement': 'Îmbunătățire vocală AI', + 'audioImport': 'Import audio', + 'multipleExportFormats': 'Formate multiple de export', + 'professionalSummaryTemplates': 'Șabloane profesionale de rezumat', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Design de șabloane profesionale pentru a îmbunătăți eficiența muncii tale. Personalizat în funcție de nevoile industriei.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Poți personaliza prompturile de rezumat în funcție de nevoile tale și să le folosești pentru a genera rezumatele necesare.', '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.', + 'Dincolo de rezumate - organizează și vizualizează punctele cheie cu hărți mentale pentru o înțelegere mai eficientă a întregului text.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Descoperă, partajează și inspiră-te din biblioteca de șabloane creată de utilizatori.', '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.', + 'Transcrierea audio va suporta identificarea vorbitorului, restabilind mai intuitiv conținutul ședințelor sau apelurilor. Totodată, rezumatul va fi mai precis.', '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.', + 'Îmbunătățirea vocală AI suportă multiple setări de reducere a zgomotului, elimină inteligent zgomotul de fundal, îmbunătățește claritatea vocii și calitatea redării audio.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Importați cu ușurință fișiere audio din aplicații locale sau terțe, cum ar fi notițele vocale, 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', + 'Exportați înregistrările audio, textul transcris și rezumatele în diverse formate (TXT, PDF, JPEG) după nevoie.', + 'upgradeMembership': 'Actualizați-vă abonamentul', + 'yearlySubscription': 'Abonament anual', + 'monthlySubscription': 'Abonament lunar', + 'proMonthly': 'Pro ¥60/lună', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + 'Perioadă de probă gratuită de 7 zile, apoi ¥800/an. Anulați oricând înainte de sfârșitul perioadei de probă.', + 'sevenDayTrial': 'Perioadă de probă gratuită de 7 zile', + 'unlimitedMonthly': 'Nelimitat ¥120/lună', 'unlimitedMonthlyDesc': - '7-day free trial, then ¥1600/year. Cancel anytime before trial ends.', - 'trialNote': '*Free trial for 7 days, then charged annually, cancel anytime.', + 'Perioadă de probă gratuită de 7 zile, apoi ¥1600/an. Anulați oricând înainte de sfârșitul perioadei de probă.', + 'trialNote': '*Probă gratuită 7 zile, apoi facturat anual, anulați oricând.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/lună', + 'subscribe': 'Abonați-vă', + 'unlimitedPrice': 'Nelimitat ¥198', + 'unlimitedMonthlyPrice': '¥198/lună', '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: ', + '*După actualizarea abonamentului, zilele rămase din abonamentul inițial vor fi calculate automat și rambursate în contul de plată', + 'buyMoreTranscriptionTime': 'Cumpărați mai mult timp de transcriere', + 'sixThousandMinutes': '6.000 de minute', + 'threeThousandMinutes': '3.000 de minute', + 'sixHundredMinutes': '600 de minute', + 'oneHundredTwentyMinutes': '120 de minute', + 'validityPeriod': '*Perioadă de valabilitate: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - 'Detected that you have permanently denied storage permission. To continue using this feature, please go to app settings to manually enable storage permission.', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Aplică la toate paragrafele acestui vorbitor', - 'summaryWillBeUpdatedAutomatically': - 'Rezumatul va fi actualizat automat pe baza șablonului', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - 'Automatically sync your recordings to the cloud, you can play, manage and share recordings through any VOITRANS APP or VOITRANS Web (web.voitrans.com).', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Activat imediat după achiziție, valabil 2 ani de la activare.', + 'purchase': 'Achiziționați', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Limba înregistrării', + 'cantonese': 'Cantoneză', + 'sichuan': 'Dialect Sichuan', + 'shanghai': 'Dialect Shanghai', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Limbă necunoscută', + 'analysisFailed': 'Analiza a eșuat, vă rugăm să reîncercați mai târziu', + 'transcriptionFailed': + 'Transcrierea a eșuat, vă rugăm să reîncercați mai târziu', + 'summaryFailed': 'Rezumatul a eșuat, vă rugăm să reîncercați mai târziu', + 'summaryFailedShort': 'Rezumat eșuat', + 'transcriptionFailedShort': 'Transcriere eșuată', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Playerul audio nu este pregătit, vă rugăm așteptați', + 'playFailed': 'Redarea a eșuat', + 'audioFileNotFound': 'Fișierul audio nu a fost găsit', + 'fetchingAudio': 'Se descarcă audio din cloud...', + 'playerLoadFailed': 'Playerul audio nu a putut fi încărcat', // 设置页 "systemSettings": "Setări de sistem", @@ -662,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", @@ -706,46 +811,35 @@ const Map roRO = { "bleHeadsetFirmwareUpgrade": "Actualizare versiune firmware căști BLE", "deviceManagement": "Gestionare dispozitive", "manageConnectedDevices": "Gestionați dispozitivele Bluetooth asociate", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Aveți deja cea mai recentă versiune {version}', 'checkUpdateFailed': 'Verificarea actualizărilor a eșuat', 'networkErrorRetry': 'Eroare de rețea, reîncercați mai târziu', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Chat vocal în timp real", "realtimeVoiceChatInfo": "Experimentați funcția de interacțiune vocală inteligentă (previzualizare funcție)", "loading": "Se încarcă...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Dispozitiv necunoscut", + "deviceTypeClassicBluetoothHeadset": "Căști Bluetooth clasice", + "deviceTypeBleBluetoothHeadset": "Căști Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Reportofon inteligent", + "deviceTypeSmartEye": 'Ochelari inteligenți', "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 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Șterge istoricul chatului", - "online": "Online", + "online": 'Online', "ttsSpeed": "Viteza vocii", "ttsSpeedDefaultHint": "Implicit +25%", "inputMessage": "Introduceți mesaj...", @@ -771,22 +865,24 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller + "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": "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' '• Răspuns la întrebări și furnizare de informații\n\n' '• Traducere vocală în timp real\n\n' @@ -806,18 +902,17 @@ const Map roRO = { 'startVoiceInput': 'Începe intrarea vocală', 'startPhoneCallMode': 'Începe modul de apel, începe intrarea vocală', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Introduceți mesajul dvs. aici...', // 全屏编辑器输入提示 'characterCount': '{count} caractere', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Copiază', 'copySuccess': 'Copiat cu succes', 'report': 'Raportează', 'submitSuccess': 'Trimis cu succes', 'submitFailed': 'Trimitere eșuată', 'reportSubmitted': 'Raport trimis, îl vom procesa în curând', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Dăunător/Periculos', 'pornographicVulgar': 'Pornografic/Vulgar', 'misleadingAttack': 'Înșelător/Atac', @@ -828,17 +923,21 @@ const Map roRO = { 'other': 'Altele', 'reportDescriptionHint': 'Dorim să știm de ce raportați, puteți descrie problema pe care ați întâmpinat-o.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generat de AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Apel instrument', + 'noResult': 'Niciun rezultat', + 'noToolCallContentToCopy': 'Nu există conținut de apel instrument de copiat', + 'toolCallDetails': 'Detalii apel instrument:', + 'toolCallContentCopied': 'Conținut copiat în clipboard', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Iată câteva melodii recomandate:', 'playList': 'Listă de redare', 'moreMusic': 'Mai multă muzică', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ore', // 小时单位 @@ -853,7 +952,30 @@ const Map roRO = { "bicycling": "Cu bicicleta", "tsransit": "Transport public", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Selectati aplicatia de navigare', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigare cu Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigare cu Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigare cu Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigare cu Apple Maps', + 'builtInNavigation': 'Navigare integrata', + 'useBuiltInNavigation': 'Navigare cu harta integrata', + 'navigationStartFailed': 'Pornirea navigarii a esuat', + 'cannotPlayMusicListRetryLater': + 'Nu se poate reda lista de muzica, incercati mai tarziu', + 'cannotPlaySong': 'Nu se poate reda melodia', + 'openMapError': 'Eroare la deschiderea hartii', + 'pleaseInstallAmapApp': 'Instalati mai intai aplicatia Amap', + 'pleaseInstallBaiduMapApp': 'Instalati mai intai aplicatia Baidu Maps', + 'appleMapStartFailed': 'Pornirea Apple Maps a esuat', + 'appleMapUnavailable': 'Apple Maps indisponibil', + 'openAppleMapError': 'Eroare la deschiderea Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Se interoghează condițiile meteo:', 'highest': 'Maximă', 'lowest': 'Minimă', @@ -883,18 +1005,8 @@ const Map roRO = { "friday": "Vi", "saturday": "Sâ", "sunday": "Du", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Însorit", "partlyCloudy": "Parțial înnorat", "partlySunny": "Parțial însorit", @@ -915,9 +1027,147 @@ const Map roRO = { "haze": "Pâclă", "strongWind": "Vânt puternic", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Traducere imagine", + "textTranslation": "Traducere text", + + // 翻译模块 - 主页 + "translationHistory": "Istoric traduceri", + "enableRecording": "Activează înregistrarea", + "viewAudioFiles": "Vezi fișierele audio", + "headsetUser": "Utilizator căști", + "phoneUser": "Utilizator telefon", + "selectSourceLanguage": "Selectează limba sursă", + "selectTargetLanguage": "Selectează limba țintă", + "me": "Eu", + "counterPart": "Interlocutor", + "bluetoothCallStateError": + "Asigurați-vă că setul cu cască Bluetooth este conectat la telefon și că sunteți într-un apel", + "autoDetect": "Detectare automată", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Detectarea limbii a eșuat", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Dezactivare fereastra plutitoare', + 'enableFloatingWindow': 'Activare fereastra plutitoare', + 'permissionTip': 'Sfat privind permisiunile', + 'micPermissionRequiredForRecording': + 'Este necesara permisiunea microfonului pentru inregistrare', + 'deleteTranslationRecordError': + 'Eroare la stergerea inregistrarii de traducere: @error', + "translationFailed": "Traducerea a eșuat", + "translating": "Se traduce", + "translate": "Traducere", + "pleaseInputText": "Vă rugăm să introduceți text", + "inputTextToTranslate": "Introduceți textul de tradus", + "textTooLong": "Text prea lung, maxim 5000 de caractere", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Niciun istoric", + "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ă.", + "unknownLanguage": "Limbă necunoscută", + "deleteSessionRecord": "Șterge înregistrarea sesiunii", + "deleteSessionConfirm": + "Sunteți sigur că doriți să ștergeți toate înregistrările de traducere pentru această sesiune? Această acțiune nu poate fi anulată.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "Procesarea imaginii sau traducerea a eșuat. Încercați din nou.\nEroare: {error}", + "imageTooLarge": "Dimensiunea imaginii depășește limita de 4MB", + "imageTooLargeHint": + "Dimensiunea imaginii depășește 4MB. Reduceți calitatea sau dimensiunile și reîncercați", + "emptyTranslationResult": + "API-ul de traducere a imaginii a returnat un rezultat gol", + "imageTranslationFailedTryLater": + "Traducerea imaginii a eșuat. Problemă de rețea sau limită de apeluri. Încercați mai târziu", + "imageTranslationApiException": + "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": + "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": "Funcția de partajare este în curs de dezvoltare", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Tradu fișierele audio", + "noAudioFiles": "Niciun fișier audio", + "calculating": "Se calculează...", + "playing": "Se redă...", + "paused": "Pauză", + "clickToPlay": "Faceți clic pentru a reda", + "rename": "Redenumește", + "smartTranscription": "Transcriere inteligentă", + "renameAudioFile": "Redenumește fișierul audio", + "enterNewFileName": "Introduceți un nume nou de fișier", + + // 翻译模块 - 翻译详情 + "originalRecord": "Înregistrare originală", + "recordSummary": "Rezumat înregistrare", + "clickToGenerateSummary": + "Faceți clic pe butonul de mai jos pentru a genera un rezumat al sesiunii", + "summaryContent": "Conținut rezumat", + "copied": "Copiat", + "summaryCopiledToClipboard": "Rezumatul a fost copiat în clipboard", + "extractSummary": "Extrage rezumat", + "summaryGenerated": "Rezumat generat", + "generating": "Se generează...", + "regenerate": "Regenerează", + "summaryTimeoutMessage": + "Cererea de generare a rezumatului a expirat, posibil din cauza problemelor de rețea sau a unui server ocupat.", + "deleteTranslationRecord": "Șterge înregistrarea traducerii", + "deleteTranslationConfirm": + "Sunteți sigur că doriți să ștergeți această înregistrare de traducere? Această acțiune nu poate fi anulată.", + "originalText": "Text original", + "translatedText": "Text tradus", + "sessionSummary": "Rezumat sesiune", + "cannotShare": "Nu se poate partaja", + "generateSummaryFirst": "Generați mai întâi un rezumat", + "translationSessionRecord": "Înregistrare sesiune de traducere", + + // 个人资料模块 "editProfile": "Editează informațiile personale", - "avatar": "Avatar", + "avatar": 'Avatar', "nickname": "Pseudonim", "save": "Salvează", "about": "Despre", @@ -930,10 +1180,8 @@ const Map roRO = { 'deleteAccount': 'Șterge contul', 'deleteAccountTips': 'Sunteți sigur că doriți să ștergeți permanent contul? Această acțiune nu poate fi anulată.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Șterge memoria cache', + 'cleanTips': 'Sigur doriți să ștergeți memoria cache personală?', 'networkConnectionFailed': 'Conexiunea la rețea a eșuat, verificați setările de rețea și reîncercați', 'serverTemporarilyUnavailable': @@ -952,10 +1200,6 @@ const Map roRO = { 'Conexiunea la rețea a eșuat, verificați setările de rețea', 'serverInternalErrorRetryLater': 'Eroare internă de server, reîncercați mai târziu', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Comprimarea imaginii a eșuat', 'avatarUpdateFailed': 'Actualizarea avatarului a eșuat', 'usernameCannotBeEmpty': 'Numele de utilizator nu poate fi gol', @@ -966,8 +1210,6 @@ const Map roRO = { 'logoutFailedRetry': 'Deconectare eșuată, reîncercați', 'accountPermanentlyDeleted': 'Contul a fost șters permanent', 'deleteAccountFailedRetry': 'Ștergerea contului a eșuat, reîncercați', - - // 账号服务相关 'clearUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 清理用户数据失败 'deleteUserDataFailed': 'Ștergerea datelor de utilizator a eșuat', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Deconectarea terță parte a reușit', // 第三方登录退出成功 @@ -983,29 +1225,33 @@ const Map roRO = { 'accountServiceInitialized': 'Serviciul de cont a fost inițializat', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Stocare', + 'meetingStoragePermissionExplanation': + 'Avem nevoie de permisiunea pentru stocare pentru a putea selecta și încărca fișiere audio.', + 'meetingStoragePermissionPermanentDenial': + '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', - //'bluetooth': '蓝牙', - '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': @@ -1025,80 +1271,93 @@ 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.', -//'microphonePermission': '录音', - '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.', - - //permission_util.dart - '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigare în curs', + 'native.notification.navigation.keepRunning': + 'Navigare în curs, mențineți aplicația deschisă', + 'native.notification.bleAgent.running': 'Asistentul vocal funcționează', + 'native.notification.audioRecording.recording': + 'Se înregistrează audio, atingeți pentru a reveni la aplicație', + 'native.notification.music.waiting': 'Așteaptă redarea', + 'native.notification.music.previous': 'Anterior', + 'native.notification.music.next': 'Următorul', + 'native.notification.music.play': 'Redare', + 'native.notification.music.pause': 'Pauză', + 'native.notification.qqMusic.playing': 'Se redă muzică', + + // 版本更新 'newVersionFound': 'Versiune nouă găsită', // 版本更新对话框标题 'remindLater': 'Amintește-mi mai târziu', // 稍后提醒按钮 'updateNow': 'Actualizează acum', // 立即更新按钮 @@ -1109,253 +1368,7 @@ const Map roRO = { 'updateErrorRetry': 'A apărut o eroare în timpul actualizării, reîncercați mai târziu', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "China", - "美国": "SUA", - "加拿大": "Canada", - "俄罗斯": "Rusia", - "英国": "Regatul Unit", - "德国": "Germania", - "意大利": "Italia", - "法国": "Franța", - "西班牙": "Spania", - "南非": "Africa de Sud", - "沙特阿拉伯": "Arabia Saudită", - "土耳其": "Turcia", - "日本": "Japonia", - "韩国": "Coreea de Sud", - "新加坡": "Singapore", - "马来西亚": "Malaezia", - "泰国": "Thailanda", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipine", - "印度尼西亚": "Indonezia", - "阿联酋": "EAU", - "墨西哥": "Mexic", - "巴西": "Brazilia", - "阿根廷": "Argentina", - "澳大利亚": "Australia", - "新西兰": "Noua Zeelandă", - "中国香港": "Hong Kong (China)", - "中国澳门": "Macao (China)", - "中国台湾": "Taiwan (China)", - "埃及": "Egipt", - "希腊": "Grecia", - "荷兰": "Olanda", - "比利时": "Belgia", - "匈牙利": "Ungaria", - "罗马尼亚": "România", - "瑞士": "Elveția", - "奥地利": "Austria", - "丹麦": "Danemarca", - "瑞典": "Suedia", - "挪威": "Norvegia", - "波兰": "Polonia", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Columbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalia", - "卢森堡": "Luxemburg", - "爱尔兰": "Irlanda", - "冰岛": "Islanda", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Cipru", - "芬兰": "Finlanda", - "保加利亚": "Bulgaria", - "立陶宛": "Lituania", - "拉脱维亚": "Letonia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ucraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croația", - "斯洛文尼亚": "Slovenia", - "捷克": "Cehia", - "斯洛伐克": "Slovacia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Maroc", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Liban", - "约旦": "Iordania", - "伊拉克": "Irak", - "科威特": "Kuweit", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolia", - "柬埔寨": "Cambodgia", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Timorul de Est", - "斐济": "Fiji", - "所罗门群岛": "Insulele Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Istoric traduceri", - "enableRecording": "Activează înregistrarea", - "viewAudioFiles": "Vezi fișierele audio", - "headsetUser": "Utilizator căști", - "phoneUser": "Utilizator telefon", - "selectSourceLanguage": "Selectează limba sursă", - "selectTargetLanguage": "Selectează limba țintă", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Niciun istoric", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Șterge istoricul", - "clearHistoryConfirm": - "Sunteți sigur că doriți să ștergeți tot istoricul traducerilor? Această acțiune nu poate fi anulată.", - "unknownLanguage": "Limbă necunoscută", - "deleteSessionRecord": "Șterge înregistrarea sesiunii", - "deleteSessionConfirm": - "Sunteți sigur că doriți să ștergeți toate înregistrările de traducere pentru această sesiune? Această acțiune nu poate fi anulată.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Tradu fișierele audio", - "noAudioFiles": "Niciun fișier audio", - "calculating": "Se calculează...", - "playing": "Se redă...", - "paused": "Pauză", - "clickToPlay": "Faceți clic pentru a reda", - "rename": "Redenumește", - "smartTranscription": "Transcriere inteligentă", - "renameAudioFile": "Redenumește fișierul audio", - "enterNewFileName": "Introduceți un nume nou de fișier", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Înregistrare originală", - "recordSummary": "Rezumat înregistrare", - "clickToGenerateSummary": - "Faceți clic pe butonul de mai jos pentru a genera un rezumat al sesiunii", - "summaryContent": "Conținut rezumat", - "copied": "Copiat", - "summaryCopiledToClipboard": "Rezumatul a fost copiat în clipboard", - "extractSummary": "Extrage rezumat", - "summaryGenerated": "Rezumat generat", - "generating": "Se generează...", - "regenerate": "Regenerează", - "summaryTimeoutMessage": - "Cererea de generare a rezumatului a expirat, posibil din cauza problemelor de rețea sau a unui server ocupat.", - "deleteTranslationRecord": "Șterge înregistrarea traducerii", - "deleteTranslationConfirm": - "Sunteți sigur că doriți să ștergeți această înregistrare de traducere? Această acțiune nu poate fi anulată.", - "originalText": "Text original", - "translatedText": "Text tradus", - "sessionSummary": "Rezumat sesiune", - "cannotShare": "Nu se poate partaja", - "generateSummaryFirst": "Generați mai întâi un rezumat", - "translationSessionRecord": "Înregistrare sesiune de traducere", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Asociere dispozitiv", "connectYourDeepSoundHeadset": "Conectați-vă căștile Voitrans", "bind": "Leagă", @@ -1364,14 +1377,11 @@ const Map roRO = { "autoInputCode": "Introducere automată a codului", "skipBinding": "Omite legarea", "rescan": "Rescanează", - "verifyingDevice": "Se verifică dispozitivul...", "confirmBinding": "Confirmă legarea", "associatingDevice": "Se asociază dispozitivul...", "goToBluetoothSettings": "Mergeți la setările Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Gata de asociere", "preparingPairingEnvironment": "Se pregătește mediul de asociere...", "connectDeepSoundViaSystemBluetooth": @@ -1381,8 +1391,6 @@ const Map roRO = { "waitingCompletePairing": "Vă rugăm așteptați, se finalizează asocierea...", "pairingSuccessRedirecting": "Asociere reușită! Se redirecționează către pagina principală...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Asigurați-vă că sunteți conectat la un dispozitiv Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1394,19 +1402,12 @@ const Map roRO = { "authorizationFailedCheckCode": "Autorizare eșuată, verificați dacă codul de autorizare este corect", "pairingFailedRetry": "Asociere eșuată, reîncercați", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Activați Bluetooth', 'deviceDisconnected': 'Dispozitiv deconectat', 'readyToStartPairing': 'Gata pentru a începe asocierea', 'checkingEnvironment': 'Se verifică mediul...', 'ensureHeadsetOnAndPairingMode': 'Asigurați-vă că căștile sunt pornite și în modul de asociere', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Se stabilește o conexiune sigură...', 'needManualBindingAuthCode': 'Este necesar un cod de autorizare pentru legarea manuală...', @@ -1428,21 +1429,31 @@ const Map roRO = { 'bleConnectionFailed': 'Conexiunea BLE a eșuat', 'deviceAuthorizationFailedCheckCode': 'Autorizarea dispozitivului a eșuat, verificați codul de autorizare', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Feedback utilizator", 'feedbackInfo': 'Oferiți feedback sau sugestii', 'feedbackDescription': @@ -1471,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", @@ -1486,7 +1498,61 @@ const Map roRO = { "removeEarbudsEnsureBattery": "Scoateți ambele căști și asigurați-vă că bateria ambelor este peste 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Versiune noua @version gasita', + 'otaConfirmUpdateNow': 'Actualizare acum?', + 'otaUpdate': 'Actualizare', + 'otaUpgradeSuccess': 'Actualizare reusita', + 'otaUpgradeCompleteRepair': + 'Actualizare finalizata!\n\nDispozitivul trebuie re-asociat. Pagina de asociere?', + 'otaPairLater': 'Imperechere mai tarziu', + 'otaPairNow': 'Imperechere acum', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Eroare la verificarea conexiunii BLE: @error', + 'otaBleNotConnected': 'Dispozitiv BLE neconectat', + 'otaBleNeedConnection': + 'Conexiune BLE necesara\nVerificati conexiunea si incercati din nou', + 'otaDeviceInfoUnavailableTitle': 'Informatii dispozitiv indisponibile', + 'otaCannotGetDeviceInfo': + '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', + 'otaCannotGetProductInfoWithName': + 'Nu se pot obtine informatii produs, nume: @deviceName', + 'otaCannotGetBatteryInfo': + 'Nu se pot obtine informatii valide despre baterie', + 'otaLowBattery': 'Baterie scazuta', + 'otaSingleBatteryLow': + 'Baterie prea scazuta\nCerinta: peste 20%\nActual: @ear @battery%\nIncarcati si incercati din nou', + 'otaDoubleBatteryLow': + 'Baterie prea scazuta\nCerinta: ambele casti peste 20%\nActual: Stanga @left%, Dreapta @right%\nIncarcati si incercati din nou', + 'otaBatteryCheckFailed': 'Verificarea bateriei a esuat', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Aceasta actualizare include optimizari de performanta si remedieri de erori.', + 'otaGetLatestVersionFailed': 'Nu s-a putut obtine ultima versiune', + 'otaGetVersionInfoFailed': 'Nu s-au putut obtine informatiile de versiune', + 'otaCheckingDeviceStatus': 'Se verifica starea dispozitivului...', + 'otaDownloadFailedCheckNetwork': + 'Descarcare esuata, verificati conexiunea la retea', + 'otaDownloadFailed': 'Descarcare esuata', + 'otaPreparingConnection': 'Se pregateste conexiunea...', + 'otaConnectingDevice': 'Se conecteaza la dispozitiv...', + 'otaUpgradeStarted': 'Actualizare OTA inceputa...', + 'otaUpgradeProgressWithPercent': 'Progres: @percent%', + 'otaUpgradeSuccessComplete': 'Actualizare finalizata cu succes', + 'otaUpgradeFailedWithCode': 'Actualizare esuata, cod eroare: @code', + 'otaUpgradeFailedTitle': 'Actualizare esuata', + 'otaUpgradeFailedDesc': + 'Verificati conexiunea sau pachetul de actualizare, cod: @code', + 'otaDeviceDisconnected': 'Dispozitiv deconectat', + 'otaDeviceConnected': 'Dispozitiv conectat', + + // 音乐模块 "noMusic": "Fără muzică", // 暂无音乐 "noPlayingMusic": "Nicio melodie în redare", // 暂无播放音乐 "unknownSong": "Melodie necunoscută", // 未知歌曲 @@ -1523,33 +1589,133 @@ const Map roRO = { "泰语": "Thailandeză", "越南语": "Vietnameză", "印尼语": "Indoneziană", - "印地语": "Hindi", + "印地语": 'Hindi', "土耳其语": "Turcă", "马来语": "Malaeză", - "孟加拉语": "Bengali", + "孟加拉语": 'Bengali', "泰米尔语": "Tamilă", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", + "泰卢固语": 'Telugu', + "马拉提语": 'Marathi', + "乌尔都语": 'Urdu', "波斯语": "Persană", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", + "斯瓦希里语": 'Swahili', - //余额不足弹窗 - "insufficientBalanceDesc": - 'Insufficient balance, please go to the corresponding recharge page to recharge.', - "recharge": 'Go to Recharge', - // 会员到期提示 - "aiMemberExpiredDesc": - 'AI membership expired, please go to the membership recharge page to renew.', + // 国家列表 + "邮箱": "E-mail", + "中国": 'China', + "美国": "SUA", + "加拿大": 'Canada', + "俄罗斯": "Rusia", + "英国": "Regatul Unit", + "德国": "Germania", + "意大利": "Italia", + "法国": "Franța", + "西班牙": "Spania", + "南非": "Africa de Sud", + "沙特阿拉伯": "Arabia Saudită", + "土耳其": "Turcia", + "日本": "Japonia", + "韩国": "Coreea de Sud", + "新加坡": 'Singapore', + "马来西亚": "Malaezia", + "泰国": "Thailanda", + "越南": 'Vietnam', + "印度": 'India', + "巴基斯坦": 'Pakistan', + "菲律宾": "Filipine", + "印度尼西亚": "Indonezia", + "阿联酋": "EAU", + "墨西哥": "Mexic", + "巴西": "Brazilia", + "阿根廷": 'Argentina', + "澳大利亚": 'Australia', + "新西兰": "Noua Zeelandă", + "中国香港": "Hong Kong (China)", + "中国澳门": "Macao (China)", + "中国台湾": "Taiwan (China)", + "埃及": "Egipt", + "希腊": "Grecia", + "荷兰": "Olanda", + "比利时": "Belgia", + "匈牙利": "Ungaria", + "罗马尼亚": "România", + "瑞士": "Elveția", + "奥地利": 'Austria', + "丹麦": "Danemarca", + "瑞典": "Suedia", + "挪威": "Norvegia", + "波兰": "Polonia", + "秘鲁": 'Peru', + "智利": 'Chile', + "哥伦比亚": "Columbia", + "委内瑞拉": 'Venezuela', + "葡萄牙": "Portugalia", + "卢森堡": "Luxemburg", + "爱尔兰": "Irlanda", + "冰岛": "Islanda", + "阿尔巴尼亚": 'Albania', + "马耳他": 'Malta', + "塞浦路斯": "Cipru", + "芬兰": "Finlanda", + "保加利亚": 'Bulgaria', + "立陶宛": "Lituania", + "拉脱维亚": "Letonia", + "爱沙尼亚": 'Estonia', + "乌克兰": "Ucraina", + "塞尔维亚": 'Serbia', + "克罗地亚": "Croația", + "斯洛文尼亚": 'Slovenia', + "捷克": "Cehia", + "斯洛伐克": "Slovacia", + "危地马拉": 'Guatemala', + "萨尔瓦多": 'El Salvador', + "洪都拉斯": 'Honduras', + "尼加拉瓜": 'Nicaragua', + "哥斯达黎加": 'Costa Rica', + "巴拿马": 'Panama', + "海地": 'Haiti', + "玻利维亚": 'Bolivia', + "厄瓜多尔": 'Ecuador', + "巴拉圭": 'Paraguay', + "乌拉圭": 'Uruguay', + "摩洛哥": "Maroc", + "阿尔及利亚": 'Algeria', + "突尼斯": 'Tunisia', + "尼日利亚": 'Nigeria', + "加纳": 'Ghana', + "埃塞俄比亚": "Etiopia", + "肯尼亚": 'Kenya', + "坦桑尼亚": 'Tanzania', + "乌干达": 'Uganda', + "孟加拉国": 'Bangladesh', + "以色列": 'Israel', + "黎巴嫩": "Liban", + "约旦": "Iordania", + "伊拉克": "Irak", + "科威特": "Kuweit", + "巴林": 'Bahrain', + "卡塔尔": 'Qatar', + "阿曼": 'Oman', + "阿富汗": "Afganistan", + "斯里兰卡": 'Sri Lanka', + "缅甸": 'Myanmar', + "尼泊尔": 'Nepal', + "蒙古": 'Mongolia', + "柬埔寨": "Cambodgia", + "老挝": 'Laos', + "文莱": 'Brunei', + "东帝汶": "Timorul de Est", + "斐济": 'Fiji', + "所罗门群岛": "Insulele Solomon", + "刚果民主共和国": "Republica Democratică Congo", + "安哥拉": 'Angola', + "苏丹": 'Sudan', + "马尔代夫": "Maldive", + "不丹": 'Bhutan', + "摩纳哥": 'Monaco', + "圣马力诺": 'San Marino', + "牙买加": 'Jamaica', + "巴哈马": 'Bahamas', + "巴布亚新几内亚": "Papua Noua Guinee", + "萨摩亚": 'Samoa', }; diff --git a/lib/core/translations/language/ru_ru.dart b/lib/core/translations/language/ru_ru.dart index 9e7e3882f..43ad496c5 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,6 +19,11 @@ const Map ruRU = { "unknownError": "Неизвестная ошибка", "asrConnectionFailed": "Не удалось подключиться к службе распознавания речи. Проверьте сеть и попробуйте ещё раз позже.", + "justNow": "Только что", + "minutesAgo": "@minutes мин назад", + "yesterday": "Вчера", + "daysAgo": "@days дн назад", + "hoursAgo": "@hours ч назад", // 启动页 "slogan": "Соединяя мир, за пределами звука", @@ -28,7 +34,7 @@ const Map ruRU = { "explore": "Обзор", "settings": "Настройки", - // 语言 + // 语言列表 "followingSystem": "Как в системе", "chinese": "Китайский", "english": "Английский", @@ -72,7 +78,7 @@ const Map ruRU = { "arabic": "Арабский", "persian": "Персидский", - // 登录页 + // 登录模块 "welcome": "Добро пожаловать", "loginTips": "Войдите или зарегистрируйтесь, используя номер телефона или электронную почту", @@ -101,15 +107,11 @@ const Map ruRU = { "resendVerificationCode": "Отправить код еще раз", "login": "Войти", "usePasswordLogin": "Войти с паролем", - - // 隐私政策弹窗 "loginDeclaration": "Заявление Voitrans", // Voitrans 声明 "welcomeToThisApp": "Добро пожаловать в Voitrans, пожалуйста, внимательно прочтите", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Нажимая «Согласен и войти», вы подтверждаете, что прочитали и принимаете указанные выше документы. Нажатие «Не согласен» закроет приложение.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не согласен", // 不同意 "agreeAndEnter": "Согласен и войти", // 同意并进入 @@ -167,7 +169,30 @@ const Map ruRU = { 'right': 'Право', 'checkConnectionStatusFailed': 'Не удалось проверить статус подключения', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Инициализация Bluetooth не удалась: @error', + 'needBluetoothAndLocationPermission': + 'Для сканирования устройств требуются разрешения Bluetooth и местоположения', + 'permissionRequestFailedWithError': 'Ошибка запроса разрешения: @error', + 'needPermission': 'Требуется разрешение', + 'blePermissionDialogContent': + 'Приложению требуются разрешения Bluetooth и местоположения. Включите их в настройках.', + 'needEnableBluetooth': 'Включите Bluetooth', + 'enableBluetoothDialogContent': + 'Включите Bluetooth для сканирования и подключения устройств.', + 'bleScanFailedWithError': 'Ошибка сканирования: @error', + 'bleConnectionSuccess': 'Подключение успешно', + 'bleConnectedToDevice': 'Подключено к @device', + 'bleConnectionFailedWithError': 'Ошибка подключения: @error', + 'bleDisconnected': 'Отключено', + 'bleDeviceDisconnected': 'Устройство отключено', + 'bleDisconnectFailedWithError': 'Ошибка отключения: @error', + 'signalStrong': 'Сильный', + 'signalMedium': 'Средний', + 'signalWeak': 'Слабый', + 'signalVeryWeak': 'Очень слабый', + + // 发现页 "searchAi": "Поиск функций AI...", "exploreSlogan": "Умные наушники, безграничные возможности", "exploreSlogan1": "Умный компаньон, безграничные возможности", @@ -192,118 +217,156 @@ const Map ruRU = { "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Перевод Базовый 100', - 'trans_002_name': 'Перевод Базовый 500', - 'trans_003_name': 'Перевод Базовый 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Включает 100 переводов (голос/текст).', - 'trans_002_desc': 'Включает 500 переводов (голос/текст).', - 'trans_003_desc': 'Включает 1000 переводов (голос/текст).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', + "Не удалось загрузить статистику. Попробуйте позже.", + "cleanupComplete": "Очистка завершена", + "cleanedOldData": "Удалены данные старше 90 дней", + "exportFeature": "Экспорт", + "exportInDevelopment": "Экспорт данных в разработке", + + // 商品模块 - 通用 + 'availablePackages': 'Доступные пакеты', + 'remainingQuota': 'Оставшаяся квота', + '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', + "insufficientIntegral": "Недостаточно баллов", + "insufficientBalanceDesc": + "Недостаточно средств, перейдите на соответствующую страницу пополнения.", + "recharge": "Перейти к пополнению", + "aiMemberExpiredDesc": + "Подписка AI истекла, перейдите на страницу продления подписки.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Музыка и рекомендации', + 'navigationAndRoutes': 'Навигация и маршруты', + 'nearbySearch': 'Поиск рядом', + 'newsInformation': 'Новости', + 'communicationAssistant': 'Ассистент общения', + 'aiHeaderDesc1': + 'Больше квоты диалога, больше вызовов инструментов, длиннее контекст.', + 'aiHeaderDesc2': + 'Подходит для вопросов к агенту, суммаризации, анализа и выполнения задач.', + 'musicSearchPlaybackControl': + 'Поиск по музыкальной библиотеке и управление воспроизведением', + 'smartPlaylistAndSimilarRecommendations': + 'Умные плейлисты и рекомендации похожих треков', + 'routePlanningAndCongestionAvoidance': + 'Планирование маршрута и объезд пробок', + 'voiceBroadcastAndWaypoints': + 'Голосовые подсказки и настройки точек маршрута', + 'realTimeWeatherForecast': 'Погода и прогноз в реальном времени', + 'clothingAdviceAndTravelReminders': 'Советы по одежде и напоминания в пути', + 'poiSearchFoodGasParking': 'Поиск POI: еда / заправки / парковка', + 'ratingsHoursAndDirectRoutes': 'Рейтинги, часы работы и построение маршрута', + 'hotNewsAndTopicOverview': 'Горячие новости и обзор тем', + 'longArticleSummariesAndKeyPoints': + 'Сводка длинных статей и ключевые моменты', + 'helpCallAndSMS': 'Помощь со звонками и SMS', + 'templatedMessagesAndScheduleReminders': + 'Шаблонные сообщения и запланированные напоминания', + 'aiDisclaimer': + 'Функции зависят от разрешений устройства, доступности сервисов и условий сети.', - // 同传/翻译商品页描述 + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Транскрипция в реальном времени', + 'sceneLexicon': 'Сценарный глоссарий', + 'subtitleDisplay': 'Субтитры', 'transHeaderDesc1': 'Синхронный перевод и перевод текста в реальном времени с низкой задержкой голосового озвучивания.', 'transHeaderDesc2': @@ -321,30 +384,27 @@ const Map ruRU = { 'transDisclaimer': 'Качество перевода зависит от микрофона, сетевой задержки и фонового шума.', - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', - 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', - 'routePlanningAndCongestionAvoidance': - 'Route planning and congestion avoidance', - 'voiceBroadcastAndWaypoints': 'Voice broadcast and waypoint settings', - 'realTimeWeatherForecast': 'Real-time weather and forecast', - 'clothingAdviceAndTravelReminders': 'Clothing advice and travel reminders', - 'poiSearchFoodGasParking': 'POI search: dining / gas / parking', - 'ratingsHoursAndDirectRoutes': 'Ratings, business hours, and direct routing', - 'hotNewsAndTopicOverview': 'Hot news and topic overview', - 'longArticleSummariesAndKeyPoints': 'Long-article summaries and key points', - 'helpCallAndSMS': 'Help with calls and SMS', - 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', - 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', + // 商品模块 - 会议商品页 + 'meetingRecording': 'Запись встреч', + 'transcriptionAndSummary': 'Транскрипция и резюме', + 'keywordSearch': 'Поиск по ключевым словам', + 'collaborationSharing': 'Совместная работа и обмен', + 'meetingHeaderDesc1': + 'Запись аудио, транскрипция, поиск по ключевым словам и автосводка.', + 'meetingHeaderDesc2': + 'Подходит для деловых встреч, конспектов занятий и протоколов интервью.', + 'meetingAutoRecording': 'Автозапись и сегментация', + 'meetingSpeakerTagging': 'Маркировка говорящих', + 'meetingLongAudioTranscription': 'Транскрипция длинного аудио', + 'meetingKeyPointSummary': 'Извлечение ключевых моментов', + 'meetingTopicNameSearch': 'Поиск по теме/имени', + 'meetingTimelineJump': 'Переход по временной шкале', + 'meetingExportSummary': 'Экспорт протокола', + 'meetingMultiPlatformShare': 'Обмен на разных платформах', + 'meetingDisclaimer': + 'Используйте в тихой обстановке; качество зависит от микрофона и сети.', - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': 'Обзор преимуществ', 'higherQuota': 'Более высокая квота использования', 'lowerUnitPrice': 'Низкая цена за единицу', @@ -360,45 +420,72 @@ const Map ruRU = { 'vipDisclaimer': 'Фактические преимущества зависят от деталей пакета и могут меняться с версиями.', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Базовый 100', + 'ai_002_name': 'AI Базовый 500', + 'ai_003_name': 'AI Базовый 1000', + 'meet_001_name': 'Встречи Базовый 100', + 'meet_002_name': 'Встречи Базовый 500', + 'meet_003_name': 'Встречи Базовый 1000', + 'trans_001_name': 'Перевод Базовый 100', + 'trans_002_name': 'Перевод Базовый 500', + 'trans_003_name': 'Перевод Базовый 1000', + 'ai_001_desc': 'Включает 100 использований. Доступ к основным функциям AI.', + 'ai_002_desc': 'Включает 500 использований. Доступ к основным функциям AI.', + 'ai_003_desc': 'Включает 1000 использований. Доступ к основным функциям AI.', + 'meet_001_desc': 'Включает 100 записей/транскрипций встреч.', + 'meet_002_desc': 'Включает 500 записей/транскрипций встреч.', + 'meet_003_desc': 'Включает 1000 записей/транскрипций встреч.', + 'trans_001_desc': 'Включает 100 переводов (голос/текст).', + 'trans_002_desc': 'Включает 500 переводов (голос/текст).', + 'trans_003_desc': 'Включает 1000 переводов (голос/текст).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', + 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': 'Пропустить', - 'next': 'Next', - 'sayLilyHint': 'Say "Lily Lily" to the mic', - '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, ', - // AI 引导步骤 - '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": "Начать встречу", 'edit': 'Редактировать', 'delete': 'Удалить', @@ -410,40 +497,38 @@ const Map ruRU = { 'recordingDetails': 'Детали записи', 'aiSummary': 'AI-резюме', 'meetingTranscript': 'Транскрипт встречи', - - // Meeting模块 - 导航和基础功能 - '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': 'Пожалуйста, выберите действие после выхода', // 请选择离开后的操作 @@ -467,202 +552,214 @@ const Map ruRU = { 'Чтобы показывать плавающую панель записи (таймер/пауза/продолжить) во время записи, нам нужно разрешение на наложение.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Не удалось автоматически открыть системные настройки. Пожалуйста, откройте Настройки и вручную включите разрешение на наложение.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - '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': 'Пересоздать резюме', + 'dateAndTime': 'Дата и время', + 'location': 'Место', + 'attendees': 'Участники', + 'inputLocation': 'Введите место', + 'inputAttendees': 'Введите участников', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Выбрать шаблон резюме', + 'useThisTemplate': 'Использовать этот шаблон', + 'lastUsed': 'Последнее использование', + 'create': 'Создать', + 'templateDetails': 'Детали шаблона', + 'tag': 'Тег', + 'description': 'Описание', + 'template': 'Шаблон', + 'deleteTemplate': 'Удалить шаблон', + 'deleteTemplateConfirm': 'Вы уверены, что хотите удалить этот шаблон?', + 'editTemplate': 'Редактировать шаблон', + 'createTemplate': 'Создать шаблон', + 'name': 'Название', + 'templateContentHint': + 'Пожалуйста, введите содержание шаблона! Совет: нажмите кнопку AI выше, чтобы быстро сгенерировать содержание шаблона на основе введённого названия и описания', + 'inputNameHint': 'Пожалуйста, введите название', + 'inputDescHint': 'Пожалуйста, введите описание', + 'custom': 'Пользовательский', + 'pleaseEnter': 'Пожалуйста, введите', + 'viewAll': 'Показать все', + 'recordingLanguage': 'Язык записи', + 'chineseSimplified': 'Китайский мандарин (упрощённый)', + 'meetingGenerateNow': 'Создать сейчас', + 'keyEventsAnalyzed': 'Проанализировано {count} ключевых событий.', + 'aiAnalysisDesc': + 'AI‑анализ определяет ключевые события в записи, позволяя выбрать важные события для генерации.', + + // Meeting模块 - 文件操作 + 'importing': 'Импорт...', + 'batchImporting': 'Пакетный импорт...', + 'importingLocalRecordings': 'Импорт локальных записей...', + 'importFailed': 'Не удалось импортировать файл: {filePath}, ошибка: {error}', + 'importSuccess': 'Успешно импортировано локальных записей: {count}', + 'importError': 'Импорт не удался: {error}', + 'pleaseSelectAudioFile': 'Пожалуйста, выберите аудиофайл', + 'shareAudio': 'Поделиться аудио встречи', + 'shareComplete': 'Общий доступ открыт!', + 'shareFailed': 'Не удалось поделиться: {error}', + 'fileProcessingFailed': + 'Не удалось обработать файл: {filePath}, ошибка: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Сохранить интеллект-карту', + 'shareMindMap': 'Поделиться интеллект-картой', + 'shareSuccess': 'Успешно поделились', + + // Meeting模块 - AI问答 + 'askAI': 'Спросить AI...', + 'askAIPrompt': 'Чем я могу помочь вам сегодня?', + 'continueAsk': 'Продолжить вопрос', + 'todoList': 'Список задач', + 'extractConclusion': 'Извлечь вывод', + 'generateKeyIndicators': 'Создать ключевые показатели', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Поделиться ссылкой', + 'copyTranscript': 'Скопировать транскрипт', + 'copySummary': 'Скопировать резюме', + 'exportAudio': 'Экспорт аудио', + 'exportTranscript': 'Экспорт транскрипта', + 'shareMeetingAudio': 'Поделиться аудио встречи', + 'exportSummary': 'Экспорт резюме', + 'exportAs': 'Экспортировать как', + 'exportingPDF': 'Экспорт PDF...', + 'export': 'Экспорт', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего', + 'summaryWillBeUpdatedAutomatically': + 'Сводка будет автоматически обновляться на основе шаблона', + 'nameCurrentSpeaker': 'Назвать текущего говорящего', + 'recentlyUsedNames': 'Недавно использованные имена', + 'applyToCurrentParagraph': 'Применить к текущему абзацу', + 'totalTime': 'Общее время', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Говорящие в резюме будут обновлены автоматически', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Синхронизировать с облаком', + 'syncToCloudTip': + 'Автоматически синхронизируйте записи с облаком — вы сможете воспроизводить, управлять и делиться ими через любое приложение 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', - 'voitransAiMember': 'Voitrans AI Member', - 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - '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', + 'enabled': 'Включено', + 'disabled': 'Выключено', + 'myVoitransDevice': 'Моё устройство VOITRANS', + 'helpAndFeedback': 'Помощь и отзывы', + 'aboutVoitrans': 'О VOITRANS', + 'meetingDays': 'Дней', + 'meetingHours': 'Часов', + 'voitransAiMember': 'Подписчик Voitrans AI', + 'unlockStarterMember': 'Разблокировать стартовую подписку', + 'bindDeviceToActivate': + 'Привяжите устройство Voitrans, чтобы активировать подписку Starter', + 'unlockNow': 'Разблокировать сейчас', + + // Meeting模块 - 会员与升级 + '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.', - - // Meeting模块 - 升级会员 - 'upgradeMembership': 'Upgrade Your Membership', - 'yearlySubscription': 'Yearly Subscription', - 'monthlySubscription': 'Monthly Subscription', - 'proMonthly': 'Pro ¥60/month', + 'Экспортируйте аудиозаписи, текст транскрипции и сводки в разных форматах (TXT, PDF, JPEG) под ваши задачи.', + 'upgradeMembership': 'Обновить подписку', + 'yearlySubscription': 'Годовая подписка', + 'monthlySubscription': 'Ежемесячная подписка', + 'proMonthly': 'Pro ¥60/мес.', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-дневная бесплатная пробная версия, затем ¥800/год. Отмените до окончания пробного периода.', + 'sevenDayTrial': '7-дневная бесплатная пробная версия', + 'unlimitedMonthly': 'Unlimited ¥120/мес.', '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', + 'proMonthlyPrice': '¥120/мес.', + 'subscribe': 'Подписаться', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/мес.', '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', + 'Активируется сразу после покупки, действует 2 года с момента активации.', + 'purchase': 'Купить', - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', + // Meeting模块 - 录音语言 + 'recordLanguage': 'Язык записи', 'cantonese': 'Cantonese', 'sichuan': 'Sichuan Dialect', 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Применить ко всем абзацам этого говорящего', - 'summaryWillBeUpdatedAutomatically': - 'Сводка будет автоматически обновляться на основе шаблона', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Unknown Language', + 'analysisFailed': 'Анализ не удался, попробуйте позже', + 'transcriptionFailed': 'Транскрипция не удалась, попробуйте позже', + 'summaryFailed': 'Не удалось создать сводку, попробуйте позже', + 'summaryFailedShort': 'Сводка не удалась', + 'transcriptionFailedShort': 'Транскрипция не удалась', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудиоплеер не готов, подождите', + 'playFailed': 'Ошибка воспроизведения', + 'audioFileNotFound': 'Аудиофайл не найден', + 'fetchingAudio': 'Получение аудио из облака...', + 'playerLoadFailed': 'Не удалось загрузить аудиоплеер', // 设置页 "systemSettings": "Системные настройки", @@ -671,10 +768,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": "Системные настройки", @@ -715,42 +812,31 @@ const Map ruRU = { "bleHeadsetFirmwareUpgrade": "Обновление версии прошивки наушников BLE", "deviceManagement": "Управление устройствами", "manageConnectedDevices": "Управление подключенными устройствами Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'У вас уже установлена последняя версия {version}', 'checkUpdateFailed': 'Не удалось проверить обновления', 'networkErrorRetry': 'Ошибка сети, попробуйте еще раз позже', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Голосовой чат в реальном времени", "realtimeVoiceChatInfo": "Испытайте функцию интеллектуального голосового взаимодействия (предварительный просмотр)", "loading": "Загрузка...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Пока нет привязанных устройств", + "pleaseBindDeviceFirst": "Сначала привяжите устройство для управления", + "noMacAddress": "Нет MAC-адреса", + "licenseCode": "Лицензионный код", + "confirmUnbind": "Подтвердить отвязку", + "confirmUnbindMessage": + "Вы уверены, что хотите отвязать устройство \"{deviceName}\"?", + "confirmUnbindAction": "Подтвердить отвязку", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Очистить историю чата", "online": "В сети", @@ -778,29 +864,31 @@ const Map ruRU = { "loadMoreMessages": "Загрузить еще сообщения...", "loadFailedClickRetry": "Не удалось загрузить, нажмите, чтобы повторить", "swipeUpForMore": "Проведите пальцем вверх, чтобы увидеть больше", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "callingTool": "Помогаю вам, подождите!", // 正在帮您,请稍等! + "voice_interrupt": "Прервать", // 语音打断 + 'voice_interrupt_tip': + 'При включении: ИИ не будет прерываться вашим голосом во время ответа и сможет обрабатывать только один раунд разговора за раз. Чтобы начать новый раунд, просто произнесите слово активации.', + + // Agent模块 - 预设提示词 + "presetMusic": "Включи музыку", // 来点音乐 + "presetNavigation": "Навигация до", // 导航 + "presetWeather": "Погода сегодня", // 今日天气 + "presetNews": "Новости сегодня", // 今日新闻 + "presetFood": "Еда рядом", // 美食 + "playSomeMusic": "Включи популярную музыку", // 播放一些流行音乐 + "navigationTo": "Пожалуйста, помоги проложить маршрут до", // 导航到 + "todayWeather": "Какая сегодня погода?", // 今日天气 + "todayNews": "Какие сегодня новости?", // 今日新闻 + "nearbyFood": "Какая вкусная еда есть рядом?", // 美食 + + // Agent模块 - 欢迎消息与权限 + 'welcomeMessage': 'Привет! Я **Лили**.\n\n' + '• Отвечу на вопросы и предоставлю информацию\n\n' + '• Переведу речь в режиме реального времени\n\n' + '• Порекомендую музыку и подкасты\n\n' + '• Голосовые заметки и напоминания\n\n' + '• Управлю функциями наушников\n\n' + 'Чем я могу тебе помочь?', // 有什么我可以帮你的吗? 'microphonePermission': 'Микрофон', 'voiceRecognitionPermissionText': 'Для распознавания речи требуется доступ к микрофону.', @@ -813,18 +901,17 @@ const Map ruRU = { 'startVoiceInput': 'Начать голосовой ввод', 'startPhoneCallMode': 'Начать режим звонка, начать голосовой ввод', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Введите ваше сообщение здесь...', // 全屏编辑器输入提示 'characterCount': '{count} символов', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копировать', 'copySuccess': 'Успешно скопировано', 'report': 'Пожаловаться', 'submitSuccess': 'Успешно отправлено', 'submitFailed': 'Ошибка отправки', 'reportSubmitted': 'Жалоба отправлена, мы ее рассмотрим в ближайшее время', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Вредный/Небезопасный', 'pornographicVulgar': 'Порнографический/Вульгарный', 'misleadingAttack': 'Вводящий в заблуждение/Атака', @@ -834,17 +921,21 @@ const Map ruRU = { 'other': 'Другое', 'reportDescriptionHint': 'Мы хотим знать причину вашей жалобы, вы можете описать проблему, с которой столкнулись.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Сгенерировано AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Вызов инструмента', + 'noResult': 'Нет результатов', + 'noToolCallContentToCopy': 'Нет содержимого вызова для копирования', + 'toolCallDetails': 'Детали вызова инструмента:', + 'toolCallContentCopied': 'Содержимое скопировано в буфер обмена', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Вот несколько рекомендованных композиций:', 'playList': 'Плейлист', 'moreMusic': 'Больше музыки', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'км', // 公里单位 'meters': 'м', // 米单位 'hours': 'ч', // 小时单位 @@ -859,7 +950,30 @@ const Map ruRU = { "bicycling": "На велосипеде", "tsransit": "Общественный транспорт", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Выберите навигатор', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Навигация через Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Навигация через Baidu Maps', + 'googleMap': 'Google Карты', + 'useGoogleNavigation': 'Навигация через Google Карты', + 'appleMap': 'Apple Карты', + 'useAppleNavigation': 'Навигация через Apple Карты', + 'builtInNavigation': 'Встроенная навигация', + 'useBuiltInNavigation': 'Навигация по встроенной карте', + 'navigationStartFailed': 'Не удалось запустить навигацию', + 'cannotPlayMusicListRetryLater': + 'Не удаётся воспроизвести плейлист, попробуйте позже', + 'cannotPlaySong': 'Не удаётся воспроизвести песню', + 'openMapError': 'Ошибка при открытии карты', + 'pleaseInstallAmapApp': 'Установите приложение Amap', + 'pleaseInstallBaiduMapApp': 'Установите приложение Baidu Maps', + 'appleMapStartFailed': 'Не удалось запустить Apple Карты', + 'appleMapUnavailable': 'Apple Карты недоступны', + 'openAppleMapError': 'Ошибка при открытии Apple Карт', + + // Agent模块 - 天气卡片 'weatherQuery': 'Запрос погодных условий:', 'highest': 'Макс.', 'lowest': 'Мин.', @@ -889,18 +1003,8 @@ const Map ruRU = { "friday": "Пт", "saturday": "Сб", "sunday": "Вс", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Солнечно", "partlyCloudy": "Переменная облачность", "partlySunny": "Частично солнечно", @@ -921,7 +1025,141 @@ const Map ruRU = { "haze": "Дымка", "strongWind": "Сильный ветер", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Перевод изображений", + "textTranslation": "Текстовый перевод", + + // 翻译模块 - 主页 + "translationHistory": "История переводов", + "enableRecording": "Включить запись", + "viewAudioFiles": "Просмотреть аудиофайлы", + "headsetUser": "Пользователь наушников", + "phoneUser": "Пользователь телефона", + "selectSourceLanguage": "Выберите исходный язык", + "selectTargetLanguage": "Выберите целевой язык", + "me": "Я", + "counterPart": "Собеседник", + "bluetoothCallStateError": + "Убедитесь, что Bluetooth-гарнитура подключена к телефону и идет звонок", + "autoDetect": "Автоопределение", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Не удалось определить язык", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Отключить плавающее окно', + 'enableFloatingWindow': 'Включить плавающее окно', + 'permissionTip': 'Подсказка о разрешениях', + 'micPermissionRequiredForRecording': + 'Для записи требуется разрешение микрофона', + 'deleteTranslationRecordError': 'Ошибка при удалении записи перевода: @error', + "translationFailed": "Перевод не удался", + "translating": "Перевод", + "translate": "Перевести", + "pleaseInputText": "Введите текст", + "inputTextToTranslate": "Введите текст для перевода", + "textTooLong": "Текст слишком длинный, максимум 5000 символов", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "История отсутствует", + "historyRecords": "История записей", + "clearResults": "Очистить результаты", + "clearHistory": "Очистить историю", + "clearHistoryConfirm": + "Вы уверены, что хотите очистить всю историю переводов? Это действие необратимо.", + "unknownLanguage": "Неизвестный язык", + "deleteSessionRecord": "Удалить запись сессии", + "deleteSessionConfirm": + "Вы уверены, что хотите удалить все записи переводов этой сессии? Это действие необратимо.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Выберите источник изображения", + "imagePreview": "Предпросмотр изображения", + "translationResult": "Результат перевода", + "recognitionResult": "Результат распознавания", + "translatedImagePreview": "Предпросмотр переведенного изображения", + "translatedImageLoadFailed": "Не удалось загрузить переведенное изображение", + "pleaseSelectImage": "Выберите изображение", + "imageLoadFailed": "Не удалось загрузить изображение", + "imageQuality": "Качество изображения", + "maxSize": "Макс. размер", + "close": "Закрыть", + "setImageQuality": "Установить качество изображения", + "currentQuality": "Текущее качество: @value%", + "setMaxSize": "Установить макс. размер", + "currentMaxSize": "Текущий: @pxpx", + "waitingForAction": "Ожидание действия", + "pleaseSelectImageToStart": "Выберите изображение, чтобы начать", + "chooseImage": "Выбрать изображение", + "openingCamera": "Открытие камеры...", + "openingPhotoAlbum": "Открытие альбома...", + "cancelled": "Отменено", + "userCancelledSelection": "Пользователь отменил выбор", + "translatingImage": "Перевод изображения", + "callingImageTranslateService": "Вызов сервиса перевода изображения...", + "savingRecord": "Сохранение записи", + "savingTranslationResult": "Сохранение результата перевода...", + "translationCompleted": "Перевод завершен", + "allStepsCompleted": "Все шаги завершены", + "processingFailed": "Обработка не удалась", + "imageProcessingOrTranslationFailed": + "Обработка изображения или перевод не удались. Повторите попытку.\nОшибка: {error}", + "imageTooLarge": "Размер изображения превышает лимит 4 МБ", + "imageTooLargeHint": + "Размер изображения превышает 4 МБ. Уменьшите качество или размеры и повторите", + "emptyTranslationResult": "API перевода изображений вернул пустой результат", + "imageTranslationFailedTryLater": + "Перевод изображения не удался. Проблемы с сетью или лимит запросов. Попробуйте позже", + "imageTranslationApiException": + "Исключение API перевода изображений. Проверьте сеть и повторите", + "permissionRequired": "Требуется разрешение", + "cameraPermissionRequired": "Для съемки требуется разрешение камеры", + "photoAlbumPermissionRequired": + "Для выбора изображений требуется разрешение на фотоальбом", + "translationDetails": "Детали перевода", + "originalImage": "Оригинальное изображение", + "sourceLanguage": "Исходный язык", + "targetLanguage": "Целевой язык", + "translationTime": "Время перевода", + "shareInDevelopment": "Функция обмена в разработке", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Перевести аудиофайлы", + "noAudioFiles": "Аудиофайлы отсутствуют", + "calculating": "Вычисление...", + "playing": "Воспроизведение...", + "paused": "Пауза", + "clickToPlay": "Нажмите, чтобы воспроизвести", + "rename": "Переименовать", + "smartTranscription": "Умная транскрипция", + "renameAudioFile": "Переименовать аудиофайл", + "enterNewFileName": "Пожалуйста, введите новое имя файла", + + // 翻译模块 - 翻译详情 + "originalRecord": "Оригинальная запись", + "recordSummary": "Резюме записи", + "clickToGenerateSummary": + "Нажмите кнопку ниже, чтобы сгенерировать резюме сессии", + "summaryContent": "Содержание резюме", + "copied": "Скопировано", + "summaryCopiledToClipboard": "Резюме скопировано в буфер обмена", + "extractSummary": "Извлечь резюме", + "summaryGenerated": "Резюме сгенерировано", + "generating": "Генерация...", + "regenerate": "Сгенерировать заново", + "summaryTimeoutMessage": + "Тайм-аут запроса на генерацию резюме, возможно, из-за проблем с сетью или загруженности сервера.", + "deleteTranslationRecord": "Удалить запись перевода", + "deleteTranslationConfirm": + "Вы уверены, что хотите удалить эту запись перевода? Это действие необратимо.", + "originalText": "Оригинальный текст", + "translatedText": "Переведенный текст", + "sessionSummary": "Резюме сессии", + "cannotShare": "Невозможно поделиться", + "generateSummaryFirst": "Пожалуйста, сначала сгенерируйте резюме", + "translationSessionRecord": "Запись сессии перевода", + + // 个人资料模块 "editProfile": "Редактировать профиль", "avatar": "Аватар", "nickname": "Псевдоним", @@ -937,8 +1175,6 @@ const Map ruRU = { 'Вы уверены, что хотите навсегда удалить свой аккаунт? Это действие необратимо.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 'networkConnectionFailed': 'Ошибка сетевого подключения, проверьте настройки сети и попробуйте еще раз', 'serverTemporarilyUnavailable': @@ -957,10 +1193,6 @@ const Map ruRU = { 'Ошибка сетевого подключения, проверьте настройки сети', 'serverInternalErrorRetryLater': 'Внутренняя ошибка сервера, попробуйте еще раз позже', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Не удалось сжать изображение', 'avatarUpdateFailed': 'Не удалось обновить аватар', 'usernameCannotBeEmpty': 'Имя пользователя не может быть пустым', @@ -971,8 +1203,6 @@ const Map ruRU = { 'logoutFailedRetry': 'Не удалось выйти, попробуйте еще раз', 'accountPermanentlyDeleted': 'Аккаунт был навсегда удален', 'deleteAccountFailedRetry': 'Не удалось удалить аккаунт, попробуйте еще раз', - - // 账号服务相关 'clearUserDataFailed': 'Не удалось очистить данные пользователя', // 清理用户数据失败 'deleteUserDataFailed': 'Не удалось удалить данные пользователя', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Выход из стороннего сервиса успешен', // 第三方登录退出成功 @@ -988,29 +1218,33 @@ const Map ruRU = { 'accountServiceInitialized': 'Служба аккаунтов инициализирована', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Хранилище', + 'meetingStoragePermissionExplanation': + 'Нам нужен доступ к хранилищу, чтобы вы могли выбирать и загружать аудиофайлы.', + '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', - //'bluetooth': '蓝牙', - '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': @@ -1030,77 +1264,83 @@ 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.', -//'microphonePermission': '录音', - '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': 'Нужно ', + 'permissionUtilPermission': ' разрешение', + 'permissionUtilRestricted': ' разрешение ограничено', + 'permissionUtilRestrictedMessage': + 'Эта функция недоступна или ограничена на текущем устройстве. Проверьте настройки устройства или системные ограничения.', + 'permissionUtilConfirm': 'OK', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', // VOITRANS 'native.notification.navigation.title': 'Навигация запущена', // 导航进行中 'native.notification.navigation.keepRunning': 'Идёт навигация, держите приложение запущенным', // 正在导航中,请保持应用运行 - 'native.notification.bleAgent.running': 'Голосовой помощник работает', // 语音助手正在运行 + 'native.notification.bleAgent.running': + 'Голосовой помощник работает', // 语音助手正在运行 'native.notification.audioRecording.recording': 'Идёт запись, нажмите чтобы вернуться в приложение', // 正在录音,点击返回应用 'native.notification.music.waiting': 'Ожидание воспроизведения', // 等待播放 @@ -1110,15 +1350,7 @@ const Map ruRU = { 'native.notification.music.pause': 'Пауза', // 暂停 'native.notification.qqMusic.playing': 'Воспроизведение музыки', // 正在播放音乐 - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + // 版本更新 'newVersionFound': 'Найдена новая версия', // 版本更新对话框标题 'remindLater': 'Напомнить позже', // 稍后提醒按钮 'updateNow': 'Обновить сейчас', // 立即更新按钮 @@ -1129,253 +1361,7 @@ const Map ruRU = { 'updateErrorRetry': 'Произошла ошибка во время обновления, попробуйте еще раз позже', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Китай", - "美国": "США", - "加拿大": "Канада", - "俄罗斯": "Россия", - "英国": "Великобритания", - "德国": "Германия", - "意大利": "Италия", - "法国": "Франция", - "西班牙": "Испания", - "南非": "Южная Африка", - "沙特阿拉伯": "Саудовская Аравия", - "土耳其": "Турция", - "日本": "Япония", - "韩国": "Южная Корея", - "新加坡": "Сингапур", - "马来西亚": "Малайзия", - "泰国": "Таиланд", - "越南": "Вьетнам", - "印度": "Индия", - "巴基斯坦": "Пакистан", - "菲律宾": "Филиппины", - "印度尼西亚": "Индонезия", - "阿联酋": "ОАЭ", - "墨西哥": "Мексика", - "巴西": "Бразилия", - "阿根廷": "Аргентина", - "澳大利亚": "Австралия", - "新西兰": "Новая Зеландия", - "中国香港": "Гонконг (Китай)", - "中国澳门": "Макао (Китай)", - "中国台湾": "Тайвань (Китай)", - "埃及": "Египет", - "希腊": "Греция", - "荷兰": "Нидерланды", - "比利时": "Бельгия", - "匈牙利": "Венгрия", - "罗马尼亚": "Румыния", - "瑞士": "Швейцария", - "奥地利": "Австрия", - "丹麦": "Дания", - "瑞典": "Швеция", - "挪威": "Норвегия", - "波兰": "Польша", - "秘鲁": "Перу", - "智利": "Чили", - "哥伦比亚": "Колумбия", - "委内瑞拉": "Венесуэла", - "葡萄牙": "Португалия", - "卢森堡": "Люксембург", - "爱尔兰": "Ирландия", - "冰岛": "Исландия", - "阿尔巴尼亚": "Албания", - "马耳他": "Мальта", - "塞浦路斯": "Кипр", - "芬兰": "Финляндия", - "保加利亚": "Болгария", - "立陶宛": "Литва", - "拉脱维亚": "Латвия", - "爱沙尼亚": "Эстония", - "乌克兰": "Украина", - "塞尔维亚": "Сербия", - "克罗地亚": "Хорватия", - "斯洛文尼亚": "Словения", - "捷克": "Чехия", - "斯洛伐克": "Словакия", - "危地马拉": "Гватемала", - "萨尔瓦多": "Сальвадор", - "洪都拉斯": "Гондурас", - "尼加拉瓜": "Никарагуа", - "哥斯达黎加": "Коста-Рика", - "巴拿马": "Панама", - "海地": "Гаити", - "玻利维亚": "Боливия", - "厄瓜多尔": "Эквадор", - "巴拉圭": "Парагвай", - "乌拉圭": "Уругвай", - "摩洛哥": "Марокко", - "阿尔及利亚": "Алжир", - "突尼斯": "Тунис", - "尼日利亚": "Нигерия", - "加纳": "Гана", - "埃塞俄比亚": "Эфиопия", - "肯尼亚": "Кения", - "坦桑尼亚": "Танзания", - "乌干达": "Уганда", - "孟加拉国": "Бангладеш", - "以色列": "Израиль", - "黎巴嫩": "Ливан", - "约旦": "Иордания", - "伊拉克": "Ирак", - "科威特": "Кувейт", - "巴林": "Бахрейн", - "卡塔尔": "Катар", - "阿曼": "Оман", - "阿富汗": "Афганистан", - "斯里兰卡": "Шри-Ланка", - "缅甸": "Мьянма", - "尼泊尔": "Непал", - "蒙古": "Монголия", - "柬埔寨": "Камбоджа", - "老挝": "Лаос", - "文莱": "Бруней", - "东帝汶": "Восточный Тимор", - "斐济": "Фиджи", - "所罗门群岛": "Соломоновы Острова", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "История переводов", - "enableRecording": "Включить запись", - "viewAudioFiles": "Просмотреть аудиофайлы", - "headsetUser": "Пользователь наушников", - "phoneUser": "Пользователь телефона", - "selectSourceLanguage": "Выберите исходный язык", - "selectTargetLanguage": "Выберите целевой язык", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "История отсутствует", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Очистить историю", - "clearHistoryConfirm": - "Вы уверены, что хотите очистить всю историю переводов? Это действие необратимо.", - "unknownLanguage": "Неизвестный язык", - "deleteSessionRecord": "Удалить запись сессии", - "deleteSessionConfirm": - "Вы уверены, что хотите удалить все записи переводов этой сессии? Это действие необратимо.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Перевести аудиофайлы", - "noAudioFiles": "Аудиофайлы отсутствуют", - "calculating": "Вычисление...", - "playing": "Воспроизведение...", - "paused": "Пауза", - "clickToPlay": "Нажмите, чтобы воспроизвести", - "rename": "Переименовать", - "smartTranscription": "Умная транскрипция", - "renameAudioFile": "Переименовать аудиофайл", - "enterNewFileName": "Пожалуйста, введите новое имя файла", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригинальная запись", - "recordSummary": "Резюме записи", - "clickToGenerateSummary": - "Нажмите кнопку ниже, чтобы сгенерировать резюме сессии", - "summaryContent": "Содержание резюме", - "copied": "Скопировано", - "summaryCopiledToClipboard": "Резюме скопировано в буфер обмена", - "extractSummary": "Извлечь резюме", - "summaryGenerated": "Резюме сгенерировано", - "generating": "Генерация...", - "regenerate": "Сгенерировать заново", - "summaryTimeoutMessage": - "Тайм-аут запроса на генерацию резюме, возможно, из-за проблем с сетью или загруженности сервера.", - "deleteTranslationRecord": "Удалить запись перевода", - "deleteTranslationConfirm": - "Вы уверены, что хотите удалить эту запись перевода? Это действие необратимо.", - "originalText": "Оригинальный текст", - "translatedText": "Переведенный текст", - "sessionSummary": "Резюме сессии", - "cannotShare": "Невозможно поделиться", - "generateSummaryFirst": "Пожалуйста, сначала сгенерируйте резюме", - "translationSessionRecord": "Запись сессии перевода", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Сопряжение устройства", "connectYourDeepSoundHeadset": "Подключите ваши наушники Voitrans", "bind": "Привязать", @@ -1384,14 +1370,11 @@ const Map ruRU = { "autoInputCode": "Автоматический ввод кода", "skipBinding": "Пропустить привязку", "rescan": "Повторное сканирование", - "verifyingDevice": "Проверка устройства...", "confirmBinding": "Подтвердить привязку", "associatingDevice": "Связывание устройства...", "goToBluetoothSettings": "Перейти в настройки Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Готово к сопряжению", "preparingPairingEnvironment": "Подготовка среды для сопряжения...", "connectDeepSoundViaSystemBluetooth": @@ -1401,8 +1384,6 @@ const Map ruRU = { "waitingCompletePairing": "Пожалуйста, подождите, завершается сопряжение...", "pairingSuccessRedirecting": "Сопряжение успешно! Перенаправление на главную страницу...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Убедитесь, что вы подключены к устройству Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1415,19 +1396,12 @@ const Map ruRU = { "authorizationFailedCheckCode": "Ошибка авторизации, проверьте правильность кода авторизации", "pairingFailedRetry": "Не удалось выполнить сопряжение, попробуйте еще раз", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Пожалуйста, включите Bluetooth', 'deviceDisconnected': 'Устройство отключено', 'readyToStartPairing': 'Готово к началу сопряжения', 'checkingEnvironment': 'Проверка среды...', 'ensureHeadsetOnAndPairingMode': 'Убедитесь, что наушники включены и находятся в режиме сопряжения', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Установление безопасного соединения...', 'needManualBindingAuthCode': 'Требуется код авторизации для ручной привязки...', @@ -1450,21 +1424,30 @@ const Map ruRU = { 'bleConnectionFailed': 'Не удалось подключиться через BLE', 'deviceAuthorizationFailedCheckCode': 'Ошибка авторизации устройства, проверьте код авторизации', - - ///iOS蓝牙引导窗 - '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": "Приветственный бонус", + "firstBindRewardDesc": "Вы получили бонус за привязку устройства.", + "vipLevelLabel": "Уровень VIP:", + "expiryLabel": "Срок действия:", + "notActivated": "Не активировано", + "aiChatCreditsLabel": "Кредиты чата AI:", + "translationCreditsLabel": "Кредиты перевода:", + "meetingCreditsLabel": "Кредиты встреч:", + "ok": "OK", - //用户反馈页 + // 用户反馈模块 "feedback": "Отзыв пользователя", 'feedbackInfo': 'Оставить отзыв или предложение', 'feedbackDescription': @@ -1492,13 +1475,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": "Пожалуйста, не отключайтесь", @@ -1507,7 +1491,60 @@ const Map ruRU = { "removeEarbudsEnsureBattery": "Извлеките оба наушника и убедитесь, что уровень заряда батареи в обоих превышает 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Найдена новая версия @version', + 'otaConfirmUpdateNow': 'Обновить сейчас?', + 'otaUpdate': 'Обновить', + 'otaUpgradeSuccess': 'Обновление успешно', + 'otaUpgradeCompleteRepair': + 'Обновление прошивки завершено!\n\nУстройство необходимо повторно сопрячь. Перейти на страницу сопряжения?', + 'otaPairLater': 'Сопрячь позже', + 'otaPairNow': 'Сопрячь сейчас', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + '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': + 'Это обновление включает оптимизацию производительности и исправление ошибок.', + 'otaGetLatestVersionFailed': + 'Не удалось получить информацию о последней версии', + 'otaGetVersionInfoFailed': 'Не удалось получить информацию о версии', + 'otaCheckingDeviceStatus': 'Проверка состояния устройства...', + 'otaDownloadFailedCheckNetwork': 'Загрузка не удалась, проверьте сеть', + 'otaDownloadFailed': 'Загрузка не удалась', + 'otaPreparingConnection': 'Подготовка подключения...', + 'otaConnectingDevice': 'Подключение к устройству...', + 'otaUpgradeStarted': 'OTA-обновление начато...', + 'otaUpgradeProgressWithPercent': 'Прогресс: @percent%', + 'otaUpgradeSuccessComplete': 'Обновление успешно завершено', + 'otaUpgradeFailedWithCode': 'Обновление не удалось, код ошибки: @code', + 'otaUpgradeFailedTitle': 'Обновление не удалось', + 'otaUpgradeFailedDesc': + 'Проверьте подключение или пакет обновления, код: @code', + 'otaDeviceDisconnected': 'Устройство отключено', + 'otaDeviceConnected': 'Устройство подключено', + + // 音乐模块 "noMusic": "Нет музыки", // 暂无音乐 "noPlayingMusic": "Нет воспроизводимой музыки", // 暂无播放音乐 "unknownSong": "Неизвестная песня", // 未知歌曲 @@ -1555,22 +1592,122 @@ const Map ruRU = { "波斯语": "Персидский", "斯瓦希里语": "Суахили", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-mail", + "中国": "Китай", + "美国": "США", + "加拿大": "Канада", + "俄罗斯": "Россия", + "英国": "Великобритания", + "德国": "Германия", + "意大利": "Италия", + "法国": "Франция", + "西班牙": "Испания", + "南非": "Южная Африка", + "沙特阿拉伯": "Саудовская Аравия", + "土耳其": "Турция", + "日本": "Япония", + "韩国": "Южная Корея", + "新加坡": "Сингапур", + "马来西亚": "Малайзия", + "泰国": "Таиланд", + "越南": "Вьетнам", + "印度": "Индия", + "巴基斯坦": "Пакистан", + "菲律宾": "Филиппины", + "印度尼西亚": "Индонезия", + "阿联酋": "ОАЭ", + "墨西哥": "Мексика", + "巴西": "Бразилия", + "阿根廷": "Аргентина", + "澳大利亚": "Австралия", + "新西兰": "Новая Зеландия", + "中国香港": "Гонконг (Китай)", + "中国澳门": "Макао (Китай)", + "中国台湾": "Тайвань (Китай)", + "埃及": "Египет", + "希腊": "Греция", + "荷兰": "Нидерланды", + "比利时": "Бельгия", + "匈牙利": "Венгрия", + "罗马尼亚": "Румыния", + "瑞士": "Швейцария", + "奥地利": "Австрия", + "丹麦": "Дания", + "瑞典": "Швеция", + "挪威": "Норвегия", + "波兰": "Польша", + "秘鲁": "Перу", + "智利": "Чили", + "哥伦比亚": "Колумбия", + "委内瑞拉": "Венесуэла", + "葡萄牙": "Португалия", + "卢森堡": "Люксембург", + "爱尔兰": "Ирландия", + "冰岛": "Исландия", + "阿尔巴尼亚": "Албания", + "马耳他": "Мальта", + "塞浦路斯": "Кипр", + "芬兰": "Финляндия", + "保加利亚": "Болгария", + "立陶宛": "Литва", + "拉脱维亚": "Латвия", + "爱沙尼亚": "Эстония", + "乌克兰": "Украина", + "塞尔维亚": "Сербия", + "克罗地亚": "Хорватия", + "斯洛文尼亚": "Словения", + "捷克": "Чехия", + "斯洛伐克": "Словакия", + "危地马拉": "Гватемала", + "萨尔瓦多": "Сальвадор", + "洪都拉斯": "Гондурас", + "尼加拉瓜": "Никарагуа", + "哥斯达黎加": "Коста-Рика", + "巴拿马": "Панама", + "海地": "Гаити", + "玻利维亚": "Боливия", + "厄瓜多尔": "Эквадор", + "巴拉圭": "Парагвай", + "乌拉圭": "Уругвай", + "摩洛哥": "Марокко", + "阿尔及利亚": "Алжир", + "突尼斯": "Тунис", + "尼日利亚": "Нигерия", + "加纳": "Гана", + "埃塞俄比亚": "Эфиопия", + "肯尼亚": "Кения", + "坦桑尼亚": "Танзания", + "乌干达": "Уганда", + "孟加拉国": "Бангладеш", + "以色列": "Израиль", + "黎巴嫩": "Ливан", + "约旦": "Иордания", + "伊拉克": "Ирак", + "科威特": "Кувейт", + "巴林": "Бахрейн", + "卡塔尔": "Катар", + "阿曼": "Оман", + "阿富汗": "Афганистан", + "斯里兰卡": "Шри-Ланка", + "缅甸": "Мьянма", + "尼泊尔": "Непал", + "蒙古": "Монголия", + "柬埔寨": "Камбоджа", + "老挝": "Лаос", + "文莱": "Бруней", + "东帝汶": "Восточный Тимор", + "斐济": "Фиджи", + "所罗门群岛": "Соломоновы Острова", + "刚果民主共和国": "Democratic Republic of the Congo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldives", + "不丹": "Bhutan", + "摩纳哥": "Monaco", + "圣马力诺": "San Marino", + "牙买加": "Jamaica", + "巴哈马": "Bahamas", + "巴布亚新几内亚": "Papua New Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sk_sk.dart b/lib/core/translations/language/sk_sk.dart index 027611447..d6fba1138 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,6 +19,11 @@ const Map skSK = { "unknownError": "Neznáma chyba", "asrConnectionFailed": "Pripojenie k službe rozpoznávania reči zlyhalo. Skontrolujte sieť alebo to skúste znova neskôr.", + "justNow": "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", @@ -28,7 +34,7 @@ const Map skSK = { "explore": "Preskúmať", "settings": "Nastavenia", - // 语言 + // 语言列表 "followingSystem": "Podľa systému", "chinese": "Čínština", "english": "Angličtina", @@ -72,7 +78,7 @@ const Map skSK = { "arabic": "Arabčina", "persian": "Persčina", - // 登录页 + // 登录模块 "welcome": "Vitajte", "loginTips": "Prihláste sa alebo sa zaregistrujte pomocou telefónneho čísla alebo e-mailu", @@ -101,15 +107,11 @@ const Map skSK = { "resendVerificationCode": "Znova odoslať overovací kód", "login": "Prihlásiť sa", "usePasswordLogin": "Prihlásiť sa heslom", - - // 隐私政策弹窗 "loginDeclaration": "Vyhlásenie Voitrans", // Voitrans 声明 "welcomeToThisApp": "Vitajte v Voitrans, prečítajte si prosím pozorne", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + ", 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ť", // 同意并进入 @@ -167,7 +169,30 @@ const Map skSK = { 'right': 'Vpravo', 'checkConnectionStatusFailed': 'Kontrola stavu pripojenia zlyhala', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inicializácia Bluetooth zlyhala: @error', + 'needBluetoothAndLocationPermission': + 'Na vyhľadávanie zariadení sú potrebné povolenia Bluetooth a polohy', + 'permissionRequestFailedWithError': 'Žiadosť o povolenie zlyhala: @error', + 'needPermission': 'Vyžaduje sa povolenie', + 'blePermissionDialogContent': + 'Táto aplikácia potrebuje povolenia Bluetooth a polohy na vyhľadávanie zariadení. Povoľte ich v Nastaveniach.', + 'needEnableBluetooth': 'Zapnúť Bluetooth', + 'enableBluetoothDialogContent': + '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...", "exploreSlogan": "Inteligentné slúchadlá, nekonečné možnosti", "exploreSlogan1": "Inteligentný spoločník, nekonečné možnosti", @@ -192,211 +217,268 @@ const Map skSK = { "usageStats": "Statistiky využitia", "usageStatsInfo": "Zobrazte vaše využitie aplikácie", "scene": "Scenár", + // 用量统计模块 - "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": "Š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", - //"aiSummary": "AI摘要", - "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": "Štatistika objemu dát", + "sourceTextCharacters": "Znaky zdrojového textu", + "ttsTextCharacters": "Znaky TTS textu", + "effectiveAudioDuration": "Efektívna dĺžka zvuku", + "totalSessionDuration": "Celková dĺžka relácie", + "costStats": "Štatistika nákladov", + "estimatedCost": "Odhadované náklady", + "dailyCostThreshold": "Denný limit nákladov", + "monthlyCostThreshold": "Mesačný limit nákladov", + "usageBehaviorStats": "Štatistika správania pri používaní", + "mostUsedLanguagePair": "Najpoužívanejší jazykový pár", + "mostUsedMode": "Najpoužívanejší režim", + "asrApiCalls": "Volania ASR", + "totalAudioDuration": "Celková dĺžka zvuku", + "audioFileSize": "Veľkosť zvukového súboru", + "transcriptBytes": "Bajty prepisu", + "loadFailed": "Načítanie zlyhalo", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Štatistiky sa nepodarilo načítať. Skúste to znova neskôr.", + "cleanupComplete": "Čistenie dokončené", + "cleanedOldData": "Vyčistené dáta staršie ako 90 dní", + "exportFeature": "Funkcia exportu", + "exportInDevelopment": "Export dát je vo vývoji", + + // 商品模块 - 通用 + 'availablePackages': 'Dostupné balíky', + 'remainingQuota': 'Zostávajúci limit', + 'totalQuota': 'Celkový limit', + 'remaining': 'Zostáva', + 'featureDescription': 'Popis funkcie', + 'paymentSuccess': 'Platba úspešná', + 'paymentFailed': 'Platba zlyhala', + 'gotIt': 'Rozumiem', + 'paymentFailedTryAgain': 'Platba zlyhala. Skúste to znova.', + 'selectPaymentMethod': 'Vyberte spôsob platby', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Vytvorenie objednávky WeChat zlyhalo', + 'alipayOrderCreateFailed': 'Vytvorenie objednávky Alipay zlyhalo', + 'appleOrderCreateFailed': 'Vytvorenie objednávky Apple zlyhalo', + 'googleOrderCreateFailed': 'Vytvorenie objednávky Google zlyhalo', + 'paypalOrderCreateFailed': 'Vytvorenie objednávky PayPal zlyhalo', + 'paymentException': 'Výnimka platby', + 'paymentLaunchFailed': 'Spustenie platby zlyhalo', + 'paymentExceptionWithError': 'Výnimka platby: @error', + 'paymentProcessingCheckLater': + 'Vaša objednávka sa spracováva. Skontrolujte neskôr.', + 'paymentResultQueryException': 'Nepodarilo sa zistiť výsledok platby: @error', + 'orderConfirmedQuotaRefreshed': + 'Objednávka potvrdená. Váš limit bol obnovený.', + 'paymentCompletedConfirming': 'Platba dokončená. Potvrdzovanie…', + 'paymentCancelled': 'Platba bola zrušená', + 'paypalOpenedCompleteInBrowser': + 'PayPal je otvorený. Dokončite platbu v prehliadači.', + 'paypalOpenFailed': 'Nie je možné otvoriť platobnú stránku PayPal', + 'paymentTestTitle': 'Test platby', + 'paymentTestOrderInfo': 'Informácie o testovacej objednávke', + 'paymentTestProductId': 'ID produktu', + 'paymentTestProductDescription': 'Popis produktu', + 'paymentTestWechatDescription': 'Test platby WeChat', + 'paymentTestAlipayDescription': 'Test platby Alipay', + 'paymentTestAmount': 'Suma', + 'paymentTestSelectAmount': 'Vyberte testovaciu sumu', + 'paying': 'Platba prebieha...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stav platby', + 'errorInfoWithMessage': 'Chyba: @message', + 'retest': 'Znova otestovať', + 'paymentTestInstructionsTitle': 'Pokyny', + 'paymentTestInstructionsContent': + '1. Vyberte testovaciu sumu (odporúčané: ¥0.01)\n2. Kliknite na tlačidlo platby pre spustenie\n3. Dokončite platbu v platobnej aplikácii\n4. Vráťte sa a skontrolujte výsledok', + 'startingWechatPayment': 'Spúšťanie WeChat Pay...', + 'startingAlipayPayment': 'Spúšťanie Alipay...', + 'wechatPaymentSuccess': 'Platba WeChat Pay úspešná!', + 'wechatPaymentFailed': 'Platba WeChat Pay zlyhala', + 'wechatPaymentLaunchFailed': 'Spustenie WeChat Pay zlyhalo', + 'cannotLaunchWechatPayment': 'Nie je možné spustiť WeChat Pay', + 'wechatPaymentException': 'Výnimka WeChat Pay', + 'wechatPaymentTestCompleted': 'Test platby WeChat Pay dokončený', + 'alipayPaymentSuccess': 'Platba Alipay úspešná!', + 'alipayPaymentFailed': 'Platba Alipay zlyhala', + 'alipayPaymentLaunchFailed': 'Spustenie Alipay zlyhalo', + 'cannotLaunchAlipayPayment': 'Nie je možné spustiť Alipay', + 'alipayPaymentException': 'Výnimka Alipay', + "insufficientIntegral": "Nedostatok bodov", + "insufficientBalanceDesc": + "Nedostatočný zostatok, prejdite na príslušnú stránku dobitia a dobite si.", + "recharge": "Prejsť na dobitie", + "aiMemberExpiredDesc": + "Členstvo AI vypršalo, prejdite na stránku dobitia členstva a obnovte ho.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Hudba a odporúčania', + 'navigationAndRoutes': 'Navigácia a trasy', + 'nearbySearch': 'Vyhľadávanie v okolí', + 'newsInformation': 'Správy', + 'communicationAssistant': 'Komunikačný asistent', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Dlhší limit konverzácie, viac volaní nástrojov, rozšírená dĺžka kontextu.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Vhodné pre Q&A agenta, sumarizáciu, analýzu a vykonávanie úloh.', + 'musicSearchPlaybackControl': 'Vyhľadávanie v knižnici hudby a ovládanie prehrávania', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Inteligentný playlist a odporúčania podobných skladieb', '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', + 'Plánovanie trasy a vyhýbanie sa zápcham', + 'voiceBroadcastAndWaypoints': 'Hlasové vysielanie a nastavenie bodov trasy', + 'realTimeWeatherForecast': 'Počasie v reálnom čase a predpoveď', + 'clothingAdviceAndTravelReminders': 'Odporúčania na oblečenie a cestovné upozornenia', + 'poiSearchFoodGasParking': 'Vyhľadávanie POI: reštaurácie / čerpacie stanice / parkovanie', + 'ratingsHoursAndDirectRoutes': 'Hodnotenia, otváracie hodiny a priama navigácia', + 'hotNewsAndTopicOverview': 'Najnovšie správy a prehľad tém', + 'longArticleSummariesAndKeyPoints': 'Zhrnutia dlhých článkov a kľúčové body', + 'helpCallAndSMS': 'Pomoc s hovormi a SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Šablónové správy a pripomienky v pláne', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Funkcie závisia od povolení zariadenia, dostupnosti služby a sieťových podmienok.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Prepis v reálnom čase', + 'sceneLexicon': 'Scenárový slovník', + 'subtitleDisplay': 'Titulky', + 'transHeaderDesc1': + 'Simultánne tlmočenie a textový preklad v reálnom čase s nízkou latenciou hlasu.', + 'transHeaderDesc2': 'Vhodné pre cestovanie, obchod, prejavy a výučbu.', + 'translateZhEn': 'Preklad čínština–angličtina', + 'lowLatencyVoiceBroadcast': 'Hlasové vysielanie s nízkou latenciou', + 'multiLangTextTranslation': 'Viacjazyčný textový preklad', + 'termOptimizationContextPreserve': + 'Optimalizácia terminológie a zachovanie kontextu', + 'lexiconTourBusinessLife': 'Slovníky cestovanie/obchod/život', + 'personalVocabularyMemory': 'Osobná pamäť slovnej zásoby', + 'conversationSubtitleLargeText': 'Titulky konverzácie / Režim veľkého textu', + 'colorHighContrast': 'Vysoký farebný kontrast', + 'transDisclaimer': + 'Výkon prekladu závisí od mikrofónu, latencie siete a okolitého hluku.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Záznam stretnutia', + 'transcriptionAndSummary': 'Prepis a zhrnutie', + 'keywordSearch': 'Vyhľadávanie kľúčových slov', + 'collaborationSharing': 'Spolupráca a zdieľanie', + 'meetingHeaderDesc1': + 'Nahrávanie zvuku, prepis, vyhľadávanie kľúčových slov a automatické zhrnutie na zvýšenie efektivity stretnutí.', + 'meetingHeaderDesc2': + 'Vhodné pre obchodné stretnutia, poznámky z prednášok a zápisnice z rozhovorov.', + 'meetingAutoRecording': 'Automatické nahrávanie a segmentácia', + 'meetingSpeakerTagging': 'Označovanie rečníkov', + 'meetingLongAudioTranscription': 'Prepis dlhého zvuku', + 'meetingKeyPointSummary': 'Extrakcia kľúčových bodov', + 'meetingTopicNameSearch': 'Vyhľadávanie podľa témy/mena', + 'meetingTimelineJump': 'Skok na časovej osi', + 'meetingExportSummary': 'Export zápisnice', + 'meetingMultiPlatformShare': 'Zdieľanie naprieč platformami', + 'meetingDisclaimer': + 'Používajte v tichom prostredí; výkon závisí od mikrofónu a siete.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Prehľad výhod', + 'higherQuota': 'Vyšší limit používania', + 'lowerUnitPrice': 'Nižšia jednotková cena', + 'priorityService': 'Prioritná služba', + 'exclusiveSupportChannel': 'Vyhradený kanál podpory', + 'fastResponse': 'Rýchla reakcia na problémy', + 'eventsAndDiscounts': 'Akcie a zľavy', + 'memberExclusiveEvents': 'Exkluzívne akcie pre členov', + 'longTermDiscountPlan': 'Dlhodobý zľavový plán', + 'generalPrivileges': 'Všeobecné výhody', + 'earlyAccessNewFeatures': 'Skorý prístup k novým funkciám', + 'crossDeviceSync': 'Synchronizácia medzi zariadeniami', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Skutočné výhody závisia od detailov balíka a môžu sa meniť s verziami.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Základ 100', + 'ai_002_name': 'AI Základ 500', + 'ai_003_name': 'AI Základ 1000', + 'meet_001_name': 'Stretnutie Základ 100', + 'meet_002_name': 'Stretnutie Základ 500', + 'meet_003_name': 'Stretnutie Základ 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': 'Obsahuje 100 použití. Prístup k hlavným AI funkciám.', + 'ai_002_desc': 'Obsahuje 500 použití. Prístup k hlavným AI funkciám.', + 'ai_003_desc': 'Obsahuje 1000 použití. Prístup k hlavným AI funkciám.', + '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': 'Aplikácia: VoiTrans · Poskytovateľ: VoiTrans', + 'iapCustomerServiceQQLabel': 'Zákaznícky servis IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 'skip': 'Preskočiť', - 'next': 'Next', + 'next': 'Ďalej', '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, ', - // AI 引导步骤 - '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', + 'imHere': 'Som tu~', + 'guideWelcomeWakeAI': 'Vitajte vo Voitrans! Najprv zobuďte svoju AI “Lily”.', + 'aiReplyCompleted': 'Lily dokončila odpoveď!', + 'aiThinking': 'Lily premýšľa…', + 'guideAwakenSuccess': 'Výborne! Lily je hore—požiadajte ju o pomoc.', + 'confirmInput': 'Potvrdiť vstup', + 'guideClickSendPrefix': 'Ťuknite na odoslať, ', + 'guideWeatherStart': 'Povedzte Lily: “Aké je dnes počasie?”', + 'guideWeatherInput': 'Aké je dnes počasie?', + 'guideWeatherSend': 'Lily ohlási počasie v reálnom čase', + 'guideWeatherEnd': 'Lily vie hlásiť počasie naživo—vyskúšajte ďalšie príkazy', + 'guideMusicStart': 'Povedzte Lily: “Pusti rockovú hudbu”', + 'guideMusicInput': 'Pusti rockovú hudbu', + 'guideMusicSend': 'Lily nájde hudbu pre vás', + 'guideMusicEnd': 'Lily našla hudbu—vyskúšajte ďalšie príkazy', + 'guideNavStart': 'Povedzte Lily: “Naviguj na letisko Shenzhen”', + 'guideNavInput': 'Naviguj na letisko Shenzhen', + 'guideNavSend': 'Lily naplánuje trasu', + 'guideNavEnd': 'Navigácia nastavená—vyskúšajte ďalšie príkazy', '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', - - // 商务会议助手页 + 'Povedzte Lily: “Vytvor pripomienku stretnutia na zajtra o 15:00”', + 'guideMeetingInput': 'Vytvor pripomienku stretnutia na zajtra o 15:00', + 'guideMeetingSend': 'Lily vytvorí pripomienku stretnutia', + 'guideMeetingEnd': 'Pripomienka vytvorená—vyskúšajte ďalšie príkazy', + 'guidePhoneStart': 'Povedzte Lily: “Zavolaj mame”', + 'guidePhoneInput': 'Zavolaj mame', + 'guidePhoneSend': 'Lily uskutoční hovor', + 'guidePhoneEnd': 'Hovor uskutočnený—vyskúšajte ďalšie príkazy', + 'guideSmsStart': 'Povedzte Lily: “Pošli otcovi správu: Budem doma na večeru”', + 'guideSmsInput': 'Správa otcovi: Budem doma na večeru', + 'guideSmsSend': 'Lily pošle správu', + 'guideSmsEnd': 'Správa odoslaná—hlasové ovládanie je praktické', + + // Meeting模块 - 首页与导航 "startMeeting": "Začať stretnutie", 'edit': 'Upraviť', 'delete': 'Odstrániť', @@ -408,40 +490,39 @@ const Map skSK = { 'recordingDetails': 'Podrobnosti záznamu', 'aiSummary': 'AI zhrnutie', 'meetingTranscript': 'Prepis stretnutia', - - // Meeting模块 - 导航和基础功能 - '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': 'Súbory', + 'mine': 'Moje', + 'connect': 'Pripojiť', + 'allFiles': 'Všetky súbory', + 'searchInAllFiles': 'Hľadať vo všetkých súboroch', + 'from': 'Od', + 'sortBy': 'Zoradiť podľa', + 'creationTime': 'Čas vytvorenia', + 'bluetoothConnection': 'Bluetooth pripojenie', + 'meetingReconnect': 'Znova pripojiť', + 'searching': 'Vyhľadáva sa...', + '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': 'Spúšťa sa Wi-Fi...', + 'newFilesDetected': 'Zistené nové súbory, pripravuje sa import', + 'noNewFiles': 'Žiadne nové súbory na import', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Spustiť nahrávanie', + 'liveRecording': 'Nahrávanie naživo', + 'audioVideoRecording': 'Nahrávanie zvuku/videa', + 'callRecording': 'Nahrávanie hovoru', + 'importAudio': 'Importovať zvuk', 'meetingRecordExitTitle': 'Ukončiť nahrávanie', // 退出录音 'meetingRecordExitMessage': 'Vyberte akciu po odchode', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Ukončiť a uložiť', // 结束录音并保存 @@ -464,202 +545,214 @@ const Map skSK = { 'Aby sme počas nahrávania zobrazili plávajúcu lištu nahrávania (časovač/pauza/pokračovať), potrebujeme povolenie prekrytia.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Nepodarilo sa automaticky otvoriť systémové nastavenia. Otvorte Nastavenia a povoľte prekrytie manuálne.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Prepisuje sa...', + 'summarizing': 'Sumarizuje sa...', + 'analyzing': 'Analyzuje sa...', + 'summaryComplete': 'Zhrnutie dokončené', + 'generate': 'Generovať', + 'overview': 'Prehľad', + 'transcription': 'Prepis', + 'summary': 'Zhrnutie', + 'mindMap': 'Myšlienková mapa', + 'editSpeaker': 'Upraviť', + 'nameSpeaker': 'Pomenovať rečníka', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Znova zhrnúť', + 'dateAndTime': 'Dátum a čas', + 'location': 'Miesto', + 'attendees': 'Účastníci', + 'inputLocation': 'Zadajte miesto', + 'inputAttendees': 'Zadajte účastníkov', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Vybrať šablónu zhrnutia', + 'useThisTemplate': 'Použiť túto šablónu', + 'lastUsed': 'Naposledy použité', + 'create': 'Vytvoriť', + 'templateDetails': 'Podrobnosti šablóny', + 'tag': 'Štítok', + 'description': 'Popis', + 'template': 'Šablóna', + 'deleteTemplate': 'Odstrániť šablónu', + 'deleteTemplateConfirm': 'Ste si istí, že chcete odstrániť túto šablónu?', + 'editTemplate': 'Upraviť šablónu', + 'createTemplate': 'Vytvoriť šablónu', + 'name': 'Názov', + 'templateContentHint': + 'Prosím zadajte obsah šablóny! Tip: Kliknite na tlačidlo AI vyššie pre rýchle vygenerovanie obsahu šablóny na základe zadaného názvu a popisu', + 'inputNameHint': 'Prosím zadajte názov', + 'inputDescHint': 'Prosím zadajte popis', + 'custom': 'Vlastné', + 'pleaseEnter': 'Prosím zadajte', + 'viewAll': 'Zobraziť všetko', + 'recordingLanguage': 'Jazyk nahrávky', + 'chineseSimplified': 'Čínska mandarínčina (zjednodušená)', + 'meetingGenerateNow': 'Generovať teraz', + 'keyEventsAnalyzed': 'Analyzovaných {count} kľúčových udalostí.', + 'aiAnalysisDesc': + 'AI analýza identifikuje kľúčové udalosti v nahrávkach, aby ste mohli vybrať dôležité udalosti na generovanie AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Importuje sa...', + 'batchImporting': 'Hromadný import...', + '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': 'Zdieľať zvuk stretnutia', + 'shareComplete': 'Zdieľanie dokončené!', + 'shareFailed': 'Zdieľanie zlyhalo: {error}', + 'fileProcessingFailed': + 'Spracovanie súboru zlyhalo: {filePath}, chyba: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Uložiť myšlienkovú mapu', + 'shareMindMap': 'Zdieľať myšlienkovú mapu', + 'shareSuccess': 'Zdieľanie úspešné', + + // Meeting模块 - AI问答 + 'askAI': 'Opýtať sa AI ...', + 'askAIPrompt': 'S čím vám môžem dnes pomôcť?', + 'continueAsk': 'Pokračovať v otázkach', + 'todoList': 'Zoznam úloh', + 'extractConclusion': 'Extrahovať záver', + 'generateKeyIndicators': 'Generovať kľúčové ukazovatele', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Zdieľať odkaz', + 'copyTranscript': 'Kopírovať prepis', + 'copySummary': 'Kopírovať zhrnutie', + 'exportAudio': 'Exportovať zvuk', + 'exportTranscript': 'Exportovať prepis', + 'shareMeetingAudio': 'Zdieľať zvuk stretnutia', + 'exportSummary': 'Exportovať zhrnutie', + 'exportAs': 'Exportovať ako', + 'exportingPDF': 'Exportuje sa PDF...', + 'export': 'Exportovať', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka', + 'summaryWillBeUpdatedAutomatically': + 'Zhrnutie sa bude automaticky aktualizovať podľa šablóny', + 'nameCurrentSpeaker': 'Pomenovať aktuálneho rečníka', + 'recentlyUsedNames': 'Naposledy použité mená', + 'applyToCurrentParagraph': 'Použiť na aktuálny odsek', + 'totalTime': 'Celkový čas', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Rečníci v zhrnutí sa automaticky aktualizujú', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Synchronizovať do cloudu', + 'syncToCloudTip': + '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', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': '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', - - // 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', + 'transcriptionRecords': 'Záznamy prepisu', + 'templateCommunity': 'Komunita šablón', + 'comingSoon': 'Pripravujeme', + 'integration': 'Integrácia', + 'voitransPrivateCloud': 'VOITRANS PRIVÁTNY CLOUD', + 'enabled': 'Povolené', + 'disabled': 'Zakázané', + 'myVoitransDevice': 'Moje zariadenie VOITRANS', + 'helpAndFeedback': 'Pomoc a spätná väzba', + 'aboutVoitrans': 'O VOITRANS', + 'meetingDays': 'Dní', + 'meetingHours': 'Hodín', + 'voitransAiMember': 'Voitrans AI člen', + 'unlockStarterMember': 'Odomknúť Starter členstvo', + 'bindDeviceToActivate': + 'Ak chcete aktivovať Starter členstvo, pripojte zariadenie Voitrans', + 'unlockNow': 'Odomknúť teraz', + + // Meeting模块 - 会员与升级 + 'comparison': 'Porovnanie', + 'detailedInfo': 'Podrobné informácie', + 'monthlyTranscriptionTime': 'Mesačný čas prepisu', + 'unlimited': 'Neobmedzený', + 'professionalTemplates': 'Profesionálne šablóny', + 'limited': 'Obmedzený', + 'fullTemplates': 'Úplné šablóny', + 'professionalTerms': 'Odborné výrazy', + 'customTemplates': 'Vlastné šablóny', + 'visualMindMap': 'Vizuálna myšlienková mapa', + 'speakerIdentification': 'Identifikácia rečníka', + 'aiVoiceEnhancement': 'AI vylepšenie hlasu', + 'audioImport': 'Import zvuku', + 'multipleExportFormats': 'Viacero formátov exportu', + 'professionalSummaryTemplates': 'Profesionálne šablóny zhrnutí', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesionálny dizajn šablón na zvýšenie vašej pracovnej efektivity. Prispôsobené podľa potrieb odvetvia.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Môžete si prispôsobiť výzvy na zhrnutie podľa svojich potrieb a použiť ich na generovanie požadovaných zhrnutí.', '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.', + 'Viac než zhrnutia - organizujte a vizualizujte kľúčové body pomocou myšlienkových máp pre efektívnejšie pochopenie celého textu.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Objavujte, zdieľajte a čerpajte inšpiráciu z knižnice šablón vytvorených používateľmi.', '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.', + 'Prepis zvuku bude podporovať identifikáciu rečníkov, intuitívnejšie obnoví obsah stretnutia alebo telefonátu. Zároveň bude zhrnutie presnejšie.', '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.', + 'AI vylepšenie hlasu podporuje viacero nastavení redukcie šumu, inteligentne eliminuje hluk na pozadí, zvyšuje čistotu hlasu a zlepšuje kvalitu prehrávania zvuku.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Jednoducho importujte zvukové súbory z lokálnych alebo aplikácií tretích strán, ako sú hlasové poznámky, Google Drive atď.', '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', + 'Exportujte zvukové nahrávky, text prepisu a zhrnutia v rôznych formátoch (TXT, PDF, JPEG) podľa potreby.', + 'upgradeMembership': 'Vylepšiť členstvo', + 'yearlySubscription': 'Ročné predplatné', + 'monthlySubscription': 'Mesačné predplatné', + 'proMonthly': 'Pro ¥60/mesiac', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-dňová bezplatná skúšobná verzia, potom ¥800/rok. Zrušte kedykoľvek pred koncom skúšobnej doby.', + 'sevenDayTrial': '7-dňová bezplatná skúšobná verzia', + 'unlimitedMonthly': 'Neobmedzený ¥120/mesiac', '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-dňová bezplatná skúšobná verzia, potom ¥1600/rok. Zrušte kedykoľvek pred koncom skúšobnej doby.', + 'trialNote': '*Bezplatná skúšobná verzia na 7 dní, potom ročné spoplatnenie, zrušenie kedykoľvek.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mesiac', + 'subscribe': 'Predplatiť', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mesiac', '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 vylepšení predplatného sa zostávajúce dni pôvodného predplatného automaticky vypočítajú a vrátia na váš platobný účet', + 'buyMoreTranscriptionTime': 'Kúpiť viac času na prepis', + 'sixThousandMinutes': '6 000 minút', + 'threeThousandMinutes': '3 000 minút', + 'sixHundredMinutes': '600 minút', + 'oneHundredTwentyMinutes': '120 minút', + 'validityPeriod': '*Doba platnosti: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Použiť na všetky odseky tohto rečníka', - 'summaryWillBeUpdatedAutomatically': - 'Zhrnutie sa bude automaticky aktualizovať podľa šablóny', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivované ihneď po nákupe, platné 2 roky od aktivácie.', + 'purchase': 'Kúpiť', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Jazyk nahrávania', + 'cantonese': 'Kantončina', + 'sichuan': 'Sečuánsky dialekt', + 'shanghai': 'Šanghajský dialekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Neznámy jazyk', + 'analysisFailed': 'Analýza zlyhala, skúste to znova neskôr', + 'transcriptionFailed': 'Prepis zlyhal, skúste to znova neskôr', + 'summaryFailed': 'Zhrnutie zlyhalo, skúste to znova neskôr', + 'summaryFailedShort': 'Zhrnutie zlyhalo', + 'transcriptionFailedShort': 'Prepis zlyhal', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Zvukový prehrávač nie je pripravený, prosím počkajte', + 'playFailed': 'Prehrávanie zlyhalo', + 'audioFileNotFound': 'Zvukový súbor sa nenašiel', + 'fetchingAudio': 'Načítavanie zvuku z cloudu...', + 'playerLoadFailed': 'Zvukový prehrávač sa nepodarilo načítať', // 设置页 "systemSettings": "Systémové nastavenia", @@ -668,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", @@ -711,42 +804,32 @@ const Map skSK = { "bleHeadsetFirmwareUpgrade": "Aktualizácia verzie firmvéru slúchadiel BLE", "deviceManagement": "Správa zariadení", "manageConnectedDevices": "Správa pripojených Bluetooth zariadení", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Momentálne máte najnovšiu verziu {version}', 'checkUpdateFailed': 'Kontrola aktualizácií zlyhala', 'networkErrorRetry': 'Chyba siete, skúste to znova neskôr', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Hlasový chat v reálnom čase", "realtimeVoiceChatInfo": "Vyskúšajte funkciu inteligentnej hlasovej interakcie (ukážka funkcie)", "loading": "Načítava sa...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Neznáme zariadenie", + "deviceTypeClassicBluetoothHeadset": "Klasické Bluetooth slúchadlá", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth slúchadlá", + "deviceTypeSmartVoiceRecorder": "Inteligentný hlasový záznamník", + "deviceTypeSmartEye": "Inteligentné okuliare", "unbind": "Zrušiť prepojenie", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Zatiaľ nie sú pripojené žiadne zariadenia", + "pleaseBindDeviceFirst": + "Najprv pripojte zariadenie, aby ste ho mohli spravovať", + "noMacAddress": "Žiadna MAC adresa", + "licenseCode": "Licenčný kód", + "confirmUnbind": "Potvrdiť odpojenie", + "confirmUnbindMessage": + "Ste si istí, že chcete odpojiť zariadenie \"{deviceName}\"?", + "confirmUnbindAction": "Potvrdiť odpojenie", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Vymazať históriu chatu", "online": "Online", @@ -774,29 +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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "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": "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': '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.', @@ -809,18 +894,17 @@ const Map skSK = { 'startVoiceInput': 'Začať hlasový vstup', 'startPhoneCallMode': 'Začať režim volania, začať hlasový vstup', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Sem zadajte svoju správu...', // 全屏编辑器输入提示 'characterCount': '{count} znakov', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopírovať', 'copySuccess': 'Úspešne skopírované', 'report': 'Nahlásiť', 'submitSuccess': 'Úspešne odoslané', 'submitFailed': 'Odoslanie zlyhalo', 'reportSubmitted': 'Hlásenie bolo odoslané, spracujeme ho čo najskôr', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodlivé/Nebezpečné', 'pornographicVulgar': 'Pornografické/Vulgárne', 'misleadingAttack': 'Zavádzajúce/Útok', @@ -830,17 +914,21 @@ const Map skSK = { 'other': 'Iné', 'reportDescriptionHint': 'Chceme vedieť dôvod vášho hlásenia, môžete opísať problém, s ktorým ste sa stretli.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Vygenerované AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Volanie nástroja', + 'noResult': 'Žiadny výsledok', + 'noToolCallContentToCopy': 'Žiadny obsah volania nástroja na kopírovanie', + 'toolCallDetails': 'Podrobnosti volania nástroja:', + 'toolCallContentCopied': 'Obsah volania nástroja skopírovaný do schránky', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tu sú niektoré odporúčané skladby:', 'playList': 'Zoznam skladieb', 'moreMusic': 'Viac hudby', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'hodín', // 小时单位 @@ -855,7 +943,30 @@ const Map skSK = { "bicycling": "Bicyklovanie", "tsransit": "Verejná doprava", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Vybrať navigačnú aplikáciu', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigovať s Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigovať s Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigovať s Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigovať s Apple Maps', + 'builtInNavigation': 'Vstavaná navigácia', + 'useBuiltInNavigation': 'Navigovať so vstavanou mapou', + 'navigationStartFailed': 'Spustenie navigácie zlyhalo', + 'cannotPlayMusicListRetryLater': + 'Zoznam hudby sa nepodarilo prehrať, skúste to neskôr', + 'cannotPlaySong': 'Skladbu nie je možné prehrať', + '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 nie je dostupné', + 'openAppleMapError': 'Chyba pri otváraní Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Dotaz na poveternostné podmienky:', 'highest': 'Najvyššia', 'lowest': 'Najnižšia', @@ -884,18 +995,8 @@ const Map skSK = { "friday": "Pi", "saturday": "So", "sunday": "Ne", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Slnečno", "partlyCloudy": "Polooblačno", "partlySunny": "Prevažne slnečno", @@ -916,7 +1017,142 @@ const Map skSK = { "haze": "Opar", "strongWind": "Silný vietor", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Preklad obrázka", + "textTranslation": "Preklad textu", + + // 翻译模块 - 主页 + "translationHistory": "História prekladov", + "enableRecording": "Povoliť nahrávanie", + "viewAudioFiles": "Zobraziť zvukové súbory", + "headsetUser": "Používateľ slúchadiel", + "phoneUser": "Používateľ telefónu", + "selectSourceLanguage": "Vyberte zdrojový jazyk", + "selectTargetLanguage": "Vyberte cieľový jazyk", + "me": "Ja", + "counterPart": "Protistrana", + "bluetoothCallStateError": + "Uistite sa, že Bluetooth slúchadlá sú pripojené k telefónu a že prebieha hovor", + "autoDetect": "Automatická detekcia", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Rozpoznanie jazyka zlyhalo", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Vypnúť plávajúce okno', + 'enableFloatingWindow': 'Zapnúť plávajúce okno', + 'permissionTip': 'Tip k povoleniam', + 'micPermissionRequiredForRecording': + 'Na nahrávanie je potrebné povolenie mikrofónu', + 'deleteTranslationRecordError': + 'Chyba pri odstraňovaní záznamu prekladu: @error', + "translationFailed": "Preklad zlyhal", + "translating": "Prekladá sa", + "translate": "Preložiť", + "pleaseInputText": "Zadajte text", + "inputTextToTranslate": "Zadajte text na preklad", + "textTooLong": "Text je príliš dlhý, maximálne 5000 znakov", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Žiadna história", + "historyRecords": "Záznamy histórie", + "clearResults": "Vymazať výsledky", + "clearHistory": "Vymazať históriu", + "clearHistoryConfirm": + "Ste si istí, že chcete vymazať celú históriu prekladov? Túto akciu nie je možné vrátiť späť.", + "unknownLanguage": "Neznámy jazyk", + "deleteSessionRecord": "Odstrániť záznam relácie", + "deleteSessionConfirm": + "Ste si istí, že chcete odstrániť všetky záznamy prekladov pre túto reláciu? Túto akciu nie je možné vrátiť späť.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Vybrať zdroj obrázka", + "imagePreview": "Náhľad obrázka", + "translationResult": "Výsledok prekladu", + "recognitionResult": "Výsledok rozpoznania", + "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": "Kvalita obrázka", + "maxSize": "Maximálna veľkosť", + "close": "Zavrieť", + "setImageQuality": "Nastaviť kvalitu obrázka", + "currentQuality": "Aktuálna kvalita: @value%", + "setMaxSize": "Nastaviť maximálnu veľkosť", + "currentMaxSize": "Aktuálne: @pxpx", + "waitingForAction": "Čaká sa na akciu", + "pleaseSelectImageToStart": "Vyberte obrázok na začatie", + "chooseImage": "Vybrať obrázok", + "openingCamera": "Otvára sa kamera...", + "openingPhotoAlbum": "Otvára sa fotogaléria...", + "cancelled": "Zrušené", + "userCancelledSelection": "Používateľ zrušil výber", + "translatingImage": "Prekladá sa obrázok", + "callingImageTranslateService": "Volá sa služba prekladu obrázkov...", + "savingRecord": "Ukladanie záznamu", + "savingTranslationResult": "Ukladanie výsledku prekladu...", + "translationCompleted": "Preklad dokončený", + "allStepsCompleted": "Všetky kroky dokončené", + "processingFailed": "Spracovanie zlyhalo", + "imageProcessingOrTranslationFailed": + "Spracovanie obrázka alebo preklad zlyhal. Skúste to znova.\nChyba: {error}", + "imageTooLarge": "Veľkosť obrázka presahuje limit 4MB", + "imageTooLargeHint": + "Veľkosť obrázka presahuje 4MB. Znížte kvalitu alebo rozmery a skúste znova", + "emptyTranslationResult": "API prekladu obrázkov vrátilo prázdny výsledok", + "imageTranslationFailedTryLater": + "Preklad obrázka zlyhal. Problém so sieťou alebo limitom. Skúste to neskôr", + "imageTranslationApiException": + "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": + "Na výber obrázkov je potrebné povolenie fotogalérie", + "translationDetails": "Podrobnosti prekladu", + "originalImage": "Pôvodný obrázok", + "sourceLanguage": "Zdrojový jazyk", + "targetLanguage": "Cieľový jazyk", + "translationTime": "Čas prekladu", + "shareInDevelopment": "Funkcia zdieľania je vo vývoji", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Preložiť zvukové súbory", + "noAudioFiles": "Žiadne zvukové súbory", + "calculating": "Vypočítava sa...", + "playing": "Prehráva sa...", + "paused": "Pozastavené", + "clickToPlay": "Kliknite pre prehratie", + "rename": "Premenovať", + "smartTranscription": "Inteligentný prepis", + "renameAudioFile": "Premenovať zvukový súbor", + "enterNewFileName": "Zadajte nový názov súboru", + + // 翻译模块 - 翻译详情 + "originalRecord": "Pôvodný záznam", + "recordSummary": "Zhrnutie záznamu", + "clickToGenerateSummary": + "Kliknite na tlačidlo nižšie pre vygenerovanie zhrnutia relácie", + "summaryContent": "Obsah zhrnutia", + "copied": "Skopírované", + "summaryCopiledToClipboard": "Zhrnutie skopírované do schránky", + "extractSummary": "Extrahovať zhrnutie", + "summaryGenerated": "Zhrnutie vygenerované", + "generating": "Generuje sa...", + "regenerate": "Znova vygenerovať", + "summaryTimeoutMessage": + "Požiadavka na generovanie zhrnutia vypršala, môže to byť spôsobené problémami so sieťou alebo zaneprázdneným serverom.", + "deleteTranslationRecord": "Odstrániť záznam prekladu", + "deleteTranslationConfirm": + "Ste si istí, že chcete odstrániť tento záznam prekladu? Túto akciu nie je možné vrátiť späť.", + "originalText": "Pôvodný text", + "translatedText": "Preložený text", + "sessionSummary": "Zhrnutie relácie", + "cannotShare": "Nie je možné zdieľať", + "generateSummaryFirst": "Najprv vygenerujte zhrnutie", + "translationSessionRecord": "Záznam relácie prekladu", + + // 个人资料模块 "editProfile": "Upraviť osobné údaje", "avatar": "Avatar", "nickname": "Prezývka", @@ -930,10 +1166,8 @@ const Map skSK = { 'deleteAccount': 'Odstrániť účet', 'deleteAccountTips': 'Ste si istí, že chcete natrvalo odstrániť svoj účet? Túto akciu nie je možné vrátiť späť.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Vymazať vyrovnávaciu pamäť', + 'cleanTips': 'Ste si istí, že chcete vymazať osobnú vyrovnávaciu pamäť?', 'networkConnectionFailed': 'Sieťové pripojenie zlyhalo, skontrolujte nastavenia siete a skúste to znova', 'serverTemporarilyUnavailable': @@ -950,10 +1184,6 @@ const Map skSK = { 'Sieťové pripojenie zlyhalo, skontrolujte nastavenia siete', 'serverInternalErrorRetryLater': 'Interná chyba servera, skúste to znova neskôr', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Kompresia obrázka zlyhala', 'avatarUpdateFailed': 'Aktualizácia avatara zlyhala', 'usernameCannotBeEmpty': 'Používateľské meno nemôže byť prázdne', @@ -964,8 +1194,6 @@ const Map skSK = { 'logoutFailedRetry': 'Odhlásenie zlyhalo, skúste to znova', 'accountPermanentlyDeleted': 'Účet bol natrvalo odstránený', 'deleteAccountFailedRetry': 'Odstránenie účtu zlyhalo, skúste to znova', - - // 账号服务相关 'clearUserDataFailed': 'Vymazanie používateľských údajov zlyhalo', // 清理用户数据失败 'deleteUserDataFailed': 'Odstránenie používateľských údajov zlyhalo', // 删除用户数据失败 @@ -981,29 +1209,33 @@ const Map skSK = { 'accountServiceInitialized': 'Služba účtu bola inicializovaná', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Úložisko', + 'meetingStoragePermissionExplanation': + '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', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Kontakty', + 'notification': 'Oznámenie', + 'alarm': 'Budík', 'calendarWrite': 'Zápis do kalendára', 'calendarFullAccess': 'Plný prístup ku kalendáru', 'locationInfo': 'Informácie o polohe', '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': @@ -1022,80 +1254,92 @@ 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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Pripájanie k Bluetooth zariadeniam vyžaduje povolenie na pripojenie Bluetooth', + 'notificationPermissionDesc': 'Používa sa na odosielanie oznámení', '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', + 'bluetoothScan': 'Skenovanie Bluetooth', + '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.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Povolenie polohy bolo trvalo odmietnuté, prejdite do nastavení a povoľte ho manuálne.', + 'notificationPermission': 'Oznámenie', + 'locationPermission': 'Poloha', '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.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Trvalo ste odmietli povolenie polohy, prejdite do nastavení a povoľte ho.', + 'storagePermission': 'Úložisko', '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': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + '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': 'Vyžaduje sa ', + '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigácia prebieha', + 'native.notification.navigation.keepRunning': + 'Navigácia, ponechajte aplikáciu spustenú', + 'native.notification.bleAgent.running': 'Hlasový asistent je spustený', + 'native.notification.audioRecording.recording': + 'Nahrávanie zvuku, ťuknite pre návrat do aplikácie', + 'native.notification.music.waiting': 'Čakanie na prehranie', + 'native.notification.music.previous': 'Predchádzajúca', + 'native.notification.music.next': 'Ďalšia', + 'native.notification.music.play': 'Prehrať', + 'native.notification.music.pause': 'Pozastaviť', + 'native.notification.qqMusic.playing': 'Prehrávanie hudby', + + // 版本更新 'newVersionFound': 'Nájdená nová verzia', // 版本更新对话框标题 'remindLater': 'Pripomenúť neskôr', // 稍后提醒按钮 'updateNow': 'Aktualizovať teraz', // 立即更新按钮 @@ -1106,253 +1350,7 @@ const Map skSK = { 'updateErrorRetry': 'Počas aktualizácie sa vyskytla chyba, skúste to znova neskôr', // 更新错误重试提示 - //国家列表 - "邮箱": "E-mail", - "中国": "Čína", - "美国": "USA", - "加拿大": "Kanada", - "俄罗斯": "Rusko", - "英国": "Spojené kráľovstvo", - "德国": "Nemecko", - "意大利": "Taliansko", - "法国": "Francúzsko", - "西班牙": "Španielsko", - "南非": "Južná Afrika", - "沙特阿拉伯": "Saudská Arábia", - "土耳其": "Turecko", - "日本": "Japonsko", - "韩国": "Južná Kórea", - "新加坡": "Singapur", - "马来西亚": "Malajzia", - "泰国": "Thajsko", - "越南": "Vietnam", - "印度": "India", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipíny", - "印度尼西亚": "Indonézia", - "阿联酋": "SAE", - "墨西哥": "Mexiko", - "巴西": "Brazília", - "阿根廷": "Argentína", - "澳大利亚": "Austrália", - "新西兰": "Nový Zéland", - "中国香港": "Hongkong (Čína)", - "中国澳门": "Macao (Čína)", - "中国台湾": "Taiwan (Čína)", - "埃及": "Egypt", - "希腊": "Grécko", - "荷兰": "Holandsko", - "比利时": "Belgicko", - "匈牙利": "Maďarsko", - "罗马尼亚": "Rumunsko", - "瑞士": "Švajčiarsko", - "奥地利": "Rakúsko", - "丹麦": "Dánsko", - "瑞典": "Švédsko", - "挪威": "Nórsko", - "波兰": "Poľsko", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalsko", - "卢森堡": "Luxembursko", - "爱尔兰": "Írsko", - "冰岛": "Island", - "阿尔巴尼亚": "Albánsko", - "马耳他": "Malta", - "塞浦路斯": "Cyprus", - "芬兰": "Fínsko", - "保加利亚": "Bulharsko", - "立陶宛": "Litva", - "拉脱维亚": "Lotyšsko", - "爱沙尼亚": "Estónsko", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbsko", - "克罗地亚": "Chorvátsko", - "斯洛文尼亚": "Slovinsko", - "捷克": "Česko", - "斯洛伐克": "Slovensko", - "危地马拉": "Guatemala", - "萨尔瓦多": "Salvádor", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolívia", - "厄瓜多尔": "Ekvádor", - "巴拉圭": "Paraguaj", - "乌拉圭": "Uruguaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžírsko", - "突尼斯": "Tunisko", - "尼日利亚": "Nigéria", - "加纳": "Ghana", - "埃塞俄比亚": "Etiópia", - "肯尼亚": "Keňa", - "坦桑尼亚": "Tanzánia", - "乌干达": "Uganda", - "孟加拉国": "Bangladéš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordánsko", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Omán", - "阿富汗": "Afganistan", - "斯里兰卡": "Srí Lanka", - "缅甸": "Mjanmarsko", - "尼泊尔": "Nepál", - "蒙古": "Mongolsko", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Východný Timor", - "斐济": "Fidži", - "所罗门群岛": "Šalamúnove ostrovy", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "História prekladov", - "enableRecording": "Povoliť nahrávanie", - "viewAudioFiles": "Zobraziť zvukové súbory", - "headsetUser": "Používateľ slúchadiel", - "phoneUser": "Používateľ telefónu", - "selectSourceLanguage": "Vyberte zdrojový jazyk", - "selectTargetLanguage": "Vyberte cieľový jazyk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Žiadna história", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Vymazať históriu", - "clearHistoryConfirm": - "Ste si istí, že chcete vymazať celú históriu prekladov? Túto akciu nie je možné vrátiť späť.", - "unknownLanguage": "Neznámy jazyk", - "deleteSessionRecord": "Odstrániť záznam relácie", - "deleteSessionConfirm": - "Ste si istí, že chcete odstrániť všetky záznamy prekladov pre túto reláciu? Túto akciu nie je možné vrátiť späť.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Preložiť zvukové súbory", - "noAudioFiles": "Žiadne zvukové súbory", - "calculating": "Vypočítava sa...", - "playing": "Prehráva sa...", - "paused": "Pozastavené", - "clickToPlay": "Kliknite pre prehratie", - "rename": "Premenovať", - "smartTranscription": "Inteligentný prepis", - "renameAudioFile": "Premenovať zvukový súbor", - "enterNewFileName": "Zadajte nový názov súboru", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Pôvodný záznam", - "recordSummary": "Zhrnutie záznamu", - "clickToGenerateSummary": - "Kliknite na tlačidlo nižšie pre vygenerovanie zhrnutia relácie", - "summaryContent": "Obsah zhrnutia", - "copied": "Skopírované", - "summaryCopiledToClipboard": "Zhrnutie skopírované do schránky", - "extractSummary": "Extrahovať zhrnutie", - "summaryGenerated": "Zhrnutie vygenerované", - "generating": "Generuje sa...", - "regenerate": "Znova vygenerovať", - "summaryTimeoutMessage": - "Požiadavka na generovanie zhrnutia vypršala, môže to byť spôsobené problémami so sieťou alebo zaneprázdneným serverom.", - "deleteTranslationRecord": "Odstrániť záznam prekladu", - "deleteTranslationConfirm": - "Ste si istí, že chcete odstrániť tento záznam prekladu? Túto akciu nie je možné vrátiť späť.", - "originalText": "Pôvodný text", - "translatedText": "Preložený text", - "sessionSummary": "Zhrnutie relácie", - "cannotShare": "Nie je možné zdieľať", - "generateSummaryFirst": "Najprv vygenerujte zhrnutie", - "translationSessionRecord": "Záznam relácie prekladu", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Párovanie zariadenia", "connectYourDeepSoundHeadset": "Pripojte svoje slúchadlá Voitrans", "bind": "Prepojiť", @@ -1361,14 +1359,11 @@ const Map skSK = { "autoInputCode": "Automatické zadanie kódu", "skipBinding": "Preskočiť prepojenie", "rescan": "Znova skenovať", - "verifyingDevice": "Overuje sa zariadenie...", "confirmBinding": "Potvrdiť prepojenie", "associatingDevice": "Priraďuje sa zariadenie...", "goToBluetoothSettings": "Prejsť do nastavení Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pripravené na párovanie", "preparingPairingEnvironment": "Príprava prostredia na párovanie...", "connectDeepSoundViaSystemBluetooth": @@ -1378,8 +1373,6 @@ const Map skSK = { "waitingCompletePairing": "Počkajte, prosím, párovanie sa dokončuje...", "pairingSuccessRedirecting": "Párovanie úspešné! Presmerováva sa na domovskú stránku...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Uistite sa, že ste pripojení k zariadeniu Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1391,19 +1384,12 @@ const Map skSK = { "authorizationFailedCheckCode": "Autorizácia zlyhala, skontrolujte, či je autorizačný kód správny", "pairingFailedRetry": "Párovanie zlyhalo, skúste to znova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Zapnite Bluetooth', 'deviceDisconnected': 'Zariadenie odpojené', 'readyToStartPairing': 'Pripravené na začatie párovania', 'checkingEnvironment': 'Kontrola prostredia...', 'ensureHeadsetOnAndPairingMode': 'Uistite sa, že sú slúchadlá zapnuté a v režime párovania', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Vytvára sa bezpečné pripojenie...', 'needManualBindingAuthCode': 'Vyžaduje sa kód pre autorizáciu manuálneho prepojenia...', @@ -1425,21 +1411,30 @@ const Map skSK = { 'bleConnectionFailed': 'Pripojenie BLE zlyhalo', 'deviceAuthorizationFailedCheckCode': 'Autorizácia zariadenia zlyhala, skontrolujte autorizačný kód', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Spätná väzba používateľa", 'feedbackInfo': 'Poskytnite spätnú väzbu alebo návrhy', 'feedbackDescription': @@ -1468,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", @@ -1483,7 +1479,61 @@ const Map skSK = { "removeEarbudsEnsureBattery": "Vyberte obe slúchadlá a uistite sa, že batéria oboch je nad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Nájdená nová verzia @version', + 'otaConfirmUpdateNow': 'Aktualizovať teraz?', + 'otaUpdate': 'Aktualizovať', + 'otaUpgradeSuccess': 'Aktualizácia úspešná', + 'otaUpgradeCompleteRepair': + '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': 'Spárovať neskôr', + 'otaPairNow': 'Spárovať teraz', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Chyba pri kontrole BLE pripojenia: @error', + 'otaBleNotConnected': 'BLE zariadenie nie je pripojené', + 'otaBleNeedConnection': + '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': + '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': + 'Nie je možné získať informácie o zariadení, skontrolujte pripojenie', + 'otaCannotGetProductInfoWithName': + 'Nie je možné získať informácie o produkte, názov zariadenia: @deviceName', + 'otaCannotGetBatteryInfo': 'Nie je možné získať platné informácie o batérii', + 'otaLowBattery': 'Nízka batéria', + 'otaSingleBatteryLow': + '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': + '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': + 'Táto aktualizácia obsahuje optimalizácie výkonu a opravy chýb.', + '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': + 'Sťahovanie zlyhalo, skontrolujte sieťové pripojenie', + 'otaDownloadFailed': 'Sťahovanie zlyhalo', + 'otaPreparingConnection': 'Pripravuje sa pripojenie zariadenia...', + 'otaConnectingDevice': 'Pripája sa k zariadeniu...', + 'otaUpgradeStarted': 'OTA aktualizácia sa začala...', + 'otaUpgradeProgressWithPercent': 'Priebeh aktualizácie: @percent%', + 'otaUpgradeSuccessComplete': 'Aktualizácia bola úspešne dokončená', + 'otaUpgradeFailedWithCode': 'Aktualizácia zlyhala, kód chyby: @code', + 'otaUpgradeFailedTitle': 'Aktualizácia zlyhala', + 'otaUpgradeFailedDesc': + 'Skontrolujte pripojenie zariadenia alebo aktualizačný balík, kód chyby: @code', + 'otaDeviceDisconnected': 'Zariadenie sa odpojilo', + 'otaDeviceConnected': 'Zariadenie je pripojené', + + // 音乐模块 "noMusic": "Žiadna hudba", // 暂无音乐 "noPlayingMusic": "Neprehráva sa žiadna hudba", // 暂无播放音乐 "unknownSong": "Neznáma pieseň", // 未知歌曲 @@ -1531,22 +1581,122 @@ const Map skSK = { "波斯语": "Perzština", "斯瓦希里语": "Svahilčina", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-mail", + "中国": "Čína", + "美国": "USA", + "加拿大": "Kanada", + "俄罗斯": "Rusko", + "英国": "Spojené kráľovstvo", + "德国": "Nemecko", + "意大利": "Taliansko", + "法国": "Francúzsko", + "西班牙": "Španielsko", + "南非": "Južná Afrika", + "沙特阿拉伯": "Saudská Arábia", + "土耳其": "Turecko", + "日本": "Japonsko", + "韩国": "Južná Kórea", + "新加坡": "Singapur", + "马来西亚": "Malajzia", + "泰国": "Thajsko", + "越南": "Vietnam", + "印度": "India", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipíny", + "印度尼西亚": "Indonézia", + "阿联酋": "SAE", + "墨西哥": "Mexiko", + "巴西": "Brazília", + "阿根廷": "Argentína", + "澳大利亚": "Austrália", + "新西兰": "Nový Zéland", + "中国香港": "Hongkong (Čína)", + "中国澳门": "Macao (Čína)", + "中国台湾": "Taiwan (Čína)", + "埃及": "Egypt", + "希腊": "Grécko", + "荷兰": "Holandsko", + "比利时": "Belgicko", + "匈牙利": "Maďarsko", + "罗马尼亚": "Rumunsko", + "瑞士": "Švajčiarsko", + "奥地利": "Rakúsko", + "丹麦": "Dánsko", + "瑞典": "Švédsko", + "挪威": "Nórsko", + "波兰": "Poľsko", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbia", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalsko", + "卢森堡": "Luxembursko", + "爱尔兰": "Írsko", + "冰岛": "Island", + "阿尔巴尼亚": "Albánsko", + "马耳他": "Malta", + "塞浦路斯": "Cyprus", + "芬兰": "Fínsko", + "保加利亚": "Bulharsko", + "立陶宛": "Litva", + "拉脱维亚": "Lotyšsko", + "爱沙尼亚": "Estónsko", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbsko", + "克罗地亚": "Chorvátsko", + "斯洛文尼亚": "Slovinsko", + "捷克": "Česko", + "斯洛伐克": "Slovensko", + "危地马拉": "Guatemala", + "萨尔瓦多": "Salvádor", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolívia", + "厄瓜多尔": "Ekvádor", + "巴拉圭": "Paraguaj", + "乌拉圭": "Uruguaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžírsko", + "突尼斯": "Tunisko", + "尼日利亚": "Nigéria", + "加纳": "Ghana", + "埃塞俄比亚": "Etiópia", + "肯尼亚": "Keňa", + "坦桑尼亚": "Tanzánia", + "乌干达": "Uganda", + "孟加拉国": "Bangladéš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordánsko", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Omán", + "阿富汗": "Afganistan", + "斯里兰卡": "Srí Lanka", + "缅甸": "Mjanmarsko", + "尼泊尔": "Nepál", + "蒙古": "Mongolsko", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Východný Timor", + "斐济": "Fidži", + "所罗门群岛": "Šalamúnove ostrovy", + "刚果民主共和国": "Konžská demokratická republika", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldivy", + "不丹": "Bhután", + "摩纳哥": "Monako", + "圣马力诺": "San Maríno", + "牙买加": "Jamajka", + "巴哈马": "Bahamy", + "巴布亚新几内亚": "Papua-Nová Guinea", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sl_si.dart b/lib/core/translations/language/sl_si.dart index 3329d82d5..e9a35cde3 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,6 +19,11 @@ const Map slSI = { "unknownError": "Neznana napaka", "asrConnectionFailed": "Povezava s storitvijo za prepoznavanje govora ni uspela. Preverite omrežje ali poskusite znova pozneje.", + "justNow": "Pravkar", + "minutesAgo": "Pred @minutes minutami", + "yesterday": "Včeraj", + "daysAgo": "Pred @days dnevi", + "hoursAgo": "Pred @hours urami", // 启动页 "slogan": "Povezovanje sveta, onkraj zvoka", @@ -28,7 +34,7 @@ const Map slSI = { "explore": "Razišči", "settings": "Nastavitve", - // 语言 + // 语言列表 "followingSystem": "Sledi sistemu", "chinese": "Kitajščina", "english": "Angleščina", @@ -72,7 +78,7 @@ const Map slSI = { "arabic": "Arabščina", "persian": "Persščina", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ali registrirajte s svojo telefonsko številko ali e-pošto", @@ -101,15 +107,11 @@ const Map slSI = { "resendVerificationCode": "Ponovno pošlji verifikacijsko kodo", "login": "Prijava", "usePasswordLogin": "Prijava z geslom", - - // 隐私政策弹窗 "loginDeclaration": "Izjava Voitrans", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli v Voitrans, prosimo, da natančno preberete", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "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", // 同意并进入 @@ -167,7 +169,30 @@ const Map slSI = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Preverjanje stanja povezave ni uspelo', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Inicializacija Bluetooth ni uspela: @error', + 'needBluetoothAndLocationPermission': + 'Za iskanje naprav so potrebna dovoljenja Bluetooth in lokacije', + 'permissionRequestFailedWithError': 'Zahteva za dovoljenje ni uspela: @error', + 'needPermission': 'Zahtevano dovoljenje', + 'blePermissionDialogContent': + 'Ta aplikacija za iskanje naprav potrebuje dovoljenja Bluetooth in lokacije. Omogočite jih v Nastavitvah.', + 'needEnableBluetooth': 'Vklopi Bluetooth', + 'enableBluetoothDialogContent': + '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...", "exploreSlogan": "Pametne slušalke, neskončne možnosti", "exploreSlogan1": "Pametni spremljevalec, neskončne možnosti", @@ -192,211 +217,274 @@ const Map slSI = { "usageStats": "Statistika uporabe", "usageStatsInfo": "Pregledajte vaše uporabo aplikacije", "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 klepet", + "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", - //"aiSummary": "AI摘要", - "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 podatkov", + "sourceTextCharacters": "Znaki izvornega besedila", + "ttsTextCharacters": "Znaki besedila TTS", + "effectiveAudioDuration": "Učinkovito trajanje zvoka", + "totalSessionDuration": "Skupno trajanje seje", + "costStats": "Statistika stroškov", + "estimatedCost": "Ocenjeni strošek", + "dailyCostThreshold": "Dnevna meja stroškov", + "monthlyCostThreshold": "Mesečna meja stroškov", + "usageBehaviorStats": "Statistika uporabe", + "mostUsedLanguagePair": "Najpogosteje uporabljeni jezikovni par", + "mostUsedMode": "Najpogosteje uporabljen način", + "asrApiCalls": "Klici ASR", + "totalAudioDuration": "Skupno trajanje zvoka", + "audioFileSize": "Velikost zvočne datoteke", + "transcriptBytes": "Bajti prepisa", + "loadFailed": "Nalaganje ni uspelo", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + "Statistike ni bilo mogoče naložiti. Poskusite znova pozneje.", + "cleanupComplete": "Čiščenje dokončano", + "cleanedOldData": "Očiščeni podatki starejši od 90 dni", + "exportFeature": "Funkcija izvoza", + "exportInDevelopment": "Izvoz podatkov je v razvoju", + + // 商品模块 - 通用 + 'availablePackages': 'Razpoložljivi paketi', + 'remainingQuota': 'Preostala kvota', + 'totalQuota': 'Skupna kvota', + 'remaining': 'Preostanek', + 'featureDescription': 'Opis funkcije', + 'paymentSuccess': 'Plačilo uspešno', + 'paymentFailed': 'Plačilo ni uspelo', + 'gotIt': 'Razumem', + 'paymentFailedTryAgain': 'Plačilo ni uspelo. Poskusite znova.', + 'selectPaymentMethod': 'Izberite način plačila', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Ustvarjanje naročila WeChat ni uspelo', + 'alipayOrderCreateFailed': 'Ustvarjanje naročila Alipay ni uspelo', + 'appleOrderCreateFailed': 'Ustvarjanje naročila Apple ni uspelo', + 'googleOrderCreateFailed': 'Ustvarjanje naročila Google ni uspelo', + 'paypalOrderCreateFailed': 'Ustvarjanje naročila PayPal ni uspelo', + 'paymentException': 'Izjema pri plačilu', + 'paymentLaunchFailed': 'Zagon plačila ni uspel', + 'paymentExceptionWithError': 'Izjema pri plačilu: @error', + 'paymentProcessingCheckLater': + 'Vaše naročilo se obdeluje. Preverite pozneje.', + 'paymentResultQueryException': + 'Poizvedba o rezultatu plačila ni uspela: @error', + 'orderConfirmedQuotaRefreshed': + 'Naročilo je potrjeno. Vaša kvota je bila osvežena.', + 'paymentCompletedConfirming': 'Plačilo je zaključeno. Potrjevanje…', + 'paymentCancelled': 'Plačilo je preklicano', + 'paypalOpenedCompleteInBrowser': + 'PayPal je odprt. Prosimo dokončajte plačilo v brskalniku.', + 'paypalOpenFailed': 'Ni mogoče odpreti strani za plačilo PayPal', + 'paymentTestTitle': 'Test plačila', + 'paymentTestOrderInfo': 'Informacije o testnem naročilu', + 'paymentTestProductId': 'ID izdelka', + 'paymentTestProductDescription': 'Opis izdelka', + 'paymentTestWechatDescription': 'Test plačila WeChat', + 'paymentTestAlipayDescription': 'Test plačila Alipay', + 'paymentTestAmount': 'Znesek', + 'paymentTestSelectAmount': 'Izberite testni znesek', + 'paying': 'Plačevanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Stanje plačila', + 'errorInfoWithMessage': 'Napaka: @message', + 'retest': 'Ponovno testiraj', + 'paymentTestInstructionsTitle': 'Navodila', + 'paymentTestInstructionsContent': + '1. Izberite testni znesek (priporočeno: ¥0.01)\n2. Kliknite gumb za plačilo za začetek\n3. Dokončajte plačilo v aplikaciji za plačila\n4. Vrnite se in preverite rezultat', + 'startingWechatPayment': 'Zaganjanje WeChat Pay...', + 'startingAlipayPayment': 'Zaganjanje Alipay...', + 'wechatPaymentSuccess': 'Plačilo WeChat Pay uspešno!', + 'wechatPaymentFailed': 'Plačilo WeChat Pay ni uspelo', + 'wechatPaymentLaunchFailed': 'Zagon WeChat Pay ni uspel', + 'cannotLaunchWechatPayment': 'Ni mogoče zagnati WeChat Pay', + 'wechatPaymentException': 'Izjema WeChat Pay', + 'wechatPaymentTestCompleted': 'Test plačila WeChat Pay je zaključen', + 'alipayPaymentSuccess': 'Plačilo Alipay uspešno!', + 'alipayPaymentFailed': 'Plačilo Alipay ni uspelo', + 'alipayPaymentLaunchFailed': 'Zagon Alipay ni uspel', + 'cannotLaunchAlipayPayment': 'Ni mogoče zagnati Alipay', + 'alipayPaymentException': 'Izjema Alipay', + "insufficientIntegral": "Premalo točk", + "insufficientBalanceDesc": + "Ni dovolj dobroimetja, pojdite na ustrezno stran za polnjenje in dopolnite.", + "recharge": "Pojdi na polnjenje", + "aiMemberExpiredDesc": + "Članstvo AI je poteklo, pojdite na stran za polnjenje članstva in ga obnovite.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Glasba in priporočila', + 'navigationAndRoutes': 'Navigacija in poti', + 'nearbySearch': 'Iskanje v bližini', + 'newsInformation': 'Novice', + 'communicationAssistant': 'Pomočnik za komunikacijo', + 'aiHeaderDesc1': 'Daljša kvota pogovora, več klicev orodij, daljši kontekst.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Primerno za vprašanja in odgovore agenta, povzemanje, analizo in izvajanje nalog.', + 'musicSearchPlaybackControl': + 'Iskanje v glasbeni knjižnici in nadzor predvajanja', 'smartPlaylistAndSimilarRecommendations': - 'Smart playlist and similar song recommendations', + 'Pametni seznami predvajanja in priporočila podobnih pesmi', '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', + 'Načrtovanje poti in izogibanje zastojem', + 'voiceBroadcastAndWaypoints': 'Glasovno vodenje in nastavitve vmesnih točk', + 'realTimeWeatherForecast': 'Vreme in napoved v realnem času', + 'clothingAdviceAndTravelReminders': + 'Nasveti za oblačila in potovalni opomniki', + 'poiSearchFoodGasParking': 'Iskanje POI: hrana / gorivo / parkirišče', + 'ratingsHoursAndDirectRoutes': 'Ocene, delovni čas in neposredna navigacija', + 'hotNewsAndTopicOverview': 'Pregled vročih novic in tem', + 'longArticleSummariesAndKeyPoints': + 'Povzetki dolgih člankov in ključne točke', + 'helpCallAndSMS': 'Pomoč pri klicih in SMS', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Predloge sporočil in časovno načrtovani opomniki', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Funkcije so odvisne od dovoljenj naprave, razpoložljivosti storitev in omrežnih razmer.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Prepis v realnem času', + 'sceneLexicon': 'Slovar konteksta', + 'subtitleDisplay': 'Podnapisi', + 'transHeaderDesc1': + 'Sočasno tolmačenje in prevajanje besedila v realnem času z nizko zakasnitvijo zvoka.', + 'transHeaderDesc2': 'Primerno za potovanja, posel, govore in poučevanje.', + 'translateZhEn': 'Prevajanje kitajščina–angleščina', + 'lowLatencyVoiceBroadcast': 'Glasovno predvajanje z nizko zakasnitvijo', + 'multiLangTextTranslation': 'Večjezično prevajanje besedila', + 'termOptimizationContextPreserve': + 'Optimizacija terminologije in ohranjanje konteksta', + 'lexiconTourBusinessLife': 'Slovarji za potovanja/posel/življenje', + 'personalVocabularyMemory': 'Osebni slovar', + 'conversationSubtitleLargeText': + 'Podnapisi pogovora / način velikega besedila', + 'colorHighContrast': 'Visok barvni kontrast', + 'transDisclaimer': + 'Učinkovitost prevajanja je odvisna od mikrofona, zakasnitve omrežja in hrupa okolice.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Snemanje sestankov', + 'transcriptionAndSummary': 'Prepis in povzetek', + 'keywordSearch': 'Iskanje ključnih besed', + 'collaborationSharing': 'Sodelovanje in deljenje', + 'meetingHeaderDesc1': + 'Snemanje zvoka, prepis, iskanje ključnih besed in samodejni povzetek za večjo učinkovitost sestankov.', + 'meetingHeaderDesc2': + 'Primerno za poslovne sestanke, zapiske pri pouku in zapisnike intervjujev.', + 'meetingAutoRecording': 'Samodejno snemanje in segmentacija', + 'meetingSpeakerTagging': 'Označevanje govorcev', + 'meetingLongAudioTranscription': 'Prepis dolgega zvoka', + 'meetingKeyPointSummary': 'Izluščanje ključnih točk', + 'meetingTopicNameSearch': 'Iskanje po temi/imenu', + 'meetingTimelineJump': 'Skok po časovnici', + 'meetingExportSummary': 'Izvoz zapisnika', + 'meetingMultiPlatformShare': 'Deljenje med platformami', + 'meetingDisclaimer': + 'Uporabljajte v tihem okolju; delovanje je odvisno od mikrofona in omrežja.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Pregled ugodnosti', + 'higherQuota': 'Višja kvota uporabe', + 'lowerUnitPrice': 'Nižja cena na enoto', + 'priorityService': 'Prednostna podpora', + 'exclusiveSupportChannel': 'Namenski kanal podpore', + 'fastResponse': 'Hiter odziv na težave', + 'eventsAndDiscounts': 'Dogodki in popusti', + 'memberExclusiveEvents': 'Ekskluzivni dogodki za člane', + 'longTermDiscountPlan': 'Dolgoročni popustni načrt', + 'generalPrivileges': 'Splošne ugodnosti', + 'earlyAccessNewFeatures': 'Zgodnji dostop do novih funkcij', + 'crossDeviceSync': 'Sinhronizacija med napravami', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Dejanske ugodnosti so odvisne od podrobnosti paketa in se lahko spreminjajo z različicami.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Osnovni 100', + 'ai_002_name': 'AI Osnovni 500', + 'ai_003_name': 'AI Osnovni 1000', + 'meet_001_name': 'Sestanek Osnovni 100', + 'meet_002_name': 'Sestanek Osnovni 500', + 'meet_003_name': 'Sestanek Osnovni 1000', + 'trans_001_name': 'Prevod Osnovni 100', + 'trans_002_name': 'Prevod Osnovni 500', + 'trans_003_name': 'Prevod Osnovni 1000', + 'ai_001_desc': 'Vključuje 100 uporab. Dostop do osnovnih funkcij AI.', + 'ai_002_desc': 'Vključuje 500 uporab. Dostop do osnovnih funkcij AI.', + 'ai_003_desc': 'Vključuje 1000 uporab. Dostop do osnovnih funkcij AI.', + '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': 'Aplikacija: VoiTrans · Ponudnik: VoiTrans', + 'iapCustomerServiceQQLabel': 'QQ za podporo IAP: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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': 'Naprej', + 'sayLilyHint': 'Recite "Lily Lily" v mikrofon', + 'imHere': 'Tukaj sem~', + 'guideWelcomeWakeAI': + 'Dobrodošli v Voitrans! Najprej zbudite svojo AI “Lily”.', + 'aiReplyCompleted': 'Lily je zaključila odgovor!', + 'aiThinking': 'Lily razmišlja…', + 'guideAwakenSuccess': 'Odlično! Lily je budna — vprašajte jo za pomoč.', + 'confirmInput': 'Potrdi vnos', + 'guideClickSendPrefix': 'Tapnite pošlji, ', + 'guideWeatherStart': 'Recite Lily: “Kakšno bo danes vreme?”', + 'guideWeatherInput': 'Kakšno bo danes vreme?', + 'guideWeatherSend': 'Lily bo v realnem času poročala o vremenu', + 'guideWeatherEnd': + 'Lily lahko poroča o vremenu v živo — poskusite druge ukaze', + 'guideMusicStart': 'Recite Lily: “Predvajaj rock glasbo”', + 'guideMusicInput': 'Predvajaj rock glasbo', + 'guideMusicSend': 'Lily bo poiskala glasbo za vas', + 'guideMusicEnd': 'Lily je našla glasbo — poskusite druge ukaze', + 'guideNavStart': 'Recite Lily: “Navigiraj do letališča”', + 'guideNavInput': 'Navigiraj do letališča', + 'guideNavSend': 'Lily bo načrtovala pot', + 'guideNavEnd': 'Navigacija je nastavljena — poskusite druge ukaze', '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: “Ustvari opomnik za sestanek za jutri ob 15:00”', + 'guideMeetingInput': 'Ustvari opomnik za sestanek za jutri ob 15:00', + 'guideMeetingSend': 'Lily bo ustvarila opomnik za sestanek', + 'guideMeetingEnd': 'Opomnik ustvarjen — poskusite druge ukaze', + 'guidePhoneStart': 'Recite Lily: “Pokliči mamo”', + 'guidePhoneInput': 'Pokliči mamo', + 'guidePhoneSend': 'Lily bo opravila klic', + 'guidePhoneEnd': 'Klic opravljen — poskusite druge ukaze', + 'guideSmsStart': 'Recite Lily: “Pošlji očetu sporočilo: Pridem na večerjo”', + 'guideSmsInput': 'Pošlji očetu: Pridem na večerjo', + 'guideSmsSend': 'Lily bo poslala sporočilo', + 'guideSmsEnd': 'Sporočilo poslano — glasovno upravljanje je priročno', + + // Meeting模块 - 首页与导航 "startMeeting": "Začni sestanek", 'edit': 'Uredi', 'delete': 'Izbriši', @@ -408,40 +496,39 @@ const Map slSI = { 'recordingDetails': 'Podrobnosti posnetka', 'aiSummary': 'Povzetek AI', 'meetingTranscript': 'Prepis sestanka', - - // Meeting模块 - 导航和基础功能 - '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': 'Datoteke', + 'mine': 'Moje', + 'connect': 'Poveži', + 'allFiles': 'Vse datoteke', + 'searchInAllFiles': 'Išči v vseh datotekah', + 'from': 'Od', + 'sortBy': 'Razvrsti po', + 'creationTime': 'Čas ustvarjanja', + 'bluetoothConnection': 'Povezava Bluetooth', + 'meetingReconnect': 'Ponovno poveži', + 'searching': 'Iskanje...', + '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': 'Zaganjanje Wi-Fi...', + 'newFilesDetected': 'Zaznane nove datoteke, priprava na uvoz', + 'noNewFiles': 'Ni novih datotek za uvoz', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Začni snemanje', + 'liveRecording': 'Snemanje v živo', + 'audioVideoRecording': 'Snemanje avdia/videa', + 'callRecording': 'Snemanje klica', + 'importAudio': 'Uvozi zvok', 'meetingRecordExitTitle': 'Izhod iz snemanja', // 退出录音 'meetingRecordExitMessage': 'Izberite dejanje po izhodu', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Končaj in shrani', // 结束录音并保存 @@ -463,202 +550,215 @@ const Map slSI = { 'Za prikaz plavajoče vrstice snemanja (časovnik/premor/nadaljuj) med snemanjem potrebujemo dovoljenje za prekrivanje.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Sistemskih nastavitev ni bilo mogoče samodejno odpreti. Odprite Nastavitve in ročno omogočite dovoljenje za prekrivanje.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Prepisovanje...', + 'summarizing': 'Povzemanje...', + 'analyzing': 'Analiziranje...', + 'summaryComplete': 'Povzetek dokončan', + 'generate': 'Ustvari', + 'overview': 'Pregled', + 'transcription': 'Prepis', + 'summary': 'Povzetek', + 'mindMap': 'Miselni zemljevid', + 'editSpeaker': 'Uredi', + 'nameSpeaker': 'Poimenuj govorca', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Ponovno povzemanje', + 'dateAndTime': 'Datum in čas', + 'location': 'Lokacija', + 'attendees': 'Udeleženci', + 'inputLocation': 'Vnesite lokacijo', + 'inputAttendees': 'Vnesite udeležence', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Izberite predlogo povzetka', + 'useThisTemplate': 'Uporabi to predlogo', + 'lastUsed': 'Nazadnje uporabljeno', + 'create': 'Ustvari', + 'templateDetails': 'Podrobnosti predloge', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Predloga', + 'deleteTemplate': 'Izbriši predlogo', + 'deleteTemplateConfirm': + 'Ali ste prepričani, da želite izbrisati to predlogo?', + 'editTemplate': 'Uredi predlogo', + 'createTemplate': 'Ustvari predlogo', + 'name': 'Ime', + 'templateContentHint': + 'Prosimo vnesite vsebino predloge! Namig: Kliknite gumb AI zgoraj za hitro ustvarjanje vsebine predloge na podlagi vnesenega imena in opisa', + 'inputNameHint': 'Prosimo vnesite ime', + 'inputDescHint': 'Prosimo vnesite opis', + 'custom': 'Po meri', + 'pleaseEnter': 'Prosimo vnesite', + 'viewAll': 'Prikaži vse', + 'recordingLanguage': 'Jezik snemanja', + 'chineseSimplified': 'Kitajščina mandarinščina (poenostavljena)', + 'meetingGenerateNow': 'Ustvari zdaj', + 'keyEventsAnalyzed': 'Analiziranih {count} ključnih dogodkov.', + 'aiAnalysisDesc': + 'AI analiza prepozna ključne dogodke v posnetkih, kar vam omogoča izbiro pomembnih dogodkov za generiranje z AI.', + + // Meeting模块 - 文件操作 + 'importing': 'Uvažanje...', + 'batchImporting': 'Paketno uvažanje...', + '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': 'Deli zvok sestanka', + 'shareComplete': 'Deljenje dokončano!', + 'shareFailed': 'Deljenje ni uspelo: {error}', + 'fileProcessingFailed': + 'Obdelava datoteke ni uspela: {filePath}, napaka: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Shrani miselni zemljevid', + 'shareMindMap': 'Deli miselni zemljevid', + 'shareSuccess': 'Deljenje uspešno', + + // Meeting模块 - AI问答 + 'askAI': 'Vprašaj AI ...', + 'askAIPrompt': 'Kako vam lahko danes pomagam?', + 'continueAsk': 'Nadaljuj z vprašanji', + 'todoList': 'Seznam opravil', + 'extractConclusion': 'Izlušči zaključek', + 'generateKeyIndicators': 'Ustvari ključne kazalnike', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Deli povezavo', + 'copyTranscript': 'Kopiraj prepis', + 'copySummary': 'Kopiraj povzetek', + 'exportAudio': 'Izvozi zvok', + 'exportTranscript': 'Izvozi prepis', + 'shareMeetingAudio': 'Deli zvok sestanka', + 'exportSummary': 'Izvozi povzetek', + 'exportAs': 'Izvozi kot', + 'exportingPDF': 'Izvoz PDF...', + 'export': 'Izvozi', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca', + 'summaryWillBeUpdatedAutomatically': + 'Povzetek se bo samodejno posodabljal glede na predlogo', + 'nameCurrentSpeaker': 'Poimenuj trenutnega govorca', + 'recentlyUsedNames': 'Nedavno uporabljena imena', + 'applyToCurrentParagraph': 'Uporabi za trenutni odstavek', + 'totalTime': 'Skupni čas', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Govorci v povzetku se bodo samodejno posodobili', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinhroniziraj v oblak', + 'syncToCloudTip': + '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', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Zapisi prepisov', + 'templateCommunity': 'Skupnost predlog', + 'comingSoon': 'Kmalu na voljo', + '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', - - // 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', + 'enabled': 'Omogočeno', + 'disabled': 'Onemogočeno', + 'myVoitransDevice': 'Moja naprava VOITRANS', + 'helpAndFeedback': 'Pomoč in povratne informacije', + 'aboutVoitrans': 'O VOITRANS', + 'meetingDays': 'Dnevi', + 'meetingHours': 'Ure', + 'voitransAiMember': 'Član Voitrans AI', + 'unlockStarterMember': 'Odkleni Starter članstvo', + 'bindDeviceToActivate': + 'Povežite napravo Voitrans za aktivacijo Starter članstva', + 'unlockNow': 'Odkleni zdaj', + + // Meeting模块 - 会员与升级 + 'comparison': 'Primerjava', + 'detailedInfo': 'Podrobne informacije', + 'monthlyTranscriptionTime': 'Mesečni čas prepisa', + 'unlimited': 'Neomejeno', + 'professionalTemplates': 'Profesionalne predloge', + 'limited': 'Omejeno', + 'fullTemplates': 'Polne predloge', + 'professionalTerms': 'Profesionalni izrazi', + 'customTemplates': 'Predloge po meri', + 'visualMindMap': 'Vizualni miselni zemljevid', + 'speakerIdentification': 'Prepoznavanje govorcev', + 'aiVoiceEnhancement': 'Izboljšava glasu z AI', + 'audioImport': 'Uvoz zvoka', + 'multipleExportFormats': 'Več formatov izvoza', + 'professionalSummaryTemplates': 'Profesionalne predloge povzetkov', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesionalna zasnova predlog za večjo učinkovitost pri delu. Prilagojeno potrebam panoge.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Pozive za povzetek lahko prilagodite svojim potrebam in jih uporabite za ustvarjanje želenih povzetkov.', '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.', + 'Več kot povzetki: s miselnimi zemljevidi uredite in vizualizirajte ključne točke za boljše razumevanje celotnega besedila.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Odkrijte, delite in se navdihnite v knjižnici predlog, ki so jih ustvarili uporabniki.', '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.', + 'Prepis zvoka bo podpiral prepoznavanje govorcev, da bo vsebina sestanka ali klica bolj jasno obnovljena. Hkrati bo povzetek natančnejši.', '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.', + 'Izboljšava glasu z AI podpira več nastavitev zmanjševanja šuma, pametno odstranjuje hrup v ozadju, izboljša jasnost glasu in kakovost predvajanja.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Zvočne datoteke preprosto uvozite iz lokalnih ali drugih aplikacij, kot so glasovni zapiski, Google Drive itd.', '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', + 'Izvozite zvočne posnetke, besedilo prepisa in povzetke v različnih formatih (TXT, PDF, JPEG) po svojih potrebah.', + 'upgradeMembership': 'Nadgradi članstvo', + 'yearlySubscription': 'Letna naročnina', + 'monthlySubscription': 'Mesečna naročnina', + 'proMonthly': 'Pro ¥60/mesec', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-dnevni brezplačni preizkus, nato ¥800/leto. Prekličete lahko pred koncem preizkusa.', + 'sevenDayTrial': '7-dnevni brezplačni preizkus', + 'unlimitedMonthly': 'Neomejeno ¥120/mesec', '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-dnevni brezplačni preizkus, nato ¥1600/leto. Prekličete lahko pred koncem preizkusa.', + 'trialNote': + '*7-dnevni brezplačni preizkus, nato letno zaračunavanje; prekličete lahko kadarkoli.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/mesec', + 'subscribe': 'Naroči se', 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'unlimitedMonthlyPrice': '¥198/mesec', '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.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Uporabi za vse odstavke tega govorca', - 'summaryWillBeUpdatedAutomatically': - 'Povzetek se bo samodejno posodabljal glede na predlogo', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + '*Po nadgradnji naročnine se bodo preostali dnevi prvotne naročnine samodejno izračunali in povrnili na vaš plačilni račun', + 'buyMoreTranscriptionTime': 'Kupi dodatni čas prepisa', + 'sixThousandMinutes': '6.000 minut', + 'threeThousandMinutes': '3.000 minut', + 'sixHundredMinutes': '600 minut', + 'oneHundredTwentyMinutes': '120 minut', + 'validityPeriod': '*Obdobje veljavnosti: ', + 'validityNote': 'Aktivira se takoj po nakupu in velja 2 leti po aktivaciji.', + 'purchase': 'Kupi', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Jezik snemanja', + 'cantonese': 'Kantonščina', + 'sichuan': 'Sečuanski dialekt', + 'shanghai': 'Šanghajski dialekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Neznan jezik', + 'analysisFailed': 'Analiza ni uspela, poskusite znova pozneje', + 'transcriptionFailed': 'Prepis ni uspel, poskusite znova pozneje', + 'summaryFailed': 'Povzetek ni uspel, poskusite znova pozneje', + 'summaryFailedShort': 'Povzetek ni uspel', + 'transcriptionFailedShort': 'Prepis ni uspel', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Zvočni predvajalnik ni pripravljen, prosimo počakajte', + 'playFailed': 'Predvajanje ni uspelo', + 'audioFileNotFound': 'Zvočna datoteka ni bila najdena', + 'fetchingAudio': 'Pridobivanje zvoka iz oblaka...', + 'playerLoadFailed': 'Zvočni predvajalnik se ni uspel naložiti', // 设置页 "systemSettings": "Sistemske nastavitve", @@ -667,10 +767,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", @@ -712,42 +812,31 @@ const Map slSI = { "Nadgradnja različice vdelane programske opreme slušalk BLE", "deviceManagement": "Upravljanje naprav", "manageConnectedDevices": "Upravljanje povezanih naprav Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnovejšo različico {version}', 'checkUpdateFailed': 'Preverjanje posodobitev ni uspelo', 'networkErrorRetry': 'Napaka v omrežju, poskusite znova kasneje', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovni klepet v realnem času", "realtimeVoiceChatInfo": "Izkusite funkcijo inteligentne glasovne interakcije (predogled funkcije)", "loading": "Nalaganje...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Neznana naprava", + "deviceTypeClassicBluetoothHeadset": "Klasične Bluetooth slušalke", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth slušalke", + "deviceTypeSmartVoiceRecorder": "Pametni glasovni snemalnik", + "deviceTypeSmartEye": "Pametna očala", "unbind": "Prekini povezavo", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Še ni povezanih naprav", + "pleaseBindDeviceFirst": "Najprej povežite napravo za upravljanje", + "noMacAddress": "Ni MAC naslova", + "licenseCode": "Licenčna koda", + "confirmUnbind": "Potrdi prekinitev povezave", + "confirmUnbindMessage": + "Ali ste prepričani, da želite prekiniti povezavo z napravo \"{deviceName}\"?", + "confirmUnbindAction": "Potrdi prekinitev povezave", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Počisti zgodovino klepeta", "online": "Na spletu", @@ -775,29 +864,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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "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": "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': '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.', @@ -810,11 +901,11 @@ const Map slSI = { 'startVoiceInput': 'Začni glasovni vnos', 'startPhoneCallMode': 'Začni način klicanja, začni glasovni vnos', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Tukaj vnesite svoje sporočilo...', // 全屏编辑器输入提示 'characterCount': '{count} znakov', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspešno kopirano', 'report': 'Prijavi', @@ -822,7 +913,6 @@ const Map slSI = { 'submitFailed': 'Pošiljanje ni uspelo', 'reportSubmitted': 'Prijava je bila poslana, obdelali jo bomo v najkrajšem možnem času', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Škodljivo/Nevarno', 'pornographicVulgar': 'Pornografsko/Vulgarno', 'misleadingAttack': 'Zavajajoče/Napad', @@ -832,17 +922,21 @@ const Map slSI = { 'other': 'Drugo', 'reportDescriptionHint': 'Želimo vedeti, zakaj prijavljate, lahko opišete težavo, s katero ste se soočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generirano s strani AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Klic orodja', + 'noResult': 'Ni rezultata', + 'noToolCallContentToCopy': 'Ni vsebine klica orodja za kopiranje', + 'toolCallDetails': 'Podrobnosti klica orodja:', + 'toolCallContentCopied': 'Vsebina klica orodja kopirana v odložišče', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Tukaj je nekaj priporočene glasbe:', 'playList': 'Seznam predvajanja', 'moreMusic': 'Več glasbe', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'ur', // 小时单位 @@ -857,7 +951,30 @@ const Map slSI = { "bicycling": "Kolesarjenje", "tsransit": "Javni prevoz", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Izberite navigacijsko aplikacijo', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigiraj z Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigiraj z Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigiraj z Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigiraj z Apple Maps', + 'builtInNavigation': 'Vgrajena navigacija', + 'useBuiltInNavigation': 'Navigiraj z vgrajenim zemljevidom', + 'navigationStartFailed': 'Zagon navigacije ni uspel', + 'cannotPlayMusicListRetryLater': + 'Seznama glasbe ni mogoče predvajati, poskusite znova pozneje', + 'cannotPlaySong': 'Ni mogoče predvajati pesmi', + '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 ni na voljo', + 'openAppleMapError': 'Napaka pri odpiranju Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Poizvedba o vremenskih razmerah:', 'highest': 'Najvišja', 'lowest': 'Najnižja', @@ -887,18 +1004,8 @@ const Map slSI = { "friday": "Pet", "saturday": "Sob", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Sončno", "partlyCloudy": "Delno oblačno", "partlySunny": "Pretežno sončno", @@ -919,7 +1026,141 @@ const Map slSI = { "haze": "Meglica", "strongWind": "Močan veter", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Prevajanje slike", + "textTranslation": "Prevajanje besedila", + + // 翻译模块 - 主页 + "translationHistory": "Zgodovina prevodov", + "enableRecording": "Omogoči snemanje", + "viewAudioFiles": "Ogled zvočnih datotek", + "headsetUser": "Uporabnik slušalk", + "phoneUser": "Uporabnik telefona", + "selectSourceLanguage": "Izberi izvorni jezik", + "selectTargetLanguage": "Izberi ciljni jezik", + "me": "Jaz", + "counterPart": "Sogovornik", + "bluetoothCallStateError": + "Preverite, ali so Bluetooth slušalke povezane s telefonom in v stanju klica", + "autoDetect": "Samodejno zaznaj", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Prepoznavanje jezika ni uspelo", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Onemogoči plavajoče okno', + 'enableFloatingWindow': 'Omogoči plavajoče okno', + 'permissionTip': 'Namig za dovoljenja', + 'micPermissionRequiredForRecording': + 'Za snemanje je potrebno dovoljenje mikrofona', + 'deleteTranslationRecordError': 'Napaka pri brisanju zapisa prevoda: @error', + "translationFailed": "Prevajanje ni uspelo", + "translating": "Prevajanje", + "translate": "Prevedi", + "pleaseInputText": "Vnesite besedilo", + "inputTextToTranslate": "Vnesite besedilo za prevod", + "textTooLong": "Besedilo je predolgo, največ 5000 znakov", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ni zgodovine", + "historyRecords": "Zgodovina", + "clearResults": "Počisti rezultate", + "clearHistory": "Počisti zgodovino", + "clearHistoryConfirm": + "Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.", + "unknownLanguage": "Neznan jezik", + "deleteSessionRecord": "Izbriši zapis seje", + "deleteSessionConfirm": + "Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Izberi vir slike", + "imagePreview": "Predogled slike", + "translationResult": "Rezultat prevoda", + "recognitionResult": "Rezultat prepoznave", + "translatedImagePreview": "Predogled prevedene slike", + "translatedImageLoadFailed": "Prevedene slike ni bilo mogoče naložiti", + "pleaseSelectImage": "Izberite sliko", + "imageLoadFailed": "Nalaganje slike ni uspelo", + "imageQuality": "Kakovost slike", + "maxSize": "Največja velikost", + "close": "Zapri", + "setImageQuality": "Nastavi kakovost slike", + "currentQuality": "Trenutna kakovost: @value%", + "setMaxSize": "Nastavi največjo velikost", + "currentMaxSize": "Trenutno: @pxpx", + "waitingForAction": "Čakanje na dejanje", + "pleaseSelectImageToStart": "Za začetek izberite sliko", + "chooseImage": "Izberi sliko", + "openingCamera": "Odpiranje kamere...", + "openingPhotoAlbum": "Odpiranje fotoalbuma...", + "cancelled": "Preklicano", + "userCancelledSelection": "Uporabnik je preklical izbiro", + "translatingImage": "Prevajanje slike", + "callingImageTranslateService": "Klicanje storitve za prevajanje slik...", + "savingRecord": "Shranjevanje zapisa", + "savingTranslationResult": "Shranjevanje rezultata prevoda...", + "translationCompleted": "Prevajanje dokončano", + "allStepsCompleted": "Vsi koraki so dokončani", + "processingFailed": "Obdelava ni uspela", + "imageProcessingOrTranslationFailed": + "Obdelava slike ali prevajanje ni uspelo. Poskusite znova.\nNapaka: {error}", + "imageTooLarge": "Velikost slike presega omejitev 4 MB", + "imageTooLargeHint": + "Velikost slike presega 4 MB. Znižajte kakovost ali dimenzije in poskusite znova", + "emptyTranslationResult": "API za prevajanje slik je vrnil prazen rezultat", + "imageTranslationFailedTryLater": + "Prevajanje slike ni uspelo. Težava z omrežjem ali omejitev hitrosti. Poskusite pozneje", + "imageTranslationApiException": + "Izjema API za prevajanje slik. Preverite omrežje in poskusite znova", + "permissionRequired": "Zahtevano dovoljenje", + "cameraPermissionRequired": "Za fotografiranje je potrebno dovoljenje kamere", + "photoAlbumPermissionRequired": + "Za izbiro slik je potrebno dovoljenje za fotografije", + "translationDetails": "Podrobnosti prevoda", + "originalImage": "Originalna slika", + "sourceLanguage": "Izvorni jezik", + "targetLanguage": "Ciljni jezik", + "translationTime": "Čas prevajanja", + "shareInDevelopment": "Funkcija deljenja je v razvoju", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Prevedi zvočne datoteke", + "noAudioFiles": "Ni zvočnih datotek", + "calculating": "Izračunavanje...", + "playing": "Predvajanje...", + "paused": "Premor", + "clickToPlay": "Kliknite za predvajanje", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj zvočno datoteko", + "enterNewFileName": "Vnesite novo ime datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Povzetek zapisa", + "clickToGenerateSummary": + "Kliknite spodnji gumb za generiranje povzetka seje", + "summaryContent": "Vsebina povzetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Povzetek je bil kopiran v odložišče", + "extractSummary": "Izvleci povzetek", + "summaryGenerated": "Povzetek je bil generiran", + "generating": "Generiranje...", + "regenerate": "Ponovno generiraj", + "summaryTimeoutMessage": + "Čas za generiranje povzetka je potekel, morda zaradi težav z omrežjem ali zasedenosti strežnika.", + "deleteTranslationRecord": "Izbriši zapis prevoda", + "deleteTranslationConfirm": + "Ali ste prepričani, da želite izbrisati ta zapis prevoda? Tega dejanja ni mogoče razveljaviti.", + "originalText": "Originalno besedilo", + "translatedText": "Prevedeno besedilo", + "sessionSummary": "Povzetek seje", + "cannotShare": "Ni mogoče deliti", + "generateSummaryFirst": "Najprej generirajte povzetek", + "translationSessionRecord": "Zapis seje prevajanja", + + // 个人资料模块 "editProfile": "Uredi osebne podatke", "avatar": "Avatar", "nickname": "Vzdevek", @@ -934,10 +1175,8 @@ const Map slSI = { 'deleteAccount': 'Izbriši račun', 'deleteAccountTips': 'Ali ste prepričani, da želite trajno izbrisati svoj račun? Tega dejanja ni mogoče razveljaviti', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 + 'clean': 'Počisti predpomnilnik', + 'cleanTips': 'Ali ste prepričani, da želite počistiti osebni predpomnilnik?', 'networkConnectionFailed': 'Napaka v omrežni povezavi, preverite nastavitve omrežja in poskusite znova', 'serverTemporarilyUnavailable': @@ -954,10 +1193,6 @@ const Map slSI = { 'Napaka v omrežni povezavi, preverite nastavitve omrežja', 'serverInternalErrorRetryLater': 'Notranja napaka strežnika, poskusite znova kasneje', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Stiskanje slike ni uspelo', 'avatarUpdateFailed': 'Posodobitev avatarja ni uspela', 'usernameCannotBeEmpty': 'Uporabniško ime ne sme biti prazno', @@ -968,8 +1203,6 @@ const Map slSI = { 'logoutFailedRetry': 'Odjava ni uspela, poskusite znova', 'accountPermanentlyDeleted': 'Račun je bil trajno izbrisan', 'deleteAccountFailedRetry': 'Brisanje računa ni uspelo, poskusite znova', - - // 账号服务相关 'clearUserDataFailed': 'Čiščenje uporabniških podatkov ni uspelo', // 清理用户数据失败 'deleteUserDataFailed': 'Brisanje uporabniških podatkov ni uspelo', // 删除用户数据失败 @@ -984,21 +1217,25 @@ const Map slSI = { 'accountServiceInitialized': 'AccountService je bil inicializiran', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Shramba', + 'meetingStoragePermissionExplanation': + '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', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Stiki', + 'notification': 'Obvestilo', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje v koledar', 'calendarFullAccess': 'Poln dostop do koledarja', @@ -1006,7 +1243,7 @@ const Map slSI = { 'phonePermissionDesc': 'Uporablja se za funkcijo klicanja', 'smsPermissionDesc': 'Uporablja se za funkcijo pošiljanja SMS', 'alarmPermissionDesc': - 'Used to set exact alarms to ensure reminders trigger on time', + 'Uporablja se za nastavitev natančnih alarmov, da se opomniki sprožijo pravočasno', 'calendarWritePermissionDesc': 'Uporablja se za ustvarjanje dogodkov in opomnikov v koledarju', 'calendarFullAccessPermissionDesc': @@ -1026,80 +1263,92 @@ 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': 'Upravljanje dogodkov v koledarju zahteva polno dovoljenje za koledar', 'locationPermissionDetailDesc': 'Pridobivanje informacij o lokaciji zahteva dovoljenje za lokacijo', - 'contactsPermissionDesc': 'Used for accessing contact information', + 'contactsPermissionDesc': 'Uporablja se za dostop do informacij o stikih', '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', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Za povezovanje z Bluetooth napravami je potrebno dovoljenje za povezavo Bluetooth', + 'notificationPermissionDesc': 'Uporablja se za pošiljanje obvestil', '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', + 'bluetoothScan': 'Skeniranje Bluetooth', + '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.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Dovoljenje za lokacijo je bilo trajno zavrnjeno, pojdite v nastavitve in ga ročno omogočite.', + 'notificationPermission': 'Obvestila', + 'locationPermission': 'Lokacija', '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.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Trajno ste zavrnili dovoljenje za lokacijo, pojdite v nastavitve in ga omogočite.', + 'storagePermission': 'Shramba', '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': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + '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': 'Potrebno ', + '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija poteka', + 'native.notification.navigation.keepRunning': + 'Navigacija, ohranite aplikacijo zagnano', + 'native.notification.bleAgent.running': 'Glasovni pomočnik deluje', + 'native.notification.audioRecording.recording': + 'Snemanje zvoka, tapnite za vrnitev v aplikacijo', + 'native.notification.music.waiting': 'Čakanje na predvajanje', + 'native.notification.music.previous': 'Prejšnja', + 'native.notification.music.next': 'Naslednja', + 'native.notification.music.play': 'Predvajaj', + 'native.notification.music.pause': 'Premor', + 'native.notification.qqMusic.playing': 'Predvajanje glasbe', + + // 版本更新 'newVersionFound': 'Najdena nova različica', // 版本更新对话框标题 'remindLater': 'Opomni me kasneje', // 稍后提醒按钮 'updateNow': 'Posodobi zdaj', // 立即更新按钮 @@ -1110,253 +1359,7 @@ const Map slSI = { 'updateErrorRetry': 'Prišlo je do napake med posodabljanjem, poskusite znova kasneje', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kitajska", - "美国": "ZDA", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Združeno kraljestvo", - "德国": "Nemčija", - "意大利": "Italija", - "法国": "Francija", - "西班牙": "Španija", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudova Arabija", - "土耳其": "Turčija", - "日本": "Japonska", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajska", - "越南": "Vietnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "ZAE", - "墨西哥": "Mehika", - "巴西": "Brazilija", - "阿根廷": "Argentina", - "澳大利亚": "Avstralija", - "新西兰": "Nova Zelandija", - "中国香港": "Hongkong (Kitajska)", - "中国澳门": "Macao (Kitajska)", - "中国台湾": "Tajvan (Kitajska)", - "埃及": "Egipt", - "希腊": "Grčija", - "荷兰": "Nizozemska", - "比利时": "Belgija", - "匈牙利": "Madžarska", - "罗马尼亚": "Romunija", - "瑞士": "Švica", - "奥地利": "Avstrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portugalska", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Islandija", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Ciper", - "芬兰": "Finska", - "保加利亚": "Bolgarija", - "立陶宛": "Litva", - "拉脱维亚": "Latvija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvaška", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovaška", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžirija", - "突尼斯": "Tunizija", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Libanon", - "约旦": "Jordanija", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrajn", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Afganistan", - "斯里兰卡": "Šrilanka", - "缅甸": "Mjanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Vzhodni Timor", - "斐济": "Fidži", - "所罗门群岛": "Salomonovi otoki", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Zgodovina prevodov", - "enableRecording": "Omogoči snemanje", - "viewAudioFiles": "Ogled zvočnih datotek", - "headsetUser": "Uporabnik slušalk", - "phoneUser": "Uporabnik telefona", - "selectSourceLanguage": "Izberi izvorni jezik", - "selectTargetLanguage": "Izberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ni zgodovine", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Počisti zgodovino", - "clearHistoryConfirm": - "Ali ste prepričani, da želite počistiti vso zgodovino prevodov? Tega dejanja ni mogoče razveljaviti.", - "unknownLanguage": "Neznan jezik", - "deleteSessionRecord": "Izbriši zapis seje", - "deleteSessionConfirm": - "Ali ste prepričani, da želite izbrisati vse zapise prevodov za to sejo? Tega dejanja ni mogoče razveljaviti.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi zvočne datoteke", - "noAudioFiles": "Ni zvočnih datotek", - "calculating": "Izračunavanje...", - "playing": "Predvajanje...", - "paused": "Premor", - "clickToPlay": "Kliknite za predvajanje", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj zvočno datoteko", - "enterNewFileName": "Vnesite novo ime datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Povzetek zapisa", - "clickToGenerateSummary": - "Kliknite spodnji gumb za generiranje povzetka seje", - "summaryContent": "Vsebina povzetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Povzetek je bil kopiran v odložišče", - "extractSummary": "Izvleci povzetek", - "summaryGenerated": "Povzetek je bil generiran", - "generating": "Generiranje...", - "regenerate": "Ponovno generiraj", - "summaryTimeoutMessage": - "Čas za generiranje povzetka je potekel, morda zaradi težav z omrežjem ali zasedenosti strežnika.", - "deleteTranslationRecord": "Izbriši zapis prevoda", - "deleteTranslationConfirm": - "Ali ste prepričani, da želite izbrisati ta zapis prevoda? Tega dejanja ni mogoče razveljaviti.", - "originalText": "Originalno besedilo", - "translatedText": "Prevedeno besedilo", - "sessionSummary": "Povzetek seje", - "cannotShare": "Ni mogoče deliti", - "generateSummaryFirst": "Najprej generirajte povzetek", - "translationSessionRecord": "Zapis seje prevajanja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Seznanjanje naprave", "connectYourDeepSoundHeadset": "Povežite svoje slušalke Voitrans", "bind": "Poveži", @@ -1365,14 +1368,11 @@ const Map slSI = { "autoInputCode": "Samodejni vnos kode", "skipBinding": "Preskoči povezavo", "rescan": "Ponovno skeniraj", - "verifyingDevice": "Preverjanje naprave...", "confirmBinding": "Potrdi povezavo", "associatingDevice": "Povezovanje naprave...", "goToBluetoothSettings": "Pojdi na nastavitve Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Pripravljen za seznanjanje", "preparingPairingEnvironment": "Priprava okolja za seznanjanje...", "connectDeepSoundViaSystemBluetooth": @@ -1382,8 +1382,6 @@ const Map slSI = { "waitingCompletePairing": "Počakajte, seznanjanje se zaključuje...", "pairingSuccessRedirecting": "Seznanjanje uspelo! Preusmerjanje na domačo stran...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Prepričajte se, da ste povezani z napravo Voitrans", "deviceAlreadyBoundToOtherAccount": @@ -1395,19 +1393,12 @@ const Map slSI = { "authorizationFailedCheckCode": "Avtorizacija ni uspela, preverite, ali je avtorizacijska koda pravilna", "pairingFailedRetry": "Seznanjanje ni uspelo, poskusite znova", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogočite Bluetooth', 'deviceDisconnected': 'Naprava je bila odklopljena', 'readyToStartPairing': 'Pripravljen za začetek seznanjanja', 'checkingEnvironment': 'Preverjanje okolja...', 'ensureHeadsetOnAndPairingMode': 'Prepričajte se, da so slušalke vklopljene in v načinu seznanjanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Vzpostavljanje varne povezave...', 'needManualBindingAuthCode': 'Potrebna je koda za avtorizacijo ročne povezave...', @@ -1430,21 +1421,30 @@ const Map slSI = { 'bleConnectionFailed': 'Povezava BLE ni uspela', 'deviceAuthorizationFailedCheckCode': 'Avtorizacija naprave ni uspela, preverite avtorizacijsko kodo', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + '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": "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", - //用户反馈页 + // 用户反馈模块 "feedback": "Povratne informacije uporabnikov", 'feedbackInfo': 'Podajte povratne informacije ali predloge', 'feedbackDescription': @@ -1472,13 +1472,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", @@ -1487,7 +1488,61 @@ const Map slSI = { "removeEarbudsEnsureBattery": "Odstranite obe slušalki in se prepričajte, da je baterija obeh nad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Najdena nova različica @version', + 'otaConfirmUpdateNow': 'Posodobi zdaj?', + 'otaUpdate': 'Posodobi', + 'otaUpgradeSuccess': 'Nadgradnja uspešna', + 'otaUpgradeCompleteRepair': + 'Nadgradnja vdelane programske opreme dokončana!\n\nZa pravilno delovanje je treba napravo znova seznaniti. Želite zdaj na stran za seznanjanje?', + 'otaPairLater': 'Seznani pozneje', + 'otaPairNow': 'Seznani zdaj', + 'okConfirm': 'OK', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Napaka pri preverjanju povezave BLE: @error', + 'otaBleNotConnected': 'Naprava BLE ni povezana', + 'otaBleNeedConnection': + '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': + 'Ni mogoče pridobiti informacij o napravi\nPonovno povežite napravo ali poskusite znova pozneje', + 'otaBleCheckFailed': 'Preverjanje povezave BLE ni uspelo', + 'otaCannotGetDeviceInfoCheckConnection': + 'Ni mogoče pridobiti informacij o napravi, preverite povezavo naprave', + 'otaCannotGetProductInfoWithName': + 'Ni mogoče pridobiti informacij o izdelku, ime naprave: @deviceName', + 'otaCannotGetBatteryInfo': 'Ni mogoče pridobiti podatkov o bateriji', + 'otaLowBattery': 'Nizka baterija', + 'otaSingleBatteryLow': + 'Baterija naprave je prenizka za nadgradnjo vdelane programske opreme\nZahteva: baterija mora biti nad 20%\nTrenutno: @ear @battery%\nNapolnite in poskusite znova', + 'otaDoubleBatteryLow': + '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': + 'Ta posodobitev vključuje optimizacije zmogljivosti in popravke napak.', + 'otaGetLatestVersionFailed': + 'Pridobivanje informacij o najnovejši različici ni uspelo', + 'otaGetVersionInfoFailed': 'Pridobivanje informacij o različici ni uspelo', + 'otaCheckingDeviceStatus': 'Preverjanje stanja naprave...', + 'otaDownloadFailedCheckNetwork': + 'Prenos ni uspel, preverite omrežno povezavo', + 'otaDownloadFailed': 'Prenos ni uspel', + 'otaPreparingConnection': 'Priprava povezave naprave...', + 'otaConnectingDevice': 'Povezovanje z napravo...', + 'otaUpgradeStarted': 'Nadgradnja OTA se je začela...', + 'otaUpgradeProgressWithPercent': 'Napredek nadgradnje: @percent%', + 'otaUpgradeSuccessComplete': 'Nadgradnja je bila uspešno dokončana', + 'otaUpgradeFailedWithCode': 'Nadgradnja ni uspela, koda napake: @code', + 'otaUpgradeFailedTitle': 'Nadgradnja ni uspela', + 'otaUpgradeFailedDesc': + 'Preverite povezavo naprave ali paket posodobitve, koda napake: @code', + 'otaDeviceDisconnected': 'Naprava je prekinila povezavo', + 'otaDeviceConnected': 'Naprava je povezana', + + // 音乐模块 "noMusic": "Ni glasbe", // 暂无音乐 "noPlayingMusic": "Ni predvajane glasbe", // 暂无播放音乐 "unknownSong": "Neznana pesem", // 未知歌曲 @@ -1535,22 +1590,122 @@ const Map slSI = { "波斯语": "Perzijščina", "斯瓦希里语": "Svahilščina", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kitajska", + "美国": "ZDA", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Združeno kraljestvo", + "德国": "Nemčija", + "意大利": "Italija", + "法国": "Francija", + "西班牙": "Španija", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudova Arabija", + "土耳其": "Turčija", + "日本": "Japonska", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajska", + "越南": "Vietnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "ZAE", + "墨西哥": "Mehika", + "巴西": "Brazilija", + "阿根廷": "Argentina", + "澳大利亚": "Avstralija", + "新西兰": "Nova Zelandija", + "中国香港": "Hongkong (Kitajska)", + "中国澳门": "Macao (Kitajska)", + "中国台湾": "Tajvan (Kitajska)", + "埃及": "Egipt", + "希腊": "Grčija", + "荷兰": "Nizozemska", + "比利时": "Belgija", + "匈牙利": "Madžarska", + "罗马尼亚": "Romunija", + "瑞士": "Švica", + "奥地利": "Avstrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portugalska", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Islandija", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Ciper", + "芬兰": "Finska", + "保加利亚": "Bolgarija", + "立陶宛": "Litva", + "拉脱维亚": "Latvija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvaška", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovaška", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžirija", + "突尼斯": "Tunizija", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Libanon", + "约旦": "Jordanija", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrajn", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Afganistan", + "斯里兰卡": "Šrilanka", + "缅甸": "Mjanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Vzhodni Timor", + "斐济": "Fidži", + "所罗门群岛": "Salomonovi otoki", + "刚果民主共和国": "Demokratična republika Kongo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldivi", + "不丹": "Butan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamajka", + "巴哈马": "Bahami", + "巴布亚新几内亚": "Papua Nova Gvineja", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sr_rs.dart b/lib/core/translations/language/sr_rs.dart index 092355fa5..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', @@ -18,6 +19,11 @@ const Map srRS = { "unknownError": "Nepoznata greška", "asrConnectionFailed": "Povezivanje sa servisom za prepoznavanje govora nije uspelo. Proverite mrežu i pokušajte ponovo kasnije.", + "justNow": "Upravo sada", + "minutesAgo": "Pre @minutes minuta", + "yesterday": "Juče", + "daysAgo": "Pre @days dana", + "hoursAgo": "Pre @hours sati", // 启动页 "slogan": "Povezivanje sveta, izvan zvuka", @@ -28,7 +34,7 @@ const Map srRS = { "explore": "Istraži", "settings": "Podešavanja", - // 语言 + // 语言列表 "followingSystem": "Prati sistem", "chinese": "Kineski", "english": "Engleski", @@ -72,7 +78,7 @@ const Map srRS = { "arabic": "Arabski", "persian": "Perski", - // 登录页 + // 登录模块 "welcome": "Dobrodošli", "loginTips": "Prijavite se ili registrujte putem broja telefona ili e-pošte", "accountNumber": "Broj telefona ili e-pošta", @@ -100,15 +106,11 @@ const Map srRS = { "resendVerificationCode": "Ponovo pošalji verifikacioni kod", "login": "Prijavi se", "usePasswordLogin": "Prijavi se lozinkom", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans izjava", // Voitrans 声明 "welcomeToThisApp": "Dobrodošli u Voitrans, molimo vas da pažljivo pročitate", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + ", klikom na 'Slažem se i ulazim' potvrđujete da ste u potpunosti pročitali i da se slažete sa gorenavedenim sporazumima. Klikom na 'Ne slažem se' napustićete aplikaciju.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Ne slažem se", // 不同意 "agreeAndEnter": "Slažem se i ulazim", // 同意并进入 @@ -167,7 +169,30 @@ const Map srRS = { 'right': 'Desno', 'checkConnectionStatusFailed': 'Neuspešna provera statusa veze', -// 发现页 + // 蓝牙扫描模块 + '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', + 'needPermission': 'Potrebna dozvola', + 'blePermissionDialogContent': + 'Ova aplikacija zahteva dozvole za Bluetooth i lokaciju za skeniranje uređaja. Molimo omogućite ih u Podešavanjima.', + 'needEnableBluetooth': 'Omogućite Bluetooth', + 'enableBluetoothDialogContent': + 'Molimo omogućite Bluetooth za skeniranje i povezivanje uređaja.', + 'bleScanFailedWithError': 'Skeniranje nije uspelo: @error', + 'bleConnectionSuccess': 'Povezivanje uspešno', + 'bleConnectedToDevice': 'Povezano sa @device', + 'bleConnectionFailedWithError': 'Povezivanje nije uspelo: @error', + 'bleDisconnected': 'Veza prekinuta', + 'bleDeviceDisconnected': 'Uređaj je isključen', + 'bleDisconnectFailedWithError': 'Prekidanje veze nije uspelo: @error', + 'signalStrong': 'Jak', + 'signalMedium': 'Srednji', + 'signalWeak': 'Slab', + 'signalVeryWeak': 'Veoma slab', + + // 发现页 "searchAi": "Pretraži AI funkcije...", "exploreSlogan": "Pametne slušalice, beskonačne mogućnosti", "exploreSlogan1": "Pametni pratilac, beskonačne mogućnosti", @@ -191,211 +216,271 @@ const Map srRS = { "usageStats": "Statistika korišćenja", "usageStatsInfo": "Pregledajte vaše korišćenje aplikacije", "scene": "Scena", + // 用量统计模块 - "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 ćaskanje", + "translationStats": "Statistika prevođenja", + "meetingStats": "Statistika sastanaka", + "today": "Danas", + "thisWeek": "Ova nedelja", + "thisMonth": "Ovaj mesec", + "history": "Istorija", + "currentSessionStats": "Statistika trenutne sesije", + "translationCount": "Broj prevoda", + "sessionDuration": "Trajanje sesije", + "characters": "Karakteri", + "recordingDuration": "Trajanje snimka", + "totalApiCalls": "Ukupni API pozivi", + "sessionCount": "Broj sesija", + "totalCharacters": "Ukupno karaktera", + "apiCallStats": "Statistika API poziva", + "translationApi": "API za prevođenje", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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 obima podataka", + "sourceTextCharacters": "Karakteri izvornog teksta", + "ttsTextCharacters": "Karakteri TTS teksta", + "effectiveAudioDuration": "Efektivno trajanje zvuka", + "totalSessionDuration": "Ukupno trajanje sesija", + "costStats": "Statistika troškova", + "estimatedCost": "Procenjeni trošak", + "dailyCostThreshold": "Dnevni prag troškova", + "monthlyCostThreshold": "Mesečni prag troškova", + "usageBehaviorStats": "Statistika ponašanja korišćenja", + "mostUsedLanguagePair": "Najkorišćeniji jezički par", + "mostUsedMode": "Najkorišćeniji režim", + "asrApiCalls": "ASR pozivi", + "totalAudioDuration": "Ukupno trajanje zvuka", + "audioFileSize": "Veličina audio datoteke", + "transcriptBytes": "Bajtovi transkripta", + "loadFailed": "Učitavanje nije uspelo", "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 - 'meetingHeaderDesc1': - 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': - 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': - 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': - 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': - 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': - 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 + "Statistika nije učitana. Molimo pokušajte ponovo kasnije.", + "cleanupComplete": "Čišćenje završeno", + "cleanedOldData": "Obrisani podaci stariji od 90 dana", + "exportFeature": "Funkcija izvoza", + "exportInDevelopment": "Izvoz podataka je u razvoju", + + // 商品模块 - 通用 + 'availablePackages': 'Dostupni paketi', + 'remainingQuota': 'Preostala kvota', + 'totalQuota': 'Ukupna kvota', + 'remaining': 'Preostalo', + 'featureDescription': 'Opis funkcije', + 'paymentSuccess': 'Plaćanje uspešno', + 'paymentFailed': 'Plaćanje nije uspelo', + 'gotIt': 'Razumem', + 'paymentFailedTryAgain': 'Plaćanje nije uspelo. Pokušajte ponovo.', + 'selectPaymentMethod': 'Izaberite način plaćanja', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Kreiranje WeChat porudžbine nije uspelo', + 'alipayOrderCreateFailed': 'Kreiranje Alipay porudžbine nije uspelo', + 'appleOrderCreateFailed': 'Kreiranje Apple porudžbine nije uspelo', + 'googleOrderCreateFailed': 'Kreiranje Google porudžbine nije uspelo', + 'paypalOrderCreateFailed': 'Kreiranje PayPal porudžbine nije uspelo', + 'paymentException': 'Izuzetak pri plaćanju', + 'paymentLaunchFailed': 'Pokretanje plaćanja nije uspelo', + 'paymentExceptionWithError': 'Izuzetak pri plaćanju: @error', + 'paymentProcessingCheckLater': + 'Vaša porudžbina se obrađuje. Proverite kasnije.', + 'paymentResultQueryException': + 'Neuspešno pretraživanje rezultata plaćanja: @error', + 'orderConfirmedQuotaRefreshed': + 'Porudžbina je potvrđena. Vaša kvota je osvežena.', + 'paymentCompletedConfirming': 'Plaćanje je završeno. Potvrđivanje…', + 'paymentCancelled': 'Plaćanje je otkazano', + 'paypalOpenedCompleteInBrowser': + 'PayPal je otvoren. Molimo završite plaćanje u pretraživaču.', + 'paypalOpenFailed': 'Nije moguće otvoriti PayPal stranicu za plaćanje', + 'paymentTestTitle': 'Test plaćanja', + 'paymentTestOrderInfo': 'Informacije o test porudžbini', + 'paymentTestProductId': 'ID proizvoda', + 'paymentTestProductDescription': 'Opis proizvoda', + 'paymentTestWechatDescription': 'Test WeChat plaćanja', + 'paymentTestAlipayDescription': 'Test Alipay plaćanja', + 'paymentTestAmount': 'Iznos', + 'paymentTestSelectAmount': 'Izaberite test iznos', + 'paying': 'Plaćanje...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status plaćanja', + 'errorInfoWithMessage': 'Greška: @message', + 'retest': 'Ponovo testiraj', + 'paymentTestInstructionsTitle': 'Uputstva', + 'paymentTestInstructionsContent': + '1. Izaberite test iznos (preporučeno: ¥0.01)\n2. Kliknite dugme za plaćanje da započnete\n3. Završite plaćanje u aplikaciji za plaćanje\n4. Vratite se da proverite rezultat', + 'startingWechatPayment': 'Pokretanje WeChat Pay-a...', + 'startingAlipayPayment': 'Pokretanje Alipay-a...', + 'wechatPaymentSuccess': 'WeChat Pay plaćanje uspešno!', + 'wechatPaymentFailed': 'WeChat Pay plaćanje nije uspelo', + 'wechatPaymentLaunchFailed': 'Pokretanje WeChat Pay-a nije uspelo', + 'cannotLaunchWechatPayment': 'Nije moguće pokrenuti WeChat Pay', + 'wechatPaymentException': 'WeChat Pay izuzetak', + 'wechatPaymentTestCompleted': 'Test WeChat Pay plaćanja je završen', + 'alipayPaymentSuccess': 'Alipay plaćanje uspešno!', + 'alipayPaymentFailed': 'Alipay plaćanje nije uspelo', + 'alipayPaymentLaunchFailed': 'Pokretanje Alipay-a nije uspelo', + 'cannotLaunchAlipayPayment': 'Nije moguće pokrenuti Alipay', + 'alipayPaymentException': 'Alipay izuzetak', + "insufficientIntegral": "Nedovoljno bodova", + "insufficientBalanceDesc": + "Nedovoljan saldo, molimo idite na odgovarajuću stranicu za dopunu.", + "recharge": "Idi na dopunu", + "aiMemberExpiredDesc": + "AI članstvo je isteklo, molimo idite na stranicu za dopunu članstva da biste obnovili.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Muzika i preporuke', + 'navigationAndRoutes': 'Navigacija i putanje', + 'nearbySearch': 'Pretraga u blizini', + 'newsInformation': 'Vesti', + 'communicationAssistant': 'Asistent za komunikaciju', 'aiHeaderDesc1': - 'Longer conversation quota, more tool calls, extended context length.', + 'Duža kvota za razgovor, više poziva alata, produžena dužina konteksta.', 'aiHeaderDesc2': - 'Suitable for agent Q&A, summarization, analysis, and task execution.', - 'musicSearchPlaybackControl': 'Music library search and playback control', + 'Pogodno za pitanja i odgovore agenta, sažimanje, analizu i izvršavanje zadataka.', + 'musicSearchPlaybackControl': + 'Pretraga muzičke 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 pesama i preporuke sličnih pesama', + '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', + 'poiSearchFoodGasParking': 'POI pretraga: hrana / gorivo / parking', + 'ratingsHoursAndDirectRoutes': 'Ocene, radno vreme i direktne rute', + 'hotNewsAndTopicOverview': 'Najnovije vesti i pregled tema', + 'longArticleSummariesAndKeyPoints': 'Sažeci dugih članaka i ključne tačke', + 'helpCallAndSMS': 'Pomoć pri pozivima i SMS porukama', 'templatedMessagesAndScheduleReminders': - 'Template messages and schedule reminders', + 'Šablonske poruke i podsetnici za raspored', 'aiDisclaimer': - 'Features depend on device permissions, service availability, and network conditions.', - - // 会员商品页 - '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', + 'Funkcije zavise od dozvola uređaja, dostupnosti servisa i mrežnih uslova.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Transkripcija u realnom vremenu', + 'sceneLexicon': 'Rečnik za scenarije', + 'subtitleDisplay': 'Titlovi', + 'transHeaderDesc1': + 'Simultano prevođenje i prevod teksta u realnom vremenu sa glasom niske latencije.', + 'transHeaderDesc2': 'Pogodno za putovanja, poslovanje, govore i nastavu.', + 'translateZhEn': 'Kinesko-engleski prevod', + 'lowLatencyVoiceBroadcast': 'Glasovno emitovanje niske latencije', + 'multiLangTextTranslation': 'Višejezični prevod teksta', + 'termOptimizationContextPreserve': + 'Optimizacija terminologije i očuvanje konteksta', + 'lexiconTourBusinessLife': 'Rečnici za putovanje/poslovanje/svakodnevicu', + 'personalVocabularyMemory': 'Lična memorija vokabulara', + 'conversationSubtitleLargeText': 'Titlovi razgovora / Režim velikog teksta', + 'colorHighContrast': 'Visoki kontrast boja', + 'transDisclaimer': + 'Kvalitet prevođenja zavisi od mikrofona, mrežne latencije i buke u okruženju.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Snimanje sastanka', + 'transcriptionAndSummary': 'Transkripcija i sažetak', + 'keywordSearch': 'Pretraga ključnih reči', + 'collaborationSharing': 'Saradnja i deljenje', + 'meetingHeaderDesc1': + 'Audio snimanje, transkripcija, pretraga ključnih reči i automatski sažetak za poboljšanje efikasnosti sastanka.', + 'meetingHeaderDesc2': + 'Pogodno za poslovne sastanke, beleške sa predavanja i zapisnike sa intervjua.', + 'meetingAutoRecording': 'Automatsko snimanje i segmentacija', + 'meetingSpeakerTagging': 'Označavanje govornika', + 'meetingLongAudioTranscription': 'Transkripcija dugog zvuka', + 'meetingKeyPointSummary': 'Izdvajanje ključnih tačaka', + 'meetingTopicNameSearch': 'Pretraga po temi/imenu', + 'meetingTimelineJump': 'Skok na vremensku liniju', + 'meetingExportSummary': 'Izvoz zapisnika', + 'meetingMultiPlatformShare': 'Deljenje na više platformi', + 'meetingDisclaimer': + 'Koristite u tihom okruženju; performanse zavise od mikrofona i mreže.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Pregled pogodnosti', + 'higherQuota': 'Veća kvota korišćenja', + 'lowerUnitPrice': 'Niža jedinična cena', + 'priorityService': 'Prioritetna usluga', + 'exclusiveSupportChannel': 'Namenski kanal podrške', + 'fastResponse': 'Brz odgovor na probleme', + 'eventsAndDiscounts': 'Događaji i popusti', + 'memberExclusiveEvents': 'Ekskluzivni događaji za članove', + 'longTermDiscountPlan': 'Dugoročni plan popusta', + 'generalPrivileges': 'Opšte privilegije', + 'earlyAccessNewFeatures': 'Rani pristup novim funkcijama', + 'crossDeviceSync': 'Sinhronizacija između uređaja', 'vipDisclaimer': - 'Actual benefits depend on the package details and may change with versions.', + 'Stvarne pogodnosti zavise od detalja paketa i mogu se promeniti sa verzijama.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Osnovni 100', + 'ai_002_name': 'AI Osnovni 500', + 'ai_003_name': 'AI Osnovni 1000', + 'meet_001_name': 'Sastanak Osnovni 100', + 'meet_002_name': 'Sastanak Osnovni 500', + 'meet_003_name': 'Sastanak Osnovni 1000', + 'trans_001_name': 'Prevod Osnovni 100', + 'trans_002_name': 'Prevod Osnovni 500', + 'trans_003_name': 'Prevod Osnovni 1000', + 'ai_001_desc': 'Uključuje 100 korišćenja. Pristup osnovnim AI funkcijama.', + 'ai_002_desc': 'Uključuje 500 korišćenja. Pristup osnovnim AI funkcijama.', + 'ai_003_desc': 'Uključuje 1000 korišćenja. Pristup osnovnim AI funkcijama.', + '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 prevoda (glas/tekst).', + 'trans_002_desc': 'Uključuje 500 prevoda (glas/tekst).', + 'trans_003_desc': 'Uključuje 1000 prevoda (glas/tekst).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Aplikacija: VoiTrans · Pruža: VoiTrans', + 'iapCustomerServiceQQLabel': 'Korisnički servis za IAP QQ: @qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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': 'Sledeće', + 'sayLilyHint': 'Recite "Lily Lily" u mikrofon', + 'imHere': 'Ovde sam~', + 'guideWelcomeWakeAI': 'Dobrodošli u Voitrans! Prvo probudite svog AI „Lily".', + 'aiReplyCompleted': 'Lily je završila odgovor!', + 'aiThinking': 'Lily razmišlja…', + 'guideAwakenSuccess': 'Odlično! Lily je budna — zamolite je za pomoć.', + 'confirmInput': 'Potvrdi unos', + 'guideClickSendPrefix': 'Dodirnite pošalji, ', + 'guideWeatherStart': 'Recite Lily: „Kakvo je vreme danas?"', + 'guideWeatherInput': 'Kakvo je vreme danas?', + 'guideWeatherSend': 'Lily će javiti vremensku prognozu u realnom vremenu', + 'guideWeatherEnd': 'Lily može da javlja vreme uživo — probajte druge komande', + 'guideMusicStart': 'Recite Lily: „Pusti rok muziku"', + 'guideMusicInput': 'Pusti rok muziku', + 'guideMusicSend': 'Lily će pronaći muziku za vas', + 'guideMusicEnd': 'Lily je pronašla muziku — probajte druge komande', + 'guideNavStart': 'Recite Lily: „Navigiraj do aerodroma"', + 'guideNavInput': 'Navigiraj do aerodroma', + 'guideNavSend': 'Lily će isplanirati rutu', + 'guideNavEnd': 'Navigacija je podešena — probajte druge komande', '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: „Kreiraj podsetnik za sastanak sutra u 15h"', + 'guideMeetingInput': 'Kreiraj podsetnik za sastanak sutra u 15h', + 'guideMeetingSend': 'Lily će kreirati podsetnik za sastanak', + 'guideMeetingEnd': 'Podsetnik je kreiran — probajte druge komande', + 'guidePhoneStart': 'Recite Lily: „Pozovi mamu"', + 'guidePhoneInput': 'Pozovi mamu', + 'guidePhoneSend': 'Lily će obaviti poziv', + 'guidePhoneEnd': 'Poziv je upućen — probajte druge komande', + 'guideSmsStart': 'Recite Lily: „Pošalji tati poruku: Dolazim na večeru"', + 'guideSmsInput': 'Pošalji tati poruku: Dolazim na večeru', + 'guideSmsSend': 'Lily će poslati poruku', + 'guideSmsEnd': 'Poruka je poslata — glasovna kontrola je praktična', + + // Meeting模块 - 首页与导航 "startMeeting": "Započni sastanak", 'edit': 'Uredi', 'delete': 'Obriši', @@ -407,40 +492,39 @@ const Map srRS = { 'recordingDetails': 'Detalji snimka', 'aiSummary': 'AI sažetak', 'meetingTranscript': 'Transkript sastanka', - - // Meeting模块 - 导航和基础功能 - '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': 'Datoteke', + 'mine': 'Moje', + 'connect': 'Poveži', + 'allFiles': 'Sve datoteke', + 'searchInAllFiles': 'Pretraga u svim datotekama', + 'from': 'Od', + 'sortBy': 'Sortiraj po', + 'creationTime': 'Vreme kreiranja', + 'bluetoothConnection': 'Bluetooth veza', + 'meetingReconnect': 'Ponovo poveži', + 'searching': 'Pretraga...', + 'searchFailed': 'Pretraga nije uspela, proverite da li je Bluetooth uključen', + 'aiPenNotFound': 'AI PEN uređaj nije pronađen', + 'connectedToAiPen': 'Povezano sa AI PEN uređajem', + 'checkingNewFiles': 'Provera novih datoteka za uvoz', + 'startingWifi': 'Pokretanje Wi-Fi-ja...', + 'newFilesDetected': 'Nove datoteke otkrivene, priprema za uvoz', + 'noNewFiles': 'Nema novih datoteka za uvoz', + 'connectingWifi': 'Povezivanje sa Wi-Fi-jem...', + 'wifiConnected': 'Wi-Fi uspešno povezan', + 'downloadingFiles': 'Preuzimanje datoteka...', + 'downloadingFileProgress': + 'Ukupno {total} datoteka, preuzimanje datoteke {current}', + 'downloadComplete': 'Preuzimanje završeno', 'downloadCompleteInfo': - 'Download complete, {count} files in total, returning automatically in 2 seconds', + 'Preuzimanje završeno, ukupno {count} datoteka, automatsko vraćanje 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': 'Audio/video snimanje', + 'callRecording': 'Snimanje poziva', + 'importAudio': 'Uvoz zvuka', 'meetingRecordExitTitle': 'Izađi iz snimanja', // 退出录音 'meetingRecordExitMessage': 'Izaberite radnju nakon izlaska', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Završi i sačuvaj', // 结束录音并保存 @@ -462,214 +546,228 @@ const Map srRS = { 'Da bismo tokom snimanja prikazali plutajuću traku snimanja (tajmer/pauza/nastavi), potrebna nam je dozvola za prekrivanje.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Nije moguće automatski otvoriti sistemska podešavanja. Otvorite Podešavanja i ručno omogućite dozvolu za prekrivanje.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkripcija...', + 'summarizing': 'Sažimanje...', + 'analyzing': 'Analiziranje...', + 'summaryComplete': 'Sažetak završen', + 'generate': 'Generiši', + 'overview': 'Pregled', + 'transcription': 'Transkripcija', + 'summary': 'Sažetak', + 'mindMap': 'Mentalna mapa', + 'editSpeaker': 'Uredi', + 'nameSpeaker': 'Imenuj govornika', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Ponovo sažmi', + 'dateAndTime': 'Datum i vreme', + 'location': 'Lokacija', + 'attendees': 'Učesnici', + 'inputLocation': 'Unesite lokaciju', + 'inputAttendees': 'Unesite učesnike', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Izaberite šablon sažetka', + 'useThisTemplate': 'Koristi ovaj šablon', + 'lastUsed': 'Poslednje korišćeno', + 'create': 'Kreiraj', + 'templateDetails': 'Detalji šablona', + 'tag': 'Oznaka', + 'description': 'Opis', + 'template': 'Šablon', + 'deleteTemplate': 'Obriši šablon', + 'deleteTemplateConfirm': + 'Da li ste sigurni da želite da obrišete ovaj šablon?', + 'editTemplate': 'Uredi šablon', + 'createTemplate': 'Kreiraj šablon', + 'name': 'Ime', + 'templateContentHint': + 'Molimo unesite sadržaj šablona! Savet: Kliknite na AI dugme iznad da brzo generišete sadržaj šablona na osnovu imena i opisa koje ste uneli', + 'inputNameHint': 'Molimo unesite ime', + 'inputDescHint': 'Molimo unesite opis', + 'custom': 'Prilagođeno', + 'pleaseEnter': 'Молимо унесите', + 'viewAll': 'Prikaži sve', + 'recordingLanguage': 'Jezik snimanja', + 'chineseSimplified': 'Kineski mandarinski (pojednostavljeni)', + 'meetingGenerateNow': 'Generiši odmah', + 'keyEventsAnalyzed': 'Analizirano {count} ključnih događaja.', + 'aiAnalysisDesc': + 'AI analiza prepoznaje ključne događaje u snimcima, omogućavajući vam da izaberete važne događaje za AI generisanje.', + + // Meeting模块 - 文件操作 + 'importing': 'Uvoz...', + 'batchImporting': 'Grupni uvoz...', + 'importingLocalRecordings': 'Uvoz lokalnih snimaka...', + 'importFailed': 'Uvoz datoteke nije uspeo: {filePath}, greška: {error}', + 'importSuccess': 'Uspešno uvezeno {count} lokalnih snimaka', + 'importError': 'Uvoz nije uspeo: {error}', + 'pleaseSelectAudioFile': 'Molimo izaberite audio datoteku', + 'shareAudio': 'Podeli audio sastanka', + 'shareComplete': 'Deljenje završeno!', + 'shareFailed': 'Deljenje nije uspelo: {error}', + 'fileProcessingFailed': + 'Obrada datoteke nije uspela: {filePath}, greška: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Sačuvaj mentalnu mapu', + 'shareMindMap': 'Podeli mentalnu mapu', + 'shareSuccess': 'Deljenje uspešno', + + // Meeting模块 - AI问答 + 'askAI': 'Pitajte AI ...', + 'askAIPrompt': 'Kako vam mogu pomoći danas?', + 'continueAsk': 'Nastavi sa pitanjima', + 'todoList': 'Lista obaveza', + 'extractConclusion': 'Izdvoji zaključak', + 'generateKeyIndicators': 'Generiši ključne pokazatelje', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Podeli link', + 'copyTranscript': 'Kopiraj transkript', + 'copySummary': 'Kopiraj sažetak', + 'exportAudio': 'Izvezi zvuk', + 'exportTranscript': 'Izvezi transkript', + 'shareMeetingAudio': 'Podeli audio sastanka', + 'exportSummary': 'Izvezi sažetak', + 'exportAs': 'Izvezi kao', + 'exportingPDF': 'Izvoz PDF-a...', + 'export': 'Izvezi', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Primeni na sve pasuse ovog govornika', + 'summaryWillBeUpdatedAutomatically': + 'Sažetak će se automatski ažurirati prema šablonu', + 'nameCurrentSpeaker': 'Imenuj trenutnog govornika', + 'recentlyUsedNames': 'Nedavno korišćena imena', + 'applyToCurrentParagraph': 'Primeni na trenutni pasus', + 'totalTime': 'Ukupno vreme', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Govornici u sažetku će biti automatski ažurirani', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Sinhronizuj u oblak', + 'syncToCloudTip': + 'Automatski sinhronizujte snimke u oblak, možete ih reprodukovati, upravljati njima i deliti ih putem bilo koje VOITRANS aplikacije ili VOITRANS Web-a (web.voitrans.com).', + 'syncToVoitransApp': 'Sinhronizuj VOITRANS APP', + 'transcriptionRecord': 'Zapis transkripcije', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': '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', - - // 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', + 'transcriptionRecords': 'Zapisi transkripcije', + 'templateCommunity': 'Zajednica šablona', + 'comingSoon': 'Uskoro', + 'integration': 'Integracija', + 'voitransPrivateCloud': 'VOITRANS PRIVATNI OBLAK', + 'enabled': 'Omogućeno', + 'disabled': 'Onemogućeno', + 'myVoitransDevice': 'Moj VOITRANS uređaj', + 'helpAndFeedback': 'Pomoć i povratne informacije', + 'aboutVoitrans': 'O VOITRANS-u', + 'meetingDays': 'Dana', + 'meetingHours': 'Sati', + 'voitransAiMember': 'Voitrans AI član', + 'unlockStarterMember': 'Otključajte početno članstvo', + 'bindDeviceToActivate': + 'Povežite Voitrans uređaj da aktivirate početno članstvo', + 'unlockNow': 'Otključaj sada', + + // Meeting模块 - 会员与升级 + 'comparison': 'Poređenje', + 'detailedInfo': 'Detaljne informacije', + 'monthlyTranscriptionTime': 'Mesečno vreme transkripcije', + 'unlimited': 'Neograničeno', + 'professionalTemplates': 'Profesionalni šabloni', + 'limited': 'Ograničeno', + 'fullTemplates': 'Svi šabloni', + 'professionalTerms': 'Profesionalni termini', + 'customTemplates': 'Prilagođeni šabloni', + 'visualMindMap': 'Vizuelna mentalna mapa', + 'speakerIdentification': 'Identifikacija govornika', + 'aiVoiceEnhancement': 'AI poboljšanje glasa', + 'audioImport': 'Uvoz zvuka', + 'multipleExportFormats': 'Više formata izvoza', + 'professionalSummaryTemplates': 'Profesionalni šabloni za sažetke', 'professionalTemplateDesc': - 'Professional template design to improve your work efficiency. Customized according to industry needs.', + 'Profesionalni dizajn šablona za poboljšanje efikasnosti vašeg rada. Prilagođeni prema potrebama industrije.', 'customTemplateDesc': - 'You can customize summary prompts according to your needs and use them to generate the required summaries.', + 'Možete prilagoditi uputstva za sažetak prema vašim potrebama i koristiti ih za generisanje potrebnih 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 izdvajanje dubljih informacija iz snimaka, generisanje tabela podataka, ključnih zaključaka diskusije, liste obaveza, izveštaja e-pošte i drugog formatiranog sadržaja jednim klikom.', 'visualMindMapDesc': - 'Beyond summaries - organize and visualize key points with mind maps for more effective understanding of the full text.', + 'Izvan sažetaka — organizujte i vizualizujte ključne tačke pomoću mentalnih mapa za efikasnije razumevanje celog teksta.', 'templateCommunityDesc': - 'Discover, share, and get inspiration from the template library created by users.', + 'Otkrijte, podelite i dobijte inspiraciju iz biblioteke šablona kreiranih od strane korisnika.', '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 će podržavati identifikaciju govornika, intuitivnije rekonstruisanje sadržaja sastanka ili telefonskog poziva. Istovremeno, sažetak će biti precizniji.', '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 snimci i transkripcije biće bezbedno pohranjeni na namenskim serverima u oblaku, sa potpunom enkripcijom tokom slanja i preuzimanja kako bi se osigurala privatnost i bezbednost.', '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 podešavanja za smanjenje buke, inteligentno eliminiše pozadinsku buku, poboljšava jasnoću glasa i kvalitet reprodukcije zvuka.', 'audioImportDesc': - 'Easily import audio files from local or third-party applications, such as voice memos, Google Drive, etc.', + 'Lako uvezite audio datoteke iz lokalne memorije ili aplikacija trećih strana, kao što su glasovne beleške, Google Drive, itd.', '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', + 'Izvezite audio snimke, tekst transkripcije i sažetke u raznim formatima (TXT, PDF, JPEG) kako biste zadovoljili vaše potrebe.', + 'upgradeMembership': 'Nadogradite svoje članstvo', + 'yearlySubscription': 'Godišnja pretplata', + 'monthlySubscription': 'Mesečna pretplata', + 'proMonthly': 'Pro ¥60/mesec', 'proMonthlyDesc': - '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', - 'unlimitedMonthly': 'Unlimited ¥120/month', + '7-dnevni besplatni probni period, zatim ¥800/godišnje. Otkažite bilo kada pre isteka probnog perioda.', + 'sevenDayTrial': '7-dnevni besplatni probni period', + 'unlimitedMonthly': 'Neograničeno ¥120/mesec', '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-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.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', - 'unlimitedMonthlyPrice': '¥198/month', + 'proMonthlyPrice': '¥120/mesec', + 'subscribe': 'Pretplati se', + 'unlimitedPrice': 'Neograničeno ¥198', + 'unlimitedMonthlyPrice': '¥198/mesec', '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: ', + '*Nakon nadogradnje pretplate, preostali dani originalne pretplate biće automatski izračunati i vraćeni na vaš račun za plaćanje', + 'buyMoreTranscriptionTime': 'Kupite više vremena za transkripciju', + 'sixThousandMinutes': '6.000 minuta', + 'threeThousandMinutes': '3.000 minuta', + 'sixHundredMinutes': '600 minuta', + 'oneHundredTwentyMinutes': '120 minuta', + 'validityPeriod': '*Period važenja: ', 'validityNote': - 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': - 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': - 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Primeni na sve pasuse ovog govornika', - 'summaryWillBeUpdatedAutomatically': - 'Sažetak će se automatski ažurirati prema šablonu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': - 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'Aktivira se odmah nakon kupovine, važi 2 godine nakon aktivacije.', + 'purchase': 'Kupi', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Jezik snimanja', + 'cantonese': 'Kantonski', + 'sichuan': 'Sečuanski dijalekt', + 'shanghai': 'Šangajski dijalekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Nepoznat jezik', + 'analysisFailed': 'Analiza nije uspela, pokušajte ponovo kasnije', + 'transcriptionFailed': 'Transkripcija nije uspela, pokušajte ponovo kasnije', + 'summaryFailed': 'Sažetak nije uspeo, pokušajte ponovo kasnije', + 'summaryFailedShort': 'Sažetak nije uspeo', + 'transcriptionFailedShort': 'Transkripcija nije uspela', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Audio plejer nije spreman, molimo sačekajte', + 'playFailed': 'Reprodukcija nije uspela', + 'audioFileNotFound': 'Audio datoteka nije pronađena', + 'fetchingAudio': 'Preuzimanje audio zapisa iz oblaka...', + 'playerLoadFailed': 'Audio plejer nije uspeo da se učita', // 设置页 "systemSettings": "Sistemska podešavanja", - "vipRecharge": "Nákup premium člana", + "vipRecharge": "Kupovina premium članstva", "aiRecharge": "Premium član", - "translationRecharge": "Nákup prevajanja", - "meetingAssistantRecharge": "Nákup asistenta sastanka", - "cloudSync": "Nákup sinkronizacije u oblaku", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", + "translationRecharge": "Kupovina prevođenja", + "meetingAssistantRecharge": "Kupovina asistenta sastanka", + "cloudSync": "Kupovina sinhronizacije u oblaku", + "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 dodeljena. Dodirnite OK da zatvorite.", "joinDevice": "Povezan uređaj:", "accountId": "ID naloga:", "systemSetting": "Sistemsko podešavanje", @@ -710,42 +808,31 @@ const Map srRS = { "bleHeadsetFirmwareUpgrade": "Nadogradnja verzije firmvera BLE slušalica", "deviceManagement": "Upravljanje uređajima", "manageConnectedDevices": "Upravljanje povezanim Bluetooth uređajima", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Trenutno imate najnoviju verziju {version}', 'checkUpdateFailed': 'Neuspešna provera ažuriranja', 'networkErrorRetry': 'Mrežna greška, pokušajte ponovo kasnije', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Glasovno ćaskanje u realnom vremenu", "realtimeVoiceChatInfo": "Iskusite funkciju inteligentne glasovne interakcije (pregled funkcije)", "loading": "Učitavanje...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Nepoznat uređaj", + "deviceTypeClassicBluetoothHeadset": "Klasične Bluetooth slušalice", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth slušalice", + "deviceTypeSmartVoiceRecorder": "Pametni diktafon", + "deviceTypeSmartEye": "Pametne naočare", "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", - "confirmUnbindMessage": "Are you sure you want to unbind device \\", - "confirmUnbindAction": "Confirm Unbind", - -//Agent 模块 - // agent View + "noDevicesBound": "Još nema povezanih uređaja", + "pleaseBindDeviceFirst": "Prvo povežite uređaj za upravljanje", + "noMacAddress": "Nema MAC adrese", + "licenseCode": "Licencni kod", + "confirmUnbind": "Potvrdite prekid veze", + "confirmUnbindMessage": + "Da li ste sigurni da želite da prekinete vezu sa uređajem \\", + "confirmUnbindAction": "Potvrdi prekid veze", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Obriši istoriju ćaskanja", "online": "Na mreži", @@ -773,29 +860,31 @@ const Map srRS = { "loadMoreMessages": "Učitaj još poruka...", "loadFailedClickRetry": "Neuspešno učitavanje, kliknite da pokušate ponovo", "swipeUpForMore": "Prevucite nagore za više", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "callingTool": "Pomažem vam, molimo sačekajte!", // 正在帮您,请稍等! + "voice_interrupt": "Prekid", // 语音打断 + 'voice_interrupt_tip': + 'Kada je uključeno: AI neće biti prekinut vašim glasom dok govori i može da obradi samo jedan krug razgovora. Da biste započeli novi krug, samo izgovorite reč za buđenje.', + + // Agent模块 - 预设提示词 + "presetMusic": "Pusti muziku", // 来点音乐 + "presetNavigation": "Navigacija do", // 导航 + "presetWeather": "Današnje vreme", // 今日天气 + "presetNews": "Današnje vesti", // 今日新闻 + "presetFood": "Hrana u blizini", // 美食 + "playSomeMusic": "Pusti popularnu muziku", // 播放一些流行音乐 + "navigationTo": "Molim vas navigirajte me do", // 导航到 + "todayWeather": "Kakvo je vreme danas?", // 今日天气 + "todayNews": "Koje su vesti danas?", // 今日新闻 + "nearbyFood": "Koja ukusna hrana je u blizini?", // 美食 + + // Agent模块 - 欢迎消息与权限 + 'welcomeMessage': 'Zdravo! Ja sam **Lily**, mogu vam pomoći sa:\n\n' + '• Odgovaranje na pitanja i pružanje informacija\n\n' + '• Glasovno prevođenje u realnom vremenu\n\n' + '• Preporuke muzike i podkastova\n\n' + '• Glasovni podsetnici i beleške\n\n' + '• Kontrola funkcija slušalica\n\n' + 'Kako vam mogu pomoći?', 'microphonePermission': 'Mikrofon', 'voiceRecognitionPermissionText': 'Funkcija prepoznavanja govora zahteva pristup mikrofonu.', @@ -808,18 +897,17 @@ const Map srRS = { 'startVoiceInput': 'Započni unos glasom', 'startPhoneCallMode': 'Započni režim poziva, započni unos glasom', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Unesite svoju poruku ovde...', // 全屏编辑器输入提示 'characterCount': '{count} karaktera', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiraj', 'copySuccess': 'Uspešno kopirano', 'report': 'Prijavi', 'submitSuccess': 'Uspešno poslato', 'submitFailed': 'Neuspešno slanje', 'reportSubmitted': 'Prijava je poslata, obradićemo je što je pre moguće', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Štetno/Opasno', 'pornographicVulgar': 'Pornografski/Prostački', 'misleadingAttack': 'Obmanjujuće/Napad', @@ -829,17 +917,21 @@ const Map srRS = { 'other': 'Ostalo', 'reportDescriptionHint': 'Želimo da znamo razlog vaše prijave, možete opisati problem sa kojim ste se suočili.', - //'submit': '提交', - - //Message_bubble 'generatedByAi': 'Generisano od strane AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + '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 pesama:', 'playList': 'Lista pesama', 'moreMusic': 'Još muzike', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'sati', // 小时单位 @@ -854,7 +946,30 @@ const Map srRS = { "bicycling": "Biciklizam", "tsransit": "Javni prevoz", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Izaberite navigacionu aplikaciju', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigiraj pomoću Amap-a', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigiraj pomoću Baidu Maps-a', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigiraj pomoću Google Maps-a', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigiraj pomoću Apple Maps-a', + 'builtInNavigation': 'Ugrađena navigacija', + 'useBuiltInNavigation': 'Navigiraj pomoću ugrađene mape', + 'navigationStartFailed': 'Pokretanje navigacije nije uspelo', + 'cannotPlayMusicListRetryLater': + 'Nije moguće reprodukovati listu pesama, pokušajte ponovo kasnije', + 'cannotPlaySong': 'Nije moguće reprodukovati pesmu', + 'openMapError': 'Greška pri otvaranju mape', + 'pleaseInstallAmapApp': 'Molimo prvo instalirajte Amap aplikaciju', + 'pleaseInstallBaiduMapApp': 'Molimo prvo instalirajte Baidu Maps aplikaciju', + 'appleMapStartFailed': 'Apple Maps nije uspeo da se pokrene', + 'appleMapUnavailable': 'Apple Maps nije dostupan', + 'openAppleMapError': 'Greška pri otvaranju Apple Maps-a', + + // Agent模块 - 天气卡片 'weatherQuery': 'Upit o vremenskim uslovima:', 'highest': 'Najviša', 'lowest': 'Najniža', @@ -883,18 +998,8 @@ const Map srRS = { "friday": "Pet", "saturday": "Sub", "sunday": "Ned", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - - // 天气描述 + + // Agent模块 - 天气描述 "sunny": "Sunčano", "partlyCloudy": "Delimično oblačno", "partlySunny": "Pretežno sunčano", @@ -915,7 +1020,140 @@ const Map srRS = { "haze": "Sumaglica", "strongWind": "Jak vetar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Prevod slike", + "textTranslation": "Prevod teksta", + + // 翻译模块 - 主页 + "translationHistory": "Istorija prevođenja", + "enableRecording": "Omogući snimanje", + "viewAudioFiles": "Prikaži audio datoteke", + "headsetUser": "Korisnik slušalica", + "phoneUser": "Korisnik telefona", + "selectSourceLanguage": "Izaberi izvorni jezik", + "selectTargetLanguage": "Izaberi ciljni jezik", + "me": "Ja", + "counterPart": "Sagovornik", + "bluetoothCallStateError": + "Uverite se da su Bluetooth slušalice povezane sa telefonom i u stanju poziva", + "autoDetect": "Automatska detekcija", // 自动检测 + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Detekcija jezika nije uspela", + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Onemogući plutajući prozor', + 'enableFloatingWindow': 'Omogući plutajući prozor', + 'permissionTip': 'Savet o dozvoli', + 'micPermissionRequiredForRecording': + 'Dozvola za mikrofon je potrebna za snimanje', + 'deleteTranslationRecordError': 'Greška pri brisanju zapisa prevoda: @error', + "translationFailed": "Prevod nije uspeo", + "translating": "Prevođenje", + "translate": "Prevedi", + "pleaseInputText": "Molimo unesite tekst", + "inputTextToTranslate": "Unesite tekst za prevod", + "textTooLong": "Tekst je predugačak, maksimalno 5000 karaktera", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Nema istorije", + "historyRecords": "Istorijski zapisi", + "clearResults": "Obriši rezultate", + "clearHistory": "Obriši istoriju", + "clearHistoryConfirm": + "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", + "unknownLanguage": "Nepoznat jezik", + "deleteSessionRecord": "Obriši zapis sesije", + "deleteSessionConfirm": + "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Izaberite izvor slike", + "imagePreview": "Pregled slike", + "translationResult": "Rezultat prevoda", + "recognitionResult": "Rezultat prepoznavanja", + "translatedImagePreview": "Pregled prevedene slike", + "translatedImageLoadFailed": "Učitavanje prevedene slike nije uspelo", + "pleaseSelectImage": "Molimo izaberite sliku", + "imageLoadFailed": "Učitavanje slike nije uspelo", + "imageQuality": "Kvalitet slike", + "maxSize": "Maksimalna veličina", + "close": "Zatvori", + "setImageQuality": "Podesi kvalitet slike", + "currentQuality": "Trenutni kvalitet: @value%", + "setMaxSize": "Podesi maksimalnu veličinu", + "currentMaxSize": "Trenutno: @pxpx", + "waitingForAction": "Čekanje na radnju", + "pleaseSelectImageToStart": "Molimo izaberite sliku za početak", + "chooseImage": "Izaberite sliku", + "openingCamera": "Otvaranje kamere...", + "openingPhotoAlbum": "Otvaranje albuma...", + "cancelled": "Otkazano", + "userCancelledSelection": "Korisnik je otkazao izbor", + "translatingImage": "Prevođenje slike", + "callingImageTranslateService": "Pozivanje servisa za prevod slike...", + "savingRecord": "Čuvanje zapisa", + "savingTranslationResult": "Čuvanje rezultata prevoda...", + "translationCompleted": "Prevod završen", + "allStepsCompleted": "Svi koraci su završeni", + "processingFailed": "Obrada nije uspela", + "imageProcessingOrTranslationFailed": + "Obrada slike ili prevod nije uspeo. Pokušajte ponovo.\nGreška: {error}", + "imageTooLarge": "Veličina slike premašuje ograničenje od 4MB", + "imageTooLargeHint": + "Veličina slike premašuje 4MB. Smanjite kvalitet ili dimenzije i pokušajte ponovo", + "emptyTranslationResult": "API za prevod slike vratio je prazan rezultat", + "imageTranslationFailedTryLater": + "Prevod slike nije uspeo. Problem sa mrežom ili ograničenje brzine. Pokušajte kasnije", + "imageTranslationApiException": + "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", + "translationDetails": "Detalji prevoda", + "originalImage": "Originalna slika", + "sourceLanguage": "Izvorni jezik", + "targetLanguage": "Ciljni jezik", + "translationTime": "Vreme prevoda", + "shareInDevelopment": "Funkcija deljenja je u razvoju", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Prevedi audio datoteke", + "noAudioFiles": "Nema audio datoteka", + "calculating": "Izračunavanje...", + "playing": "Reprodukcija...", + "paused": "Pauzirano", + "clickToPlay": "Kliknite da biste reprodukovali", + "rename": "Preimenuj", + "smartTranscription": "Pametna transkripcija", + "renameAudioFile": "Preimenuj audio datoteku", + "enterNewFileName": "Unesite novi naziv datoteke", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalni zapis", + "recordSummary": "Sažetak zapisa", + "clickToGenerateSummary": + "Kliknite na dugme ispod da biste generisali sažetak sesije", + "summaryContent": "Sadržaj sažetka", + "copied": "Kopirano", + "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", + "extractSummary": "Izdvoji sažetak", + "summaryGenerated": "Sažetak je generisan", + "generating": "Generisanje...", + "regenerate": "Ponovo generiši", + "summaryTimeoutMessage": + "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", + "deleteTranslationRecord": "Obriši zapis prevođenja", + "deleteTranslationConfirm": + "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", + "originalText": "Originalni tekst", + "translatedText": "Prevedeni tekst", + "sessionSummary": "Sažetak sesije", + "cannotShare": "Nije moguće deliti", + "generateSummaryFirst": "Prvo generišite sažetak", + "translationSessionRecord": "Zapis sesije prevođenja", + + // 个人资料模块 "editProfile": "Uredi lične podatke", "avatar": "Avatar", "nickname": "Nadimak", @@ -930,10 +1168,8 @@ const Map srRS = { 'deleteAccount': 'Obriši nalog', '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 错误信息 + 'clean': 'Obriši keš', + 'cleanTips': 'Da li ste sigurni da želite da obrišete lični keš?', 'networkConnectionFailed': 'Neuspešna mrežna veza, proverite podešavanja mreže i pokušajte ponovo', 'serverTemporarilyUnavailable': @@ -950,10 +1186,6 @@ const Map srRS = { 'Neuspešna mrežna veza, proverite podešavanja mreže', 'serverInternalErrorRetryLater': 'Interna greška na serveru, pokušajte ponovo kasnije', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Neuspešna kompresija slike', 'avatarUpdateFailed': 'Neuspešno ažuriranje avatara', 'usernameCannotBeEmpty': 'Korisničko ime ne može biti prazno', @@ -964,8 +1196,6 @@ const Map srRS = { 'logoutFailedRetry': 'Neuspešno odjavljivanje, pokušajte ponovo', 'accountPermanentlyDeleted': 'Nalog je trajno obrisan', 'deleteAccountFailedRetry': 'Neuspešno brisanje naloga, pokušajte ponovo', - - // 账号服务相关 'clearUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 清理用户数据失败 'deleteUserDataFailed': 'Neuspešno brisanje korisničkih podataka', // 删除用户数据失败 'thirdPartyLogoutSuccess': @@ -982,21 +1212,25 @@ const Map srRS = { 'accountServiceInitialized': 'AccountService je inicijalizovan', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Skladište', + 'meetingStoragePermissionExplanation': + 'Potreban nam je pristup dozvoli za skladište kako biste mogli da izaberete i otpremite audio datoteke.', + 'meetingStoragePermissionPermanentDenial': + 'Otkriveno je da ste trajno odbili dozvolu za skladište. Ako želite da nastavite da koristite ovu funkciju, idite u podešavanja aplikacije i ručno omogućite dozvolu za skladište.', 'getPermissionStatusFailed': 'Neuspešno dobijanje statusa dozvole', 'communicationPermissions': 'Dozvole za komunikaciju', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Bluetooth dozvole', + 'notificationPermissions': 'Dozvole za obaveštenja', + 'storagePermissions': 'Dozvole za skladište', + 'microphonePermissions': 'Dozvole za mikrofon', + 'alarmPermissions': 'Dozvole za alarm', 'calendarPermissions': 'Dozvole za kalendar', 'locationPermissions': 'Dozvole za lokaciju', 'phone': 'Telefon', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kontakti', + 'notification': 'Obaveštenje', 'alarm': 'Alarm', 'calendarWrite': 'Pisanje u kalendar', 'calendarFullAccess': 'Potpuni pristup kalendaru', @@ -1004,7 +1238,7 @@ const Map srRS = { '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 podešavanje tačnih alarma kako bi se podsetnici aktivirali na vreme', 'calendarWritePermissionDesc': 'Koristi se za kreiranje događaja i podsetnika u kalendaru', 'calendarFullAccessPermissionDesc': @@ -1023,80 +1257,92 @@ const Map srRS = { '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', + 'Ova dozvola je potrebna za podešavanje tačnih alarma i obezbeđivanje aktiviranja podsetnika na vreme', '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', + 'contactsPermissionDesc': 'Koristi se za pristup kontakt informacijama', 'contactsPermissionDetailDesc': - 'Phone call and SMS functionality requires contacts permission to select contacts', + 'Funkcija pozivanja i SMS-a zahteva dozvolu za kontakte radi izbora kontakata', '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 sa Bluetooth slušalicama i drugim uređajima zahteva dozvolu za Bluetooth', + 'bluetoothScanPermissionDesc': + 'Koristi se za skeniranje Bluetooth uređaja u blizini', 'bluetoothScanPermissionDetailDesc': - 'Scanning for nearby Bluetooth devices requires Bluetooth scan permission', - 'bluetoothConnectPermissionDesc': 'Used for connecting to Bluetooth devices', + 'Skeniranje Bluetooth uređaja u blizini zahteva dozvolu za Bluetooth skeniranje', + 'bluetoothConnectPermissionDesc': + 'Koristi se za povezivanje sa Bluetooth uređajima', 'bluetoothConnectPermissionDetailDesc': - 'Connecting to Bluetooth devices requires Bluetooth connect permission', - 'notificationPermissionDesc': 'Used for sending notification messages', + 'Povezivanje sa Bluetooth uređajima zahteva dozvolu za Bluetooth povezivanje', + 'notificationPermissionDesc': 'Koristi se za slanje obaveštenja', 'notificationPermissionDetailDesc': - 'App needs notification permission to send you important alerts and messages', + 'Aplikacija zahteva dozvolu za obaveštenja kako bi vam slala važna upozorenja i poruke', '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', + 'bluetoothScan': 'Bluetooth skeniranje', + 'bluetoothConnect': 'Bluetooth povezivanje', 'bluetoothScanExplanation': - 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', + 'Aplikaciji je potrebna dozvola za Bluetooth skeniranje kako bi skenirala Bluetooth uređaje u blizini.', 'bluetoothConnectExplanation': - 'The app needs Bluetooth connect permission to connect to Bluetooth devices.', + 'Aplikaciji je potrebna dozvola za Bluetooth povezivanje kako bi se povezala sa Bluetooth uređajima.', 'locationForBluetoothExplanation': - 'The app needs location permission to scan Bluetooth devices.', + 'Aplikaciji je potrebna dozvola za lokaciju kako bi skenirala Bluetooth uređaje.', 'bluetoothScanPermanentDenial': - 'Bluetooth scan permission has been permanently denied, please go to settings to enable it manually.', + 'Dozvola za Bluetooth skeniranje je trajno odbijena, molimo idite u podešavanja da biste je ručno omogućili.', 'bluetoothConnectPermanentDenial': - 'Bluetooth connect permission has been permanently denied, please go to settings to enable it manually.', + 'Dozvola za Bluetooth povezivanje je trajno odbijena, molimo idite u podešavanja da biste je ručno omogućili.', 'locationPermanentDenial': - 'Location permission has been permanently denied, please go to settings to enable it manually.', - 'notificationPermission': 'Notification', - 'locationPermission': 'Location', + 'Dozvola za lokaciju je trajno odbijena, molimo idite u podešavanja da biste je ručno omogućili.', + 'notificationPermission': 'Obaveštenje', + 'locationPermission': 'Lokacija', 'notificationPermissionExplanation': - 'Notification permission is required to display music playback status.', + 'Dozvola za obaveštenja je potrebna za prikaz statusa reprodukcije muzike.', 'locationPermissionExplanation': - 'Location permission is required to get current location.', + 'Dozvola za lokaciju je potrebna za dobijanje trenutne lokacije.', 'notificationPermissionPermanentDenial': - 'You have permanently denied notification permission, please go to settings to enable it.', + 'Trajno ste odbili dozvolu za obaveštenja, molimo idite u podešavanja da biste je omogućili.', 'locationPermissionPermanentDenial': - 'You have permanently denied location permission, please go to settings to enable it.', -//'microphonePermission': '录音', - 'storagePermission': 'Storage', + 'Trajno ste odbili dozvolu za lokaciju, molimo idite u podešavanja da biste je omogućili.', + 'storagePermission': 'Skladište', 'microphonePermissionExplanation': - 'We need microphone permission to record audio content.', + 'Potrebna nam je dozvola za mikrofon da bismo snimali audio sadržaj.', 'storagePermissionExplanation': - 'We need storage permission so you can select and upload audio files.', + 'Potrebna nam je dozvola za skladište kako biste mogli da izaberete i otpremite audio datoteke.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Otkriveno je da ste trajno odbili dozvolu za mikrofon. Ako želite da nastavite da koristite ovu funkciju, idite u podešavanja aplikacije i ručno omogućite dozvolu za mikrofon.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', + 'Otkriveno je da ste trajno odbili dozvolu za skladište. Ako želite da nastavite da koristite ovu funkciju, idite u podešavanja aplikacije i ručno omogućite dozvolu za skladište.', + 'permissionUtilNeed': 'Potrebna ', + 'permissionUtilPermission': ' dozvola', + 'permissionUtilRestricted': ' Dozvola ograničena', 'permissionUtilRestrictedMessage': - 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', - 'permissionUtilConfirm': 'OK', - - // 版本更新对话框 + 'Ova funkcija nije dostupna ili je ograničena na trenutnom uređaju, molimo proverite podešavanja uređaja ili sistemska ograničenja', + 'permissionUtilConfirm': 'U redu', + + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigacija u toku', + 'native.notification.navigation.keepRunning': + 'Navigacija, držite aplikaciju pokrenutom', + 'native.notification.bleAgent.running': 'Glasovni asistent radi', + 'native.notification.audioRecording.recording': + 'Snimanje zvuka, dodirnite za povratak u aplikaciju', + 'native.notification.music.waiting': 'Čekanje na reprodukciju', + 'native.notification.music.previous': 'Prethodna', + 'native.notification.music.next': 'Sledeća', + 'native.notification.music.play': 'Reprodukuj', + 'native.notification.music.pause': 'Pauza', + 'native.notification.qqMusic.playing': 'Reprodukcija muzike', + + // 版本更新 'newVersionFound': 'Pronađena nova verzija', // 版本更新对话框标题 'remindLater': 'Podseti me kasnije', // 稍后提醒按钮 'updateNow': 'Ažuriraj sada', // 立即更新按钮 @@ -1107,253 +1353,7 @@ const Map srRS = { 'updateErrorRetry': 'Došlo je do greške tokom ažuriranja, pokušajte ponovo kasnije', // 更新错误重试提示 - //国家列表 - "邮箱": "E-pošta", - "中国": "Kina", - "美国": "SAD", - "加拿大": "Kanada", - "俄罗斯": "Rusija", - "英国": "Ujedinjeno Kraljevstvo", - "德国": "Nemačka", - "意大利": "Italija", - "法国": "Francuska", - "西班牙": "Španija", - "南非": "Južna Afrika", - "沙特阿拉伯": "Saudijska Arabija", - "土耳其": "Turska", - "日本": "Japan", - "韩国": "Južna Koreja", - "新加坡": "Singapur", - "马来西亚": "Malezija", - "泰国": "Tajland", - "越南": "Vijetnam", - "印度": "Indija", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipini", - "印度尼西亚": "Indonezija", - "阿联酋": "UAE", - "墨西哥": "Meksiko", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Australija", - "新西兰": "Novi Zeland", - "中国香港": "Hongkong (Kina)", - "中国澳门": "Makao (Kina)", - "中国台湾": "Tajvan (Kina)", - "埃及": "Egipat", - "希腊": "Grčka", - "荷兰": "Holandija", - "比利时": "Belgija", - "匈牙利": "Mađarska", - "罗马尼亚": "Rumunija", - "瑞士": "Švajcarska", - "奥地利": "Austrija", - "丹麦": "Danska", - "瑞典": "Švedska", - "挪威": "Norveška", - "波兰": "Poljska", - "秘鲁": "Peru", - "智利": "Čile", - "哥伦比亚": "Kolumbija", - "委内瑞拉": "Venecuela", - "葡萄牙": "Portugalija", - "卢森堡": "Luksemburg", - "爱尔兰": "Irska", - "冰岛": "Island", - "阿尔巴尼亚": "Albanija", - "马耳他": "Malta", - "塞浦路斯": "Kipar", - "芬兰": "Finska", - "保加利亚": "Bugarska", - "立陶宛": "Litvanija", - "拉脱维亚": "Letonija", - "爱沙尼亚": "Estonija", - "乌克兰": "Ukrajina", - "塞尔维亚": "Srbija", - "克罗地亚": "Hrvatska", - "斯洛文尼亚": "Slovenija", - "捷克": "Češka", - "斯洛伐克": "Slovačka", - "危地马拉": "Gvatemala", - "萨尔瓦多": "Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragva", - "哥斯达黎加": "Kostarika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivija", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paragvaj", - "乌拉圭": "Urugvaj", - "摩洛哥": "Maroko", - "阿尔及利亚": "Alžir", - "突尼斯": "Tunis", - "尼日利亚": "Nigerija", - "加纳": "Gana", - "埃塞俄比亚": "Etiopija", - "肯尼亚": "Kenija", - "坦桑尼亚": "Tanzanija", - "乌干达": "Uganda", - "孟加拉国": "Bangladeš", - "以色列": "Izrael", - "黎巴嫩": "Liban", - "约旦": "Jordan", - "伊拉克": "Irak", - "科威特": "Kuvajt", - "巴林": "Bahrein", - "卡塔尔": "Katar", - "阿曼": "Oman", - "阿富汗": "Avganistan", - "斯里兰卡": "Šri Lanka", - "缅甸": "Mijanmar", - "尼泊尔": "Nepal", - "蒙古": "Mongolija", - "柬埔寨": "Kambodža", - "老挝": "Laos", - "文莱": "Brunej", - "东帝汶": "Istočni Timor", - "斐济": "Fidži", - "所罗门群岛": "Solomonska Ostrva", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Istorija prevođenja", - "enableRecording": "Omogući snimanje", - "viewAudioFiles": "Prikaži audio datoteke", - "headsetUser": "Korisnik slušalica", - "phoneUser": "Korisnik telefona", - "selectSourceLanguage": "Izaberi izvorni jezik", - "selectTargetLanguage": "Izaberi ciljni jezik", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": - "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Nema istorije", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Obriši istoriju", - "clearHistoryConfirm": - "Da li ste sigurni da želite da obrišete celu istoriju prevođenja? Ova radnja se ne može opozvati.", - "unknownLanguage": "Nepoznat jezik", - "deleteSessionRecord": "Obriši zapis sesije", - "deleteSessionConfirm": - "Da li ste sigurni da želite da obrišete sve zapise prevođenja za ovu sesiju? Ova radnja se ne može opozvati.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": - "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": - "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": - "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": - "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": - "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Prevedi audio datoteke", - "noAudioFiles": "Nema audio datoteka", - "calculating": "Izračunavanje...", - "playing": "Reprodukcija...", - "paused": "Pauzirano", - "clickToPlay": "Kliknite da biste reprodukovali", - "rename": "Preimenuj", - "smartTranscription": "Pametna transkripcija", - "renameAudioFile": "Preimenuj audio datoteku", - "enterNewFileName": "Unesite novi naziv datoteke", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalni zapis", - "recordSummary": "Sažetak zapisa", - "clickToGenerateSummary": - "Kliknite na dugme ispod da biste generisali sažetak sesije", - "summaryContent": "Sadržaj sažetka", - "copied": "Kopirano", - "summaryCopiledToClipboard": "Sažetak je kopiran u međuspremnik", - "extractSummary": "Izdvoji sažetak", - "summaryGenerated": "Sažetak je generisan", - "generating": "Generisanje...", - "regenerate": "Ponovo generiši", - "summaryTimeoutMessage": - "Isteklo je vreme za generisanje sažetka, možda zbog problema sa mrežom ili zauzetosti servera.", - "deleteTranslationRecord": "Obriši zapis prevođenja", - "deleteTranslationConfirm": - "Da li ste sigurni da želite da obrišete ovaj zapis prevođenja? Ova radnja se ne može opozvati.", - "originalText": "Originalni tekst", - "translatedText": "Prevedeni tekst", - "sessionSummary": "Sažetak sesije", - "cannotShare": "Nije moguće deliti", - "generateSummaryFirst": "Prvo generišite sažetak", - "translationSessionRecord": "Zapis sesije prevođenja", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Uparivanje uređaja", "connectYourDeepSoundHeadset": "Povežite svoje Voitrans slušalice", "bind": "Poveži", @@ -1362,14 +1362,11 @@ const Map srRS = { "autoInputCode": "Automatski unos koda", "skipBinding": "Preskoči povezivanje", "rescan": "Ponovo skeniraj", - "verifyingDevice": "Verifikacija uređaja...", "confirmBinding": "Potvrdi povezivanje", "associatingDevice": "Povezivanje uređaja...", "goToBluetoothSettings": "Idite na Bluetooth podešavanja", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Spremno za uparivanje", "preparingPairingEnvironment": "Priprema okruženja za uparivanje...", "connectDeepSoundViaSystemBluetooth": @@ -1379,8 +1376,6 @@ const Map srRS = { "waitingCompletePairing": "Molimo sačekajte, uparivanje se završava...", "pairingSuccessRedirecting": "Uparivanje uspešno! Preusmeravanje na početnu stranicu...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "Uverite se da ste povezani sa Voitrans uređajem", "deviceAlreadyBoundToOtherAccount": @@ -1392,19 +1387,12 @@ const Map srRS = { "authorizationFailedCheckCode": "Neuspešna autorizacija, proverite da li je autorizacioni kod tačan", "pairingFailedRetry": "Neuspešno uparivanje, pokušajte ponovo", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Omogućite Bluetooth', 'deviceDisconnected': 'Uređaj je isključen', 'readyToStartPairing': 'Spremno za početak uparivanja', 'checkingEnvironment': 'Provera okruženja...', 'ensureHeadsetOnAndPairingMode': 'Uverite se da su slušalice uključene i u režimu uparivanja', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': 'Uspostavljanje bezbedne veze...', 'needManualBindingAuthCode': 'Potreban je kod za autorizaciju ručnog povezivanja...', @@ -1426,21 +1414,31 @@ const Map srRS = { 'bleConnectionFailed': 'Neuspešna BLE veza', 'deviceAuthorizationFailedCheckCode': 'Neuspešna autorizacija uređaja, proverite autorizacioni kod', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: + 'bluetoothGuideTitle': + 'Potrebno je ručno uključivanje Bluetooth-a', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Molimo pratite sledeće korake:', // 请按照以下步骤操作: 'bluetoothGuideStep1': - 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'Uključite Bluetooth: Podešavanja → Bluetooth → Uključi', // 开启蓝牙:设置 → 蓝牙 → 开启 'bluetoothGuideStep2': - 'Connect Device: Find your device in "My Devices" and tap to connect', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'Povežite uređaj: Pronađite svoj uređaj u „Moji uređaji" i dodirnite da biste se povezali', // 连接设备:在"我的设备"中找到您的设备并点击连接 'bluetoothGuideStep3': - 'Return to app to continue pairing process', // 返回应用继续配对流程 + 'Vratite se u aplikaciju da nastavite proces uparivanja', // 返回应用继续配对流程 'bluetoothGuideTip': - 'Tip: You can also long press the Bluetooth icon in Control Center to quickly access Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 - - //用户反馈页 + 'Savet: Takođe možete dugo pritisnuti ikonu Bluetooth-a u Kontrolnom centru za brz pristup Bluetooth podešavanjima', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Razumem', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Nagrada dobrodošlice", + "firstBindRewardDesc": "Dobili ste nagrade za povezivanje.", + "vipLevelLabel": "VIP nivo:", + "expiryLabel": "Istek:", + "notActivated": "Nije aktivirano", + "aiChatCreditsLabel": "AI ćaskanje krediti:", + "translationCreditsLabel": "Krediti za prevođenje:", + "meetingCreditsLabel": "Krediti za sastanke:", + "ok": "U redu", + + // 用户反馈模块 "feedback": "Povratne informacije korisnika", 'feedbackInfo': 'Dajte povratne informacije ili predloge', 'feedbackDescription': @@ -1469,13 +1467,14 @@ const Map srRS = { "connectionFailed": "Neuspešno povezivanje", "retryConnection": "Pokušaj ponovo povezivanje", "ota_updateNow": "Ažuriraj sada", - "otaVersionInfoFailed": "Failed to get version info. Please try again later.", + "otaVersionInfoFailed": + "Dobijanje informacija o verziji nije uspelo. Pokušajte ponovo kasnije.", "otaDeviceInfoUnavailable": - "Unable to get device info. Please check the connection and retry.", + "Nije moguće dobiti informacije o uređaju. Proverite vezu i pokušajte ponovo.", "otaProductInfoUnavailable": - "Unable to identify the device. Please reconnect and retry.", + "Nije moguće identifikovati uređaj. Ponovo povežite i pokušajte ponovo.", "otaFirmwareVersionInvalid": - "Firmware version is abnormal. Please reconnect and retry.", + "Verzija firmvera je nenormalna. Ponovo povežite i pokušajte ponovo.", "keepConnectedDontClose": "Držite uređaj povezanim, ne zatvarajte aplikaciju", "doNotDisconnect": "Ne prekidajte vezu", "charging": "Punjenje", @@ -1483,7 +1482,62 @@ const Map srRS = { "removeEarbudsEnsureBattery": "Izvadite obe slušalice i uverite se da je baterija obe iznad 20%", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Pronađena nova verzija @version', + 'otaConfirmUpdateNow': 'Ažurirajte sada?', + 'otaUpdate': 'Ažuriraj', + 'otaUpgradeSuccess': 'Nadogradnja uspešna', + 'otaUpgradeCompleteRepair': + 'Nadogradnja firmvera je završena!\n\nUređaj mora biti ponovo uparen da bi ispravno radio. Idite na stranicu za uparivanje sada?', + 'otaPairLater': 'Upari kasnije', + 'otaPairNow': 'Upari sada', + 'okConfirm': 'U redu', + + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Greška pri proveri BLE veze: @error', + 'otaBleNotConnected': 'BLE uređaj nije povezan', + 'otaBleNeedConnection': + 'Nadogradnja firmvera zahteva BLE vezu sa uređajem\nUverite se da je uređaj pravilno povezan i pokušajte ponovo', + 'otaDeviceInfoUnavailableTitle': 'Informacije o uređaju nedostupne', + 'otaCannotGetDeviceInfo': + 'Nije moguće dobiti informacije o uređaju\nPonovo povežite uređaj ili pokušajte ponovo kasnije', + 'otaBleCheckFailed': 'Provera BLE veze nije uspela', + 'otaCannotGetDeviceInfoCheckConnection': + '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', + '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', + 'otaDoubleBatteryLow': + 'Nivo baterije uređaja je prenizak za nadogradnju firmvera\nUslov: obe slušalice moraju biti iznad 20%\nTrenutno: Leva @left%, Desna @right%\nMolimo napunite i pokušajte ponovo', + 'otaBatteryCheckFailed': 'Provera baterije nije uspela', + + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Ovo ažuriranje uključuje optimizacije performansi i ispravke grešaka.', + 'otaGetLatestVersionFailed': + 'Dobijanje informacija o najnovijoj verziji nije uspelo', + 'otaGetVersionInfoFailed': 'Dobijanje informacija o verziji nije uspelo', + 'otaCheckingDeviceStatus': 'Provera statusa uređaja...', + 'otaDownloadFailedCheckNetwork': + 'Preuzimanje nije uspelo, proverite mrežnu vezu', + 'otaDownloadFailed': 'Preuzimanje nije uspelo', + 'otaPreparingConnection': 'Pripremanje veze sa uređajem...', + 'otaConnectingDevice': 'Povezivanje sa uređajem...', + 'otaUpgradeStarted': 'OTA nadogradnja je započeta...', + 'otaUpgradeProgressWithPercent': 'Napredak nadogradnje: @percent%', + 'otaUpgradeSuccessComplete': 'Nadogradnja je uspešno završena', + 'otaUpgradeFailedWithCode': 'Nadogradnja nije uspela, kod greške: @code', + 'otaUpgradeFailedTitle': 'Nadogradnja nije uspela', + 'otaUpgradeFailedDesc': + 'Proverite vezu sa uređajem ili paket ažuriranja, kod greške: @code', + 'otaDeviceDisconnected': 'Uređaj je isključen', + 'otaDeviceConnected': 'Uređaj je povezan', + + // 音乐模块 "noMusic": "Nema muzike", // 暂无音乐 "noPlayingMusic": "Nema muzike koja se reprodukuje", // 暂无播放音乐 "unknownSong": "Nepoznata pesma", // 未知歌曲 @@ -1531,22 +1585,122 @@ const Map srRS = { "波斯语": "Persijski", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": - "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": - "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-pošta", + "中国": "Kina", + "美国": "SAD", + "加拿大": "Kanada", + "俄罗斯": "Rusija", + "英国": "Ujedinjeno Kraljevstvo", + "德国": "Nemačka", + "意大利": "Italija", + "法国": "Francuska", + "西班牙": "Španija", + "南非": "Južna Afrika", + "沙特阿拉伯": "Saudijska Arabija", + "土耳其": "Turska", + "日本": "Japan", + "韩国": "Južna Koreja", + "新加坡": "Singapur", + "马来西亚": "Malezija", + "泰国": "Tajland", + "越南": "Vijetnam", + "印度": "Indija", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipini", + "印度尼西亚": "Indonezija", + "阿联酋": "UAE", + "墨西哥": "Meksiko", + "巴西": "Brazil", + "阿根廷": "Argentina", + "澳大利亚": "Australija", + "新西兰": "Novi Zeland", + "中国香港": "Hongkong (Kina)", + "中国澳门": "Makao (Kina)", + "中国台湾": "Tajvan (Kina)", + "埃及": "Egipat", + "希腊": "Grčka", + "荷兰": "Holandija", + "比利时": "Belgija", + "匈牙利": "Mađarska", + "罗马尼亚": "Rumunija", + "瑞士": "Švajcarska", + "奥地利": "Austrija", + "丹麦": "Danska", + "瑞典": "Švedska", + "挪威": "Norveška", + "波兰": "Poljska", + "秘鲁": "Peru", + "智利": "Čile", + "哥伦比亚": "Kolumbija", + "委内瑞拉": "Venecuela", + "葡萄牙": "Portugalija", + "卢森堡": "Luksemburg", + "爱尔兰": "Irska", + "冰岛": "Island", + "阿尔巴尼亚": "Albanija", + "马耳他": "Malta", + "塞浦路斯": "Kipar", + "芬兰": "Finska", + "保加利亚": "Bugarska", + "立陶宛": "Litvanija", + "拉脱维亚": "Letonija", + "爱沙尼亚": "Estonija", + "乌克兰": "Ukrajina", + "塞尔维亚": "Srbija", + "克罗地亚": "Hrvatska", + "斯洛文尼亚": "Slovenija", + "捷克": "Češka", + "斯洛伐克": "Slovačka", + "危地马拉": "Gvatemala", + "萨尔瓦多": "Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragva", + "哥斯达黎加": "Kostarika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivija", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paragvaj", + "乌拉圭": "Urugvaj", + "摩洛哥": "Maroko", + "阿尔及利亚": "Alžir", + "突尼斯": "Tunis", + "尼日利亚": "Nigerija", + "加纳": "Gana", + "埃塞俄比亚": "Etiopija", + "肯尼亚": "Kenija", + "坦桑尼亚": "Tanzanija", + "乌干达": "Uganda", + "孟加拉国": "Bangladeš", + "以色列": "Izrael", + "黎巴嫩": "Liban", + "约旦": "Jordan", + "伊拉克": "Irak", + "科威特": "Kuvajt", + "巴林": "Bahrein", + "卡塔尔": "Katar", + "阿曼": "Oman", + "阿富汗": "Avganistan", + "斯里兰卡": "Šri Lanka", + "缅甸": "Mijanmar", + "尼泊尔": "Nepal", + "蒙古": "Mongolija", + "柬埔寨": "Kambodža", + "老挝": "Laos", + "文莱": "Brunej", + "东帝汶": "Istočni Timor", + "斐济": "Fidži", + "所罗门群岛": "Solomonska Ostrva", + "刚果民主共和国": "Demokratska Republika Kongo", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldivi", + "不丹": "Butan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamajka", + "巴哈马": "Bahami", + "巴布亚新几内亚": "Papua Nova Gvineja", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/sv_se.dart b/lib/core/translations/language/sv_se.dart index 1b2b34428..a6a30e92a 100644 --- a/lib/core/translations/language/sv_se.dart +++ b/lib/core/translations/language/sv_se.dart @@ -1,3 +1,4 @@ +//瑞典-瑞典语 const Map svSE = { // 通用 'continue': 'Fortsätt', @@ -18,6 +19,11 @@ const Map svSE = { "unknownError": "Okänt fel", "asrConnectionFailed": "Anslutning till tjänsten för röstigenkänning misslyckades. Kontrollera nätverket eller försök igen senare.", + "justNow": "Just nu", + "minutesAgo": "@minutes minuter sedan", + "yesterday": "Igår", + "daysAgo": "@days dagar sedan", + "hoursAgo": "@hours timmar sedan", // 启动页 "slogan": "Anslut världen, bortom ljudet", @@ -28,7 +34,7 @@ const Map svSE = { "explore": "Utforska", "settings": "Inställningar", - // 语言 + // 语言列表 "followingSystem": "Följ systemet", "chinese": "Kinesiska", "english": "Engelska", @@ -72,9 +78,10 @@ const Map svSE = { "arabic": "Arabiska", "persian": "Persiska", - // 登录页 + // 登录模块 "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", @@ -93,20 +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,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "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", // 同意并进入 @@ -118,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", @@ -159,7 +169,31 @@ const Map svSE = { 'right': 'Höger', 'checkConnectionStatusFailed': 'Kontroll av anslutningsstatus misslyckades', -// 发现页 + // 蓝牙扫描模块 + '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', + 'needPermission': 'Behörighet krävs', + '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.', + 'bleScanFailedWithError': 'Sökning misslyckades: @error', + 'bleConnectionSuccess': 'Anslutningen lyckades', + 'bleConnectedToDevice': 'Ansluten till @device', + 'bleConnectionFailedWithError': 'Anslutning misslyckades: @error', + 'bleDisconnected': 'Frånkopplad', + 'bleDeviceDisconnected': 'Enheten frånkopplad', + 'bleDisconnectFailedWithError': 'Frånkoppling misslyckades: @error', + 'signalStrong': 'Stark signal', + 'signalMedium': 'Medelsignal', + 'signalWeak': 'Svag signal', + 'signalVeryWeak': 'Mycket svag signal', + + // 发现页 "searchAi": "Sök AI-funktioner...", "exploreSlogan": "Smarta hörlurar, oändliga möjligheter", "exploreSlogan1": "Smart sällskap, oändliga möjligheter", @@ -178,200 +212,277 @@ 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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) + "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": "Rensning klar", + "cleanedOldData": "Rensade data äldre än 90 dagar", + "exportFeature": "Exportfunktion", + "exportInDevelopment": "Dataexport är under utveckling", + + // 商品模块 - 通用 + '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': 'Musik & Rekommendationer', + 'navigationAndRoutes': 'Navigation & Rutter', + 'nearbySearch': 'Sökning i närheten', + 'newsInformation': 'Nyheter', + 'communicationAssistant': 'Kommunikationsassistent', + 'aiHeaderDesc1': + 'Längre konversationskvot, fler verktygsamtal, utökad kontextlängd.', + 'aiHeaderDesc2': + 'Lämplig för agent-Q&A, sammanfattning, analys och uppgiftsutförande.', + 'musicSearchPlaybackControl': + 'Musikbibliotekssökning och uppspelningskontroll', + 'smartPlaylistAndSimilarRecommendations': + 'Smart spellista och liknande låtrekommendationer', + 'routePlanningAndCongestionAvoidance': 'Ruttplanering och undvikande av köer', + 'voiceBroadcastAndWaypoints': 'Röstmeddelanden och vägpunkter', + 'realTimeWeatherForecast': 'Realtidsväder och prognos', + 'clothingAdviceAndTravelReminders': 'Klädråd och resereminder', + 'poiSearchFoodGasParking': 'POI-sökning: mat / bensin / parkering', + 'ratingsHoursAndDirectRoutes': 'Betyg, öppettider och direktruttning', + 'hotNewsAndTopicOverview': 'Heta nyheter och ämnesöversikt', + 'longArticleSummariesAndKeyPoints': + 'Sammanfattningar och nyckelpoäng av långa artiklar', + 'helpCallAndSMS': 'Hjälp med samtal och SMS', + 'templatedMessagesAndScheduleReminders': + 'Mallmeddelanden och schemapåminnelser', + 'aiDisclaimer': + 'Funktioner beror på enhetens behörigheter, tjänstens tillgänglighet och nätverksförhållanden.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Realtidstranskribering', + 'sceneLexicon': 'Scenarioordlista', + 'subtitleDisplay': 'Undertexter', + 'transHeaderDesc1': + 'Simultantolkning i realtid och textöversättning med låg latens.', + 'transHeaderDesc2': 'Lämplig för resor, affärer, tal och undervisning.', + 'translateZhEn': 'Kinesisk–engelsk översättning', + 'lowLatencyVoiceBroadcast': 'Röstmeddelanden med låg latens', + 'multiLangTextTranslation': 'Flerspråkig textöversättning', + 'termOptimizationContextPreserve': + 'Terminologioptimering och kontextbevarelse', + 'lexiconTourBusinessLife': 'Resor/Affärer/Liv-ordlistor', + 'personalVocabularyMemory': 'Personligt ordförrådsminne', + 'conversationSubtitleLargeText': 'Konversationsundertexter / Stor text-läge', + 'colorHighContrast': 'Hög färgkontrast', + 'transDisclaimer': + 'Översättningens prestanda beror på mikrofon, nätverkslatens och bakgrundsljud.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Mötesinspelning', + 'transcriptionAndSummary': 'Transkribering & Sammanfattning', + 'keywordSearch': 'Nyckelordssökning', + 'collaborationSharing': 'Samarbete & Delning', + 'meetingHeaderDesc1': + 'Ljudinspelning, transkribering, nyckelordssökning och automatisk sammanfattning för att öka möteseffektiviteten.', + 'meetingHeaderDesc2': + 'Lämplig för affärsmöten, lektionsanteckningar och intervjuprotokoll.', + 'meetingAutoRecording': 'Automatisk inspelning och segmentering', + 'meetingSpeakerTagging': 'Talaridentifiering', + 'meetingLongAudioTranscription': 'Transkribering av långa ljud', + 'meetingKeyPointSummary': 'Extraktion av nyckelpoäng', + 'meetingTopicNameSearch': 'Sök efter ämne/namn', + 'meetingTimelineJump': 'Tidslinjebyte', + 'meetingExportSummary': 'Exportera protokoll', + 'meetingMultiPlatformShare': 'Dela på flera plattformar', + 'meetingDisclaimer': + 'Använd i tysta miljöer; prestanda beror på mikrofon och nätverk.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Förmånsöversikt', + 'higherQuota': 'Högre användningskvot', + 'lowerUnitPrice': 'Lägre enhetspris', + 'priorityService': 'Prioriterad service', + 'exclusiveSupportChannel': 'Dedikerad supportkanal', + 'fastResponse': 'Snabb problemlösning', + 'eventsAndDiscounts': 'Evenemang och rabatter', + 'memberExclusiveEvents': 'Exklusiva medlemsevenemang', + 'longTermDiscountPlan': 'Långtidsrabattplan', + 'generalPrivileges': 'Allmänna privilegier', + 'earlyAccessNewFeatures': 'Tidig tillgång till nya funktioner', + 'crossDeviceSync': 'Synkronisering mellan enheter', + 'vipDisclaimer': + 'Faktiska förmåner beror på paketdetaljerna och kan ändras med versioner.', + + // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', 'ai_002_name': 'AI Basic 500', 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 + 'meet_001_name': 'Möte Bas 100', + 'meet_002_name': 'Möte Bas 500', + 'meet_003_name': 'Möte Bas 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': + 'Inkluderar 100 användningar. Tillgång till kärn-AI-funktioner.', + 'ai_002_desc': + 'Inkluderar 500 användningar. Tillgång till kärn-AI-funktioner.', + 'ai_003_desc': + 'Inkluderar 1000 användningar. Tillgång till kärn-AI-funktioner.', + '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', 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 'skip': 'Hoppa över', - '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, ', - // AI 引导步骤 - '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': 'Nästa', + 'sayLilyHint': 'Säg Lily Lily till mikrofonen', + 'imHere': 'Jag är här~', + 'guideWelcomeWakeAI': 'Välkommen till Voitrans! Väck först din AI Lily.', + 'aiReplyCompleted': 'Lily har avslutat svaret!', + 'aiThinking': 'Lily tänker...', + 'guideAwakenSuccess': 'Bra! Lily är vaken - be om hjälp.', + 'confirmInput': 'Bekräfta inmatning', + 'guideClickSendPrefix': 'Tryck på skicka, ', + 'guideWeatherStart': 'Säg till Lily: Hur är vädret idag?', + 'guideWeatherInput': 'Hur är vädret idag?', + 'guideWeatherSend': 'Lily rapporterar vädret i realtid', + 'guideWeatherEnd': 'Lily kan rapportera väder live - prova andra kommandon', + 'guideMusicStart': 'Säg till Lily: Spela lite rockmusik', + 'guideMusicInput': 'Spela lite rockmusik', + 'guideMusicSend': 'Lily hittar musik åt dig', + 'guideMusicEnd': 'Lily hittade musik - prova andra kommandon', + 'guideNavStart': 'Säg till Lily: Navigera till Shenzhen Airport', + 'guideNavInput': 'Navigera till Shenzhen Airport', + 'guideNavSend': 'Lily planerar rutten', + 'guideNavEnd': 'Navigering inställd - prova andra kommandon', + 'guideMeetingStart': + 'Säg till Lily: Skapa en mötespåminnelse för imorgon kl. 15', + 'guideMeetingInput': 'Skapa en mötespåminnelse för imorgon kl. 15', + 'guideMeetingSend': 'Lily skapar en mötespåminnelse', + 'guideMeetingEnd': 'Påminnelse skapad - prova andra kommandon', + 'guidePhoneStart': 'Säg till Lily: Ring mamma', + 'guidePhoneInput': 'Ring mamma', + 'guidePhoneSend': 'Lily ringer samtalet', + 'guidePhoneEnd': 'Samtal kopplat - prova andra kommandon', + 'guideSmsStart': + 'Säg till Lily: Skicka ett SMS till pappa: Jag kommer hem till middag', + 'guideSmsInput': 'SMS till pappa: Jag kommer hem till middag', + 'guideSmsSend': 'Lily skickar meddelandet', + 'guideSmsEnd': 'Meddelande skickat - röststyrning är bekvämt', + + // Meeting模块 - 首页与导航 "startMeeting": "Starta möte", 'edit': 'Redigera', 'delete': 'Ta bort', @@ -383,49 +494,54 @@ const Map svSE = { 'recordingDetails': 'Inspelningsdetaljer', 'aiSummary': 'AI-sammanfattning', 'meetingTranscript': 'Mötesutskrift', - - // Meeting模块 - 导航和基础功能 - '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': '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': 'Startar Wi-Fi...', + 'newFilesDetected': 'Nya filer hittades, förbereder import', + 'noNewFiles': 'Inga nya filer att importera', + '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', - 'importAudio': 'Import Audio', + 'startRecording': 'Starta inspelning', + 'liveRecording': 'Liveinspelning', + 'audioVideoRecording': 'Ljud-/videoinspelning', + 'callRecording': 'Samtalsinspelning', + 'importAudio': 'Importera ljud', '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.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,184 +549,215 @@ const Map svSE = { 'För att visa den flytande inspelningsraden (timer/paus/fortsätt) under inspelning behöver vi behörigheten för flytande fönster.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Det gick inte att öppna systeminställningarna automatiskt. Öppna Inställningar och aktivera behörigheten för flytande fönster manuellt.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Transkriberar...', + 'summarizing': 'Sammanfattar...', + 'analyzing': 'Analyserar...', + 'summaryComplete': 'Sammanfattning klar', + 'generate': 'Generera', + 'overview': 'Översikt', + 'transcription': 'Transkription', + 'summary': 'Sammanfattning', + 'mindMap': 'Tankekarta', + 'editSpeaker': 'Redigera', + 'nameSpeaker': 'Namnge talare', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Sammanfatta på nytt', + 'dateAndTime': 'Datum och tid', + 'location': 'Plats', + 'attendees': 'Deltagare', + 'inputLocation': 'Ange plats', + 'inputAttendees': 'Ange deltagare', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Välj sammanfattningsmall', + 'useThisTemplate': 'Använd den här mallen', + 'lastUsed': 'Senast använd', + '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': 'Kinesiska mandarin (förenklad)', + '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': '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': 'Dela mötesljud', + 'shareComplete': 'Delning klar!', + 'shareFailed': 'Delning misslyckades: {error}', + 'fileProcessingFailed': + 'Filbearbetning misslyckades: {filePath}, fel: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Spara tankekarta', + 'shareMindMap': 'Dela tankekarta', + 'shareSuccess': 'Delning lyckades', + + // Meeting模块 - AI问答 + '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': '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': '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': 'Synkronisera till molnet', + 'syncToCloudTip': + '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', - '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', - - // Meeting模块 - 会员功能 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', + 'enabled': 'Aktiverad', + 'disabled': 'Inaktiverad', + 'myVoitransDevice': 'Min VOITRANS-enhet', + 'helpAndFeedback': 'Hjälp och feedback', + 'aboutVoitrans': 'Om VOITRANS', + 'meetingDays': 'Dagar', + 'meetingHours': 'Timmar', + 'voitransAiMember': 'Voitrans AI-medlem', + 'unlockStarterMember': 'Lås upp Starter-medlemskap', + 'bindDeviceToActivate': + 'Koppla Voitrans-enhet för att aktivera Starter-medlemskap', + 'unlockNow': 'Lås upp nu', + + // Meeting模块 - 会员与升级 + 'comparison': 'Jämförelse', + 'detailedInfo': 'Detaljerad information', + 'monthlyTranscriptionTime': 'Månatlig transkriptionstid', + 'unlimited': 'Obegränsat', + 'professionalTemplates': 'Professionella mallar', 'limited': 'Limited', - 'fullTemplates': 'Full Templates', + 'fullTemplates': 'Alla mallar', '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', - '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.', - '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.', + 'customTemplates': 'Anpassade mallar', + 'visualMindMap': 'Visuell tankekarta', + 'speakerIdentification': 'Talarigenkänning', + 'aiVoiceEnhancement': 'AI‑röstförbättring', + 'audioImport': 'Ljudimport', + 'multipleExportFormats': 'Flera exportformat', + 'professionalSummaryTemplates': 'Professionella sammanfattningsmallar', + 'professionalTemplateDesc': + 'Professionella mallar som ökar arbetseffektiviteten. Anpassade efter branschens behov.', + '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': + 'Mer än sammanfattningar: organisera och visualisera nyckelpunkter med tankekartor för bättre förståelse av hela texten.', + 'templateCommunityDesc': + 'Upptäck, dela och få inspiration från mallbiblioteket som skapats av användare.', + 'speakerIdentificationDesc': + 'Ljudtranskription kommer att stödja talarigenkänning för att mer intuitivt återskapa innehåll från möten eller telefonsamtal. Samtidigt blir sammanfattningen mer träffsäker.', + '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‑röstförbättring stöder flera inställningar för brusreducering, eliminerar bakgrundsljud intelligent, förbättrar rösttydlighet och höjer ljuduppspelningskvaliteten.', + 'audioImportDesc': + 'Importera enkelt ljudfiler från lokala eller tredjepartsappar, till exempel röstanteckningar, Google Drive osv.', + 'multipleExportFormatsDesc': + 'Exportera dina ljudinspelningar, transkript och sammanfattningar i olika format (TXT, PDF, JPEG) efter behov.', + 'upgradeMembership': 'Uppgradera medlemskapet', + 'yearlySubscription': 'Årsabonnemang', + 'monthlySubscription': 'Månadsabonnemang', + 'proMonthly': 'Pro ¥60/månad', + 'proMonthlyDesc': + '7 dagars gratis provperiod, därefter ¥800/år. Avsluta när som helst innan provperioden slutar.', + 'sevenDayTrial': '7 dagars gratis provperiod', + 'unlimitedMonthly': 'Obegränsat ¥120/månad', + 'unlimitedMonthlyDesc': + '7 dagars gratis provperiod, därefter ¥1600/år. Avsluta när som helst innan provperioden slutar.', + 'trialNote': + '*Gratis provperiod i 7 dagar, därefter debitering årligen. Avsluta när som helst.', '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', - '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.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Använd på alla stycken för denna talare', - 'summaryWillBeUpdatedAutomatically': 'Sammanfattningen uppdateras automatiskt baserat på mallen', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'proMonthlyPrice': '¥120/månad', + 'subscribe': 'Prenumerera', + 'unlimitedPrice': 'Obegränsat ¥198', + 'unlimitedMonthlyPrice': '¥198/månad', + 'upgradeNote': + '*Efter uppgradering av prenumerationen beräknas återstående dagar av den ursprungliga prenumerationen automatiskt och återbetalas till ditt betalningskonto', + 'buyMoreTranscriptionTime': 'Köp mer transkriptionstid', + 'sixThousandMinutes': '6 000 minuter', + 'threeThousandMinutes': '3 000 minuter', + 'sixHundredMinutes': '600 minuter', + 'oneHundredTwentyMinutes': '120 minuter', + 'validityPeriod': '*Giltighetsperiod: ', + 'validityNote': + 'Aktiveras omedelbart efter köp och är giltig i 2 år efter aktivering.', + 'purchase': 'Köp', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Inspelningsspråk', + 'cantonese': 'Kantonesiska', + 'sichuan': 'Sichuan-dialekt', + 'shanghai': 'Shanghai-dialekt', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Okänt språk', + 'analysisFailed': 'Analysen misslyckades, försök igen senare', + 'transcriptionFailed': 'Transkribering misslyckades, försök igen senare', + 'summaryFailed': 'Sammanfattning misslyckades, försök igen senare', + 'summaryFailedShort': 'Sammanfattning misslyckades', + 'transcriptionFailedShort': 'Transkribering misslyckades', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Ljudspelaren är inte redo, vänligen vänta', + 'playFailed': 'Uppspelning misslyckades', + 'audioFileNotFound': 'Ljudfilen hittades inte', + 'fetchingAudio': 'Hämtar ljud från molnet...', + 'playerLoadFailed': 'Ljudspelaren kunde inte laddas', // 设置页 "systemSettings": "Systeminställningar", @@ -619,9 +766,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", @@ -634,7 +782,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", @@ -643,9 +792,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', @@ -659,41 +810,31 @@ const Map svSE = { "bleHeadsetFirmwareUpgrade": "Uppgradera firmware-version för BLE-hörlurar", "deviceManagement": "Enhetshantering", "manageConnectedDevices": "Hantera anslutna Bluetooth-enheter", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Du har redan den senaste versionen {version}', 'checkUpdateFailed': 'Kontroll av uppdatering misslyckades', 'networkErrorRetry': 'Nätverksfel, försök igen senare', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Realtids röstchatt", - "realtimeVoiceChatInfo": "Upplev intelligent röstinteraktionsfunktion (funktionsförhandsvisning)", + "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", - -//Agent 模块 - // agent View + "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", "clearChatHistory": "Rensa chatthistorik", "online": "Online", @@ -721,49 +862,54 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "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": "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': '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', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Skriv ditt meddelande här...', // 全屏编辑器输入提示 'characterCount': '{count} tecken', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopiera', 'copySuccess': 'Kopierat', 'report': 'Anmäl', 'submitSuccess': 'Inskickat', 'submitFailed': 'Inskickning misslyckades', 'reportSubmitted': 'Anmälan inskickad, vi behandlar den så snart som möjligt', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Skadligt/Osäkert', 'pornographicVulgar': 'Pornografiskt/Vulgärt', 'misleadingAttack': 'Vilseledande/Attack', @@ -771,18 +917,23 @@ 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å.', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'Vi vill veta varför du anmäler, du kan beskriva problemet du stött på.', 'generatedByAi': 'Genererad av AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Verktygsamtal', + 'noResult': 'Inget resultat', + 'noToolCallContentToCopy': 'Inget verktygsamtal att kopiera', + 'toolCallDetails': 'Detaljer om verktygsamtal:', + 'toolCallContentCopied': 'Verktygsamtal kopierat till urklipp', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Här är några rekommenderade låtar:', 'playList': 'Spellista', 'moreMusic': 'Mer musik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'timmar', // 小时单位 @@ -797,20 +948,52 @@ const Map svSE = { "bicycling": "Cykling", "tsransit": "Kollektivtrafik", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Välj navigeringsapp', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Navigera med Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Navigera med Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Navigera med Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Navigera med Apple Maps', + 'builtInNavigation': 'Inbyggd navigation', + 'useBuiltInNavigation': 'Navigera med inbyggd karta', + 'navigationStartFailed': 'Kunde inte starta navigering', + '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', + 'pleaseInstallBaiduMapApp': 'Installera Baidu Maps-appen först', + 'appleMapStartFailed': 'Apple Maps kunde inte startas', + 'appleMapUnavailable': 'Apple Maps är inte tillgängligt', + 'openAppleMapError': 'Fel vid öppning av Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Söker väderinformation:', '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", @@ -818,18 +1001,8 @@ const Map svSE = { "friday": "Fre", "saturday": "Lör", "sunday": "Sön", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Soligt", "partlyCloudy": "Delvis molnigt", "partlySunny": "Växlande molnighet", @@ -850,7 +1023,143 @@ const Map svSE = { "haze": "Dis", "strongWind": "Stark vind", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Bildöversättning", + "textTranslation": "Textöversättning", + + // 翻译模块 - 主页 + "translationHistory": "Översättningshistorik", + "enableRecording": "Aktivera inspelning", + "viewAudioFiles": "Visa ljudfiler", + "headsetUser": "Hörlursanvändare", + "phoneUser": "Telefonanvändare", + "selectSourceLanguage": "Välj källspråk", + "selectTargetLanguage": "Välj målspråk", + "me": "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', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Språkdetektering misslyckades", + "translationFailed": "Översättning misslyckades", + "translating": "Översätter", + "translate": "Översätt", + "pleaseInputText": "Ange text", + "inputTextToTranslate": "Ange texten som ska översättas", + "textTooLong": "Texten är för lång, max 5000 tecken", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Ingen historik ännu", + "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.", + "unknownLanguage": "Okänt språk", + "deleteSessionRecord": "Ta bort sessionsinspelning", + "deleteSessionConfirm": + "Är du säker på att du vill ta bort alla översättningsinspelningar för denna session? Denna åtgärd kan inte ångras.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "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": + "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", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Översätt ljudfiler", + "noAudioFiles": "Inga ljudfiler ännu", + "calculating": "Beräknar...", + "playing": "Spelar upp...", + "paused": "Pausad", + "clickToPlay": "Klicka för att spela", + "rename": "Byt namn", + "smartTranscription": "Smart transkription", + "renameAudioFile": "Byt namn på ljudfil", + "enterNewFileName": "Ange ett nytt filnamn", + + // 翻译模块 - 翻译详情 + "originalRecord": "Originalinspelning", + "recordSummary": "Inspelningssammanfattning", + "clickToGenerateSummary": + "Klicka på knappen nedan för att generera en sessionssammanfattning", + "summaryContent": "Sammanfattningsinnehåll", + "copied": "Kopierad", + "summaryCopiledToClipboard": "Sammanfattning kopierad till urklipp", + "extractSummary": "Extrahera sammanfattning", + "summaryGenerated": "Sammanfattning genererad", + "generating": "Genererar...", + "regenerate": "Generera igen", + "summaryTimeoutMessage": + "Begäran om att generera sammanfattning nådde tidsgräns, det kan bero på nätverksproblem eller upptagen server.", + "deleteTranslationRecord": "Ta bort översättningsinspelning", + "deleteTranslationConfirm": + "Är du säker på att du vill ta bort denna översättningsinspelning? Denna åtgärd kan inte ångras.", + "originalText": "Originaltext", + "translatedText": "Översatt text", + "sessionSummary": "Sessionssammanfattning", + "cannotShare": "Kan inte dela", + "generateSummaryFirst": "Generera en sammanfattning först", + "translationSessionRecord": "Översättningssessionsinspelning", + + // 个人资料模块 "editProfile": "Redigera personlig information", "avatar": "Avatar", "nickname": "Smeknamn", @@ -860,28 +1169,30 @@ 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?', - - // Profile 错误信息 - 'networkConnectionFailed': 'Nätverksanslutning misslyckades, kontrollera dina nätverksinställningar och försök igen', - 'serverTemporarilyUnavailable': 'Servern är tillfälligt otillgänglig, försök igen senare', - 'loginExpiredPleaseRelogin': 'Din session har gått ut, vänligen logga in igen', - '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', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Bildkomprimering misslyckades', 'avatarUpdateFailed': 'Avataruppdatering misslyckades', 'usernameCannotBeEmpty': 'Användarnamn kan inte vara tomt', @@ -892,42 +1203,53 @@ const Map svSE = { 'logoutFailedRetry': 'Utloggning misslyckades, försök igen', 'accountPermanentlyDeleted': 'Kontot har tagits bort permanent', 'deleteAccountFailedRetry': 'Borttagning av konto misslyckades, försök igen', - - // 账号服务相关 'clearUserDataFailed': 'Rensning av användardata misslyckades', // 清理用户数据失败 - 'deleteUserDataFailed': 'Borttagning av användardata misslyckades', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Utloggning från tredje part lyckades', // 第三方登录退出成功 - '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': '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', - //'bluetooth': '蓝牙', - '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', @@ -939,65 +1261,326 @@ 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.', -//'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.', + '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': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + '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', + + // 版本更新 'newVersionFound': 'Ny version hittad', // 版本更新对话框标题 'remindLater': 'Påminn mig senare', // 稍后提醒按钮 '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", + "connectYourDeepSoundHeadset": "Anslut dina Voitrans-hörlurar", + "bind": "Bind", + "authorizeBind": "Auktorisera bindning", + "enterCode": "Ange koden", + "autoInputCode": "Ange koden automatiskt", + "skipBinding": "Hoppa över bindning", + "rescan": "Skanna igen", + "verifyingDevice": "Verifierar enhet...", + "confirmBinding": "Bekräfta bindning", + "associatingDevice": "Associerar enhet...", + "goToBluetoothSettings": "Gå till Bluetooth-inställningar", + 'bluetooth': 'Bluetooth', + "readyToPair": "Redo att parkoppla", + "preparingPairingEnvironment": "Förbereder parkopplingsmiljö...", + "connectDeepSoundViaSystemBluetooth": + "Anslut först till Voitrans-enheten via systemets Bluetooth", + "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", + "deviceAssociationFailed": "Enhetsassociation misslyckades, försök igen", + "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", + "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', + 'establishingSecureConnection': 'Upprättar säker anslutning...', + 'needManualBindingAuthCode': 'Manuell bindningsauktoriseringskod krävs...', + 'pairingSuccessful': 'Parkoppling lyckades!', + 'enableBluetooth': 'Aktivera Bluetooth', + 'grantPermissions': 'Bevilja behörigheter', + 'retryAssociation': 'Försök associera igen', + 'retryAuthorization': 'Försök auktorisera igen', + 'pleaseGrantNecessaryPermissions': 'Bevilja nödvändiga behörigheter', + 'checkFailedRetry': 'Kontroll misslyckades, försök igen', + 'pleaseConnectDeepSoundDevice': 'Anslut en Voitrans-enhet', + 'verificationFailedRetry': 'Verifiering misslyckades, försök igen', + 'invalidDeviceAddress': 'Ogiltig enhetsadress', + 'bleDeviceAssociationFailed': 'BLE-enhetsassociation misslyckades', + 'deviceAssociationFailedRetry': 'Enhetsassociation misslyckades, försök igen', + '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': '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": "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", - //国家列表 + // 用户反馈模块 + "feedback": "Användarfeedback", + 'feedbackInfo': 'Ge feedback eller förslag', + 'feedbackDescription': 'Beskriv problemet du stött på eller ditt förslag', + 'feedbackHint': 'Skriv din feedback här...', + 'feedbackRequired': 'Ange feedbackinnehåll', + 'contactInfo': 'Kontaktinformation', + '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', + + // OTA升级模块 + "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", + "latestFirmwareVersion": "Senaste firmware-version", + "ota_newVersionFound": "Ny version hittad", + "latestVersion": "Du har redan den senaste versionen", + "gettingDeviceInfo": "Hämtar enhetsinformation...", + "keepDeviceConnected": "Håll enheten ansluten", + "connectionFailed": "Anslutning misslyckades", + "retryConnection": "Försök ansluta igen", + "ota_updateNow": "Uppdatera nu", + "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", + + // 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?', + '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', + 'otaDeviceInfoUnavailableTitle': 'Enhetsinformation otillgänglig', + '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', + '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', + 'otaBatteryCheckFailed': 'Batterikontroll misslyckades', + // OTA升级模块 - 升级状态 + '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', + 'otaDownloadFailed': 'Nedladdning misslyckades', + 'otaPreparingConnection': 'Förbereder enhetsanslutning...', + 'otaConnectingDevice': 'Ansluter till enhet...', + 'otaUpgradeStarted': 'OTA-uppgradering startad...', + 'otaUpgradeProgressWithPercent': 'Uppgraderingsförlopp: @percent%', + 'otaUpgradeSuccessComplete': 'Uppgradering slutförd', + 'otaUpgradeFailedWithCode': 'Uppgradering misslyckades, felkod: @code', + 'otaUpgradeFailedTitle': 'Uppgradering misslyckades', + 'otaUpgradeFailedDesc': + 'Kontrollera anslutning eller uppdateringspaket, felkod: @code', + 'otaDeviceDisconnected': 'Enheten frånkopplad', + 'otaDeviceConnected': 'Enheten ansluten', + + // 音乐模块 + "noMusic": "Ingen musik", // 暂无音乐 + "noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐 + "unknownSong": "Okänd låt", // 未知歌曲 + "unknownArtist": "Okänd artist", // 未知歌手 + "playAll": "Spela alla", // 播放全部 + + // 语言名称 + "中文(简体)": "中文(简体)", + "中文(繁体)": "中文(繁体)", + "中文(香港繁体)": "中文(香港繁体)", + "英语": "Engelska", + "日语": "Japanska", + "韩语": "Koreanska", + "法语": "Franska", + "西班牙语": "Spanska", + "葡萄牙语": "Portugisiska", + "意大利语": "Italienska", + "德语": "Tyska", + "俄语": "Ryska", + "波兰语": "Polska", + "荷兰语": "Nederländska", + "瑞典语": "Svenska", + "捷克语": "Tjeckiska", + "现代希腊语": "Modern grekiska", + "罗马尼亚语": "Rumänska", + "匈牙利语": "Ungerska", + "乌克兰语": "Ukrainska", + "丹麦语": "Danska", + "芬兰语": "Finska", + "挪威语": "Norska", + "克罗地亚语": "Kroatiska", + "加泰隆语": "Katalanska", + "阿拉伯语": "Arabiska", + "泰语": "Thailändska", + "越南语": "Vietnamesiska", + "印尼语": "Indonesiska", + "印地语": "Hindi", + "土耳其语": "Turkiska", + "马来语": "Malajiska", + "孟加拉语": "Bengali", + "泰米尔语": "Tamil", + "泰卢固语": "Telugu", + "马拉提语": "Marathi", + "乌尔都语": "Urdu", + "波斯语": "Persiska", + "斯瓦希里语": "Swahili", + + // 国家列表 "邮箱": "E-post", "中国": "Kina", "美国": "USA", @@ -1115,293 +1698,4 @@ const Map svSE = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Översättningshistorik", - "enableRecording": "Aktivera inspelning", - "viewAudioFiles": "Visa ljudfiler", - "headsetUser": "Hörlursanvändare", - "phoneUser": "Telefonanvändare", - "selectSourceLanguage": "Välj källspråk", - "selectTargetLanguage": "Välj målspråk", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Ingen historik ännu", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Rensa historik", - "clearHistoryConfirm": "Är du säker på att du vill rensa all översättningshistorik? Denna åtgärd kan inte ångras.", - "unknownLanguage": "Okänt språk", - "deleteSessionRecord": "Ta bort sessionsinspelning", - "deleteSessionConfirm": "Är du säker på att du vill ta bort alla översättningsinspelningar för denna session? Denna åtgärd kan inte ångras.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Översätt ljudfiler", - "noAudioFiles": "Inga ljudfiler ännu", - "calculating": "Beräknar...", - "playing": "Spelar upp...", - "paused": "Pausad", - "clickToPlay": "Klicka för att spela", - "rename": "Byt namn", - "smartTranscription": "Smart transkription", - "renameAudioFile": "Byt namn på ljudfil", - "enterNewFileName": "Ange ett nytt filnamn", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Originalinspelning", - "recordSummary": "Inspelningssammanfattning", - "clickToGenerateSummary": "Klicka på knappen nedan för att generera en sessionssammanfattning", - "summaryContent": "Sammanfattningsinnehåll", - "copied": "Kopierad", - "summaryCopiledToClipboard": "Sammanfattning kopierad till urklipp", - "extractSummary": "Extrahera sammanfattning", - "summaryGenerated": "Sammanfattning genererad", - "generating": "Genererar...", - "regenerate": "Generera igen", - "summaryTimeoutMessage": "Begäran om att generera sammanfattning nådde tidsgräns, det kan bero på nätverksproblem eller upptagen server.", - "deleteTranslationRecord": "Ta bort översättningsinspelning", - "deleteTranslationConfirm": "Är du säker på att du vill ta bort denna översättningsinspelning? Denna åtgärd kan inte ångras.", - "originalText": "Originaltext", - "translatedText": "Översatt text", - "sessionSummary": "Sessionssammanfattning", - "cannotShare": "Kan inte dela", - "generateSummaryFirst": "Generera en sammanfattning först", - "translationSessionRecord": "Översättningssessionsinspelning", - - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) - "devicePairing": "Enhetsparkoppling", - "connectYourDeepSoundHeadset": "Anslut dina Voitrans-hörlurar", - "bind": "Bind", - "authorizeBind": "Auktorisera bindning", - "enterCode": "Ange koden", - "autoInputCode": "Ange koden automatiskt", - "skipBinding": "Hoppa över bindning", - "rescan": "Skanna igen", - - "verifyingDevice": "Verifierar enhet...", - "confirmBinding": "Bekräfta bindning", - "associatingDevice": "Associerar enhet...", - "goToBluetoothSettings": "Gå till Bluetooth-inställningar", - 'bluetooth': 'Bluetooth', - - // 配对状态文本 - "readyToPair": "Redo att parkoppla", - "preparingPairingEnvironment": "Förbereder parkopplingsmiljö...", - "connectDeepSoundViaSystemBluetooth": "Anslut först till Voitrans-enheten via systemets Bluetooth", - "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", - "deviceAssociationFailed": "Enhetsassociation misslyckades, försök igen", - "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", - "pairingFailedRetry": "Parkoppling misslyckades, försök igen", - - // 配对控制器相关 - //'connectDevice': '连接设备', - 'pleaseEnableBluetooth': 'Aktivera Bluetooth', - 'deviceDisconnected': 'Enheten frånkopplad', - 'readyToStartPairing': 'Redo att starta parkoppling', - 'checkingEnvironment': 'Kontrollerar miljö...', - 'ensureHeadsetOnAndPairingMode': 'Se till att hörlurarna är på och i parkopplingsläge', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', - 'establishingSecureConnection': 'Upprättar säker anslutning...', - 'needManualBindingAuthCode': 'Manuell bindningsauktoriseringskod krävs...', - 'pairingSuccessful': 'Parkoppling lyckades!', - 'enableBluetooth': 'Aktivera Bluetooth', - 'grantPermissions': 'Bevilja behörigheter', - 'retryAssociation': 'Försök associera igen', - 'retryAuthorization': 'Försök auktorisera igen', - 'pleaseGrantNecessaryPermissions': 'Bevilja nödvändiga behörigheter', - 'checkFailedRetry': 'Kontroll misslyckades, försök igen', - 'pleaseConnectDeepSoundDevice': 'Anslut en Voitrans-enhet', - 'verificationFailedRetry': 'Verifiering misslyckades, försök igen', - 'invalidDeviceAddress': 'Ogiltig enhetsadress', - 'bleDeviceAssociationFailed': 'BLE-enhetsassociation misslyckades', - 'deviceAssociationFailedRetry': 'Enhetsassociation misslyckades, försök igen', - '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', - - ///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', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 - - //用户反馈页 - "feedback": "Användarfeedback", - 'feedbackInfo': 'Ge feedback eller förslag', - 'feedbackDescription': 'Beskriv problemet du stött på eller ditt förslag', - 'feedbackHint': 'Skriv din feedback här...', - 'feedbackRequired': 'Ange feedbackinnehåll', - 'contactInfo': 'Kontaktinformation', - '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', - - // OTA升级模块 - "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", - "latestFirmwareVersion": "Senaste firmware-version", - "ota_newVersionFound": "Ny version hittad", - "latestVersion": "Du har redan den senaste versionen", - "gettingDeviceInfo": "Hämtar enhetsinformation...", - "keepDeviceConnected": "Håll enheten ansluten", - "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.", - "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", - - // 音乐列表页面 - "noMusic": "Ingen musik", // 暂无音乐 - "noPlayingMusic": "Ingen musik spelas", // 暂无播放音乐 - "unknownSong": "Okänd låt", // 未知歌曲 - "unknownArtist": "Okänd artist", // 未知歌手 - "playAll": "Spela alla", // 播放全部 - - // 语言名称 - "中文(简体)": "中文(简体)", - "中文(繁体)": "中文(繁体)", - "中文(香港繁体)": "中文(香港繁体)", - "英语": "Engelska", - "日语": "Japanska", - "韩语": "Koreanska", - "法语": "Franska", - "西班牙语": "Spanska", - "葡萄牙语": "Portugisiska", - "意大利语": "Italienska", - "德语": "Tyska", - "俄语": "Ryska", - "波兰语": "Polska", - "荷兰语": "Nederländska", - "瑞典语": "Svenska", - "捷克语": "Tjeckiska", - "现代希腊语": "Modern grekiska", - "罗马尼亚语": "Rumänska", - "匈牙利语": "Ungerska", - "乌克兰语": "Ukrainska", - "丹麦语": "Danska", - "芬兰语": "Finska", - "挪威语": "Norska", - "克罗地亚语": "Kroatiska", - "加泰隆语": "Katalanska", - "阿拉伯语": "Arabiska", - "泰语": "Thailändska", - "越南语": "Vietnamesiska", - "印尼语": "Indonesiska", - "印地语": "Hindi", - "土耳其语": "Turkiska", - "马来语": "Malajiska", - "孟加拉语": "Bengali", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", - "波斯语": "Persiska", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", }; diff --git a/lib/core/translations/language/th_th.dart b/lib/core/translations/language/th_th.dart index 6f7679c82..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,6 +19,11 @@ const Map thTH = { "unknownError": "ข้อผิดพลาดที่ไม่รู้จัก", "asrConnectionFailed": "เชื่อมต่อกับบริการรู้จำเสียงไม่สำเร็จ กรุณาตรวจสอบเครือข่ายแล้วลองใหม่อีกครั้งภายหลัง", + "justNow": "เมื่อสักครู่", + "minutesAgo": "@minutes นาทีที่แล้ว", + "yesterday": "เมื่อวาน", + "daysAgo": "@days วันที่แล้ว", + "hoursAgo": "@hours ชั่วโมงที่แล้ว", // 启动页 "slogan": "เชื่อมต่อโลก ก้าวล้ำเหนือเสียง", @@ -28,7 +34,7 @@ const Map thTH = { "explore": "สำรวจ", "settings": "การตั้งค่า", - // 语言 + // 语言列表 "followingSystem": "ตามระบบ", "chinese": "ภาษาจีน", "english": "ภาษาอังกฤษ", @@ -69,10 +75,10 @@ const Map thTH = { "estonian": "ภาษาเอสโตเนีย", "serbian": "ภาษาเซอร์เบีย", "icelandic": "ภาษาไอซ์แลนด์", - "arabic": "ภาษาアラビア", - "persian": "ภาษาญี่ปุ่น", + "arabic": "ภาษาอาหรับ", + "persian": "ภาษาเปอร์เซีย", - // 登录页 + // 登录模块 "welcome": "ยินดีต้อนรับ", "loginTips": "กรุณาเข้าสู่ระบบหรือลงทะเบียนด้วยหมายเลขโทรศัพท์หรืออีเมล", "accountNumber": "หมายเลขโทรศัพท์หรืออีเมล", @@ -93,20 +99,18 @@ const Map thTH = { "tip": "เคล็ดลับ", "pleaseEnterCompleteCode": "กรุณากรอกรหัสยืนยันให้ครบถ้วน", "loginFailed": "เข้าสู่ระบบล้มเหลว กรุณาลองใหม่", - 'pleaseAcceptPrivacyPolicy': 'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน', + 'pleaseAcceptPrivacyPolicy': + 'กรุณาอ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้ก่อน', "enterVerificationCode": "กรอกรหัสยืนยัน", "verificationCodeSentTo": "รหัสยืนยันถูกส่งไปยัง", "resendVerificationCode": "ส่งรหัสยืนยันอีกครั้ง", "login": "เข้าสู่ระบบ", "usePasswordLogin": "เข้าสู่ระบบด้วยรหัสผ่าน", - - // 隐私政策弹窗 "loginDeclaration": "คำประกาศของ Voitrans", // Voitrans 声明 - "welcomeToThisApp": "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "welcomeToThisApp": + "ยินดีต้อนรับสู่ Voitrans กรุณาอ่านอย่างละเอียด", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "โดยการคลิกปุ่ม 'ยอมรับและเข้าสู่' คุณแสดงว่าคุณได้อ่านและยอมรับนโยบายความเป็นส่วนตัวและข้อตกลงผู้ใช้", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "ไม่ยอมรับ", // 不同意 "agreeAndEnter": "ยอมรับและเข้าสู่", // 同意并进入 @@ -124,7 +128,8 @@ const Map thTH = { "aiAssistant": "ผู้ช่วย AI รอบด้าน", "aiAssistantInfo": "ที่ปรึกษาส่วนตัว 24 ชั่วโมง ตอบคำถาม ให้คำแนะนำ", "interpretation": "การแปลภาษาพร้อมกัน", - "simultaneousInterpretationInfo": "แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล", + "simultaneousInterpretationInfo": + "แปลหลายภาษาแบบเรียลไทม์ เดินทางต่างประเทศไร้กังวล", "aiCompanion": "เพื่อนคู่คิดสำหรับครอบครัว", "aiCompanionInfo": "เข้าใจคุณ อยู่เคียงข้างอย่างอบอุ่น", "homeSlogan": "เชื่อมต่อโลก เหนือกว่าเสียง", @@ -159,7 +164,30 @@ const Map thTH = { 'right': 'ขวา', 'checkConnectionStatusFailed': 'ตรวจสอบสถานะการเชื่อมต่อล้มเหลว', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'เริ่มต้น Bluetooth ไม่สำเร็จ: @error', + 'needBluetoothAndLocationPermission': + 'จำเป็นต้องมีสิทธิ์ Bluetooth และตำแหน่งเพื่อสแกนอุปกรณ์', + 'permissionRequestFailedWithError': 'ขอสิทธิ์ไม่สำเร็จ: @error', + 'needPermission': 'ต้องขออนุญาต', + 'blePermissionDialogContent': + 'แอปนี้ต้องใช้สิทธิ์ Bluetooth และตำแหน่งเพื่อสแกนอุปกรณ์ โปรดเปิดใช้งานในการตั้งค่า', + 'needEnableBluetooth': 'เปิด Bluetooth', + 'enableBluetoothDialogContent': + 'โปรดเปิด Bluetooth เพื่อสแกนและเชื่อมต่ออุปกรณ์', + 'bleScanFailedWithError': 'สแกนไม่สำเร็จ: @error', + 'bleConnectionSuccess': 'เชื่อมต่อสำเร็จ', + 'bleConnectedToDevice': 'เชื่อมต่อกับ @device แล้ว', + 'bleConnectionFailedWithError': 'เชื่อมต่อไม่สำเร็จ: @error', + 'bleDisconnected': 'ตัดการเชื่อมต่อแล้ว', + 'bleDeviceDisconnected': 'อุปกรณ์ถูกตัดการเชื่อมต่อ', + 'bleDisconnectFailedWithError': 'ตัดการเชื่อมต่อไม่สำเร็จ: @error', + 'signalStrong': 'แรง', + 'signalMedium': 'ปานกลาง', + 'signalWeak': 'อ่อน', + 'signalVeryWeak': 'อ่อนมาก', + + // 发现页 "searchAi": "ค้นหาฟังก์ชัน AI...", "exploreSlogan": "หูฟังอัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด", "exploreSlogan1": "เพื่อนคู่อัจฉริยะ ความเป็นไปได้ไม่สิ้นสุด", @@ -182,196 +210,263 @@ const Map thTH = { "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 + "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': 'แพ็กเกจที่มี', + 'remainingQuota': 'โควต้าคงเหลือ', + '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': 'รหัสสินค้า', + 'paymentTestProductDescription': 'คำอธิบายสินค้า', + 'paymentTestWechatDescription': 'ทดสอบการชำระเงินผ่าน WeChat', + 'paymentTestAlipayDescription': 'ทดสอบการชำระเงินผ่าน Alipay', + 'paymentTestAmount': 'จำนวนเงิน', + 'paymentTestSelectAmount': 'เลือกจำนวนเงินทดสอบ', + 'paying': 'กำลังชำระเงิน...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'สถานะการชำระเงิน', + 'errorInfoWithMessage': 'ข้อผิดพลาด: @message', + 'retest': 'ทดสอบอีกครั้ง', + 'paymentTestInstructionsTitle': 'คำแนะนำ', + 'paymentTestInstructionsContent': + '1. เลือกจำนวนเงินทดสอบ (แนะนำ: ¥0.01)\n2. กดปุ่มชำระเงินเพื่อเริ่มต้น\n3. ชำระเงินในแอปชำระเงิน\n4. กลับมาตรวจสอบผลลัพธ์', + 'startingWechatPayment': 'กำลังเปิด WeChat Pay...', + 'startingAlipayPayment': 'กำลังเปิด Alipay...', + 'wechatPaymentSuccess': 'ชำระเงินผ่าน WeChat Pay สำเร็จ!', + 'wechatPaymentFailed': 'การชำระเงินผ่าน WeChat Pay ล้มเหลว', + 'wechatPaymentLaunchFailed': 'ไม่สามารถเปิด WeChat Pay ได้', + 'cannotLaunchWechatPayment': 'ไม่สามารถเปิด WeChat Pay ได้', + 'wechatPaymentException': 'WeChat Pay ผิดปกติ', + 'wechatPaymentTestCompleted': 'การทดสอบชำระเงินผ่าน WeChat Pay เสร็จสิ้น', + 'alipayPaymentSuccess': 'ชำระเงินผ่าน Alipay สำเร็จ!', + 'alipayPaymentFailed': 'การชำระเงินผ่าน Alipay ล้มเหลว', + 'alipayPaymentLaunchFailed': 'ไม่สามารถเปิด Alipay ได้', + 'cannotLaunchAlipayPayment': 'ไม่สามารถเปิด Alipay ได้', + 'alipayPaymentException': 'Alipay ผิดปกติ', + "insufficientIntegral": "คะแนนไม่เพียงพอ", + "insufficientBalanceDesc": + "ยอดคงเหลือไม่เพียงพอ โปรดไปที่หน้าการเติมเงินที่เกี่ยวข้องเพื่อเติมเงิน", + "recharge": "ไปเติมเงิน", + "aiMemberExpiredDesc": + "สมาชิก AI หมดอายุ โปรดไปที่หน้าต่ออายุสมาชิกเพื่อดำเนินการต่ออายุ", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'เพลงและคำแนะนำ', + 'navigationAndRoutes': 'การนำทางและเส้นทาง', + 'nearbySearch': 'ค้นหาใกล้เคียง', + 'newsInformation': 'ข่าวสาร', + 'communicationAssistant': 'ผู้ช่วยการสื่อสาร', + 'aiHeaderDesc1': + 'โควต้าการสนทนามากขึ้น เรียกใช้เครื่องมือได้มากขึ้น และบริบทที่ยาวขึ้น', + 'aiHeaderDesc2': + 'เหมาะสำหรับถามตอบกับเอเจนต์ การสรุป การวิเคราะห์ และการทำงานตามคำสั่ง', + 'musicSearchPlaybackControl': 'ค้นหาเพลงในคลังและควบคุมการเล่น', + 'smartPlaylistAndSimilarRecommendations': + 'เพลย์ลิสต์อัจฉริยะและแนะนำเพลงที่คล้ายกัน', + 'routePlanningAndCongestionAvoidance': + 'วางแผนเส้นทางและหลีกเลี่ยงการจราจรติดขัด', + 'voiceBroadcastAndWaypoints': 'ประกาศเสียงและตั้งค่าจุดแวะ', + 'realTimeWeatherForecast': 'สภาพอากาศและพยากรณ์แบบเรียลไทม์', + 'clothingAdviceAndTravelReminders': 'คำแนะนำการแต่งกายและการเตือนการเดินทาง', + 'poiSearchFoodGasParking': 'ค้นหา POI: ร้านอาหาร / ปั๊มน้ำมัน / ที่จอดรถ', + 'ratingsHoursAndDirectRoutes': 'เรตติ้ง เวลาทำการ และนำทางตรง', + 'hotNewsAndTopicOverview': 'ข่าวฮอตและภาพรวมประเด็น', + 'longArticleSummariesAndKeyPoints': 'สรุปบทความยาวและประเด็นสำคัญ', + 'helpCallAndSMS': 'ช่วยจัดการการโทรและ SMS', + 'templatedMessagesAndScheduleReminders': 'ข้อความแม่แบบและตั้งกำหนดการเตือน', + 'aiDisclaimer': + 'ฟีเจอร์ขึ้นอยู่กับสิทธิ์ของอุปกรณ์ ความพร้อมของบริการ และสภาพเครือข่าย', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'ถอดเสียงแบบเรียลไทม์', + 'sceneLexicon': 'อภิธานศัพท์ตามสถานการณ์', + 'subtitleDisplay': 'คำบรรยาย', + 'transHeaderDesc1': 'ล่ามพร้อมกันแบบเรียลไทม์และแปลข้อความ ด้วยเสียงหน่วงต่ำ', + 'transHeaderDesc2': 'เหมาะสำหรับการเดินทาง ธุรกิจ การพูด และการสอน', + 'translateZhEn': 'แปลจีน-อังกฤษ', + 'lowLatencyVoiceBroadcast': 'ออกเสียงหน่วงต่ำ', + 'multiLangTextTranslation': 'แปลข้อความหลายภาษา', + 'termOptimizationContextPreserve': 'ปรับปรุงศัพท์เฉพาะและรักษาบริบท', + 'lexiconTourBusinessLife': 'ศัพท์เฉพาะด้านท่องเที่ยว/ธุรกิจ/ชีวิตประจำวัน', + 'personalVocabularyMemory': 'จดจำคำศัพท์ส่วนตัว', + 'conversationSubtitleLargeText': 'คำบรรยายการสนทนา / โหมดตัวอักษรใหญ่', + 'colorHighContrast': 'คอนทราสต์สีสูง', + 'transDisclaimer': + 'ประสิทธิภาพการแปลขึ้นอยู่กับไมโครโฟน ความหน่วงเครือข่าย และเสียงรบกวนรอบข้าง', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'บันทึกการประชุม', + 'transcriptionAndSummary': 'ถอดเสียงและสรุป', + 'keywordSearch': 'ค้นหาคำสำคัญ', + 'collaborationSharing': 'ทำงานร่วมกันและแชร์', + 'meetingHeaderDesc1': + 'บันทึกเสียง ถอดเสียง ค้นหาคำสำคัญ และสรุปอัตโนมัติ เพื่อเพิ่มประสิทธิภาพการประชุม', + 'meetingHeaderDesc2': + 'เหมาะสำหรับการประชุมธุรกิจ โน้ตในชั้นเรียน และสรุปการสัมภาษณ์', + 'meetingAutoRecording': 'บันทึกอัตโนมัติและแบ่งช่วง', + 'meetingSpeakerTagging': 'ระบุผู้พูด', + 'meetingLongAudioTranscription': 'ถอดเสียงไฟล์ยาว', + 'meetingKeyPointSummary': 'สกัดประเด็นสำคัญ', + 'meetingTopicNameSearch': 'ค้นหาตามหัวข้อ/ชื่อ', + 'meetingTimelineJump': 'ข้ามไปตามไทม์ไลน์', + 'meetingExportSummary': 'ส่งออกบันทึกการประชุม', + 'meetingMultiPlatformShare': 'แชร์ข้ามแพลตฟอร์ม', + 'meetingDisclaimer': + 'ควรใช้ในที่เงียบ ประสิทธิภาพขึ้นอยู่กับไมโครโฟนและเครือข่าย', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'ภาพรวมสิทธิประโยชน์', + 'higherQuota': 'โควต้าการใช้งานสูงขึ้น', + 'lowerUnitPrice': 'ราคาต่อหน่วยถูกลง', + '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 พื้นฐาน 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', 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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": "เริ่มการประชุม", 'edit': 'แก้ไข', 'delete': 'ลบ', @@ -383,49 +478,53 @@ const Map thTH = { 'recordingDetails': 'รายละเอียดการบันทึก', 'aiSummary': 'สรุปโดย AI', 'meetingTranscript': 'ข้อความถอดเสียงการประชุม', - - // Meeting模块 - 导航和基础功能 - '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': 'จบและบันทึก', // 结束录音并保存 'meetingRecordEndWithoutSave': 'จบโดยไม่บันทึก', // 结束录音不保存 'meetingRecordContinueInBackground': 'บันทึกต่อในพื้นหลัง', // 后台继续录音 - 'meetingRecordStopTimeout': 'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'หมดเวลาหยุดการบันทึก โปรดลองอีกครั้ง', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'หยุดการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'บันทึกการบันทึกไม่สำเร็จ โปรดลองอีกครั้ง', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'กำลังบันทึก', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'กำลังบันทึกในพื้นหลัง แตะเพื่อกลับไปที่แอป', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'สิทธิ์หน้าต่างลอย', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'เพื่อแสดงผลการแปลระหว่างการโทรหรือการแปลเสียง/วิดีโอ เราต้องใช้สิทธิ์แสดงทับแอปอื่น ซึ่งจะทำให้คุณเห็นคำแปลแบบเรียลไทม์ขณะใช้แอปอื่นได้', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,184 +532,209 @@ const Map thTH = { 'เพื่อแสดงแถบลอยการบันทึก (ตัวจับเวลา/หยุดชั่วคราว/ทำต่อ) ระหว่างการบันทึก เราต้องใช้สิทธิ์แสดงทับแอปอื่น', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'ไม่สามารถเปิดการตั้งค่าระบบอัตโนมัติได้ โปรดเปิดการตั้งค่าและเปิดสิทธิ์แสดงทับแอปอื่นด้วยตนเอง', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - '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': 'สรุปใหม่', + 'dateAndTime': 'วันที่และเวลา', + 'location': 'สถานที่', + 'attendees': 'ผู้เข้าร่วม', + 'inputLocation': 'ป้อนสถานที่', + 'inputAttendees': 'ป้อนผู้เข้าร่วม', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'เลือกเทมเพลตสรุป', + 'useThisTemplate': 'ใช้เทมเพลตนี้', + 'lastUsed': 'ใช้ล่าสุด', + 'create': 'สร้าง', + 'templateDetails': 'รายละเอียดเทมเพลต', + 'tag': 'แท็ก', + 'description': 'คำอธิบาย', + 'template': 'เทมเพลต', + 'deleteTemplate': 'ลบเทมเพลต', + 'deleteTemplateConfirm': 'คุณแน่ใจหรือไม่ว่าต้องการลบเทมเพลตนี้?', + 'editTemplate': 'แก้ไขเทมเพลต', + 'createTemplate': 'สร้างเทมเพลต', + 'name': 'ชื่อ', + 'templateContentHint': + 'กรุณาป้อนเนื้อหาเทมเพลต! เคล็ดลับ: กดปุ่ม AI ด้านบนเพื่อสร้างเนื้อหาเทมเพลตอย่างรวดเร็วตามชื่อและคำอธิบายที่คุณป้อน', + 'inputNameHint': 'กรุณาป้อนชื่อ', + 'inputDescHint': 'กรุณาป้อนคำอธิบาย', + 'custom': 'กำหนดเอง', + 'pleaseEnter': 'กรุณากรอก', + 'viewAll': 'ดูทั้งหมด', + 'recordingLanguage': 'ภาษาที่บันทึก', + 'chineseSimplified': 'ภาษาจีนกลาง (ตัวย่อ)', + 'meetingGenerateNow': 'สร้างตอนนี้', + 'keyEventsAnalyzed': 'วิเคราะห์เหตุการณ์สำคัญแล้ว {count} รายการ', + 'aiAnalysisDesc': + 'การวิเคราะห์ด้วย AI จะระบุเหตุการณ์สำคัญในบันทึก เพื่อให้คุณเลือกเหตุการณ์ที่สำคัญสำหรับการสร้างด้วย AI', + + // Meeting模块 - 文件操作 + 'importing': 'กำลังนำเข้า...', + 'batchImporting': 'กำลังนำเข้าทีละชุด...', + 'importingLocalRecordings': 'กำลังนำเข้าการบันทึกในเครื่อง...', + 'importFailed': 'นำเข้าไฟล์ไม่สำเร็จ: {filePath}, ข้อผิดพลาด: {error}', + 'importSuccess': 'นำเข้าการบันทึกในเครื่องสำเร็จ {count} รายการ', + 'importError': 'นำเข้าไม่สำเร็จ: {error}', + 'pleaseSelectAudioFile': 'กรุณาเลือกไฟล์เสียง', + 'shareAudio': 'แชร์เสียงการประชุม', + 'shareComplete': 'แชร์เสร็จสิ้น!', + 'shareFailed': 'แชร์ไม่สำเร็จ: {error}', + 'fileProcessingFailed': + 'ประมวลผลไฟล์ไม่สำเร็จ: {filePath}, ข้อผิดพลาด: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'บันทึกแผนผังความคิด', + 'shareMindMap': 'แชร์แผนผังความคิด', + 'shareSuccess': 'แชร์สำเร็จ', + + // Meeting模块 - AI问答 + 'askAI': 'ถาม AI ...', + 'askAIPrompt': 'วันนี้ให้ช่วยอะไรได้บ้าง?', + 'continueAsk': 'ถามต่อ', + 'todoList': 'รายการสิ่งที่ต้องทำ', + 'extractConclusion': 'สกัดข้อสรุป', + 'generateKeyIndicators': 'สร้างตัวชี้วัดสำคัญ', + + // Meeting模块 - 分享与导出 + 'shareLink': 'แชร์ลิงก์', + 'copyTranscript': 'คัดลอกถอดเสียง', + 'copySummary': 'คัดลอกสรุป', + 'exportAudio': 'ส่งออกเสียง', + 'exportTranscript': 'ส่งออกถอดเสียง', + 'shareMeetingAudio': 'แชร์เสียงการประชุม', + 'exportSummary': 'ส่งออกสรุป', + 'exportAs': 'ส่งออกเป็น', + 'exportingPDF': 'กำลังส่งออก PDF...', + 'export': 'ส่งออก', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'นำไปใช้กับทุกย่อหน้าของผู้พูดคนนี้', + 'summaryWillBeUpdatedAutomatically': 'สรุปจะอัปเดตอัตโนมัติตามเทมเพลต', + 'nameCurrentSpeaker': 'ตั้งชื่อผู้พูดปัจจุบัน', + 'recentlyUsedNames': 'ชื่อที่ใช้ล่าสุด', + 'applyToCurrentParagraph': 'ใช้กับย่อหน้าปัจจุบัน', + 'totalTime': 'เวลารวม', + 'summarySpeakerWillBeUpdatedAutomatically': 'ผู้พูดในสรุปจะอัปเดตอัตโนมัติ', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'ซิงค์ไปยังคลาวด์', + 'syncToCloudTip': + 'ซิงค์การบันทึกของคุณไปยังคลาวด์โดยอัตโนมัติ คุณสามารถเล่น จัดการ และแชร์การบันทึกผ่าน 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', - - // 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', - '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', + 'enabled': 'เปิดใช้งาน', + 'disabled': 'ปิดใช้งาน', + 'myVoitransDevice': 'อุปกรณ์ VOITRANS ของฉัน', + 'helpAndFeedback': 'ความช่วยเหลือและข้อเสนอแนะ', + 'aboutVoitrans': 'เกี่ยวกับ VOITRANS', + 'meetingDays': 'วัน', + 'meetingHours': 'ชั่วโมง', + 'voitransAiMember': 'สมาชิก Voitrans AI', + 'unlockStarterMember': 'ปลดล็อกสมาชิก Starter', + 'bindDeviceToActivate': 'ผูกอุปกรณ์ Voitrans เพื่อเปิดใช้งานสมาชิก Starter', + 'unlockNow': 'ปลดล็อกตอนนี้', + + // Meeting模块 - 会员与升级 + 'comparison': 'เปรียบเทียบ', + 'detailedInfo': 'ข้อมูลรายละเอียด', + 'monthlyTranscriptionTime': 'เวลาถอดเสียงต่อเดือน', + 'unlimited': 'ไม่จำกัด', + 'professionalTemplates': 'เทมเพลตมืออาชีพ', + 'limited': 'จำกัด', + 'fullTemplates': 'เทมเพลตครบชุด', + 'professionalTerms': 'คำศัพท์เฉพาะทาง', + 'customTemplates': 'เทมเพลตกำหนดเอง', + 'visualMindMap': 'แผนผังความคิดแบบภาพ', + 'speakerIdentification': 'ระบุผู้พูด', + 'aiVoiceEnhancement': 'เพิ่มคุณภาพเสียงด้วย AI', + 'audioImport': 'นำเข้าเสียง', + 'multipleExportFormats': 'หลายรูปแบบการส่งออก', + 'professionalSummaryTemplates': 'เทมเพลตสรุปมืออาชีพ', + 'professionalTemplateDesc': + 'ออกแบบเทมเพลตแบบมืออาชีพเพื่อเพิ่มประสิทธิภาพงาน ปรับให้เหมาะกับความต้องการของอุตสาหกรรม', + 'customTemplateDesc': + 'คุณสามารถปรับแต่งพรอมต์สรุปตามต้องการ และใช้สร้างสรุปที่ต้องการ', + 'askAiDesc': + 'สกัดข้อมูลเชิงลึกจากบันทึกอย่างชาญฉลาด สร้างตารางข้อมูล ข้อสรุปสำคัญ รายการสิ่งที่ต้องทำ อีเมลรายงาน และเนื้อหาแบบจัดรูปแบบอื่นๆ ได้ในคลิกเดียว', + 'visualMindMapDesc': + 'นอกเหนือจากสรุป—จัดระเบียบและแสดงจุดสำคัญเป็นแผนผังความคิด เพื่อเข้าใจข้อความเต็มได้มีประสิทธิภาพยิ่งขึ้น', + 'templateCommunityDesc': + 'ค้นพบ แบ่งปัน และรับแรงบันดาลใจจากคลังเทมเพลตที่ผู้ใช้สร้าง', + 'speakerIdentificationDesc': + 'การถอดเสียงจะรองรับการระบุผู้พูด ช่วยถ่ายทอดเนื้อหาการประชุมหรือการโทรได้ชัดเจนขึ้น และทำให้สรุปแม่นยำขึ้น', + 'privateCloudSyncDesc': + 'การบันทึกและถอดเสียงของคุณจะถูกเก็บอย่างปลอดภัยบนเซิร์ฟเวอร์คลาวด์เฉพาะ พร้อมการเข้ารหัสเต็มรูปแบบขณะอัปโหลดและดาวน์โหลด เพื่อความเป็นส่วนตัวและความปลอดภัย', + 'aiVoiceEnhancementDesc': + 'การเพิ่มคุณภาพเสียงด้วย AI รองรับการลดเสียงรบกวนหลายระดับ ช่วยกำจัดเสียงพื้นหลัง เพิ่มความชัดของเสียง และปรับปรุงคุณภาพการเล่น', + 'audioImportDesc': + 'นำเข้าไฟล์เสียงจากเครื่องหรือแอปภายนอกได้ง่าย เช่น Voice Memos, Google Drive เป็นต้น', + 'multipleExportFormatsDesc': + 'ส่งออกการบันทึกเสียง ข้อความถอดเสียง และสรุปได้หลายรูปแบบ (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.', + 'unlimitedMonthlyDesc': + 'ทดลองฟรี 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', + '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'นำไปใช้กับทุกย่อหน้าของผู้พูดคนนี้', - 'summaryWillBeUpdatedAutomatically': 'สรุปจะอัปเดตอัตโนมัติตามเทมเพลต', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'validityPeriod': '*ระยะเวลามีผลใช้: ', + 'validityNote': 'เริ่มใช้งานทันทีหลังซื้อ มีอายุ 2 ปีหลังจากเปิดใช้งาน', + 'purchase': 'ซื้อ', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'ภาษาที่บันทึก', + 'cantonese': 'กวางตุ้ง', + 'sichuan': 'สำเนียงเสฉวน', + 'shanghai': 'สำเนียงเซี่ยงไฮ้', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'ภาษาที่ไม่รู้จัก', + 'analysisFailed': 'การวิเคราะห์ล้มเหลว กรุณาลองใหม่ภายหลัง', + 'transcriptionFailed': 'การถอดเสียงล้มเหลว กรุณาลองใหม่ภายหลัง', + 'summaryFailed': 'สรุปล้มเหลว กรุณาลองใหม่ภายหลัง', + 'summaryFailedShort': 'สรุปล้มเหลว', + 'transcriptionFailedShort': 'การถอดเสียงล้มเหลว', + + // Meeting模块 - 播放器 + 'playerNotReady': 'เครื่องเล่นเสียงยังไม่พร้อม กรุณารอสักครู่', + 'playFailed': 'เล่นไม่สำเร็จ', + 'audioFileNotFound': 'ไม่พบไฟล์เสียง', + 'fetchingAudio': 'กำลังดึงเสียงจากคลาวด์...', + 'playerLoadFailed': 'โหลดเครื่องเล่นเสียงไม่สำเร็จ', // 设置页 "systemSettings": "การตั้งค่าระบบ", @@ -619,9 +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": "การตั้งค่าระบบ", @@ -634,7 +758,8 @@ const Map thTH = { "privacySettings": "การตั้งค่าความเป็นส่วนตัว", "privacySettingsInfo": "จัดการการรวบรวมข้อมูลและสิทธิ์", "permissionManagement": "การจัดการสิทธิ์", // 权限管理 - "permissionManagementInfo": "จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置 + "permissionManagementInfo": + "จัดการการตั้งค่าสิทธิ์ของแอปพลิเคชัน", // 管理应用权限设置 "aboutApplication": "เกี่ยวกับแอปพลิเคชัน", "versions": "เวอร์ชัน", "checkUpdates": "ตรวจสอบการอัปเดต", @@ -643,9 +768,11 @@ const Map thTH = { "voiceServiceInfo": "เลือกบริการรู้จำและสังเคราะห์เสียง", "selectVoiceService": "เลือกบริการเสียง", "azureVoiceService": "บริการเสียง Azure", - "azureVoiceServiceInfo": "บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง", + "azureVoiceServiceInfo": + "บริการเสียงบนคลาวด์ของ Microsoft รองรับการสังเคราะห์และรู้จำเสียงคุณภาพสูง", "flutterVoiceService": "บริการเสียงในเครื่อง Flutter", - "flutterVoiceServiceInfo": "บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต", + "flutterVoiceServiceInfo": + "บริการเสียงในเครื่องของอุปกรณ์ สามารถใช้งานได้โดยไม่ต้องเชื่อมต่ออินเทอร์เน็ต", 'timbreService': 'บริการโทนเสียง', 'timbreServiceInfo': 'เลือกบริการสังเคราะห์เสียงด้วยโทนเสียง', 'defaultTimbre': 'โทนเสียงเริ่มต้น', @@ -659,41 +786,31 @@ const Map thTH = { "bleHeadsetFirmwareUpgrade": "อัปเกรดเวอร์ชันเฟิร์มแวร์หูฟัง BLE", "deviceManagement": "การจัดการอุปกรณ์", "manageConnectedDevices": "จัดการอุปกรณ์บลูทูธที่จับคู่แล้ว", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'คุณใช้เวอร์ชันล่าสุดแล้ว {version}', 'checkUpdateFailed': 'ตรวจสอบการอัปเดตล้มเหลว', 'networkErrorRetry': 'ข้อผิดพลาดเครือข่าย กรุณาลองใหม่ในภายหลัง', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "แชทเสียงแบบเรียลไทม์", - "realtimeVoiceChatInfo": "สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)", + "realtimeVoiceChatInfo": + "สัมผัสประสบการณ์การโต้ตอบด้วยเสียงอัจฉริยะ (ตัวอย่างฟังก์ชัน)", "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", - -//Agent 模块 - // agent View + "noDevicesBound": "ยังไม่มีอุปกรณ์ที่ผูก", + "pleaseBindDeviceFirst": "โปรดผูกอุปกรณ์ก่อนเพื่อจัดการ", + "noMacAddress": "ไม่มีที่อยู่ MAC", + "licenseCode": "รหัสไลเซนส์", + "confirmUnbind": "ยืนยันการยกเลิกการผูก", + "confirmUnbindMessage": + "คุณแน่ใจหรือไม่ว่าต้องการยกเลิกการผูกอุปกรณ์ \"{deviceName}\"?", + "confirmUnbindAction": "ยืนยันการยกเลิกการผูก", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "ล้างประวัติการแชท", "online": "ออนไลน์", @@ -721,49 +838,54 @@ const Map thTH = { "loadMoreMessages": "โหลดข้อความเพิ่มเติม...", "loadFailedClickRetry": "โหลดล้มเหลว คลิกเพื่อลองใหม่", "swipeUpForMore": "ปัดขึ้นเพื่อดูเพิ่มเติม", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "callingTool": "ฉันกำลังช่วยคุณอยู่ กรุณารอสักครู่!", // 正在帮您,请稍等! + "voice_interrupt": "ขัดจังหวะ", // 语音打断 + 'voice_interrupt_tip': + 'เมื่อเปิดใช้งาน: AI จะไม่ถูกขัดจังหวะโดยเสียงของคุณขณะพูด และสามารถจัดการได้เพียงหนึ่งรอบการสนทนา หากต้องการเริ่มรอบใหม่ เพียงพูดคำปลุก', + + // Agent模块 - 预设提示词 + "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' + 'มีอะไรให้ช่วยไหม?', 'microphonePermission': 'ไมโครโฟน', - 'voiceRecognitionPermissionText': 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน', - 'voiceTranslationPermissionText': 'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน', - 'phoneCallPermissionText': 'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง', - 'permissionDeniedText': 'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน', + 'voiceRecognitionPermissionText': + 'ฟังก์ชันรู้จำเสียงต้องการการเข้าถึงไมโครโฟน', + 'voiceTranslationPermissionText': + 'ฟังก์ชันรู้จำและแปลเสียงต้องการการเข้าถึงไมโครโฟน', + 'phoneCallPermissionText': + 'ฟังก์ชันโทรออกต้องการการเข้าถึงไมโครโฟนสำหรับการโทรด้วยเสียง', + 'permissionDeniedText': + 'คุณได้ปฏิเสธการอนุญาตใช้ไมโครโฟนอย่างถาวร โปรดไปที่การตั้งค่าระบบเพื่อเปิดใช้งาน', 'startVoiceInput': 'เริ่มการป้อนข้อมูลด้วยเสียง', 'startPhoneCallMode': 'เริ่มโหมดโทรศัพท์ เริ่มการป้อนข้อมูลด้วยเสียง', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'ป้อนข้อความของคุณที่นี่...', // 全屏编辑器输入提示 'characterCount': '{count} ตัวอักษร', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'คัดลอก', 'copySuccess': 'คัดลอกสำเร็จ', 'report': 'รายงาน', 'submitSuccess': 'ส่งสำเร็จ', 'submitFailed': 'ส่งล้มเหลว', 'reportSubmitted': 'รายงานถูกส่งแล้ว เราจะดำเนินการโดยเร็วที่สุด', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'เป็นอันตราย/ไม่ปลอดภัย', 'pornographicVulgar': 'ลามกอนาจาร', 'misleadingAttack': 'ทำให้เข้าใจผิด/โจมตี', @@ -771,18 +893,24 @@ const Map thTH = { 'privacyRelated': 'เกี่ยวกับความเป็นส่วนตัว', 'copyrightViolation': 'ละเมิดลิขสิทธิ์ ชื่อเสียง ฯลฯ ของฉัน', 'other': 'อื่นๆ', - 'reportDescriptionHint': 'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'เราต้องการทราบเหตุผลที่คุณรายงาน คุณสามารถอธิบายปัญหาที่คุณพบได้', 'generatedByAi': 'สร้างโดย AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'การเรียกใช้เครื่องมือ', + 'noResult': 'ไม่มีผลลัพธ์', + 'noToolCallContentToCopy': 'ไม่มีเนื้อหาการเรียกใช้เครื่องมือให้คัดลอก', + 'toolCallDetails': 'รายละเอียดการเรียกใช้เครื่องมือ:', + 'toolCallContentCopied': + 'คัดลอกเนื้อหาการเรียกใช้เครื่องมือไปยังคลิปบอร์ดแล้ว', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'นี่คือเพลงที่แนะนำบางส่วน:', 'playList': 'เพลย์ลิสต์', 'moreMusic': 'เพลงเพิ่มเติม', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'กม.', // 公里单位 'meters': 'ม.', // 米单位 'hours': 'ชม.', // 小时单位 @@ -797,19 +925,49 @@ const Map thTH = { "bicycling": "ขี่จักรยาน", "tsransit": "ขนส่งสาธารณะ", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'เลือกแอปนำทาง', + 'amapMap': 'Amap', + 'useAmapNavigation': 'นำทางด้วย Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'นำทางด้วย Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'นำทางด้วย Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'นำทางด้วย Apple Maps', + 'builtInNavigation': 'นำทางในตัว', + 'useBuiltInNavigation': 'นำทางด้วยแผนที่ในตัว', + 'navigationStartFailed': 'ไม่สามารถเริ่มการนำทางได้', + 'cannotPlayMusicListRetryLater': + 'ไม่สามารถเล่นรายการเพลงได้ โปรดลองใหม่ภายหลัง', + 'cannotPlaySong': 'ไม่สามารถเล่นเพลงได้', + 'openMapError': 'เกิดข้อผิดพลาดขณะเปิดแผนที่', + 'pleaseInstallAmapApp': 'โปรดติดตั้งแอป Amap ก่อน', + 'pleaseInstallBaiduMapApp': 'โปรดติดตั้งแอป Baidu Maps ก่อน', + 'appleMapStartFailed': 'ไม่สามารถเปิด Apple Maps ได้', + 'appleMapUnavailable': 'Apple Maps ไม่พร้อมใช้งาน', + 'openAppleMapError': 'เกิดข้อผิดพลาดขณะเปิด Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'กำลังสอบถามสภาพอากาศ:', 'highest': 'สูงสุด', 'lowest': 'ต่ำสุด', 'futureForecast': 'พยากรณ์อากาศล่วงหน้า', 'hotWeatherTip': 'วันนี้อากาศร้อน โปรดระวังโรคลมแดด ดื่มน้ำมากๆ', - 'coldWeatherTip': 'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด', - 'rainyWeatherTip': 'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง', - 'snowyWeatherTip': 'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว', - 'foggyWeatherTip': 'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก', - 'windyWeatherTip': 'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น', - 'sunnyWeatherTip': 'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก', - 'temperatureDifferenceTip': 'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม', + 'coldWeatherTip': + 'วันนี้อากาศเย็น โปรดใส่ใจเรื่องความอบอุ่นเมื่อออกไปข้างนอก ระวังเป็นหวัด', + 'rainyWeatherTip': + 'วันนี้มีฝน โปรดพกร่มเมื่อออกไปข้างนอก ระมัดระวังในการเดินทาง', + 'snowyWeatherTip': + 'วันนี้มีหิมะ ถนนลื่นโปรดระวังความปลอดภัย เตรียมมาตรการป้องกันความหนาว', + 'foggyWeatherTip': + 'วันนี้มีหมอก ทัศนวิสัยต่ำ โปรดสวมหน้ากากเมื่อออกไปข้างนอก', + 'windyWeatherTip': + 'วันนี้ลมแรง โปรดระวังความปลอดภัยเมื่อออกไปข้างนอก ยึดของให้แน่น', + 'sunnyWeatherTip': + 'วันนี้แดดจัด รังสียูวีแรง โปรดป้องกันแสงแดดเมื่อออกไปข้างนอก', + 'temperatureDifferenceTip': + 'วันนี้อุณหภูมิต่างกันมากระหว่างกลางวันและกลางคืน โปรดเพิ่มหรือลดเสื้อผ้าให้เหมาะสม', 'comfortableWeatherTip': 'วันนี้อากาศดี เป็นเวลาที่ดีสำหรับกิจกรรมกลางแจ้ง', "monday": "จ.", "tuesday": "อ.", @@ -818,18 +976,8 @@ const Map thTH = { "friday": "ศ.", "saturday": "ส.", "sunday": "อา.", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "แจ่มใส", "partlyCloudy": "มีเมฆบางส่วน", "partlySunny": "มีแดดสลับกับเมฆ", @@ -850,7 +998,139 @@ const Map thTH = { "haze": "หมอกควัน", "strongWind": "ลมแรง", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "แปลรูปภาพ", + "textTranslation": "แปลข้อความ", + + // 翻译模块 - 主页 + "translationHistory": "ประวัติการแปล", + "enableRecording": "เปิดใช้งานการบันทึก", + "viewAudioFiles": "ดูไฟล์เสียง", + "headsetUser": "ผู้ใช้หูฟัง", + "phoneUser": "ผู้ใช้โทรศัพท์", + "selectSourceLanguage": "เลือกภาษาต้นทาง", + "selectTargetLanguage": "เลือกภาษาเป้าหมาย", + "me": "ฉัน", + "counterPart": "คู่สนทนา", + "bluetoothCallStateError": + "โปรดตรวจสอบว่าหูฟัง Bluetooth เชื่อมต่อกับโทรศัพท์แล้วและอยู่ในสถานะกำลังโทร", + "autoDetect": "ตรวจจับอัตโนมัติ", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'ปิดหน้าต่างลอย', + 'enableFloatingWindow': 'เปิดหน้าต่างลอย', + 'permissionTip': 'คำแนะนำสิทธิ์', + 'micPermissionRequiredForRecording': + 'จำเป็นต้องมีสิทธิ์ไมโครโฟนเพื่อบันทึกเสียง', + 'deleteTranslationRecordError': 'เกิดข้อผิดพลาดขณะลบบันทึกการแปล: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "ตรวจจับภาษาไม่สำเร็จ", + "translationFailed": "แปลไม่สำเร็จ", + "translating": "กำลังแปล", + "translate": "แปล", + "pleaseInputText": "โปรดป้อนข้อความ", + "inputTextToTranslate": "กรุณากรอกข้อความที่ต้องการแปล", + "textTooLong": "ข้อความยาวเกินไป สูงสุด 5000 อักขระ", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "ยังไม่มีประวัติ", + "historyRecords": "ประวัติการแปล", + "clearResults": "ล้างผลลัพธ์", + "clearHistory": "ล้างประวัติ", + "clearHistoryConfirm": + "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", + "unknownLanguage": "ภาษาที่ไม่รู้จัก", + "deleteSessionRecord": "ลบบันทึกเซสชัน", + "deleteSessionConfirm": + "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", + + // 翻译模块 - 图片翻译 + "selectImageSource": "เลือกแหล่งที่มาของรูปภาพ", + "imagePreview": "ดูตัวอย่างรูปภาพ", + "translationResult": "ผลลัพธ์การแปล", + "recognitionResult": "ผลการรู้จำ", + "translatedImagePreview": "ดูตัวอย่างรูปภาพที่แปลแล้ว", + "translatedImageLoadFailed": "ไม่สามารถโหลดรูปภาพที่แปลแล้วได้", + "pleaseSelectImage": "โปรดเลือกรูปภาพ", + "imageLoadFailed": "โหลดรูปภาพไม่สำเร็จ", + "imageQuality": "คุณภาพรูปภาพ", + "maxSize": "ขนาดสูงสุด", + "close": "ปิด", + "setImageQuality": "ตั้งค่าคุณภาพรูปภาพ", + "currentQuality": "คุณภาพปัจจุบัน: @value%", + "setMaxSize": "ตั้งค่าขนาดสูงสุด", + "currentMaxSize": "ปัจจุบัน: @pxpx", + "waitingForAction": "กำลังรอการดำเนินการ", + "pleaseSelectImageToStart": "โปรดเลือกรูปภาพเพื่อเริ่มต้น", + "chooseImage": "เลือกรูปภาพ", + "openingCamera": "กำลังเปิดกล้อง...", + "openingPhotoAlbum": "กำลังเปิดอัลบั้มรูป...", + "cancelled": "ยกเลิกแล้ว", + "userCancelledSelection": "ผู้ใช้ยกเลิกการเลือก", + "translatingImage": "กำลังแปลรูปภาพ", + "callingImageTranslateService": "กำลังเรียกบริการแปลรูปภาพ...", + "savingRecord": "กำลังบันทึกข้อมูล", + "savingTranslationResult": "กำลังบันทึกผลการแปล...", + "translationCompleted": "แปลเสร็จสิ้น", + "allStepsCompleted": "เสร็จสิ้นทุกขั้นตอน", + "processingFailed": "ประมวลผลไม่สำเร็จ", + "imageProcessingOrTranslationFailed": + "การประมวลผลรูปภาพหรือการแปลไม่สำเร็จ โปรดลองอีกครั้ง\nข้อผิดพลาด: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": "API แปลรูปภาพส่งคืนผลลัพธ์ว่าง", + "imageTranslationFailedTryLater": + "แปลรูปภาพไม่สำเร็จ ปัญหาเครือข่ายหรือถึงขีดจำกัดการเรียกใช้ โปรดลองภายหลัง", + "imageTranslationApiException": + "เกิดข้อยกเว้นของ API แปลรูปภาพ ตรวจสอบเครือข่ายแล้วลองใหม่", + "permissionRequired": "ต้องขออนุญาต", + "cameraPermissionRequired": "ต้องมีสิทธิ์กล้องเพื่อถ่ายรูป", + "photoAlbumPermissionRequired": "ต้องมีสิทธิ์อัลบั้มรูปเพื่อเลือกรูปภาพ", + "translationDetails": "รายละเอียดการแปล", + "originalImage": "รูปภาพต้นฉบับ", + "sourceLanguage": "ภาษาต้นทาง", + "targetLanguage": "ภาษาเป้าหมาย", + "translationTime": "เวลาการแปล", + "shareInDevelopment": "ฟีเจอร์แชร์กำลังอยู่ระหว่างพัฒนา", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "แปลไฟล์เสียง", + "noAudioFiles": "ยังไม่มีไฟล์เสียง", + "calculating": "กำลังคำนวณ...", + "playing": "กำลังเล่น...", + "paused": "หยุดชั่วคราว", + "clickToPlay": "คลิกเพื่อเล่น", + "rename": "เปลี่ยนชื่อ", + "smartTranscription": "การถอดเสียงอัจฉริยะ", + "renameAudioFile": "เปลี่ยนชื่อไฟล์เสียง", + "enterNewFileName": "กรุณาใส่ชื่อไฟล์ใหม่", + + // 翻译模块 - 翻译详情 + "originalRecord": "บันทึกต้นฉบับ", + "recordSummary": "สรุปบันทึก", + "clickToGenerateSummary": "คลิกปุ่มด้านล่างเพื่อสร้างสรุปเซสชัน", + "summaryContent": "เนื้อหาสรุป", + "copied": "คัดลอกแล้ว", + "summaryCopiledToClipboard": "สรุปถูกคัดลอกไปยังคลิปบอร์ดแล้ว", + "extractSummary": "ดึงข้อมูลสรุป", + "summaryGenerated": "สร้างสรุปแล้ว", + "generating": "กำลังสร้าง...", + "regenerate": "สร้างใหม่", + "summaryTimeoutMessage": + "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง", + "deleteTranslationRecord": "ลบบันทึกการแปล", + "deleteTranslationConfirm": + "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", + "originalText": "ข้อความต้นฉบับ", + "translatedText": "ข้อความที่แปลแล้ว", + "sessionSummary": "สรุปเซสชัน", + "cannotShare": "ไม่สามารถแชร์ได้", + "generateSummaryFirst": "กรุณาสร้างสรุปก่อน", + "translationSessionRecord": "บันทึกเซสชันการแปล", + + // 个人资料模块 "editProfile": "แก้ไขข้อมูลส่วนตัว", "avatar": "อวาตาร์", "nickname": "ชื่อเล่น", @@ -862,26 +1142,27 @@ const Map thTH = { "logout": "ออกจากระบบ", "logoutTips": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบบัญชีปัจจุบัน", 'deleteAccount': 'ลบบัญชี', - 'deleteAccountTips': 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 - 'networkConnectionFailed': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่', - 'serverTemporarilyUnavailable': 'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง', - 'loginExpiredPleaseRelogin': 'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง', + 'deleteAccountTips': + 'คุณแน่ใจหรือไม่ว่าต้องการลบบัญชีของคุณอย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้', + 'clean': 'ล้างแคช', + 'cleanTips': 'คุณแน่ใจหรือไม่ว่าต้องการล้างแคชส่วนตัว?', + 'networkConnectionFailed': + 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่ายแล้วลองใหม่', + 'serverTemporarilyUnavailable': + 'เซิร์ฟเวอร์ไม่สามารถตอบสนองได้ชั่วคราว โปรดลองใหม่ในภายหลัง', + 'loginExpiredPleaseRelogin': + 'การเข้าสู่ระบบหมดอายุแล้ว โปรดเข้าสู่ระบบอีกครั้ง', 'noPermissionForThisOperation': 'ไม่มีสิทธิ์ดำเนินการนี้', 'requestedResourceNotFound': 'ไม่พบทรัพยากรที่ร้องขอ', - 'imageProcessingFailedPleaseReselect': 'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง', + 'imageProcessingFailedPleaseReselect': + 'การประมวลผลรูปภาพล้มเหลว โปรดเลือกรูปภาพอีกครั้ง', 'operationFailedPleaseRetry': 'การดำเนินการล้มเหลว โปรดลองใหม่', 'serverReturnedError': 'เซิร์ฟเวอร์ส่งคืนข้อผิดพลาด', 'serverError': 'ข้อผิดพลาดของเซิร์ฟเวอร์', - 'networkConnectionFailedCheckSettings': 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย', - 'serverInternalErrorRetryLater': 'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', + 'networkConnectionFailedCheckSettings': + 'การเชื่อมต่อเครือข่ายล้มเหลว โปรดตรวจสอบการตั้งค่าเครือข่าย', + 'serverInternalErrorRetryLater': + 'ข้อผิดพลาดภายในเซิร์ฟเวอร์ โปรดลองใหม่ในภายหลัง', 'imageCompressionFailed': 'การบีบอัดรูปภาพล้มเหลว', 'avatarUpdateFailed': 'อัปเดตอวาตาร์ล้มเหลว', 'usernameCannotBeEmpty': 'ชื่อผู้ใช้ต้องไม่ว่างเปล่า', @@ -892,42 +1173,48 @@ const Map thTH = { 'logoutFailedRetry': 'ออกจากระบบล้มเหลว โปรดลองใหม่', 'accountPermanentlyDeleted': 'บัญชีถูกลบอย่างถาวรแล้ว', 'deleteAccountFailedRetry': 'ลบบัญชีล้มเหลว โปรดลองใหม่', - - // 账号服务相关 'clearUserDataFailed': 'ล้างข้อมูลผู้ใช้ล้มเหลว', // 清理用户数据失败 'deleteUserDataFailed': 'ลบข้อมูลผู้ใช้ล้มเหลว', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'ออกจากระบบบุคคลที่สามสำเร็จ', // 第三方登录退出成功 'thirdPartyLogoutFailed': 'ออกจากระบบบุคคลที่สามล้มเหลว', // 第三方登录退出失败 'signOutProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการออกจากระบบ', // 登出过程发生错误 - 'deleteAccountProcessError': 'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误 + 'deleteAccountProcessError': + 'เกิดข้อผิดพลาดระหว่างกระบวนการลบบัญชี', // 删除账号过程发生错误 'userDataClearSuccess': 'ล้างข้อมูลผู้ใช้สำเร็จ', // 用户数据清理成功 'allUserDataClearSuccess': 'ล้างข้อมูลผู้ใช้ทั้งหมดสำเร็จ', // 所有用户数据清理成功 - 'accountServiceInitialized': 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化 + 'accountServiceInitialized': + 'AccountService ได้รับการเริ่มต้นแล้ว', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'ที่เก็บข้อมูล', + 'meetingStoragePermissionExplanation': + 'เราต้องการสิทธิ์เข้าถึงที่เก็บข้อมูลเพื่อให้คุณเลือกและอัปโหลดไฟล์เสียงได้', + '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', - //'bluetooth': '蓝牙', - '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': 'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน', + 'calendarFullAccessPermissionDesc': + 'ใช้สำหรับอ่านและจัดการกิจกรรมและการแจ้งเตือนในปฏิทิน', 'locationPermissionDesc': 'ใช้สำหรับรับข้อมูลตำแหน่งปัจจุบัน', 'appFunctionNeeds': 'ฟังก์ชันแอปพลิเคชันต้องการ', 'authorized': 'ได้รับอนุญาต', @@ -939,65 +1226,320 @@ const Map thTH = { 'permissionRequestError': 'เกิดข้อผิดพลาดขณะขอสิทธิ์', 'phonePermissionDetailDesc': 'ฟังก์ชันโทรออกต้องการสิทธิ์โทรศัพท์', 'smsPermissionDetailDesc': 'ฟังก์ชันส่ง SMS ต้องการสิทธิ์ SMS', - 'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', - 'calendarWritePermissionDetailDesc': 'การสร้างกิจกรรมในปฏิทินต้องการสิทธิ์เขียนปฏิทิน', - 'calendarFullAccessPermissionDetailDesc': 'การจัดการกิจกรรมในปฏิทินต้องการสิทธิ์เข้าถึงปฏิทินเต็มรูปแบบ', + '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', - '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': 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ', - 'permanentDenialText': 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน', + 'contactsPermissionDesc': 'ใช้เพื่อเข้าถึงข้อมูลรายชื่อผู้ติดต่อ', + 'contactsPermissionDetailDesc': + 'ฟังก์ชันการโทรและ SMS ต้องใช้สิทธิ์รายชื่อผู้ติดต่อเพื่อเลือกผู้ติดต่อ', + 'bluetoothPermissionDesc': 'ใช้สำหรับเชื่อมต่อและจัดการอุปกรณ์ Bluetooth', + 'bluetoothPermissionDetailDesc': + 'การเชื่อมต่อหูฟัง Bluetooth และอุปกรณ์อื่นๆ ต้องใช้สิทธิ์ Bluetooth', + 'bluetoothScanPermissionDesc': 'ใช้สำหรับสแกนอุปกรณ์ Bluetooth ใกล้เคียง', + 'bluetoothScanPermissionDetailDesc': + 'การสแกนอุปกรณ์ Bluetooth ใกล้เคียงต้องใช้สิทธิ์สแกน Bluetooth', + 'bluetoothConnectPermissionDesc': 'ใช้สำหรับเชื่อมต่ออุปกรณ์ Bluetooth', + 'bluetoothConnectPermissionDetailDesc': + 'การเชื่อมต่ออุปกรณ์ Bluetooth ต้องใช้สิทธิ์เชื่อมต่อ Bluetooth', + 'notificationPermissionDesc': 'ใช้สำหรับส่งการแจ้งเตือน', + 'notificationPermissionDetailDesc': + 'แอปต้องใช้สิทธิ์การแจ้งเตือนเพื่อส่งการแจ้งเตือนและข้อความสำคัญให้คุณ', + 'appNeedsPermissionForFullFunction': + 'แอปพลิเคชันต้องการสิทธิ์นี้เพื่อให้บริการเต็มรูปแบบ', + 'permanentDenialText': + 'คุณได้ปฏิเสธสิทธิ์ {permission} อย่างถาวร โปรดไปที่การตั้งค่าแอปเพื่อเปิดใช้งาน', 'goToSettings': 'ไปที่การตั้งค่า', - - // 权限申请 - '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.', -//'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.', + 'bluetoothScan': 'สแกน Bluetooth', + 'bluetoothConnect': 'เชื่อมต่อ Bluetooth', + 'bluetoothScanExplanation': + 'แอปต้องใช้สิทธิ์สแกน Bluetooth เพื่อสแกนอุปกรณ์ Bluetooth ใกล้เคียง', + 'bluetoothConnectExplanation': + 'แอปต้องใช้สิทธิ์เชื่อมต่อ Bluetooth เพื่อเชื่อมต่อกับอุปกรณ์ Bluetooth', + 'locationForBluetoothExplanation': + 'แอปต้องใช้สิทธิ์ตำแหน่งเพื่อสแกนอุปกรณ์ Bluetooth', + 'bluetoothScanPermanentDenial': + 'คุณปฏิเสธสิทธิ์สแกน Bluetooth แบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', + 'bluetoothConnectPermanentDenial': + 'คุณปฏิเสธสิทธิ์เชื่อมต่อ Bluetooth แบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', + 'locationPermanentDenial': + 'คุณปฏิเสธสิทธิ์ตำแหน่งแบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งานด้วยตนเอง', + 'notificationPermission': 'การแจ้งเตือน', + 'locationPermission': 'ตำแหน่ง', + 'notificationPermissionExplanation': + 'ต้องใช้สิทธิ์การแจ้งเตือนเพื่อแสดงสถานะการเล่นเพลง', + 'locationPermissionExplanation': + 'ต้องใช้สิทธิ์ตำแหน่งเพื่อรับตำแหน่งปัจจุบัน', + 'notificationPermissionPermanentDenial': + 'คุณปฏิเสธสิทธิ์การแจ้งเตือนแบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งาน', + 'locationPermissionPermanentDenial': + 'คุณปฏิเสธสิทธิ์ตำแหน่งแบบถาวร โปรดไปที่การตั้งค่าเพื่อเปิดใช้งาน', + 'storagePermission': 'ที่เก็บข้อมูล', + 'microphonePermissionExplanation': 'เราต้องการสิทธิ์ไมโครโฟนเพื่อบันทึกเสียง', + 'storagePermissionExplanation': + 'เราต้องการสิทธิ์ที่เก็บข้อมูลเพื่อให้คุณเลือกและอัปโหลดไฟล์เสียงได้', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'ตรวจพบว่าคุณปฏิเสธสิทธิ์ไมโครโฟนแบบถาวร หากต้องการใช้ฟีเจอร์นี้ต่อ โปรดไปที่การตั้งค่าแอปและเปิดสิทธิ์ไมโครโฟนด้วยตนเอง', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'ตรวจพบว่าคุณปฏิเสธสิทธิ์ที่เก็บข้อมูลแบบถาวร หากต้องการใช้ฟีเจอร์นี้ต่อ โปรดไปที่การตั้งค่าแอปและเปิดสิทธิ์ที่เก็บข้อมูลด้วยตนเอง', + 'permissionUtilNeed': 'ต้องการ ', + 'permissionUtilPermission': ' สิทธิ์', + 'permissionUtilRestricted': ' สิทธิ์ถูกจำกัด', + 'permissionUtilRestrictedMessage': + 'ฟีเจอร์นี้ไม่พร้อมใช้งานหรือถูกจำกัดบนอุปกรณ์นี้ โปรดตรวจสอบการตั้งค่าอุปกรณ์หรือข้อจำกัดของระบบ', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'กำลังนำทาง', + 'native.notification.navigation.keepRunning': 'กำลังนำทาง โปรดเปิดแอปไว้', + 'native.notification.bleAgent.running': 'ตัวช่วยเสียงกำลังทำงาน', + 'native.notification.audioRecording.recording': + 'กำลังบันทึกเสียง แตะเพื่อกลับไปที่แอป', + 'native.notification.music.waiting': 'กำลังรอเล่น', + 'native.notification.music.previous': 'ก่อนหน้า', + 'native.notification.music.next': 'ถัดไป', + 'native.notification.music.play': 'เล่น', + 'native.notification.music.pause': 'หยุดชั่วคราว', + 'native.notification.qqMusic.playing': 'กำลังเล่นเพลง', + + // 版本更新 'newVersionFound': 'พบเวอร์ชันใหม่', // 版本更新对话框标题 'remindLater': 'เตือนภายหลัง', // 稍后提醒按钮 'updateNow': 'อัปเดตทันที', // 立即更新按钮 'checkUpdate': 'ตรวจสอบการอัปเดต', // 检查更新按钮 'updateFailed': 'อัปเดตล้มเหลว', // 更新失败提示 - 'cannotOpenAppStore': 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示 - 'updateErrorRetry': 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示 + 'cannotOpenAppStore': + 'ไม่สามารถเปิด App Store ได้ โปรดไปที่ App Store เพื่ออัปเดตด้วยตนเอง', // 无法打开应用商店提示 + 'updateErrorRetry': + 'เกิดข้อผิดพลาดระหว่างการอัปเดต โปรดลองใหม่ในภายหลัง', // 更新错误重试提示 + + // 配对模块 + "devicePairing": "การจับคู่อุปกรณ์", + "connectYourDeepSoundHeadset": "เชื่อมต่อหูฟัง Voitrans ของคุณ", + "bind": "ผูก", + "authorizeBind": "อนุญาตการผูก", + "enterCode": "กรุณาใส่รหัส", + "autoInputCode": "ป้อนรหัสอัตโนมัติ", + "skipBinding": "ข้ามการผูก", + "rescan": "สแกนอีกครั้ง", + "verifyingDevice": "กำลังตรวจสอบอุปกรณ์...", + "confirmBinding": "ยืนยันการผูก", + "associatingDevice": "กำลังเชื่อมโยงอุปกรณ์...", + "goToBluetoothSettings": "ไปที่การตั้งค่าบลูทูธ", + 'bluetooth': 'บลูทูธ', + "readyToPair": "พร้อมที่จะจับคู่", + "preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...", + "connectDeepSoundViaSystemBluetooth": + "กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน", + "deviceBindingConfirm": "ยืนยันการผูกอุปกรณ์...", + "establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...", + "waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...", + "pairingSuccessRedirecting": + "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...", + "ensureConnectedDeepSoundDevice": + "โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans", + "deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว", + "deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง", + "scanTimeoutEnsureDeviceNearby": + "การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ", + "networkError": "ข้อผิดพลาดเครือข่าย", + "authorizationFailedCheckCode": + "การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่", + "pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง", + 'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ', + 'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว', + 'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่', + 'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...', + 'ensureHeadsetOnAndPairingMode': + 'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่', + 'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...', + 'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...', + 'pairingSuccessful': 'การจับคู่สำเร็จ!', + 'enableBluetooth': 'เปิดใช้งานบลูทูธ', + 'grantPermissions': 'ให้สิทธิ์', + 'retryAssociation': 'ลองเชื่อมโยงอีกครั้ง', + 'retryAuthorization': 'ลองอนุญาตอีกครั้ง', + 'pleaseGrantNecessaryPermissions': 'กรุณาให้สิทธิ์ที่จำเป็น', + 'checkFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', + 'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ Voitrans', + 'verificationFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', + 'invalidDeviceAddress': 'ที่อยู่อุปกรณ์ไม่ถูกต้อง', + 'bleDeviceAssociationFailed': 'การเชื่อมโยงอุปกรณ์ BLE ล้มเหลว', + 'deviceAssociationFailedRetry': 'การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง', + 'bleConnectionTimeoutRetry': 'การเชื่อมต่อ BLE หมดเวลา โปรดลองอีกครั้ง', + 'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว', + 'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว', + 'deviceAuthorizationFailedCheckCode': + 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต', + 'bluetoothGuideTitle': 'ต้องเปิด Bluetooth ด้วยตนเอง', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'โปรดทำตามขั้นตอนต่อไปนี้:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'เปิด Bluetooth: การตั้งค่า → Bluetooth → เปิด', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'เชื่อมต่ออุปกรณ์: ค้นหาอุปกรณ์ของคุณใน "อุปกรณ์ของฉัน" แล้วแตะเพื่อเชื่อมต่อ', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': 'กลับไปที่แอปเพื่อดำเนินการจับคู่ต่อ', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'เคล็ดลับ: คุณสามารถกดค้างที่ไอคอน Bluetooth ในศูนย์ควบคุมเพื่อเข้าถึงการตั้งค่า Bluetooth ได้อย่างรวดเร็ว', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'เข้าใจแล้ว', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "รางวัลต้อนรับ", + "firstBindRewardDesc": "คุณได้รับรางวัลการผูกอุปกรณ์แล้ว", + "vipLevelLabel": "ระดับ VIP:", + "expiryLabel": "วันหมดอายุ:", + "notActivated": "ยังไม่เปิดใช้งาน", + "aiChatCreditsLabel": "เครดิตแชท AI:", + "translationCreditsLabel": "เครดิตการแปล:", + "meetingCreditsLabel": "เครดิตการประชุม:", + "ok": "OK", + + // 用户反馈模块 + "feedback": "ความคิดเห็นของผู้ใช้", + 'feedbackInfo': 'ให้ความคิดเห็นหรือข้อเสนอแนะ', + 'feedbackDescription': 'กรุณาอธิบายปัญหาที่คุณพบหรือข้อเสนอแนะของคุณ', + 'feedbackHint': 'กรุณาใส่ความคิดเห็นของคุณ...', + 'feedbackRequired': 'กรุณาใส่เนื้อหาความคิดเห็น', + 'contactInfo': 'ข้อมูลติดต่อ', + 'contactHint': 'อีเมล/หมายเลขโทรศัพท์ เพื่อให้เราสามารถติดต่อคุณได้', + 'submit': 'ส่ง', + 'feedbackSubmitSuccess': + 'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!', + 'feedbackSubmitFailed': 'ส่งความคิดเห็นล้มเหลว โปรดลองใหม่ในภายหลัง', + + // OTA升级模块 + "upgradeExitConfirm": + "กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก", + "deviceModel": "รุ่นอุปกรณ์", + "unknownDevice": "อุปกรณ์ที่ไม่รู้จัก", + "currentFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ปัจจุบัน", + "latestFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ล่าสุด", + "ota_newVersionFound": "พบเวอร์ชันใหม่", + "latestVersion": "เป็นเวอร์ชันล่าสุดแล้ว", + "gettingDeviceInfo": "กำลังรับข้อมูลอุปกรณ์...", + "keepDeviceConnected": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ", + "connectionFailed": "การเชื่อมต่อล้มเหลว", + "retryConnection": "ลองเชื่อมต่อใหม่", + "ota_updateNow": "อัปเดตทันที", + "otaVersionInfoFailed": "ไม่สามารถรับข้อมูลเวอร์ชันได้ กรุณาลองใหม่ภายหลัง", + "otaDeviceInfoUnavailable": + "ไม่สามารถรับข้อมูลอุปกรณ์ได้ โปรดตรวจสอบการเชื่อมต่อแล้วลองใหม่", + "otaProductInfoUnavailable": + "ไม่สามารถระบุอุปกรณ์ได้ โปรดเชื่อมต่อใหม่แล้วลองอีกครั้ง", + "otaFirmwareVersionInvalid": + "เวอร์ชันเฟิร์มแวร์ผิดปกติ โปรดเชื่อมต่อใหม่แล้วลองอีกครั้ง", + "keepConnectedDontClose": + "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน", + "doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ", + "charging": "กำลังชาร์จ", + "updateContent": "เนื้อหาการอัปเดต", + "removeEarbudsEnsureBattery": + "ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%", + + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'พบเวอร์ชันใหม่ @version', + 'otaConfirmUpdateNow': 'อัปเดตตอนนี้หรือไม่?', + 'otaUpdate': 'อัปเดต', + 'otaUpgradeSuccess': 'อัปเกรดสำเร็จ', + 'otaUpgradeCompleteRepair': + 'อัปเกรดเฟิร์มแวร์เสร็จสิ้น!\n\nอุปกรณ์จำเป็นต้องจับคู่ใหม่เพื่อให้ทำงานได้อย่างถูกต้อง ไปที่หน้าจับคู่ตอนนี้หรือไม่?', + 'otaPairLater': 'จับคู่ภายหลัง', + 'otaPairNow': 'จับคู่ตอนนี้', + 'okConfirm': 'OK', + // OTA升级模块 - 设备检查 + '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': + 'การอัปเดตนี้มีการปรับปรุงประสิทธิภาพและแก้ไขข้อบกพร่อง', + 'otaGetLatestVersionFailed': 'ไม่สามารถรับข้อมูลเวอร์ชันล่าสุดได้', + 'otaGetVersionInfoFailed': 'ไม่สามารถรับข้อมูลเวอร์ชันได้', + 'otaCheckingDeviceStatus': 'กำลังตรวจสอบสถานะอุปกรณ์...', + 'otaDownloadFailedCheckNetwork': + 'ดาวน์โหลดไม่สำเร็จ โปรดตรวจสอบการเชื่อมต่อเครือข่าย', + 'otaDownloadFailed': 'ดาวน์โหลดไม่สำเร็จ', + 'otaPreparingConnection': 'กำลังเตรียมการเชื่อมต่ออุปกรณ์...', + 'otaConnectingDevice': 'กำลังเชื่อมต่อกับอุปกรณ์...', + 'otaUpgradeStarted': 'เริ่มอัปเกรด OTA...', + 'otaUpgradeProgressWithPercent': 'ความคืบหน้า: @percent%', + 'otaUpgradeSuccessComplete': 'อัปเกรดเสร็จสมบูรณ์', + 'otaUpgradeFailedWithCode': 'อัปเกรดไม่สำเร็จ รหัสข้อผิดพลาด: @code', + 'otaUpgradeFailedTitle': 'อัปเกรดไม่สำเร็จ', + 'otaUpgradeFailedDesc': + 'โปรดตรวจสอบการเชื่อมต่ออุปกรณ์หรือแพ็กเกจอัปเดต รหัสข้อผิดพลาด: @code', + 'otaDeviceDisconnected': 'อุปกรณ์ถูกตัดการเชื่อมต่อ', + 'otaDeviceConnected': 'อุปกรณ์เชื่อมต่อแล้ว', + + // 音乐模块 + "noMusic": "ไม่มีเพลง", // 暂无音乐 + "noPlayingMusic": "ไม่มีเพลงที่กำลังเล่น", // 暂无播放音乐 + "unknownSong": "เพลงที่ไม่รู้จัก", // 未知歌曲 + "unknownArtist": "ศิลปินที่ไม่รู้จัก", // 未知歌手 + "playAll": "เล่นทั้งหมด", // 播放全部 + + // 语言名称 + "中文(简体)": "中文(简体)", + "中文(繁体)": "中文(繁体)", + "中文(香港繁体)": "中文(香港繁体)", + "英语": "ภาษาอังกฤษ", + "日语": "ภาษาญี่ปุ่น", + "韩语": "ภาษาเกาหลี", + "法语": "ภาษาฝรั่งเศส", + "西班牙语": "ภาษาสเปน", + "葡萄牙语": "ภาษาโปรตุเกส", + "意大利语": "ภาษาอิตาลี", + "德语": "ภาษาเยอรมัน", + "俄语": "ภาษารัสเซีย", + "波兰语": "ภาษาโปแลนด์", + "荷兰语": "ภาษาดัตช์", + "瑞典语": "ภาษาสวีเดน", + "捷克语": "ภาษาเช็ก", + "现代希腊语": "ภาษากรีกสมัยใหม่", + "罗马尼亚语": "ภาษาโรมาเนีย", + "匈牙利语": "ภาษาฮังการี", + "乌克兰语": "ภาษายูเครน", + "丹麦语": "ภาษาเดนมาร์ก", + "芬兰语": "ภาษาฟินแลนด์", + "挪威语": "ภาษานอร์เวย์", + "克罗地亚语": "ภาษาโครเอเชีย", + "加泰隆语": "ภาษาคาตาลัน", + "阿拉伯语": "ภาษาอาหรับ", + "泰语": "ภาษาไทย", + "越南语": "ภาษาเวียดนาม", + "印尼语": "ภาษาอินโดนีเซีย", + "印地语": "ภาษาฮินดี", + "土耳其语": "ภาษาตุรกี", + "马来语": "ภาษามลายู", + "孟加拉语": "ภาษาเบงกาลี", + "泰米尔语": "ภาษาทมิฬ", + "泰卢固语": "ภาษาเตลูกู", + "马拉提语": "ภาษามราฐี", + "乌尔都语": "ภาษาอูรดู", + "波斯语": "ภาษาเปอร์เซีย", + "斯瓦希里语": "ภาษาสวาฮีลี", - //国家列表 + // 国家列表 "邮箱": "อีเมล", "中国": "จีน", "美国": "สหรัฐอเมริกา", @@ -1115,293 +1657,4 @@ const Map thTH = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "ประวัติการแปล", - "enableRecording": "เปิดใช้งานการบันทึก", - "viewAudioFiles": "ดูไฟล์เสียง", - "headsetUser": "ผู้ใช้หูฟัง", - "phoneUser": "ผู้ใช้โทรศัพท์", - "selectSourceLanguage": "เลือกภาษาต้นทาง", - "selectTargetLanguage": "เลือกภาษาเป้าหมาย", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "ยังไม่มีประวัติ", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "ล้างประวัติ", - "clearHistoryConfirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างประวัติการแปลทั้งหมด การกระทำนี้ไม่สามารถย้อนกลับได้", - "unknownLanguage": "ภาษาที่ไม่รู้จัก", - "deleteSessionRecord": "ลบบันทึกเซสชัน", - "deleteSessionConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลทั้งหมดของเซสชันนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "แปลไฟล์เสียง", - "noAudioFiles": "ยังไม่มีไฟล์เสียง", - "calculating": "กำลังคำนวณ...", - "playing": "กำลังเล่น...", - "paused": "หยุดชั่วคราว", - "clickToPlay": "คลิกเพื่อเล่น", - "rename": "เปลี่ยนชื่อ", - "smartTranscription": "การถอดเสียงอัจฉริยะ", - "renameAudioFile": "เปลี่ยนชื่อไฟล์เสียง", - "enterNewFileName": "กรุณาใส่ชื่อไฟล์ใหม่", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "บันทึกต้นฉบับ", - "recordSummary": "สรุปบันทึก", - "clickToGenerateSummary": "คลิกปุ่มด้านล่างเพื่อสร้างสรุปเซสชัน", - "summaryContent": "เนื้อหาสรุป", - "copied": "คัดลอกแล้ว", - "summaryCopiledToClipboard": "สรุปถูกคัดลอกไปยังคลิปบอร์ดแล้ว", - "extractSummary": "ดึงข้อมูลสรุป", - "summaryGenerated": "สร้างสรุปแล้ว", - "generating": "กำลังสร้าง...", - "regenerate": "สร้างใหม่", - "summaryTimeoutMessage": "คำขอสร้างสรุปหมดเวลา อาจเป็นเพราะปัญหาเครือข่ายหรือเซิร์ฟเวอร์ไม่ว่าง", - "deleteTranslationRecord": "ลบบันทึกการแปล", - "deleteTranslationConfirm": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการแปลนี้ การกระทำนี้ไม่สามารถย้อนกลับได้", - "originalText": "ข้อความต้นฉบับ", - "translatedText": "ข้อความที่แปลแล้ว", - "sessionSummary": "สรุปเซสชัน", - "cannotShare": "ไม่สามารถแชร์ได้", - "generateSummaryFirst": "กรุณาสร้างสรุปก่อน", - "translationSessionRecord": "บันทึกเซสชันการแปล", - - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) - "devicePairing": "การจับคู่อุปกรณ์", - "connectYourDeepSoundHeadset": "เชื่อมต่อหูฟัง Voitrans ของคุณ", - "bind": "ผูก", - "authorizeBind": "อนุญาตการผูก", - "enterCode": "กรุณาใส่รหัส", - "autoInputCode": "ป้อนรหัสอัตโนมัติ", - "skipBinding": "ข้ามการผูก", - "rescan": "สแกนอีกครั้ง", - - "verifyingDevice": "กำลังตรวจสอบอุปกรณ์...", - "confirmBinding": "ยืนยันการผูก", - "associatingDevice": "กำลังเชื่อมโยงอุปกรณ์...", - "goToBluetoothSettings": "ไปที่การตั้งค่าบลูทูธ", - 'bluetooth': 'บลูทูธ', - - // 配对状态文本 - "readyToPair": "พร้อมที่จะจับคู่", - "preparingPairingEnvironment": "กำลังเตรียมสภาพแวดล้อมการจับคู่...", - "connectDeepSoundViaSystemBluetooth": "กรุณาเชื่อมต่อกับอุปกรณ์ Voitrans ผ่านบลูทูธของระบบก่อน", - "deviceBindingConfirm": "ยืนยันการผูกอุปกรณ์...", - "establishingDeviceAssociation": "กำลังสร้างการเชื่อมโยงอุปกรณ์...", - "waitingCompletePairing": "กรุณารอสักครู่ กำลังทำการจับคู่ให้เสร็จสิ้น...", - "pairingSuccessRedirecting": "การจับคู่สำเร็จ! กำลังเปลี่ยนเส้นทางไปยังหน้าหลัก...", - - // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "โปรดตรวจสอบให้แน่ใจว่าคุณเชื่อมต่อกับอุปกรณ์ Voitrans", - "deviceAlreadyBoundToOtherAccount": "อุปกรณ์นี้ถูกผูกไว้กับบัญชีอื่นแล้ว", - "deviceAssociationFailed": "การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง", - "scanTimeoutEnsureDeviceNearby": "การสแกนหมดเวลา โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์อยู่ใกล้ๆ", - "networkError": "ข้อผิดพลาดเครือข่าย", - "authorizationFailedCheckCode": "การอนุญาตล้มเหลว โปรดตรวจสอบว่ารหัสอนุญาตถูกต้องหรือไม่", - "pairingFailedRetry": "การจับคู่ล้มเหลว โปรดลองอีกครั้ง", - - // 配对控制器相关 - //'connectDevice': '连接设备', - 'pleaseEnableBluetooth': 'กรุณาเปิดใช้งานบลูทูธ', - 'deviceDisconnected': 'อุปกรณ์ตัดการเชื่อมต่อแล้ว', - 'readyToStartPairing': 'พร้อมที่จะเริ่มการจับคู่', - 'checkingEnvironment': 'กำลังตรวจสอบสภาพแวดล้อม...', - 'ensureHeadsetOnAndPairingMode': 'โปรดตรวจสอบให้แน่ใจว่าหูฟังเปิดอยู่และอยู่ในโหมดจับคู่', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', - 'establishingSecureConnection': 'กำลังสร้างการเชื่อมต่อที่ปลอดภัย...', - 'needManualBindingAuthCode': 'ต้องใช้รหัสอนุญาตการผูกด้วยตนเอง...', - 'pairingSuccessful': 'การจับคู่สำเร็จ!', - 'enableBluetooth': 'เปิดใช้งานบลูทูธ', - 'grantPermissions': 'ให้สิทธิ์', - 'retryAssociation': 'ลองเชื่อมโยงอีกครั้ง', - 'retryAuthorization': 'ลองอนุญาตอีกครั้ง', - 'pleaseGrantNecessaryPermissions': 'กรุณาให้สิทธิ์ที่จำเป็น', - 'checkFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', - 'pleaseConnectDeepSoundDevice': 'กรุณาเชื่อมต่ออุปกรณ์ Voitrans', - 'verificationFailedRetry': 'การตรวจสอบล้มเหลว โปรดลองอีกครั้ง', - 'invalidDeviceAddress': 'ที่อยู่อุปกรณ์ไม่ถูกต้อง', - 'bleDeviceAssociationFailed': 'การเชื่อมโยงอุปกรณ์ BLE ล้มเหลว', - 'deviceAssociationFailedRetry': 'การเชื่อมโยงอุปกรณ์ล้มเหลว โปรดลองอีกครั้ง', - 'bleConnectionTimeoutRetry': 'การเชื่อมต่อ BLE หมดเวลา โปรดลองอีกครั้ง', - 'blePairingStartupFailed': 'การเริ่มต้นการจับคู่ BLE ล้มเหลว', - 'bleConnectionFailed': 'การเชื่อมต่อ BLE ล้มเหลว', - 'deviceAuthorizationFailedCheckCode': 'การอนุญาตอุปกรณ์ล้มเหลว โปรดตรวจสอบรหัสอนุญาต', - - ///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', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 - - //用户反馈页 - "feedback": "ความคิดเห็นของผู้ใช้", - 'feedbackInfo': 'ให้ความคิดเห็นหรือข้อเสนอแนะ', - 'feedbackDescription': 'กรุณาอธิบายปัญหาที่คุณพบหรือข้อเสนอแนะของคุณ', - 'feedbackHint': 'กรุณาใส่ความคิดเห็นของคุณ...', - 'feedbackRequired': 'กรุณาใส่เนื้อหาความคิดเห็น', - 'contactInfo': 'ข้อมูลติดต่อ', - 'contactHint': 'อีเมล/หมายเลขโทรศัพท์ เพื่อให้เราสามารถติดต่อคุณได้', - 'submit': 'ส่ง', - 'feedbackSubmitSuccess': 'ส่งความคิดเห็นสำเร็จ ขอบคุณสำหรับความคิดเห็นของคุณ!', - 'feedbackSubmitFailed': 'ส่งความคิดเห็นล้มเหลว โปรดลองใหม่ในภายหลัง', - - // OTA升级模块 - "upgradeExitConfirm": "กำลังอัปเกรด การออกจะขัดจังหวะกระบวนการอัปเกรด คุณแน่ใจหรือไม่ว่าต้องการออก", - "deviceModel": "รุ่นอุปกรณ์", - "unknownDevice": "อุปกรณ์ที่ไม่รู้จัก", - "currentFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ปัจจุบัน", - "latestFirmwareVersion": "เวอร์ชันเฟิร์มแวร์ล่าสุด", - "ota_newVersionFound": "พบเวอร์ชันใหม่", - "latestVersion": "เป็นเวอร์ชันล่าสุดแล้ว", - "gettingDeviceInfo": "กำลังรับข้อมูลอุปกรณ์...", - "keepDeviceConnected": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ", - "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.", - "keepConnectedDontClose": "โปรดให้อุปกรณ์เชื่อมต่ออยู่เสมอ อย่าปิดแอปพลิเคชัน", - "doNotDisconnect": "โปรดอย่าตัดการเชื่อมต่อ", - "charging": "กำลังชาร์จ", - "updateContent": "เนื้อหาการอัปเดต", - "removeEarbudsEnsureBattery": "ถอดหูฟังทั้งสองข้างออก และตรวจสอบให้แน่ใจว่าแบตเตอรี่ทั้งสองข้างมีพลังงานมากกว่า 20%", - - // 音乐列表页面 - "noMusic": "ไม่มีเพลง", // 暂无音乐 - "noPlayingMusic": "ไม่มีเพลงที่กำลังเล่น", // 暂无播放音乐 - "unknownSong": "เพลงที่ไม่รู้จัก", // 未知歌曲 - "unknownArtist": "ศิลปินที่ไม่รู้จัก", // 未知歌手 - "playAll": "เล่นทั้งหมด", // 播放全部 - - // 语言名称 - "中文(简体)": "中文(简体)", - "中文(繁体)": "中文(繁体)", - "中文(香港繁体)": "中文(香港繁体)", - "英语": "ภาษาอังกฤษ", - "日语": "ภาษาญี่ปุ่น", - "韩语": "ภาษาเกาหลี", - "法语": "ภาษาฝรั่งเศส", - "西班牙语": "ภาษาสเปน", - "葡萄牙语": "ภาษาโปรตุเกส", - "意大利语": "ภาษาอิตาลี", - "德语": "ภาษาเยอรมัน", - "俄语": "ภาษารัสเซีย", - "波兰语": "ภาษาโปแลนด์", - "荷兰语": "ภาษาดัตช์", - "瑞典语": "ภาษาสวีเดน", - "捷克语": "ภาษาเช็ก", - "现代希腊语": "ภาษากรีกสมัยใหม่", - "罗马尼亚语": "ภาษาโรมาเนีย", - "匈牙利语": "ภาษาฮังการี", - "乌克兰语": "ภาษายูเครน", - "丹麦语": "ภาษาเดนมาร์ก", - "芬兰语": "ภาษาฟินแลนด์", - "挪威语": "ภาษานอร์เวย์", - "克罗地亚语": "ภาษาโครเอเชีย", - "加泰隆语": "ภาษาคาตาลัน", - "阿拉伯语": "ภาษาอาหรับ", - "泰语": "ภาษาไทย", - "越南语": "ภาษาเวียดนาม", - "印尼语": "ภาษาอินโดนีเซีย", - "印地语": "ภาษาฮินดี", - "土耳其语": "ภาษาตุรกี", - "马来语": "ภาษามลายู", - "孟加拉语": "ภาษาเบงกาลี", - "泰米尔语": "ภาษาทมิฬ", - "泰卢固语": "ภาษาเตลูกู", - "马拉提语": "ภาษามราฐี", - "乌尔都语": "ภาษาอูรดู", - "波斯语": "ภาษาเปอร์เซีย", - "斯瓦希里语": "ภาษาสวาฮีลี", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", }; diff --git a/lib/core/translations/language/tl_ph.dart b/lib/core/translations/language/tl_ph.dart index 4ed95d19e..6633f685a 100644 --- a/lib/core/translations/language/tl_ph.dart +++ b/lib/core/translations/language/tl_ph.dart @@ -1,10 +1,11 @@ +//菲律宾-塔加路语 const Map tlPH = { // 通用 'continue': 'Magpatuloy', 'confirm': 'Kumpirmahin', 'cancel': 'Kanselahin', 'retry': 'Subukang muli', - 'error': 'Error', + 'error': 'Kamalian', 'success': 'Tagumpay', 'connected': 'Konektado', 'connecting': 'Kumokonekta...', @@ -18,6 +19,11 @@ const Map tlPH = { "unknownError": "Hindi Malamang Error", "asrConnectionFailed": "Nabigo ang koneksyon sa speech recognition service. Pakisuri ang network at subukang muli mamaya.", + "justNow": "Katatapos lang", + "minutesAgo": "@minutes minuto ang nakalipas", + "yesterday": "Kahapon", + "daysAgo": "@days araw ang nakalipas", + "hoursAgo": "@hours oras ang nakalipas", // 启动页 "slogan": "Ikonekta ang mundo, higit pa sa tunog", @@ -28,7 +34,7 @@ const Map tlPH = { "explore": "Galugarin", "settings": "Mga Setting", - // 语言 + // 语言列表 "followingSystem": "Sundin ang Sistema", "chinese": "Chinese", "english": "Ingles", @@ -72,9 +78,10 @@ const Map tlPH = { "arabic": "Arabic", "persian": "Persian", - // 登录页 + // 登录模块 "welcome": "Maligayang pagdating", - "loginTips": "Mangyaring mag-login o mag-signup gamit ang iyong numero ng telepono o email", + "loginTips": + "Mangyaring mag-login o mag-signup gamit ang iyong numero ng telepono o email", "accountNumber": "Numero ng Telepono o Email", "verificationCode": "Verification Code", "getCode": "Kunin ang Code", @@ -93,20 +100,18 @@ const Map tlPH = { "tip": "Paalala", "pleaseEnterCompleteCode": "Pakilagay ang kumpletong verification code", "loginFailed": "Nabigo ang pag-login, pakisubukang muli", - 'pleaseAcceptPrivacyPolicy': 'Pakibasa at sumang-ayon muna sa Patakaran sa Privacy at Kasunduan ng User', + 'pleaseAcceptPrivacyPolicy': + 'Pakibasa at sumang-ayon muna sa Patakaran sa Privacy at Kasunduan ng User', "enterVerificationCode": "Ilagay ang Verification Code", "verificationCodeSentTo": "Ang verification code ay ipinadala sa", "resendVerificationCode": "Ipadala muli ang verification code", "login": "Mag-login", "usePasswordLogin": "Gamitin ang password para mag-login", - - // 隐私政策弹窗 "loginDeclaration": "Pahayag ng Voitrans", // Voitrans 声明 - "welcomeToThisApp": "Maligayang pagdating sa Voitrans, mangyaring basahin nang mabuti", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "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", // 同意并进入 @@ -116,26 +121,32 @@ const Map tlPH = { "connectingDevice": "Kumokonekta sa device...", "connectedTo": "Konektado sa", "signal": "Signal", - "deviceId": "Device ID", + "deviceId": "ID ng device", "firmwareVersion": "Bersyon ng Firmware", - "disconnectedDevice": "Walang device na konektado, i-click ang button sa ibaba para kumonekta", + "disconnectedDevice": + "Walang device na konektado, i-click ang button sa ibaba para kumonekta", "connectDevice": "Ikonekta ang Device", "topAiExperiences": "Mga Nangungunang Karanasan sa AI", "aiAssistant": "AI All-in-One Assistant", - "aiAssistantInfo": "24/7 na eksklusibong consultant, sumasagot sa mga tanong, nagbibigay ng payo", + "aiAssistantInfo": + "24/7 na eksklusibong consultant, sumasagot sa mga tanong, nagbibigay ng payo", "interpretation": "Sabayang Pagsasalin", - "simultaneousInterpretationInfo": "Real-time na pagsasalin sa maraming wika, walang alalahanin sa paglalakbay sa ibang bansa", + "simultaneousInterpretationInfo": + "Real-time na pagsasalin sa maraming wika, walang alalahanin sa paglalakbay sa ibang bansa", "aiCompanion": "Kasama ng Pamilya", "aiCompanionInfo": "Nakakaintindi sa iyo, mainit na samahan", "homeSlogan": "Ikonekta ang mundo, lampas sa tunog", - "turnEarphones": "Pakibuksan ang charging case ng earphones, at ilagay ang earphones sa iyong mga tainga", + "turnEarphones": + "Pakibuksan ang charging case ng earphones, at ilagay ang earphones sa iyong mga tainga", "currentlyConnected": "Kasalukuyang konektado:", "unsystemSetup": "Pumunta sa Mga Setting ng System", "talkLater": "Mamaya na", "initializing": "Nag-i-initialize...", - "bluetoothInitializationFailure": "Nabigo ang pag-initialize ng serbisyo ng Bluetooth", + "bluetoothInitializationFailure": + "Nabigo ang pag-initialize ng serbisyo ng Bluetooth", "checkingPermissions": "Sinusuri ang mga pahintulot...", - "lackPermissions": "Kulang sa mga pahintulot ng Bluetooth at sumasang-ayon ka sa lokasyon", + "lackPermissions": + "Kulang sa mga pahintulot ng Bluetooth at sumasang-ayon ka sa lokasyon", "searchingDevice": "Naghahanap ng mga device...", "findConnectedDevice": "Natagpuan ang konektadong device", "notFound": "Walang natagpuang konektadong Bluetooth device", @@ -154,12 +165,36 @@ const Map tlPH = { 'bluetoothOff': 'Naka-off ang Bluetooth', 'leftEar': 'Kaliwang Tainga', 'rightEar': 'Kanang Tainga', - 'chargingCase': 'Charging Case', + 'chargingCase': 'Kaso ng pag-charge', 'left': 'Kaliwa', 'right': 'Kanan', 'checkConnectionStatusFailed': 'Nabigong suriin ang katayuan ng koneksyon', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Nabigo ang pag-initialize ng Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Kailangan ang mga pahintulot sa Bluetooth at lokasyon para mag-scan ng mga device', + 'permissionRequestFailedWithError': + 'Nabigo ang paghingi ng pahintulot: @error', + 'needPermission': 'Kailangan ng pahintulot', + 'blePermissionDialogContent': + 'Kailangan ng app na ito ang mga pahintulot sa Bluetooth at lokasyon para mag-scan ng mga device. Paki-enable ito sa Settings.', + 'needEnableBluetooth': 'I-enable ang Bluetooth', + 'enableBluetoothDialogContent': + 'Paki-enable ang Bluetooth para mag-scan at kumonekta sa mga device.', + 'bleScanFailedWithError': 'Nabigo ang pag-scan: @error', + 'bleConnectionSuccess': 'Matagumpay ang koneksyon', + 'bleConnectedToDevice': 'Nakakonekta sa @device', + 'bleConnectionFailedWithError': 'Nabigo ang koneksyon: @error', + 'bleDisconnected': 'Na-disconnect', + 'bleDeviceDisconnected': 'Na-disconnect ang device', + 'bleDisconnectFailedWithError': 'Nabigo ang pag-disconnect: @error', + 'signalStrong': 'Malakas', + 'signalMedium': 'Katamtaman', + 'signalWeak': 'Mahina', + 'signalVeryWeak': 'Napakahina', + + // 发现页 "searchAi": "Maghanap ng mga function ng AI...", "exploreSlogan": "Mga matalinong earphone, walang katapusang posibilidad", "exploreSlogan1": "Matalinong kasama, walang katapusang posibilidad", @@ -167,7 +202,8 @@ const Map tlPH = { "exploreAi": "Galugarin ang mga function ng AI na inaalok ng Voitrans", "aiFunction": "Mga Function ng AI", "allRoundAssistant": "All-in-One Assistant", - "allRoundAssistantInfo": "Tumutulong sa iyong malutas ang iba't ibang problema", + "allRoundAssistantInfo": + "Tumutulong sa iyong malutas ang iba't ibang problema", "simultaneousTranslation": "Sabayang Pagsasalin", "faceToFaceTranslation": "Pagsasalin ng Harapan", 'audioVideoTranslation': 'Pagsasalin ng Audio at Video', @@ -178,200 +214,287 @@ const Map tlPH = { "healthConsultant": "Multi-functional na AI Chat", "healthConsultantInfo": "Nagbibigay ng mas maraming function ng AI chat", "conferenceAssistant": "Business Meeting Assistant", - "conferenceAssistantInfo": "Real-time na pagtatala ng mga minuto ng pulong, pagsasalin sa maraming wika", - "usageStats": "Usage Statistics", - "usageStatsInfo": "View your usage statistics", + "conferenceAssistantInfo": + "Real-time na pagtatala ng mga minuto ng pulong, pagsasalin sa maraming wika", + "usageStats": "Istatistika ng Paggamit", + "usageStatsInfo": "Tingnan ang iyong istatistika ng paggamit", "scene": "Eksena", + // 用量统计模块 "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": "Istatistika ng Pagsasalin", + "meetingStats": "Istatistika ng Pulong", + "today": "Ngayon", + "thisWeek": "Ngayong linggo", + "thisMonth": "Ngayong buwan", + "history": "Kasaysayan", + "currentSessionStats": "Istatistika ng kasalukuyang session", + "translationCount": "Bilang ng pagsasalin", + "sessionDuration": "Tagal ng session", + "characters": "Mga karakter", + "recordingDuration": "Tagal ng pagre-record", + "totalApiCalls": "Kabuuang tawag sa API", + "sessionCount": "Bilang ng session", + "totalCharacters": "Kabuuang karakter", + "apiCallStats": "Istatistika ng tawag sa API", + "translationApi": "API ng pagsasalin", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) + "dataVolumeStats": "Istatistika ng dami ng data", + "sourceTextCharacters": "Mga karakter ng source text", + "ttsTextCharacters": "Mga karakter ng TTS text", + "effectiveAudioDuration": "Epektibong tagal ng audio", + "totalSessionDuration": "Kabuuang tagal ng session", + "costStats": "Istatistika ng gastos", + "estimatedCost": "Tinatayang gastos", + "dailyCostThreshold": "Arawang limit ng gastos", + "monthlyCostThreshold": "Buwanang limit ng gastos", + "usageBehaviorStats": "Istatistika ng gawi sa paggamit", + "mostUsedLanguagePair": "Pinakagamit na pares ng wika", + "mostUsedMode": "Pinakagamit na mode", + "asrApiCalls": "Mga tawag sa ASR", + "totalAudioDuration": "Kabuuang tagal ng audio", + "audioFileSize": "Laki ng audio file", + "transcriptBytes": "Mga byte ng transcript", + "loadFailed": "Nabigong i-load", + "statsLoadFailedTryLater": + "Nabigong i-load ang istatistika. Pakisubukang muli mamaya.", + "cleanupComplete": "Tapos na ang paglilinis", + "cleanedOldData": "Nilinis ang data na mas luma sa 90 araw", + "exportFeature": "Feature ng export", + "exportInDevelopment": "Ginagawa pa ang pag-export ng data", + + // 商品模块 - 通用 + 'availablePackages': 'Mga available na package', + 'remainingQuota': 'Natitirang quota', + 'totalQuota': 'Kabuuang quota', + 'remaining': 'Natitira', + 'featureDescription': 'Paglalarawan ng feature', + 'paymentSuccess': 'Matagumpay ang pagbabayad', + 'paymentFailed': 'Nabigo ang pagbabayad', + 'gotIt': 'Naintindihan', + 'paymentFailedTryAgain': 'Nabigo ang pagbabayad. Pakisubukang muli.', + 'selectPaymentMethod': 'Pumili ng paraan ng pagbabayad', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Hindi nagawa ang order sa WeChat', + 'alipayOrderCreateFailed': 'Hindi nagawa ang order sa Alipay', + 'appleOrderCreateFailed': 'Hindi nagawa ang order sa Apple', + 'googleOrderCreateFailed': 'Hindi nagawa ang order sa Google', + 'paypalOrderCreateFailed': 'Hindi nagawa ang order sa PayPal', + 'paymentException': 'May problema sa pagbabayad', + 'paymentLaunchFailed': 'Hindi mabukas ang pagbabayad', + 'paymentExceptionWithError': 'May problema sa pagbabayad: @error', + 'paymentProcessingCheckLater': + 'Pinoproseso ang iyong order. Pakitingnan mamaya.', + 'paymentResultQueryException': + 'Hindi makuha ang resulta ng pagbabayad: @error', + 'orderConfirmedQuotaRefreshed': + 'Nakumpirma ang order. Na-refresh na ang iyong quota.', + 'paymentCompletedConfirming': 'Tapos na ang pagbabayad. Kinukumpirma…', + 'paymentCancelled': 'Kinansela ang pagbabayad', + 'paypalOpenedCompleteInBrowser': + 'Nabuksan na ang PayPal. Pakikumpleto ang pagbabayad sa browser.', + 'paypalOpenFailed': 'Hindi mabukas ang pahina ng pagbabayad sa PayPal', + 'paymentTestTitle': 'Pagsubok ng Pagbabayad', + 'paymentTestOrderInfo': 'Impormasyon ng Test Order', + 'paymentTestProductId': 'Product ID', + 'paymentTestProductDescription': 'Paglalarawan ng produkto', + 'paymentTestWechatDescription': 'Pagsubok ng pagbabayad sa WeChat', + 'paymentTestAlipayDescription': 'Pagsubok ng pagbabayad sa Alipay', + 'paymentTestAmount': 'Halaga', + 'paymentTestSelectAmount': 'Pumili ng halaga para sa pagsubok', + 'paying': 'Nagbabayad...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Status ng pagbabayad', + 'errorInfoWithMessage': 'Kamalian: @message', + 'retest': 'Subukang muli', + 'paymentTestInstructionsTitle': 'Mga Tagubilin', + 'paymentTestInstructionsContent': + '1. Pumili ng halaga para sa pagsubok (inirerekomenda: ¥0.01)\n2. Pindutin ang button ng pagbabayad para magsimula\n3. Kumpletuhin ang pagbabayad sa payment app\n4. Bumalik para tingnan ang resulta', + 'startingWechatPayment': 'Binubuksan ang WeChat Pay...', + 'startingAlipayPayment': 'Binubuksan ang Alipay...', + 'wechatPaymentSuccess': 'Matagumpay ang pagbabayad sa WeChat Pay!', + 'wechatPaymentFailed': 'Nabigo ang pagbabayad sa WeChat Pay', + 'wechatPaymentLaunchFailed': 'Hindi mabukas ang WeChat Pay', + 'cannotLaunchWechatPayment': 'Hindi mabukas ang WeChat Pay', + 'wechatPaymentException': 'May problema sa WeChat Pay', + 'wechatPaymentTestCompleted': + 'Tapos na ang pagsubok ng pagbabayad sa WeChat Pay', + 'alipayPaymentSuccess': 'Matagumpay ang pagbabayad sa Alipay!', + 'alipayPaymentFailed': 'Nabigo ang pagbabayad sa Alipay', + 'alipayPaymentLaunchFailed': 'Hindi mabukas ang Alipay', + 'cannotLaunchAlipayPayment': 'Hindi mabukas ang Alipay', + 'alipayPaymentException': 'May problema sa Alipay', + "insufficientIntegral": "Kulang ang puntos", + "insufficientBalanceDesc": + "Kulang ang balanse, mangyaring pumunta sa kaukulang pahina ng pag-recharge upang mag-recharge.", + "recharge": "Pumunta sa Pag-recharge", + "aiMemberExpiredDesc": + "Nag-expire na ang AI membership, mangyaring pumunta sa pahina ng membership recharge upang mag-renew.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Musika at rekomendasyon', + 'navigationAndRoutes': 'Nabigasyon at mga ruta', + 'nearbySearch': 'Paghahanap sa malapit', + 'newsInformation': 'Balita', + 'communicationAssistant': 'Katulong sa komunikasyon', + 'aiHeaderDesc1': + 'Mas mahabang quota sa pag-uusap, mas maraming tool call, mas mahabang context.', + 'aiHeaderDesc2': + 'Angkop para sa Q&A ng agent, pagbubuod, pagsusuri, at pagsasagawa ng mga gawain.', + 'musicSearchPlaybackControl': + 'Paghahanap sa music library at kontrol sa playback', + 'smartPlaylistAndSimilarRecommendations': + 'Matalinong playlist at rekomendasyon ng kahalintulad na kanta', + 'routePlanningAndCongestionAvoidance': + 'Pagplano ng ruta at pag-iwas sa trapiko', + 'voiceBroadcastAndWaypoints': 'Voice broadcast at mga setting ng waypoint', + 'realTimeWeatherForecast': 'Real-time na panahon at forecast', + 'clothingAdviceAndTravelReminders': + 'Payo sa kasuotan at mga paalala sa biyahe', + 'poiSearchFoodGasParking': 'Paghahanap ng POI: kainan / gas / parking', + 'ratingsHoursAndDirectRoutes': 'Ratings, oras ng negosyo, at direktang ruta', + 'hotNewsAndTopicOverview': 'Mainit na balita at buod ng paksa', + 'longArticleSummariesAndKeyPoints': + 'Buod ng mahahabang artikulo at mahahalagang punto', + 'helpCallAndSMS': 'Tulong sa tawag at SMS', + 'templatedMessagesAndScheduleReminders': + 'Mga mensaheng template at naka-iskedyul na paalala', + 'aiDisclaimer': + 'Nakadepende ang mga feature sa mga pahintulot ng device, availability ng serbisyo, at kondisyon ng network.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Real-time na transkripsyon', + 'sceneLexicon': 'Glossary ng eksena', + 'subtitleDisplay': 'Mga subtitle', + 'transHeaderDesc1': + 'Real-time na sabayang interpretasyon at pagsasalin ng teksto na may mababang latency na boses.', + 'transHeaderDesc2': + 'Angkop para sa paglalakbay, negosyo, talumpati, at pagtuturo.', + 'translateZhEn': 'Pagsasaling Tsino-Ingles', + 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', + 'multiLangTextTranslation': 'Pagsasaling teksto sa maraming wika', + 'termOptimizationContextPreserve': + 'Pag-optimize ng termino at pagpapanatili ng konteksto', + 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', + 'personalVocabularyMemory': 'Personal na memorya ng bokabularyo', + 'conversationSubtitleLargeText': + 'Mga subtitle ng usapan / Malaking-teksto na mode', + 'colorHighContrast': 'Mataas na contrast ng kulay', + 'transDisclaimer': + 'Nakadepende ang kalidad ng pagsasalin sa mikropono, latency ng network, at ingay sa paligid.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Pagre-record ng pulong', + 'transcriptionAndSummary': 'Transkripsyon at buod', + 'keywordSearch': 'Paghahanap ng keyword', + 'collaborationSharing': 'Pakikipagtulungan at pag-share', + 'meetingHeaderDesc1': + 'Audio recording, transcription, keyword search, at auto summary para mapabilis ang kahusayan ng pulong.', + 'meetingHeaderDesc2': + 'Angkop para sa mga business meeting, class notes, at minutes ng interview.', + 'meetingAutoRecording': 'Awtomatikong pagre-record at pagse-segment', + 'meetingSpeakerTagging': 'Pag-label ng tagapagsalita', + 'meetingLongAudioTranscription': 'Transkripsyon ng mahabang audio', + 'meetingKeyPointSummary': 'Pagkuha ng mahahalagang punto', + 'meetingTopicNameSearch': 'Maghanap ayon sa paksa/pangalan', + 'meetingTimelineJump': 'Tumalon sa timeline', + 'meetingExportSummary': 'I-export ang minutes ng pulong', + 'meetingMultiPlatformShare': 'I-share sa iba\'t ibang platform', + 'meetingDisclaimer': + 'Gamitin sa tahimik na lugar; nakadepende ang performance sa mikropono at network.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Pangkalahatang benepisyo', + 'higherQuota': 'Mas mataas na quota ng paggamit', + 'lowerUnitPrice': 'Mas mababang presyo kada unit', + 'priorityService': 'Priyoridad na serbisyo', + 'exclusiveSupportChannel': 'Dedicated na support channel', + 'fastResponse': 'Mabilis na tugon sa isyu', + 'eventsAndDiscounts': 'Mga event at diskwento', + 'memberExclusiveEvents': 'Mga event para sa miyembro lamang', + 'longTermDiscountPlan': 'Pangmatagalang planong may diskwento', + 'generalPrivileges': 'Pangkalahatang pribilehiyo', + 'earlyAccessNewFeatures': 'Maagang access sa mga bagong feature', + 'crossDeviceSync': 'Pag-sync sa iba’t ibang device', + 'vipDisclaimer': + 'Ang aktwal na benepisyo ay nakadepende sa detalye ng package at maaaring magbago ayon sa bersyon.', + + // 商品模块 - 商品名称与描述 'ai_001_name': 'AI Basic 100', 'ai_002_name': 'AI Basic 500', 'ai_003_name': 'AI Basic 1000', 'meet_001_name': 'Meeting Basic 100', 'meet_002_name': 'Meeting Basic 500', 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'trans_001_name': 'Pangunahing Pagsasalin 100', + 'trans_002_name': 'Pangunahing Pagsasalin 500', + 'trans_003_name': 'Pangunahing Pagsasalin 1000', + 'ai_001_desc': + 'Kasama ang 100 paggamit. I-access ang pangunahing AI feature.', + 'ai_002_desc': + 'Kasama ang 500 paggamit. I-access ang pangunahing AI feature.', + 'ai_003_desc': + 'Kasama ang 1000 paggamit. I-access ang pangunahing AI feature.', + 'meet_001_desc': 'Kasama ang 100 pagre-record/pag-transcribe ng meeting.', + 'meet_002_desc': 'Kasama ang 500 pagre-record/pag-transcribe ng meeting.', + 'meet_003_desc': 'Kasama ang 1000 pagre-record/pag-transcribe ng meeting.', + 'trans_001_desc': 'Kasama ang 100 pagsasalin (boses/teksto).', + 'trans_002_desc': 'Kasama ang 500 pagsasalin (boses/teksto).', + 'trans_003_desc': 'Kasama ang 1000 pagsasalin (boses/teksto).', + + // 商品模块 - 页脚 + 'appNameProvider': 'App: VoiTrans · Ibinigay ng: VoiTrans', + 'iapCustomerServiceQQLabel': 'QQ ng customer service ng IAP: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 'skip': 'Laktawan', - '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, ', - // AI 引导步骤 - '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': 'Susunod', + 'sayLilyHint': 'Sabihin ang "Lily Lily" sa mikropono', + 'imHere': 'Nandito ako~', + 'guideWelcomeWakeAI': + 'Maligayang pagdating sa Voitrans! Una, gisingin ang AI mong “Lily”.', + 'aiReplyCompleted': 'Tapos na ang sagot ni Lily!', + 'aiThinking': 'Nag-iisip si Lily…', + 'guideAwakenSuccess': 'Ayos! Gising na si Lily—magpatulong na.', + 'confirmInput': 'Kumpirmahin ang input', + 'guideClickSendPrefix': 'I-tap ang ipadala, ', + 'guideWeatherStart': 'Sabihin kay Lily: “Ano ang panahon ngayon?”', + 'guideWeatherInput': 'Ano ang panahon ngayon?', + 'guideWeatherSend': 'Iuulat ni Lily ang panahon sa real time', + 'guideWeatherEnd': + 'Kaya ni Lily mag-ulat ng live na panahon—subukan ang iba pang utos', + 'guideMusicStart': 'Sabihin kay Lily: “Magpatugtog ng rock na musika”', + 'guideMusicInput': 'Magpatugtog ng rock na musika', + 'guideMusicSend': 'Maghahanap si Lily ng musika para sa iyo', + 'guideMusicEnd': 'Nakahanap na si Lily ng musika—subukan ang iba pang utos', + 'guideNavStart': + 'Sabihin kay Lily: “Mag-navigate papuntang Shenzhen Airport”', + 'guideNavInput': 'Mag-navigate papuntang Shenzhen Airport', + 'guideNavSend': 'Magpaplano si Lily ng ruta', + 'guideNavEnd': 'Naitakda na ang nabigasyon—subukan ang iba pang utos', + 'guideMeetingStart': + 'Sabihin kay Lily: “Gumawa ng meeting reminder para 3pm bukas”', + 'guideMeetingInput': 'Gumawa ng meeting reminder para 3pm bukas', + 'guideMeetingSend': 'Gagawa si Lily ng meeting reminder', + 'guideMeetingEnd': 'Nagawa na ang reminder—subukan ang iba pang utos', + 'guidePhoneStart': 'Sabihin kay Lily: “Tawagan si Nanay”', + 'guidePhoneInput': 'Tawagan si Nanay', + 'guidePhoneSend': 'Tatawagan ni Lily', + 'guidePhoneEnd': 'Naitawag na—subukan ang iba pang utos', + 'guideSmsStart': + 'Sabihin kay Lily: “Mag-text kay Tatay: Uuwi ako para sa hapunan”', + 'guideSmsInput': 'I-text si Tatay: Uuwi ako para sa hapunan', + 'guideSmsSend': 'Ipapadala ni Lily ang mensahe', + 'guideSmsEnd': 'Naipadala na ang mensahe—maginhawa ang voice control', + + // Meeting模块 - 首页与导航 "startMeeting": "Simulan ang Pulong", 'edit': 'I-edit', 'delete': 'Burahin', @@ -383,49 +506,55 @@ const Map tlPH = { 'recordingDetails': 'Mga Detalye ng Pag-record', 'aiSummary': 'Buod ng AI', 'meetingTranscript': 'Transkripsyon ng Pulong', - - // Meeting模块 - 导航和基础功能 - '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': 'Mga file', + 'mine': 'Akin', + 'connect': 'Kumonekta', + 'allFiles': 'Lahat ng file', + 'searchInAllFiles': 'Maghanap sa lahat ng file', + 'from': 'Mula', + 'sortBy': 'Iayos ayon sa', + 'creationTime': 'Oras ng paggawa', + 'bluetoothConnection': 'Koneksyon sa Bluetooth', + 'meetingReconnect': 'Kumonekta muli', + 'searching': 'Naghahanap...', + 'searchFailed': + 'Nabigo ang paghahanap, pakisuri kung naka-enable ang Bluetooth', + 'aiPenNotFound': 'Hindi nakita ang AI PEN device', + 'connectedToAiPen': 'Nakakonekta sa AI PEN device', + 'checkingNewFiles': 'Sinusuri ang mga bagong file na i-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', + 'connectingWifi': 'Kumokonekta sa Wi‑Fi...', + 'wifiConnected': 'Matagumpay na nakakonekta sa Wi‑Fi', + 'downloadingFiles': 'Nagda-download ng mga file...', + 'downloadingFileProgress': + 'Kabuuang {total} file, dina-download ang file {current}', + 'downloadComplete': 'Tapos na ang pag-download', + 'downloadCompleteInfo': + 'Tapos na ang pag-download, kabuuang {count} file, babalik nang awtomatiko sa loob ng 2 segundo', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Simulan ang pagre-record', + 'liveRecording': 'Live na pagre-record', + 'audioVideoRecording': 'Pagre-record ng audio/video', + 'callRecording': 'Pagre-record ng tawag', + 'importAudio': 'Mag-import ng audio', 'meetingRecordExitTitle': 'Lumabas sa Pag-record', // 退出录音 'meetingRecordExitMessage': 'Pumili ng aksyon pagkatapos umalis', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Tapusin at I-save', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Tapusin nang Hindi Ise-save', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Ituloy ang pag-record sa background', // 后台继续录音 - 'meetingRecordStopTimeout': 'Nag-timeout ang paghinto ng record, pakisubukang muli', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Nabigong ihinto ang pag-record, pakisubukang muli', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Nabigong i-save ang pag-record, pakisubukang muli', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Ituloy ang pag-record sa background', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Nag-timeout ang paghinto ng record, pakisubukang muli', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Nabigong ihinto ang pag-record, pakisubukang muli', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Nabigong i-save ang pag-record, pakisubukang muli', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Nagre-record', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Nagre-record sa background, i-tap para bumalik', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Nagre-record sa background, i-tap para bumalik', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Pahintulot sa Floating Window', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'Para maipakita ang mga resulta ng pagsasalin habang tumatawag o nagsasalin ng audio/video, kailangan namin ang overlay permission. Pinapayagan ka nitong makita ang real-time na pagsasalin habang gumagamit ng ibang mga app.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,184 +562,217 @@ const Map tlPH = { 'Para maipakita ang lumulutang na bar ng pagre-record (timer/pause/ituloy) habang nagre-record, kailangan namin ang overlay permission.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Hindi awtomatikong mabuksan ang system settings. Pakibuksan ang Settings at i-enable nang manu-mano ang overlay permission.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', + 'transcribing': 'Nagtatranscribe...', + 'summarizing': 'Binubuod...', + 'analyzing': 'Sinusuri...', + 'summaryComplete': 'Tapos na ang buod', + 'generate': 'Bumuo', + 'overview': 'Pangkalahatang-ideya', + 'transcription': 'Transkripsyon', + 'summary': 'Buod', 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'editSpeaker': 'I-edit', + 'nameSpeaker': 'Pangalanan ang tagapagsalita', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Muling ibuod', + 'dateAndTime': 'Petsa at oras', + 'location': 'Lokasyon', + 'attendees': 'Mga dadalo', + 'inputLocation': 'Ilagay ang lokasyon', + 'inputAttendees': 'Ilagay ang mga dadalo', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Pumili ng template ng buod', + 'useThisTemplate': 'Gamitin ang template na ito', + 'lastUsed': 'Huling ginamit', + 'create': 'Gumawa', + 'templateDetails': 'Mga detalye ng plantilla', + 'tag': 'Tag', + 'description': 'Paglalarawan', + 'template': 'Plantilla', + 'deleteTemplate': 'Tanggalin ang plantilla', + 'deleteTemplateConfirm': + 'Sigurado ka bang gusto mong tanggalin ang plantilla na ito?', + 'editTemplate': 'I-edit ang plantilla', + 'createTemplate': 'Gumawa ng plantilla', + 'name': 'Pangalan', + 'templateContentHint': + 'Pakiusap maglagay ng nilalaman ng plantilla! Tip: Pindutin ang AI button sa itaas para mabilis na bumuo ng nilalaman ng plantilla batay sa pangalan at paglalarawan na inilagay mo', + 'inputNameHint': 'Pakiusap maglagay ng pangalan', + 'inputDescHint': 'Pakiusap maglagay ng paglalarawan', + 'custom': 'Pasadya', + 'pleaseEnter': 'Mangyaring ilagay', + 'viewAll': 'Tingnan lahat', + 'recordingLanguage': 'Wika ng pagre-record', + 'chineseSimplified': 'Chinese Mandarin (Pinasimple)', + 'meetingGenerateNow': 'Bumuo ngayon', + 'keyEventsAnalyzed': 'Analyzed {count} key events.', + 'aiAnalysisDesc': + 'Tinutukoy ng AI analysis ang mga pangunahing pangyayari sa mga recording, na nagbibigay-daan sa iyo na pumili ng mahahalagang pangyayari para sa AI generation.', + + // Meeting模块 - 文件操作 + 'importing': 'Ini-import...', + 'batchImporting': 'Ini-import nang maramihan...', + 'importingLocalRecordings': 'Ini-import ang mga lokal na recording...', + 'importFailed': + 'Nabigo ang pag-import ng file: {filePath}, kamalian: {error}', + 'importSuccess': 'Matagumpay na na-import ang {count} lokal na recording', + 'importError': 'Nabigo ang pag-import: {error}', + 'pleaseSelectAudioFile': 'Mangyaring pumili ng audio file', + 'shareAudio': 'I-share ang audio ng pulong', + 'shareComplete': 'Tapos na ang pag-share!', + 'shareFailed': 'Nabigo ang pag-share: {error}', + 'fileProcessingFailed': + 'Nabigo ang pagproseso ng file: {filePath}, kamalian: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'I-save ang Mind Map', + 'shareMindMap': 'I-share ang Mind Map', + 'shareSuccess': 'Matagumpay ang pag-share', + + // Meeting模块 - AI问答 + 'askAI': 'Magtanong sa AI ...', + 'askAIPrompt': 'Ano ang maitutulong ko sa iyo ngayon?', + 'continueAsk': 'Magpatuloy sa pagtatanong', + 'todoList': 'Listahan ng gagawin', + 'extractConclusion': 'Kunin ang konklusyon', + 'generateKeyIndicators': 'Bumuo ng mga pangunahing sukatan', + + // Meeting模块 - 分享与导出 + 'shareLink': 'I-share ang link', + 'copyTranscript': 'Kopyahin ang transcript', + 'copySummary': 'Kopyahin ang buod', + 'exportAudio': 'I-export ang audio', + 'exportTranscript': 'I-export ang transcript', + 'shareMeetingAudio': 'I-share ang audio ng pulong', + 'exportSummary': 'I-export ang buod', + 'exportAs': 'I-export bilang', + 'exportingPDF': 'Ini-export ang PDF...', + 'export': 'I-export', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Ilapat sa lahat ng talata ng tagapagsalitang ito', + 'summaryWillBeUpdatedAutomatically': + 'Awtomatikong maa-update ang buod batay sa template', + 'nameCurrentSpeaker': 'Pangalanan ang kasalukuyang tagapagsalita', + 'recentlyUsedNames': 'Mga kamakailang ginamit na pangalan', + 'applyToCurrentParagraph': 'Ilapat sa kasalukuyang talata', + 'totalTime': 'Kabuuang oras', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Awtomatikong maa-update ang mga tagapagsalita sa buod', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'I-sync sa cloud', + 'syncToCloudTip': + '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': 'I-sync ang VOITRANS app', + 'transcriptionRecord': 'Talaan ng transkripsyon', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Mga record ng transkripsyon', + 'templateCommunity': 'Komunidad ng plantilla', + 'comingSoon': 'Darating na', + 'integration': 'Integrasyon', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', - 'enabled': 'Enabled', - 'disabled': 'Disabled', - 'myVoitransDevice': 'My VOITRANS Device', - 'helpAndFeedback': 'Help & Feedback', - 'aboutVoitrans': 'About VOITRANS', - 'meetingDays': 'Days', - 'meetingHours': 'Hours', + 'enabled': 'Naka-enable', + 'disabled': 'Naka-disable', + 'myVoitransDevice': 'Aking VOITRANS device', + 'helpAndFeedback': 'Tulong at feedback', + 'aboutVoitrans': 'Tungkol sa VOITRANS', + 'meetingDays': 'Mga araw', + 'meetingHours': 'Mga oras', 'voitransAiMember': 'Voitrans AI Member', 'unlockStarterMember': 'Unlock Starter Member', - 'bindDeviceToActivate': 'Bind Voitrans device to activate Starter membership', - 'unlockNow': 'Unlock Now', - - // Meeting模块 - 会员功能 - 'comparison': 'Comparison', - 'detailedInfo': 'Detailed Information', - 'monthlyTranscriptionTime': 'Monthly Transcription Time', - 'unlimited': 'Unlimited', - 'professionalTemplates': 'Professional Templates', - 'limited': 'Limited', - 'fullTemplates': 'Full Templates', + 'bindDeviceToActivate': + 'I-bind ang Voitrans device para i-activate ang Starter membership', + 'unlockNow': 'I-unlock ngayon', + + // Meeting模块 - 会员与升级 + 'comparison': 'Paghahambing', + 'detailedInfo': 'Detalyadong impormasyon', + 'monthlyTranscriptionTime': 'Buwanang oras ng transkripsyon', + 'unlimited': 'Walang limit', + 'professionalTemplates': 'Mga propesyonal na template', + 'limited': 'May limit', + 'fullTemplates': 'Kumpletong template', 'professionalTerms': 'Professional Terms', - 'customTemplates': 'Custom Templates', + 'customTemplates': 'Pasadyang template', 'visualMindMap': 'Visual Mind Map', 'speakerIdentification': 'Speaker Identification', 'aiVoiceEnhancement': 'AI Voice Enhancement', - '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.', - - // 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.', - '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.', + 'audioImport': 'Pag-import ng audio', + 'multipleExportFormats': 'Maramihang format ng export', + 'professionalSummaryTemplates': 'Mga propesyonal na template ng buod', + 'professionalTemplateDesc': + 'Propesyonal na disenyo ng template para mapataas ang iyong kahusayan sa trabaho. Nakaayon sa pangangailangan ng industriya.', + 'customTemplateDesc': + 'Maaari mong i-customize ang mga prompt ng buod ayon sa iyong pangangailangan at gamitin ito para bumuo ng kinakailangang mga buod.', + 'askAiDesc': + 'Matalinong kumuha ng mas malalim na impormasyon mula sa mga recording, gumawa ng mga data table, pangunahing konklusyon ng diskusyon, To-Do list, report email at iba pang naka-format na nilalaman sa isang click.', + 'visualMindMapDesc': + 'Higit pa sa mga buod: ayusin at i-visualize ang mahahalagang punto gamit ang mind map para mas madaling maunawaan ang buong teksto.', + 'templateCommunityDesc': + 'Tuklasin, ibahagi, at kumuha ng inspirasyon mula sa library ng template na ginawa ng mga user.', + 'speakerIdentificationDesc': + 'Susuportahan ng transkripsyon ng audio ang pagkilala sa tagapagsalita para mas malinaw na maibalik ang nilalaman ng meeting o tawag. Mas magiging tumpak din ang buod.', + 'privateCloudSyncDesc': + 'Ang iyong mga recording at transcription ay ligtas na iiimbak sa mga dedikadong cloud server, na may ganap na encryption sa pag-upload at pag-download upang matiyak ang privacy at seguridad.', + 'aiVoiceEnhancementDesc': + 'Sinusuportahan ng AI voice enhancement ang iba\'t ibang setting ng noise reduction, matalinong inaalis ang ingay sa background, pinapalinaw ang boses, at pinapaganda ang kalidad ng playback.', + 'audioImportDesc': + 'Madaling mag-import ng mga audio file mula sa lokal o third-party app, gaya ng voice memos, Google Drive, atbp.', + 'multipleExportFormatsDesc': + 'I-export ang iyong mga audio recording, transcription text at summary sa iba\'t ibang format (TXT, PDF, JPEG) upang matugunan ang iyong mga pangangailangan.', + 'upgradeMembership': 'I-upgrade ang membership', + 'yearlySubscription': 'Taunang subscription', + 'monthlySubscription': 'Buwanang subscription', + 'proMonthly': 'Pro ¥60/buwan', + 'proMonthlyDesc': + 'Libreng trial sa loob ng 7 araw, pagkatapos ay ¥800/taon. Maaaring kanselahin bago matapos ang trial.', + 'sevenDayTrial': '7-araw na libreng trial', + 'unlimitedMonthly': 'Walang limit ¥120/buwan', + 'unlimitedMonthlyDesc': + 'Libreng trial sa loob ng 7 araw, pagkatapos ay ¥1600/taon. Maaaring kanselahin bago matapos ang trial.', + 'trialNote': + '*7-araw na libreng trial, pagkatapos ay taunang singil; maaaring kanselahin anumang oras.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/buwan', + 'subscribe': 'Mag-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', - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Ilapat sa lahat ng talata ng tagapagsalitang ito', - 'summaryWillBeUpdatedAutomatically': 'Awtomatikong maa-update ang buod batay sa template', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'unlimitedMonthlyPrice': '¥198/buwan', + 'upgradeNote': + '*Pagkatapos i-upgrade ang subscription, awtomatikong kakalkulahin ang natitirang araw ng dating subscription at ire-refund sa iyong payment account', + 'buyMoreTranscriptionTime': 'Bumili ng dagdag na oras ng transkripsyon', + 'sixThousandMinutes': '6,000 minuto', + 'threeThousandMinutes': '3,000 minuto', + 'sixHundredMinutes': '600 minuto', + 'oneHundredTwentyMinutes': '120 minuto', + 'validityPeriod': '*Panahon ng bisa: ', + 'validityNote': + 'Awtomatikong maa-activate pagkatapos bumili, at valid sa loob ng 2 taon pagkatapos ma-activate.', + 'purchase': 'Bumili', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Wika ng pagre-record', + 'cantonese': 'Kantones', + 'sichuan': 'Dayalekto ng Sichuan', + 'shanghai': 'Dayalekto ng Shanghai', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Hindi kilalang wika', + 'analysisFailed': 'Nabigo ang pagsusuri, pakisubukang muli mamaya', + 'transcriptionFailed': 'Nabigo ang transcription, pakisubukang muli mamaya', + 'summaryFailed': 'Nabigo ang buod, pakisubukang muli mamaya', + 'summaryFailedShort': 'Nabigo ang buod', + 'transcriptionFailedShort': 'Nabigo ang transcription', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Hindi pa handa ang audio player, pakihintay', + 'playFailed': 'Nabigo ang pag-play', + 'audioFileNotFound': 'Hindi nahanap ang audio file', + 'fetchingAudio': 'Kinukuha ang audio mula sa cloud...', + 'playerLoadFailed': 'Hindi na-load ang audio player', // 设置页 "systemSettings": "Mga Setting ng System", @@ -619,9 +781,10 @@ const Map tlPH = { "translationRecharge": "Pagsasalin ng Recharge", "meetingAssistantRecharge": "Pagsasalin ng Recharge ng Pulong", "cloudSync": "Pagsasalin ng Recharge ng Cloud", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.", + "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:", "accountId": "Account ID:", "systemSetting": "Setting ng System", @@ -634,18 +797,22 @@ const Map tlPH = { "privacySettings": "Mga Setting ng Privacy", "privacySettingsInfo": "Pamahalaan ang koleksyon ng data at mga pahintulot", "permissionManagement": "Pamamahala ng Pahintulot", // 权限管理 - "permissionManagementInfo": "Pamahalaan ang mga setting ng pahintulot ng app", // 管理应用权限设置 + "permissionManagementInfo": + "Pamahalaan ang mga setting ng pahintulot ng app", // 管理应用权限设置 "aboutApplication": "Tungkol sa App", "versions": "Bersyon", "checkUpdates": "Suriin kung may mga Update", "selectLanguage": "Pumili ng Wika", "voiceService": "Serbisyo ng Boses", - "voiceServiceInfo": "Pumili ng serbisyo para sa pagkilala at pag-synthesize ng boses", + "voiceServiceInfo": + "Pumili ng serbisyo para sa pagkilala at pag-synthesize ng boses", "selectVoiceService": "Pumili ng Serbisyo ng Boses", "azureVoiceService": "Azure Voice Service", - "azureVoiceServiceInfo": "Serbisyo ng boses sa cloud ng Microsoft, sumusuporta sa mataas na kalidad na voice synthesis at recognition", + "azureVoiceServiceInfo": + "Serbisyo ng boses sa cloud ng Microsoft, sumusuporta sa mataas na kalidad na voice synthesis at recognition", "flutterVoiceService": "Flutter Local Voice Service", - "flutterVoiceServiceInfo": "Lokal na serbisyo ng boses sa device, maaaring gamitin nang walang koneksyon sa internet", + "flutterVoiceServiceInfo": + "Lokal na serbisyo ng boses sa device, maaaring gamitin nang walang koneksyon sa internet", 'timbreService': 'Serbisyo ng Timbre', 'timbreServiceInfo': 'Pumili ng serbisyo ng voice synthesis na may timbre', 'defaultTimbre': 'Default na Timbre', @@ -656,44 +823,34 @@ const Map tlPH = { 'pleaseRead': 'Pakibasa nang malakas', 'completeRecording': 'Kumpletuhin ang Pag-record', "firmwareUpgrade": "Pag-upgrade ng Firmware", - "bleHeadsetFirmwareUpgrade": "Pag-upgrade ng Bersyon ng Firmware ng BLE Headset", + "bleHeadsetFirmwareUpgrade": + "Pag-upgrade ng Bersyon ng Firmware ng BLE Headset", "deviceManagement": "Pamamahala ng Device", "manageConnectedDevices": "Pamahalaan ang mga naka-pair na Bluetooth device", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Nasa pinakabagong bersyon ka na {version}', 'checkUpdateFailed': 'Nabigong suriin kung may mga update', 'networkErrorRetry': 'Error sa network, pakisubukang muli mamaya', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Real-time na Voice Chat", - "realtimeVoiceChatInfo": "Damhin ang matalinong voice interaction function (feature preview)", + "realtimeVoiceChatInfo": + "Damhin ang matalinong voice interaction function (feature preview)", "loading": "Naglo-load...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Hindi kilalang device", + "deviceTypeClassicBluetoothHeadset": "Klasikong Bluetooth headset", + "deviceTypeBleBluetoothHeadset": "BLE Bluetooth headset", + "deviceTypeSmartVoiceRecorder": "Matalinong voice recorder", + "deviceTypeSmartEye": "Matalinong salamin", "unbind": "Alisin sa pagkaka-bind", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Wala pang naka-bind na device", + "pleaseBindDeviceFirst": "Mangyaring mag-bind muna ng device para pamahalaan", + "noMacAddress": "Walang MAC Address", + "licenseCode": "Code ng lisensya", + "confirmUnbind": "Kumpirmahin ang pag-unbind", + "confirmUnbindMessage": "Sigurado ka bang gusto mong i-unbind ang device \\", + "confirmUnbindAction": "Kumpirmahin ang pag-unbind", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Burahin ang Kasaysayan ng Chat", "online": "Online", @@ -702,7 +859,8 @@ const Map tlPH = { "inputMessage": "Mag-type ng mensahe...", "imListening": "Nakikinig...", "canStartTalking": "Maaari ka nang magsalita", - "addQuestionAboutImage": "Magdagdag ng tanong o paglalarawan tungkol sa larawan...", + "addQuestionAboutImage": + "Magdagdag ng tanong o paglalarawan tungkol sa larawan...", "summarizeImageContent": "Ibuod ang nilalaman ng larawan", "extractImageText": "I-extract ang teksto sa imahe", "translateImageText": "Isalin ang teksto sa imahe", @@ -721,49 +879,55 @@ const Map tlPH = { "loadMoreMessages": "Mag-load ng mas maraming mensahe...", "loadFailedClickRetry": "Nabigo ang pag-load, i-click para subukang muli", "swipeUpForMore": "Mag-swipe pataas para sa higit pa", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "callingTool": "Tinutulungan kita, pakihintay!", // 正在帮您,请稍等! + "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": "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': '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.', - 'voiceTranslationPermissionText': 'Ang pagkilala at pagsasalin ng boses ay nangangailangan ng access sa mikropono.', - 'phoneCallPermissionText': 'Ang pagtawag ay nangangailangan ng access sa mikropono para sa mga voice call.', - 'permissionDeniedText': 'Permanenteng tinanggihan mo ang pahintulot sa mikropono, mangyaring pumunta sa mga setting ng system para paganahin ito.', + 'voiceRecognitionPermissionText': + 'Ang pagkilala sa boses ay nangangailangan ng access sa mikropono.', + 'voiceTranslationPermissionText': + 'Ang pagkilala at pagsasalin ng boses ay nangangailangan ng access sa mikropono.', + 'phoneCallPermissionText': + 'Ang pagtawag ay nangangailangan ng access sa mikropono para sa mga voice call.', + 'permissionDeniedText': + 'Permanenteng tinanggihan mo ang pahintulot sa mikropono, mangyaring pumunta sa mga setting ng system para paganahin ito.', 'startVoiceInput': 'Simulan ang voice input', 'startPhoneCallMode': 'Simulan ang mode ng pagtawag, simulan ang voice input', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Ilagay ang iyong mensahe dito...', // 全屏编辑器输入提示 'characterCount': '{count} na character', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopyahin', 'copySuccess': 'Matagumpay na nakopya', 'report': 'I-report', 'submitSuccess': 'Matagumpay na naisumite', 'submitFailed': 'Nabigo ang pagsusumite', - 'reportSubmitted': 'Naisumite na ang report, ipoproseso namin ito sa lalong madaling panahon', - //'networkError': '网络错误,请稍后重试', + 'reportSubmitted': + 'Naisumite na ang report, ipoproseso namin ito sa lalong madaling panahon', 'harmfulUnsafe': 'Nakapipinsala/Hindi Ligtas', 'pornographicVulgar': 'Pornograpiko/Bastos', 'misleadingAttack': 'Mapanlinlang/Pag-atake', @@ -771,18 +935,23 @@ const Map tlPH = { 'privacyRelated': 'May kaugnayan sa Privacy', 'copyrightViolation': 'Lumabag sa aking copyright, reputasyon, atbp.', 'other': 'Iba pa', - 'reportDescriptionHint': 'Gusto naming malaman kung bakit ka nagre-report, maaari mong ilarawan ang problemang iyong naranasan.', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'Gusto naming malaman kung bakit ka nagre-report, maaari mong ilarawan ang problemang iyong naranasan.', 'generatedByAi': 'Nilikha ng AI', - //音乐卡片 music_card + // 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', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Narito ang ilang inirerekomendang musika:', 'playList': 'Playlist', 'moreMusic': 'Higit pang Musika', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'kilometro', // 公里单位 'meters': 'metro', // 米单位 'hours': 'oras', // 小时单位 @@ -797,20 +966,52 @@ const Map tlPH = { "bicycling": "Pagbibisikleta", "tsransit": "Pampublikong Sasakyan", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Pumili ng navigation app', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Mag-navigate gamit ang Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Mag-navigate gamit ang Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Mag-navigate gamit ang Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Mag-navigate gamit ang Apple Maps', + 'builtInNavigation': 'Built-in na navigation', + 'useBuiltInNavigation': 'Mag-navigate gamit ang built-in na mapa', + 'navigationStartFailed': 'Nabigong simulan ang navigation', + 'cannotPlayMusicListRetryLater': + 'Hindi mapatugtog ang listahan ng musika, pakisubukang muli mamaya', + 'cannotPlaySong': 'Hindi mapatugtog ang kanta', + 'openMapError': 'Nabigo ang pagbukas ng mapa', + 'pleaseInstallAmapApp': 'Paki-install muna ang Amap app', + 'pleaseInstallBaiduMapApp': 'Paki-install muna ang Baidu Maps app', + 'appleMapStartFailed': 'Nabigong simulan ang Apple Maps', + 'appleMapUnavailable': 'Hindi available ang Apple Maps', + 'openAppleMapError': 'Nabigo ang pagbukas ng Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Nagtatanong ng lagay ng panahon:', 'highest': 'Pinakamataas', 'lowest': 'Pinakamababa', 'futureForecast': 'Pagtataya sa Hinaharap', - 'hotWeatherTip': 'Mainit ngayon, mag-ingat sa heatstroke, uminom ng maraming tubig', - 'coldWeatherTip': 'Malamig ang temperatura ngayon, magsuot ng mainit na damit kapag lalabas para maiwasan ang sipon', - 'rainyWeatherTip': 'May ulan ngayon, magdala ng payong kapag lalabas, mag-ingat sa paglalakbay', - 'snowyWeatherTip': 'May snow ngayon, madulas ang daan, mag-ingat at magsuot ng panlamig', - 'foggyWeatherTip': 'May hamog ngayon, mababa ang visibility, magsuot ng mask kapag lalabas', - 'windyWeatherTip': 'Mahangin ngayon, mag-ingat kapag lalabas, i-secure ang mga gamit', - 'sunnyWeatherTip': 'Maaraw at malakas ang UV rays ngayon, maglagay ng sunscreen kapag lalabas', - 'temperatureDifferenceTip': 'Malaki ang pagkakaiba ng temperatura sa araw at gabi, magsuot ng damit na angkop', - 'comfortableWeatherTip': 'Maganda ang panahon ngayon, magandang oras para sa mga aktibidad sa labas', + 'hotWeatherTip': + 'Mainit ngayon, mag-ingat sa heatstroke, uminom ng maraming tubig', + 'coldWeatherTip': + 'Malamig ang temperatura ngayon, magsuot ng mainit na damit kapag lalabas para maiwasan ang sipon', + 'rainyWeatherTip': + 'May ulan ngayon, magdala ng payong kapag lalabas, mag-ingat sa paglalakbay', + 'snowyWeatherTip': + 'May snow ngayon, madulas ang daan, mag-ingat at magsuot ng panlamig', + 'foggyWeatherTip': + 'May hamog ngayon, mababa ang visibility, magsuot ng mask kapag lalabas', + 'windyWeatherTip': + 'Mahangin ngayon, mag-ingat kapag lalabas, i-secure ang mga gamit', + 'sunnyWeatherTip': + 'Maaraw at malakas ang UV rays ngayon, maglagay ng sunscreen kapag lalabas', + 'temperatureDifferenceTip': + 'Malaki ang pagkakaiba ng temperatura sa araw at gabi, magsuot ng damit na angkop', + 'comfortableWeatherTip': + 'Maganda ang panahon ngayon, magandang oras para sa mga aktibidad sa labas', "monday": "Lunes", "tuesday": "Martes", "wednesday": "Miyerkules", @@ -818,18 +1019,8 @@ const Map tlPH = { "friday": "Biyernes", "saturday": "Sabado", "sunday": "Linggo", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Maaraw", "partlyCloudy": "Bahagyang Maulap", "partlySunny": "Bahagyang Maaraw", @@ -850,7 +1041,145 @@ const Map tlPH = { "haze": "Ulop", "strongWind": "Malakas na Hangin", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Pagsasalin ng larawan", + "textTranslation": "Pagsasalin ng teksto", + + // 翻译模块 - 主页 + "translationHistory": "Kasaysayan ng Pagsasalin", + "enableRecording": "Paganahin ang Pag-record", + "viewAudioFiles": "Tingnan ang mga Audio File", + "headsetUser": "User ng Headset", + "phoneUser": "User ng Telepono", + "selectSourceLanguage": "Pumili ng pinagmulang wika", + "selectTargetLanguage": "Pumili ng target na wika", + "me": "Ako", + "counterPart": "Kausap", + "bluetoothCallStateError": + "Pakisiguro na nakakonekta ang Bluetooth headset sa telepono at nasa estado ng tawag", + "autoDetect": "Awtomatikong pagtukoy", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'I-disable ang floating window', + 'enableFloatingWindow': 'I-enable ang floating window', + 'permissionTip': 'Paalaala sa pahintulot', + 'micPermissionRequiredForRecording': + 'Kailangan ang pahintulot sa mikropono para sa pagre-record', + 'deleteTranslationRecordError': + 'Nabigo ang pagtanggal ng translation record: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Nabigo ang pagtukoy ng wika", + "translationFailed": "Nabigo ang pagsasalin", + "translating": "Isinasalin", + "translate": "Isalin", + "pleaseInputText": "Pakilagay ang teksto", + "inputTextToTranslate": "Pakilagay ang tekstong isasalin", + "textTooLong": "Masyadong mahaba ang teksto, max 5000 character", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Wala pang kasaysayan", + "historyRecords": "Mga tala sa kasaysayan", + "clearResults": "I-clear ang mga resulta", + "clearHistory": "Burahin ang Kasaysayan", + "clearHistoryConfirm": + "Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.", + "unknownLanguage": "Hindi Kilalang Wika", + "deleteSessionRecord": "Burahin ang talaan ng session", + "deleteSessionConfirm": + "Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Pumili ng pinagmulan ng larawan", + "imagePreview": "Preview ng larawan", + "translationResult": "Resulta ng pagsasalin", + "recognitionResult": "Resulta ng pagkilala", + "translatedImagePreview": "Preview ng isinaling larawan", + "translatedImageLoadFailed": "Nabigong i-load ang isinaling larawan", + "pleaseSelectImage": "Mangyaring pumili ng larawan", + "imageLoadFailed": "Nabigong i-load ang larawan", + "imageQuality": "Kalidad ng larawan", + "maxSize": "Pinakamalaking sukat", + "close": "Isara", + "setImageQuality": "Itakda ang kalidad ng larawan", + "currentQuality": "Kasalukuyang kalidad: @value%", + "setMaxSize": "Itakda ang max na sukat", + "currentMaxSize": "Kasalukuyan: @pxpx", + "waitingForAction": "Naghihintay ng aksyon", + "pleaseSelectImageToStart": "Mangyaring pumili ng larawan upang magsimula", + "chooseImage": "Pumili ng larawan", + "openingCamera": "Binubuksan ang kamera...", + "openingPhotoAlbum": "Binubuksan ang photo album...", + "cancelled": "Nakansela", + "userCancelledSelection": "Kinansela ng user ang pagpili", + "translatingImage": "Isinasalin ang larawan", + "callingImageTranslateService": + "Tinatawag ang serbisyo ng pagsasalin ng larawan...", + "savingRecord": "Sine-save ang record", + "savingTranslationResult": "Sine-save ang resulta ng pagsasalin...", + "translationCompleted": "Tapos na ang pagsasalin", + "allStepsCompleted": "Tapos na ang lahat ng hakbang", + "processingFailed": "Nabigo ang pagproseso", + "imageProcessingOrTranslationFailed": + "Nabigo ang pagproseso ng larawan o pagsasalin. Mangyaring subukan muli.\nError: {error}", + "imageTooLarge": "Image size exceeds 4MB limit", + "imageTooLargeHint": + "Image size exceeds 4MB. Reduce quality or dimensions and retry", + "emptyTranslationResult": + "Walang ibinalik na resulta ang image translation API", + "imageTranslationFailedTryLater": + "Nabigo ang pagsasalin ng larawan. Problema sa network o rate limit. Mangyaring subukan muli mamaya", + "imageTranslationApiException": + "May exception sa image translation API. Suriin ang network at subukan muli", + "permissionRequired": "Kailangan ng pahintulot", + "cameraPermissionRequired": + "Kailangan ng pahintulot sa kamera para kumuha ng larawan", + "photoAlbumPermissionRequired": + "Kailangan ng pahintulot sa photo album para pumili ng mga larawan", + "translationDetails": "Detalye ng pagsasalin", + "originalImage": "Original Image", + "sourceLanguage": "Source Language", + "targetLanguage": "Target Language", + "translationTime": "Oras ng pagsasalin", + "shareInDevelopment": "Ginagawa pa ang feature na pag-share", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Isalin ang mga Audio File", + "noAudioFiles": "Wala pang mga audio file", + "calculating": "Kinakalkula...", + "playing": "Nagpe-play...", + "paused": "Naka-pause", + "clickToPlay": "I-click para i-play", + "rename": "Palitan ang pangalan", + "smartTranscription": "Matalinong Transkripsyon", + "renameAudioFile": "Palitan ang pangalan ng audio file", + "enterNewFileName": "Pakilagay ang bagong pangalan ng file", + + // 翻译模块 - 翻译详情 + "originalRecord": "Orihinal na Record", + "recordSummary": "Buod ng Record", + "clickToGenerateSummary": + "I-click ang button sa ibaba para bumuo ng buod ng session", + "summaryContent": "Nilalaman ng Buod", + "copied": "Nakopya", + "summaryCopiledToClipboard": "Nakopya ang buod sa clipboard", + "extractSummary": "I-extract ang Buod", + "summaryGenerated": "Nabuong buod", + "generating": "Gumagawa...", + "regenerate": "Muling buuin", + "summaryTimeoutMessage": + "Nag-time out ang kahilingan sa pagbuo ng buod, maaaring dahil sa problema sa network o abala ang server.", + "deleteTranslationRecord": "Burahin ang talaan ng pagsasalin", + "deleteTranslationConfirm": + "Sigurado ka bang gusto mong burahin ang record ng pagsasalin na ito? Hindi na ito maibabalik.", + "originalText": "Orihinal na Teksto", + "translatedText": "Isinaling Teksto", + "sessionSummary": "Buod ng Session", + "cannotShare": "Hindi maibahagi", + "generateSummaryFirst": "Mangyaring bumuo muna ng buod", + "translationSessionRecord": "Talaan ng session ng pagsasalin", + + // 个人资料模块 "editProfile": "I-edit ang Personal na Impormasyon", "avatar": "Avatar", "nickname": "Palayaw", @@ -860,28 +1189,31 @@ const Map tlPH = { "notSet": "Hindi Naitakda", "accountSetting": "Setting ng Account", "logout": "Mag-logout", - "logoutTips": "Sigurado ka bang gusto mong mag-logout sa kasalukuyang account?", + "logoutTips": + "Sigurado ka bang gusto mong mag-logout sa kasalukuyang account?", 'deleteAccount': 'Burahin ang Account', - 'deleteAccountTips': 'Sigurado ka bang gusto mong permanenteng burahin ang iyong account? Hindi na ito maibabalik.', + 'deleteAccountTips': + 'Sigurado ka bang gusto mong permanenteng burahin ang iyong account? Hindi na ito maibabalik.', 'clean': 'Clear Cache', 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 - 'networkConnectionFailed': 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network at subukang muli', - 'serverTemporarilyUnavailable': 'Pansamantalang hindi available ang server, pakisubukang muli mamaya', - 'loginExpiredPleaseRelogin': 'Nag-expire na ang iyong pag-login, mangyaring mag-login muli', - 'noPermissionForThisOperation': 'Walang pahintulot na gawin ang operasyong ito', + 'networkConnectionFailed': + 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network at subukang muli', + 'serverTemporarilyUnavailable': + 'Pansamantalang hindi available ang server, pakisubukang muli mamaya', + 'loginExpiredPleaseRelogin': + 'Nag-expire na ang iyong pag-login, mangyaring mag-login muli', + 'noPermissionForThisOperation': + 'Walang pahintulot na gawin ang operasyong ito', 'requestedResourceNotFound': 'Hindi natagpuan ang hiniling na mapagkukunan', - 'imageProcessingFailedPleaseReselect': 'Nabigo ang pagproseso ng imahe, mangyaring pumili muli ng imahe', + 'imageProcessingFailedPleaseReselect': + 'Nabigo ang pagproseso ng imahe, mangyaring pumili muli ng imahe', 'operationFailedPleaseRetry': 'Nabigo ang operasyon, pakisubukang muli', 'serverReturnedError': 'Nagbalik ng error ang server', 'serverError': 'Error sa Server', - 'networkConnectionFailedCheckSettings': 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network', - 'serverInternalErrorRetryLater': 'Internal na error sa server, pakisubukang muli mamaya', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', + 'networkConnectionFailedCheckSettings': + 'Nabigo ang koneksyon sa network, pakisuri ang iyong mga setting ng network', + 'serverInternalErrorRetryLater': + 'Internal na error sa server, pakisubukang muli mamaya', 'imageCompressionFailed': 'Nabigo ang pag-compress ng imahe', 'avatarUpdateFailed': 'Nabigo ang pag-update ng avatar', 'usernameCannotBeEmpty': 'Hindi maaaring walang laman ang username', @@ -892,43 +1224,54 @@ const Map tlPH = { 'logoutFailedRetry': 'Nabigo ang pag-logout, pakisubukang muli', 'accountPermanentlyDeleted': 'Permanenteng nabura na ang account', 'deleteAccountFailedRetry': 'Nabigong burahin ang account, pakisubukang muli', - - // 账号服务相关 'clearUserDataFailed': 'Nabigong i-clear ang data ng user', // 清理用户数据失败 'deleteUserDataFailed': 'Nabigong burahin ang data ng user', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Matagumpay na naka-logout sa third-party', // 第三方登录退出成功 + 'thirdPartyLogoutSuccess': + 'Matagumpay na naka-logout sa third-party', // 第三方登录退出成功 'thirdPartyLogoutFailed': 'Nabigo ang pag-logout sa third-party', // 第三方登录退出失败 - 'signOutProcessError': 'Nagkaroon ng error sa proseso ng pag-sign out', // 登出过程发生错误 - 'deleteAccountProcessError': 'Nagkaroon ng error sa proseso ng pagbura ng account', // 删除账号过程发生错误 + 'signOutProcessError': + 'Nagkaroon ng error sa proseso ng pag-sign out', // 登出过程发生错误 + 'deleteAccountProcessError': + 'Nagkaroon ng error sa proseso ng pagbura ng account', // 删除账号过程发生错误 'userDataClearSuccess': 'Matagumpay na na-clear ang data ng user', // 用户数据清理成功 - 'allUserDataClearSuccess': 'Matagumpay na na-clear ang lahat ng data ng user', // 所有用户数据清理成功 - 'accountServiceInitialized': 'Naisimulan na ang AccountService', // AccountService 已初始化 + 'allUserDataClearSuccess': + 'Matagumpay na na-clear ang lahat ng data ng user', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'Naisimulan na ang AccountService', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': 'Storage', + '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': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Mga pahintulot sa Bluetooth', + 'notificationPermissions': 'Mga pahintulot sa notification', + 'storagePermissions': 'Mga pahintulot sa storage', + 'microphonePermissions': 'Mga pahintulot sa mikropono', + 'alarmPermissions': 'Mga pahintulot sa alarm', 'calendarPermissions': 'Mga Pahintulot sa Kalendaryo', 'locationPermissions': 'Mga Pahintulot sa Lokasyon', 'phone': 'Telepono', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Mga contact', + 'notification': 'Abiso', 'alarm': 'Alarm', 'calendarWrite': 'Pagsulat sa Kalendaryo', - 'calendarFullAccess': 'Buong Access sa Kalendaryo', + 'calendarFullAccess': 'Buong pahintulot sa kalendaryo', 'locationInfo': 'Impormasyon sa Lokasyon', 'phonePermissionDesc': 'Ginagamit para sa function ng pagtawag', 'smsPermissionDesc': 'Ginagamit para sa function ng pagpapadala ng SMS', - 'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time', - 'calendarWritePermissionDesc': 'Ginagamit para sa paglikha ng mga kaganapan at paalala sa kalendaryo', - 'calendarFullAccessPermissionDesc': 'Ginagamit para sa pagbabasa at pamamahala ng mga kaganapan at paalala sa kalendaryo', - 'locationPermissionDesc': 'Ginagamit para sa pagkuha ng kasalukuyang impormasyon sa lokasyon', + 'alarmPermissionDesc': + 'Ginagamit para mag-set ng eksaktong alarm upang masigurong tumunog ang mga paalala sa oras', + 'calendarWritePermissionDesc': + 'Ginagamit para sa paglikha ng mga kaganapan at paalala sa kalendaryo', + 'calendarFullAccessPermissionDesc': + 'Ginagamit para sa pagbabasa at pamamahala ng mga kaganapan at paalala sa kalendaryo', + 'locationPermissionDesc': + 'Ginagamit para sa pagkuha ng kasalukuyang impormasyon sa lokasyon', 'appFunctionNeeds': 'Kailangan ng function ng app', 'authorized': 'Pinahintulutan', 'unauthorized': 'Hindi Pinahintulutan', @@ -937,67 +1280,345 @@ const Map tlPH = { 'unknownStatus': 'Hindi Malamang Katayuan', 'permissionGranted': 'Naibigay na ang pahintulot', 'permissionRequestError': 'Error sa paghiling ng pahintulot', - 'phonePermissionDetailDesc': 'Ang function ng pagtawag ay nangangailangan ng pahintulot sa telepono', - 'smsPermissionDetailDesc': 'Ang function ng pagpapadala ng SMS ay nangangailangan ng pahintulot sa SMS', - 'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', - 'calendarWritePermissionDetailDesc': 'Ang paglikha ng mga kaganapan sa kalendaryo ay nangangailangan ng pahintulot sa pagsulat sa kalendaryo', - 'calendarFullAccessPermissionDetailDesc': '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': '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', + 'phonePermissionDetailDesc': + 'Ang function ng pagtawag ay nangangailangan ng pahintulot sa telepono', + 'smsPermissionDetailDesc': + 'Ang function ng pagpapadala ng SMS ay nangangailangan ng pahintulot sa SMS', + 'alarmPermissionDetailDesc': + 'Kailangan ang pahintulot na ito para magtakda ng eksaktong alarm at matiyak na mag-trigger ang mga paalala sa tamang oras', + 'calendarWritePermissionDetailDesc': + 'Ang paglikha ng mga kaganapan sa kalendaryo ay nangangailangan ng pahintulot sa pagsulat sa kalendaryo', + 'calendarFullAccessPermissionDetailDesc': + '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', + 'contactsPermissionDetailDesc': + 'Ang function ng pagtawag at SMS ay nangangailangan ng pahintulot sa contacts para pumili ng contacts', + 'bluetoothPermissionDesc': + 'Ginagamit para sa pagkonekta at pamamahala ng mga Bluetooth device', + 'bluetoothPermissionDetailDesc': + 'Ang pagkonekta sa Bluetooth headphones at iba pang device ay nangangailangan ng pahintulot sa Bluetooth', + 'bluetoothScanPermissionDesc': + 'Ginagamit para mag-scan ng mga kalapit na Bluetooth device', + 'bluetoothScanPermissionDetailDesc': + 'Ang pag-scan ng mga kalapit na Bluetooth device ay nangangailangan ng pahintulot sa Bluetooth scan', + 'bluetoothConnectPermissionDesc': + 'Ginagamit para kumonekta sa mga Bluetooth device', + 'bluetoothConnectPermissionDetailDesc': + 'Ang pagkonekta sa mga Bluetooth device ay nangangailangan ng pahintulot sa Bluetooth connect', 'notificationPermissionDesc': 'Used for sending notification messages', - 'notificationPermissionDetailDesc': 'App needs notification permission to send you important alerts and messages', - 'appNeedsPermissionForFullFunction': 'Kailangan ng app ang pahintulot na ito para sa buong paggana', - 'permanentDenialText': 'Permanenteng tinanggihan mo ang pahintulot sa {permission}, mangyaring pumunta sa mga setting ng app para paganahin ito', + 'notificationPermissionDetailDesc': + 'Kailangan ng app ang pahintulot sa notification para magpadala ng mahahalagang alerto at mensahe sa iyo', + 'appNeedsPermissionForFullFunction': + 'Kailangan ng app ang pahintulot na ito para sa buong paggana', + 'permanentDenialText': + 'Permanenteng tinanggihan mo ang pahintulot sa {permission}, mangyaring pumunta sa mga setting ng app para paganahin ito', 'goToSettings': 'Pumunta sa Mga Setting', - - // 权限申请 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', - 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', - '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.', -//'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.', + 'bluetoothConnect': 'Kumonekta sa Bluetooth', + 'bluetoothScanExplanation': + 'Kailangan ng app ang pahintulot sa Bluetooth scan para mag-scan ng mga kalapit na Bluetooth device.', + 'bluetoothConnectExplanation': + 'Kailangan ng app ang pahintulot sa Bluetooth connect para kumonekta sa mga Bluetooth device.', + 'locationForBluetoothExplanation': + 'Kailangan ng app ang pahintulot sa lokasyon para mag-scan ng mga Bluetooth device.', + 'bluetoothScanPermanentDenial': + 'Permanenteng tinanggihan ang pahintulot sa Bluetooth scan, mangyaring pumunta sa mga setting para paganahin ito nang manu-mano.', + 'bluetoothConnectPermanentDenial': + 'Permanenteng tinanggihan ang pahintulot sa Bluetooth connect, mangyaring pumunta sa mga setting para paganahin ito nang manu-mano.', + 'locationPermanentDenial': + 'Permanenteng tinanggihan ang pahintulot sa lokasyon, mangyaring pumunta sa mga setting para paganahin ito nang manu-mano.', + 'notificationPermission': 'Abiso', + 'locationPermission': 'Lokasyon', + 'notificationPermissionExplanation': + 'Kailangan ang pahintulot sa notification para ipakita ang status ng pagpe-play ng musika.', + 'locationPermissionExplanation': + 'Kailangan ang pahintulot sa lokasyon para makuha ang kasalukuyang lokasyon.', + 'notificationPermissionPermanentDenial': + 'Permanenteng tinanggihan mo ang pahintulot sa notification, mangyaring pumunta sa mga setting para paganahin ito.', + 'locationPermissionPermanentDenial': + 'Permanenteng tinanggihan mo ang pahintulot sa lokasyon, mangyaring pumunta sa mga setting para paganahin ito.', + 'storagePermission': 'Imbakan', + 'microphonePermissionExplanation': + 'Kailangan namin ang pahintulot sa mikropono para mag-record ng audio content.', + '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': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + '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', + 'permissionUtilRestrictedMessage': + 'Hindi available o may restriksyon ang feature na ito sa kasalukuyang device, mangyaring suriin ang mga setting ng device o mga restriksyon ng system', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Nagna-navigate', + 'native.notification.navigation.keepRunning': + 'Nagna-navigate, panatilihing bukas ang app', + 'native.notification.bleAgent.running': 'Tumatakbo ang voice assistant agent', + 'native.notification.audioRecording.recording': + 'Nagre-record ng audio, i-tap para bumalik sa app', + 'native.notification.music.waiting': 'Naghihintay na mag-play', + 'native.notification.music.previous': 'Nakaraang', + 'native.notification.music.next': 'Susunod', + 'native.notification.music.play': 'I-play', + 'native.notification.music.pause': 'I-pause', + 'native.notification.qqMusic.playing': 'Nagpe-play ng musika', + + // 版本更新 'newVersionFound': 'May Natagpuang Bagong Bersyon', // 版本更新对话框标题 'remindLater': 'Paalalahanan Mamaya', // 稍后提醒按钮 'updateNow': 'I-update Ngayon', // 立即更新按钮 'checkUpdate': 'Suriin kung may Update', // 检查更新按钮 'updateFailed': 'Nabigo ang Pag-update', // 更新失败提示 - 'cannotOpenAppStore': 'Hindi mabuksan ang app store, mangyaring pumunta nang manu-mano sa app store para mag-update', // 无法打开应用商店提示 - 'updateErrorRetry': 'Nagkaroon ng error habang nag-a-update, pakisubukang muli mamaya', // 更新错误重试提示 + 'cannotOpenAppStore': + 'Hindi mabuksan ang app store, mangyaring pumunta nang manu-mano sa app store para mag-update', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Nagkaroon ng error habang nag-a-update, pakisubukang muli mamaya', // 更新错误重试提示 + + // 配对模块 + "devicePairing": "Pag-pair ng Device", + "connectYourDeepSoundHeadset": "Ikonekta ang iyong Voitrans Headset", + "bind": "I-bind", + "authorizeBind": "Pahintulutan ang pag-bind", + "enterCode": "Pakilagay ang code", + "autoInputCode": "Awtomatikong ilagay ang code", + "skipBinding": "Laktawan ang pag-bind", + "rescan": "I-scan muli", + "verifyingDevice": "Bine-verify ang device...", + "confirmBinding": "Kumpirmahin ang pag-bind", + "associatingDevice": "Inuugnay ang device...", + "goToBluetoothSettings": "Pumunta sa Mga Setting ng Bluetooth", + 'bluetooth': 'Bluetooth', + "readyToPair": "Handa nang i-pair", + "preparingPairingEnvironment": + "Inihahanda ang kapaligiran para sa pag-pair...", + "connectDeepSoundViaSystemBluetooth": + "Mangyaring kumonekta muna sa Voitrans device sa pamamagitan ng system Bluetooth", + "deviceBindingConfirm": "Kumpirmasyon sa pag-bind ng device...", + "establishingDeviceAssociation": "Itinatatag ang ugnayan ng device...", + "waitingCompletePairing": "Pakihintay, kinukumpleto ang pag-pair...", + "pairingSuccessRedirecting": + "Matagumpay ang pag-pair! Papunta na sa home page...", + "ensureConnectedDeepSoundDevice": + "Pakitiyak na konektado ka sa isang Voitrans device", + "deviceAlreadyBoundToOtherAccount": + "Ang device na ito ay naka-bind na sa ibang account", + "deviceAssociationFailed": + "Nabigo ang pag-uugnay ng device, pakisubukang muli", + "scanTimeoutEnsureDeviceNearby": + "Nag-time out ang pag-scan, pakitiyak na malapit ang device", + "networkError": "Error sa Network", + "authorizationFailedCheckCode": + "Nabigo ang awtorisasyon, pakisuri kung tama ang authorization code", + "pairingFailedRetry": "Nabigo ang pag-pair, pakisubukang muli", + 'pleaseEnableBluetooth': 'Paki-enable ang Bluetooth', + 'deviceDisconnected': 'Nadiskonekta ang device', + 'readyToStartPairing': 'Handa nang simulan ang pag-pair', + 'checkingEnvironment': 'Sinusuri ang kapaligiran...', + 'ensureHeadsetOnAndPairingMode': + 'Pakitiyak na naka-on ang headset at nasa pairing mode', + 'establishingSecureConnection': 'Itinatatag ang secure na koneksyon...', + 'needManualBindingAuthCode': + 'Kailangan ng manual binding authorization code...', + 'pairingSuccessful': 'Matagumpay ang pag-pair!', + 'enableBluetooth': 'Paganahin ang Bluetooth', + 'grantPermissions': 'Magbigay ng mga Pahintulot', + 'retryAssociation': 'Muling iugnay', + 'retryAuthorization': 'Muling pahintulutan', + 'pleaseGrantNecessaryPermissions': + 'Pakibigay ang mga kinakailangang pahintulot', + 'checkFailedRetry': 'Nabigo ang pagsuri, pakisubukang muli', + 'pleaseConnectDeepSoundDevice': 'Pakikonekta ang isang Voitrans device', + 'verificationFailedRetry': 'Nabigo ang pag-verify, pakisubukang muli', + 'invalidDeviceAddress': 'Hindi wastong address ng device', + 'bleDeviceAssociationFailed': 'Nabigo ang pag-uugnay ng BLE device', + 'deviceAssociationFailedRetry': + 'Nabigo ang pag-uugnay ng device, pakisubukang muli', + 'bleConnectionTimeoutRetry': + 'Nag-time out ang koneksyon ng BLE, pakisubukang muli', + 'blePairingStartupFailed': 'Nabigo ang pagsisimula ng BLE pairing', + 'bleConnectionFailed': 'Nabigo ang koneksyon ng BLE', + 'deviceAuthorizationFailedCheckCode': + 'Nabigo ang awtorisasyon ng device, pakisuri ang authorization code', + 'bluetoothGuideTitle': + 'Kailangang i-on ang Bluetooth nang manu-mano', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Sundin ang mga hakbang na ito:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'I-enable ang Bluetooth: Settings → Bluetooth → I-on', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'Ikonekta ang device: Hanapin ang iyong device sa "My Devices" at i-tap para kumonekta', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': + 'Bumalik sa app para ipagpatuloy ang pairing', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'Tip: Maaari ring i-long press ang Bluetooth icon sa Control Center para mabilis na mabuksan ang Bluetooth settings', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Naiintindihan ko', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Gantimpala sa pag-bind", + "firstBindRewardDesc": + "Naibigay na ang gantimpala para sa unang pag-bind ng device.", + "vipLevelLabel": "Antas ng VIP:", + "expiryLabel": "Petsa ng pag-expire:", + "notActivated": "Hindi pa na-activate", + "aiChatCreditsLabel": "Mga Kredito sa AI Chat:", + "translationCreditsLabel": "Mga Kredito sa Pagsasalin:", + "meetingCreditsLabel": "Mga Kredito sa Meeting:", + "ok": "OK", + + // 用户反馈模块 + "feedback": "Feedback ng User", + 'feedbackInfo': 'Magbigay ng feedback o suhestiyon', + 'feedbackDescription': + 'Pakilarawan ang problemang naranasan o ang iyong suhestiyon', + 'feedbackHint': 'Pakilagay ang iyong feedback...', + 'feedbackRequired': 'Pakilagay ang nilalaman ng feedback', + 'contactInfo': 'Impormasyon sa Pakikipag-ugnayan', + 'contactHint': 'Email/Numero ng telepono, para makontak ka namin', + 'submit': 'Isumite', + 'feedbackSubmitSuccess': + 'Matagumpay na naisumite ang feedback, salamat sa iyong feedback!', + 'feedbackSubmitFailed': + 'Nabigong isumite ang feedback, pakisubukang muli mamaya', + + // OTA升级模块 + "upgradeExitConfirm": + "Kasalukuyang nag-a-upgrade, ang pag-exit ay makakaantala sa proseso, sigurado ka bang gusto mong mag-exit?", + "deviceModel": "Modelo ng Device", + "unknownDevice": "Hindi Kilalang Device", + "currentFirmwareVersion": "Kasalukuyang Bersyon ng Firmware", + "latestFirmwareVersion": "Pinakabagong Bersyon ng Firmware", + "ota_newVersionFound": "May natagpuang bagong bersyon", + "latestVersion": "Nasa pinakabagong bersyon na", + "gettingDeviceInfo": "Kinukuha ang impormasyon ng device...", + "keepDeviceConnected": "Panatilihing konektado ang device", + "connectionFailed": "Nabigo ang Koneksyon", + "retryConnection": "Muling kumonekta", + "ota_updateNow": "I-update Ngayon", + "otaVersionInfoFailed": + "Nabigong kunin ang impormasyon ng bersyon. Pakisubukang muli mamaya.", + "otaDeviceInfoUnavailable": + "Hindi makuha ang impormasyon ng device. Mangyaring suriin ang koneksyon at subukan muli.", + "otaProductInfoUnavailable": + "Hindi matukoy ang device. Mangyaring muling kumonekta at subukan muli.", + "otaFirmwareVersionInvalid": + "Abnormal ang firmware version. Mangyaring muling kumonekta at subukan muli.", + "keepConnectedDontClose": + "Panatilihing konektado ang device, huwag isara ang app", + "doNotDisconnect": "Huwag idiskonekta", + "charging": "Nagcha-charge", + "updateContent": "Nilalaman ng Update", + "removeEarbudsEnsureBattery": + "Alisin ang parehong earbuds, at tiyaking parehong may 20% o higit pang baterya", + + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'New version @version found', + 'otaConfirmUpdateNow': 'Update now?', + 'otaUpdate': 'Update', + 'otaUpgradeSuccess': 'Matagumpay ang pag-upgrade', + 'otaUpgradeCompleteRepair': + 'Kumpleto na ang firmware upgrade!\n\nKailangan i-re-pair ang device para gumana nang maayos. Pumunta sa pahina ng pairing ngayon?', + 'otaPairLater': 'Pair Later', + 'otaPairNow': 'Pair Now', + 'okConfirm': 'OK', + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': + 'Kamalian sa pag-check ng koneksyon ng BLE: @error', + 'otaBleNotConnected': 'Hindi nakakonekta ang BLE device', + 'otaBleNeedConnection': + 'Kailangan ng koneksyon sa BLE device para sa firmware upgrade\nMangyaring tiyaking maayos na nakakonekta ang device at subukan muli', + 'otaDeviceInfoUnavailableTitle': 'Hindi available ang impormasyon ng device', + 'otaCannotGetDeviceInfo': + 'Hindi makuha ang impormasyon ng device\nMangyaring muling ikonekta ang device o subukan muli mamaya', + 'otaBleCheckFailed': 'Nabigo ang pag-check ng koneksyon ng BLE', + 'otaCannotGetDeviceInfoCheckConnection': + 'Hindi makuha ang impormasyon ng device, mangyaring suriin ang koneksyon ng device', + 'otaCannotGetProductInfoWithName': + 'Hindi makuha ang impormasyon ng produkto, pangalan ng device: @deviceName', + 'otaCannotGetBatteryInfo': 'Cannot get valid battery info', + 'otaLowBattery': 'Low Battery', + 'otaSingleBatteryLow': + 'Masyadong mababa ang baterya ng device para sa firmware upgrade\nKinakailangan: dapat higit sa 20% ang baterya\nKasalukuyan: @ear @battery%\nMangyaring i-charge at subukan muli', + 'otaDoubleBatteryLow': + 'Masyadong mababa ang baterya ng device para sa firmware upgrade\nKinakailangan: parehong earbuds ay dapat higit sa 20%\nKasalukuyan: Kaliwa @left%, Kanan @right%\nMangyaring i-charge at subukan muli', + 'otaBatteryCheckFailed': 'Nabigo ang pag-check ng baterya', + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + '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': + 'Nabigo ang pag-download, pakisuri ang koneksyon sa network', + 'otaDownloadFailed': 'Nabigo ang pag-download', + 'otaPreparingConnection': 'Inihahanda ang koneksyon ng device...', + 'otaConnectingDevice': 'Kumokonekta sa device...', + 'otaUpgradeStarted': 'Nagsimula na ang OTA upgrade...', + 'otaUpgradeProgressWithPercent': 'Progress ng upgrade: @percent%', + 'otaUpgradeSuccessComplete': 'Matagumpay na natapos ang pag-upgrade', + 'otaUpgradeFailedWithCode': 'Nabigo ang pag-upgrade, code ng error: @code', + 'otaUpgradeFailedTitle': 'Nabigo ang pag-upgrade', + 'otaUpgradeFailedDesc': + 'Pakisuri ang koneksyon ng device o ang update package, code ng error: @code', + 'otaDeviceDisconnected': 'Na-disconnect ang device', + 'otaDeviceConnected': 'Nakakonekta ang device', + + // 音乐模块 + "noMusic": "Walang Musika", // 暂无音乐 + "noPlayingMusic": "Walang tumutugtog na musika", // 暂无播放音乐 + "unknownSong": "Hindi Kilalang Kanta", // 未知歌曲 + "unknownArtist": "Hindi Kilalang Artista", // 未知歌手 + "playAll": "I-play Lahat", // 播放全部 - //国家列表 + // 语言名称 + "中文(简体)": "中文(简体)", + "中文(繁体)": "中文(繁体)", + "中文(香港繁体)": "中文(香港繁体)", + "英语": "Ingles", + "日语": "Hapon", + "韩语": "Koreano", + "法语": "Pranses", + "西班牙语": "Espanyol", + "葡萄牙语": "Portuges", + "意大利语": "Italyano", + "德语": "Aleman", + "俄语": "Ruso", + "波兰语": "Polish", + "荷兰语": "Olandes", + "瑞典语": "Suweko", + "捷克语": "Czech", + "现代希腊语": "Modernong Griyego", + "罗马尼亚语": "Romanian", + "匈牙利语": "Hungarian", + "乌克兰语": "Ukrainian", + "丹麦语": "Danes", + "芬兰语": "Finnish", + "挪威语": "Norwegian", + "克罗地亚语": "Croatian", + "加泰隆语": "Catalan", + "阿拉伯语": "Arabe", + "泰语": "Thai", + "越南语": "Vietnamese", + "印尼语": "Indonesian", + "印地语": "Hindi", + "土耳其语": "Turko", + "马来语": "Malay", + "孟加拉语": "Bengali", + "泰米尔语": "Tamil", + "泰卢固语": "Telugu", + "马拉提语": "Marathi", + "乌尔都语": "Urdu", + "波斯语": "Persian", + "斯瓦希里语": "Swahili", + + // 国家列表 "邮箱": "Email", "中国": "China", "美国": "Estados Unidos", @@ -1068,7 +1689,7 @@ const Map tlPH = { "萨尔瓦多": "El Salvador", "洪都拉斯": "Honduras", "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", + "哥斯达黎加": "Kosta Rika", "巴拿马": "Panama", "海地": "Haiti", "玻利维亚": "Bolivia", @@ -1115,293 +1736,4 @@ const Map tlPH = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Kasaysayan ng Pagsasalin", - "enableRecording": "Paganahin ang Pag-record", - "viewAudioFiles": "Tingnan ang mga Audio File", - "headsetUser": "User ng Headset", - "phoneUser": "User ng Telepono", - "selectSourceLanguage": "Pumili ng pinagmulang wika", - "selectTargetLanguage": "Pumili ng target na wika", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Wala pang kasaysayan", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Burahin ang Kasaysayan", - "clearHistoryConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng kasaysayan ng pagsasalin? Hindi na ito maibabalik.", - "unknownLanguage": "Hindi Kilalang Wika", - "deleteSessionRecord": "Burahin ang Record ng Session", - "deleteSessionConfirm": "Sigurado ka bang gusto mong burahin ang lahat ng record ng pagsasalin para sa session na ito? Hindi na ito maibabalik.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Isalin ang mga Audio File", - "noAudioFiles": "Wala pang mga audio file", - "calculating": "Kinakalkula...", - "playing": "Nagpe-play...", - "paused": "Naka-pause", - "clickToPlay": "I-click para i-play", - "rename": "Palitan ang pangalan", - "smartTranscription": "Matalinong Transkripsyon", - "renameAudioFile": "Palitan ang pangalan ng audio file", - "enterNewFileName": "Pakilagay ang bagong pangalan ng file", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Orihinal na Record", - "recordSummary": "Buod ng Record", - "clickToGenerateSummary": "I-click ang button sa ibaba para bumuo ng buod ng session", - "summaryContent": "Nilalaman ng Buod", - "copied": "Nakopya", - "summaryCopiledToClipboard": "Nakopya ang buod sa clipboard", - "extractSummary": "I-extract ang Buod", - "summaryGenerated": "Nabuong buod", - "generating": "Gumagawa...", - "regenerate": "Muling buuin", - "summaryTimeoutMessage": "Nag-time out ang kahilingan sa pagbuo ng buod, maaaring dahil sa problema sa network o abala ang server.", - "deleteTranslationRecord": "Burahin ang Record ng Pagsasalin", - "deleteTranslationConfirm": "Sigurado ka bang gusto mong burahin ang record ng pagsasalin na ito? Hindi na ito maibabalik.", - "originalText": "Orihinal na Teksto", - "translatedText": "Isinaling Teksto", - "sessionSummary": "Buod ng Session", - "cannotShare": "Hindi maibahagi", - "generateSummaryFirst": "Mangyaring bumuo muna ng buod", - "translationSessionRecord": "Record ng Session ng Pagsasalin", - - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) - "devicePairing": "Pag-pair ng Device", - "connectYourDeepSoundHeadset": "Ikonekta ang iyong Voitrans Headset", - "bind": "I-bind", - "authorizeBind": "Pahintulutan ang pag-bind", - "enterCode": "Pakilagay ang code", - "autoInputCode": "Awtomatikong ilagay ang code", - "skipBinding": "Laktawan ang pag-bind", - "rescan": "I-scan muli", - - "verifyingDevice": "Bine-verify ang device...", - "confirmBinding": "Kumpirmahin ang pag-bind", - "associatingDevice": "Inuugnay ang device...", - "goToBluetoothSettings": "Pumunta sa Mga Setting ng Bluetooth", - 'bluetooth': 'Bluetooth', - - // 配对状态文本 - "readyToPair": "Handa nang i-pair", - "preparingPairingEnvironment": "Inihahanda ang kapaligiran para sa pag-pair...", - "connectDeepSoundViaSystemBluetooth": "Mangyaring kumonekta muna sa Voitrans device sa pamamagitan ng system Bluetooth", - "deviceBindingConfirm": "Kumpirmasyon sa pag-bind ng device...", - "establishingDeviceAssociation": "Itinatatag ang ugnayan ng device...", - "waitingCompletePairing": "Pakihintay, kinukumpleto ang pag-pair...", - "pairingSuccessRedirecting": "Matagumpay ang pag-pair! Papunta na sa home page...", - - // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "Pakitiyak na konektado ka sa isang Voitrans device", - "deviceAlreadyBoundToOtherAccount": "Ang device na ito ay naka-bind na sa ibang account", - "deviceAssociationFailed": "Nabigo ang pag-uugnay ng device, pakisubukang muli", - "scanTimeoutEnsureDeviceNearby": "Nag-time out ang pag-scan, pakitiyak na malapit ang device", - "networkError": "Error sa Network", - "authorizationFailedCheckCode": "Nabigo ang awtorisasyon, pakisuri kung tama ang authorization code", - "pairingFailedRetry": "Nabigo ang pag-pair, pakisubukang muli", - - // 配对控制器相关 - //'connectDevice': '连接设备', - 'pleaseEnableBluetooth': 'Paki-enable ang Bluetooth', - 'deviceDisconnected': 'Nadiskonekta ang device', - 'readyToStartPairing': 'Handa nang simulan ang pag-pair', - 'checkingEnvironment': 'Sinusuri ang kapaligiran...', - 'ensureHeadsetOnAndPairingMode': 'Pakitiyak na naka-on ang headset at nasa pairing mode', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', - 'establishingSecureConnection': 'Itinatatag ang secure na koneksyon...', - 'needManualBindingAuthCode': 'Kailangan ng manual binding authorization code...', - 'pairingSuccessful': 'Matagumpay ang pag-pair!', - 'enableBluetooth': 'Paganahin ang Bluetooth', - 'grantPermissions': 'Magbigay ng mga Pahintulot', - 'retryAssociation': 'Muling iugnay', - 'retryAuthorization': 'Muling pahintulutan', - 'pleaseGrantNecessaryPermissions': 'Pakibigay ang mga kinakailangang pahintulot', - 'checkFailedRetry': 'Nabigo ang pagsuri, pakisubukang muli', - 'pleaseConnectDeepSoundDevice': 'Pakikonekta ang isang Voitrans device', - 'verificationFailedRetry': 'Nabigo ang pag-verify, pakisubukang muli', - 'invalidDeviceAddress': 'Hindi wastong address ng device', - 'bleDeviceAssociationFailed': 'Nabigo ang pag-uugnay ng BLE device', - 'deviceAssociationFailedRetry': 'Nabigo ang pag-uugnay ng device, pakisubukang muli', - 'bleConnectionTimeoutRetry': 'Nag-time out ang koneksyon ng BLE, pakisubukang muli', - 'blePairingStartupFailed': 'Nabigo ang pagsisimula ng BLE pairing', - 'bleConnectionFailed': 'Nabigo ang koneksyon ng BLE', - 'deviceAuthorizationFailedCheckCode': 'Nabigo ang awtorisasyon ng device, pakisuri ang authorization code', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 - '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": "Feedback ng User", - 'feedbackInfo': 'Magbigay ng feedback o suhestiyon', - 'feedbackDescription': 'Pakilarawan ang problemang naranasan o ang iyong suhestiyon', - 'feedbackHint': 'Pakilagay ang iyong feedback...', - 'feedbackRequired': 'Pakilagay ang nilalaman ng feedback', - 'contactInfo': 'Impormasyon sa Pakikipag-ugnayan', - 'contactHint': 'Email/Numero ng telepono, para makontak ka namin', - 'submit': 'Isumite', - 'feedbackSubmitSuccess': 'Matagumpay na naisumite ang feedback, salamat sa iyong feedback!', - 'feedbackSubmitFailed': 'Nabigong isumite ang feedback, pakisubukang muli mamaya', - - // OTA升级模块 - "upgradeExitConfirm": "Kasalukuyang nag-a-upgrade, ang pag-exit ay makakaantala sa proseso, sigurado ka bang gusto mong mag-exit?", - "deviceModel": "Modelo ng Device", - "unknownDevice": "Hindi Kilalang Device", - "currentFirmwareVersion": "Kasalukuyang Bersyon ng Firmware", - "latestFirmwareVersion": "Pinakabagong Bersyon ng Firmware", - "ota_newVersionFound": "May natagpuang bagong bersyon", - "latestVersion": "Nasa pinakabagong bersyon na", - "gettingDeviceInfo": "Kinukuha ang impormasyon ng device...", - "keepDeviceConnected": "Panatilihing konektado ang device", - "connectionFailed": "Nabigo ang Koneksyon", - "retryConnection": "Muling kumonekta", - "ota_updateNow": "I-update Ngayon", - "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.", - "keepConnectedDontClose": "Panatilihing konektado ang device, huwag isara ang app", - "doNotDisconnect": "Huwag idiskonekta", - "charging": "Nagcha-charge", - "updateContent": "Nilalaman ng Update", - "removeEarbudsEnsureBattery": "Alisin ang parehong earbuds, at tiyaking parehong may 20% o higit pang baterya", - - // 音乐列表页面 - "noMusic": "Walang Musika", // 暂无音乐 - "noPlayingMusic": "Walang tumutugtog na musika", // 暂无播放音乐 - "unknownSong": "Hindi Kilalang Kanta", // 未知歌曲 - "unknownArtist": "Hindi Kilalang Artista", // 未知歌手 - "playAll": "I-play Lahat", // 播放全部 - - // 语言名称 - "中文(简体)": "中文(简体)", - "中文(繁体)": "中文(繁体)", - "中文(香港繁体)": "中文(香港繁体)", - "英语": "Ingles", - "日语": "Hapon", - "韩语": "Koreano", - "法语": "Pranses", - "西班牙语": "Espanyol", - "葡萄牙语": "Portuges", - "意大利语": "Italyano", - "德语": "Aleman", - "俄语": "Ruso", - "波兰语": "Polish", - "荷兰语": "Olandes", - "瑞典语": "Suweko", - "捷克语": "Czech", - "现代希腊语": "Modernong Griyego", - "罗马尼亚语": "Romanian", - "匈牙利语": "Hungarian", - "乌克兰语": "Ukrainian", - "丹麦语": "Danes", - "芬兰语": "Finnish", - "挪威语": "Norwegian", - "克罗地亚语": "Croatian", - "加泰隆语": "Catalan", - "阿拉伯语": "Arabe", - "泰语": "Thai", - "越南语": "Vietnamese", - "印尼语": "Indonesian", - "印地语": "Hindi", - "土耳其语": "Turko", - "马来语": "Malay", - "孟加拉语": "Bengali", - "泰米尔语": "Tamil", - "泰卢固语": "Telugu", - "马拉提语": "Marathi", - "乌尔都语": "Urdu", - "波斯语": "Persian", - "斯瓦希里语": "Swahili", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", }; diff --git a/lib/core/translations/language/tr_tr.dart b/lib/core/translations/language/tr_tr.dart index a58b9b03b..571b132fe 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,6 +19,11 @@ const Map trTR = { "unknownError": "Bilinmeyen Hata", "asrConnectionFailed": "Ses tanıma servisine bağlantı başarısız oldu. Lütfen ağı kontrol edin veya daha sonra tekrar deneyin.", + "justNow": "Ş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", @@ -28,7 +34,7 @@ const Map trTR = { "explore": "Keşfet", "settings": "Ayarlar", - // 语言 + // 语言列表 "followingSystem": "Sistemi Takip Et", "chinese": "Çince", "english": "İngilizce", @@ -72,9 +78,10 @@ const Map trTR = { "arabic": "Arapça", "persian": "Farsça", - // 登录页 + // 登录模块 "welcome": "Hoş Geldiniz", - "loginTips": "Lütfen telefon numaranızı veya e-postanızı kullanarak giriş yapın veya hesap oluşturun", + "loginTips": + "Lütfen telefon numaranızı veya e-postanızı kullanarak giriş yapın veya hesap oluşturun", "accountNumber": "Telefon Numarası veya E-posta", "verificationCode": "Doğrulama Kodu", "getCode": "Kodu Al", @@ -93,20 +100,18 @@ const Map trTR = { "tip": "İpucu", "pleaseEnterCompleteCode": "Lütfen tam doğrulama kodunu girin", "loginFailed": "Giriş başarısız, lütfen tekrar deneyin", - 'pleaseAcceptPrivacyPolicy': 'Lütfen önce Gizlilik Politikasını ve Kullanıcı Sözleşmesini okuyup kabul edin', + 'pleaseAcceptPrivacyPolicy': + 'Lütfen önce Gizlilik Politikasını ve Kullanıcı Sözleşmesini okuyup kabul edin', "enterVerificationCode": "Doğrulama kodunu girin", "verificationCodeSentTo": "Doğrulama kodu şuraya gönderildi:", "resendVerificationCode": "Doğrulama kodunu tekrar gönder", "login": "Giriş Yap", "usePasswordLogin": "Parolayla Giriş Yap", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans Beyanı", // Voitrans 声明 - "welcomeToThisApp": "Voitrans'a hoş geldiniz, lütfen dikkatlice okuyun", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "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", // 同意并进入 @@ -118,17 +123,20 @@ const Map trTR = { "signal": "Sinyal", "deviceId": "Cihaz Kimliği", "firmwareVersion": "Donanım Yazılımı Sürümü", - "disconnectedDevice": "Bağlı cihaz yok, bağlanmak için aşağıdaki düğmeye tıklayın", + "disconnectedDevice": + "Bağlı cihaz yok, bağlanmak için aşağıdaki düğmeye tıklayın", "connectDevice": "Cihaz Bağla", "topAiExperiences": "En İyi Yapay Zeka Deneyimleri", "aiAssistant": "Her Şey Dahil Yapay Zeka Asistanı", "aiAssistantInfo": "Sorular ve tavsiyeler için 7/24 özel danışman", "interpretation": "Simultane Çeviri", - "simultaneousInterpretationInfo": "Birden çok dil için gerçek zamanlı çeviri, sorunsuz yurt dışı seyahati", + "simultaneousInterpretationInfo": + "Birden çok dil için gerçek zamanlı çeviri, sorunsuz yurt dışı seyahati", "aiCompanion": "Aile Arkadaşı", "aiCompanionInfo": "Sizi anlar ve sıcak bir arkadaşlık sunar", "homeSlogan": "Dünyayla bağlan, sesin ötesine geç", - "turnEarphones": "Lütfen kulaklık şarj kutusunu açın ve kulaklıkları kulaklarınıza takın", + "turnEarphones": + "Lütfen kulaklık şarj kutusunu açın ve kulaklıkları kulaklarınıza takın", "currentlyConnected": "Şu anda bağlı:", "unsystemSetup": "Sistem ayarlarına git", "talkLater": "Daha Sonra", @@ -159,7 +167,30 @@ const Map trTR = { 'right': 'Sağ', 'checkConnectionStatusFailed': 'Bağlantı durumu kontrol edilemedi', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Bluetooth başlatma başarısız: @error', + 'needBluetoothAndLocationPermission': + 'Cihazları taramak için Bluetooth ve konum izinleri gereklidir', + 'permissionRequestFailedWithError': 'İzin isteği başarısız: @error', + 'needPermission': 'İzin Gerekli', + 'blePermissionDialogContent': + 'Bu uygulama cihazları taramak için Bluetooth ve konum izinlerine ihtiyaç duyar. Lütfen Ayarlar\'dan etkinleştirin.', + 'needEnableBluetooth': 'Bluetooth\'u Etkinleştir', + 'enableBluetoothDialogContent': + '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...", "exploreSlogan": "Akıllı Kulaklıklar, Sonsuz Olasılıklar", "exploreSlogan1": "Akıllı arkadaş, sonsuz olanaklar", @@ -178,200 +209,276 @@ const Map trTR = { "healthConsultant": "Çok Fonksiyonlu Yapay Zeka Sohbeti", "healthConsultantInfo": "Daha fazla yapay zeka sohbet özelliği sunar", "conferenceAssistant": "İş Toplantısı Asistanı", - "conferenceAssistantInfo": "Gerçek zamanlı toplantı tutanakları, çok dilli çeviri", + "conferenceAssistantInfo": + "Gerçek zamanlı toplantı tutanakları, çok dilli çeviri", "usageStats": "Kullanım İstatistikleri", "usageStatsInfo": "Kullanım istatistiklerinizi görüntüleyin", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 + "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": + "İ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': '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', + 'paymentFailedTryAgain': 'Ödeme başarısız oldu. Lütfen tekrar deneyin.', + 'selectPaymentMethod': 'Ödeme yöntemini seçin', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'WeChat Pay siparişi oluşturulamadı', + 'alipayOrderCreateFailed': 'Alipay siparişi oluşturulamadı', + 'appleOrderCreateFailed': 'Apple siparişi oluşturulamadı', + 'googleOrderCreateFailed': 'Google siparişi oluşturulamadı', + 'paypalOrderCreateFailed': 'PayPal siparişi oluşturulamadı', + 'paymentException': 'Ödeme istisnası', + 'paymentLaunchFailed': 'Ödeme başlatılamadı', + 'paymentExceptionWithError': 'Ödeme istisnası: @error', + 'paymentProcessingCheckLater': + 'Siparişiniz işleniyor. Lütfen daha sonra kontrol edin.', + 'paymentResultQueryException': 'Ödeme sonucu sorgulanamadı: @error', + 'orderConfirmedQuotaRefreshed': 'Sipariş onaylandı. Kotanız yenilendi.', + 'paymentCompletedConfirming': 'Ödeme tamamlandı. Onaylanıyor…', + 'paymentCancelled': 'Ödeme iptal edildi', + 'paypalOpenedCompleteInBrowser': + 'PayPal açıldı. Lütfen tarayıcınızda ödemeyi tamamlayın.', + 'paypalOpenFailed': 'PayPal ödeme sayfası açılamıyor', + 'paymentTestTitle': 'Ödeme Testi', + 'paymentTestOrderInfo': 'Test Sipariş Bilgisi', + 'paymentTestProductId': 'Ürün Kimliği', + 'paymentTestProductDescription': 'Ürün açıklaması', + 'paymentTestWechatDescription': 'WeChat Pay ödeme testi', + 'paymentTestAlipayDescription': 'Alipay ödeme testi', + 'paymentTestAmount': 'Tutar', + 'paymentTestSelectAmount': 'Test tutarını seçin', + 'paying': 'Ödeniyor...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Ödeme durumu', + 'errorInfoWithMessage': 'Hata: @message', + 'retest': 'Yeniden Test Et', + 'paymentTestInstructionsTitle': 'Talimatlar', + 'paymentTestInstructionsContent': + '1. Bir test tutarı seçin (önerilen: ¥0,01)\n2. Başlatmak için ödeme düğmesine tıklayın\n3. Ödeme uygulamasında ödemeyi tamamlayın\n4. Sonucu kontrol etmek için geri dönün', + 'startingWechatPayment': 'WeChat Pay başlatılıyor...', + 'startingAlipayPayment': 'Alipay başlatılıyor...', + 'wechatPaymentSuccess': 'WeChat Pay başarılı!', + 'wechatPaymentFailed': 'WeChat Pay başarısız', + 'wechatPaymentLaunchFailed': 'WeChat Pay başlatılamadı', + 'cannotLaunchWechatPayment': 'WeChat Pay başlatılamıyor', + 'wechatPaymentException': 'WeChat Pay istisnası', + 'wechatPaymentTestCompleted': 'WeChat Pay testi tamamlandı', + 'alipayPaymentSuccess': 'Alipay başarılı!', + 'alipayPaymentFailed': 'Alipay başarısız', + 'alipayPaymentLaunchFailed': 'Alipay başlatılamadı', + 'cannotLaunchAlipayPayment': 'Alipay başlatılamıyor', + 'alipayPaymentException': 'Alipay istisnası', + "insufficientIntegral": "Yetersiz puan", + "insufficientBalanceDesc": + "Bakiye yetersiz, lütfen ilgili yükleme sayfasına giderek yükleme yapın.", + "recharge": "Yüklemeye Git", + "aiMemberExpiredDesc": + "AI üyeliği süresi doldu, yenilemek için üyelik yükleme sayfasına gidin.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Müzik ve Öneriler', + 'navigationAndRoutes': 'Navigasyon ve Rotalar', + 'nearbySearch': 'Yakınlarda Arama', + 'newsInformation': 'Haberler', + 'communicationAssistant': 'İletişim Asistanı', + 'aiHeaderDesc1': + 'Daha uzun sohbet kotası, daha fazla araç çağrısı, daha uzun bağlam.', + 'aiHeaderDesc2': + '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': + 'Akıllı çalma listesi ve benzer şarkı önerileri', + 'routePlanningAndCongestionAvoidance': + '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': + 'Mesaj şablonları ve zamanlanmış hatırlatmalar', + 'aiDisclaimer': + 'Özellikler cihaz izinlerine, hizmet kullanılabilirliğine ve ağ koşullarına bağlıdır.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Gerçek Zamanlı Transkripsiyon', + 'sceneLexicon': 'Senaryo Sözlüğü', + 'subtitleDisplay': 'Altyazılar', + 'transHeaderDesc1': + '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': + 'Terminoloji optimizasyonu ve bağlam koruma', + 'lexiconTourBusinessLife': 'Seyahat/İş/Yaşam sözlükleri', + 'personalVocabularyMemory': 'Kişisel kelime hafızası', + 'conversationSubtitleLargeText': 'Konuşma altyazıları / Büyük metin modu', + 'colorHighContrast': 'Yüksek renk kontrastı', + 'transDisclaimer': + 'Çeviri performansı mikrofona, ağ gecikmesine ve ortam gürültüsüne bağlıdır.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Toplantı Kaydı', + 'transcriptionAndSummary': 'Transkripsiyon ve Özet', + 'keywordSearch': 'Anahtar Kelime Araması', + 'collaborationSharing': 'İşbirliği ve Paylaşım', + 'meetingHeaderDesc1': + 'Toplantı verimliliğini artırmak için ses kaydı, transkripsiyon, anahtar kelime araması ve otomatik özet.', + 'meetingHeaderDesc2': + 'İş toplantıları, ders notları ve mülakat tutanakları için uygundur.', + 'meetingAutoRecording': 'Otomatik kayıt ve bölümleme', + 'meetingSpeakerTagging': 'Konuşmacı etiketleme', + 'meetingLongAudioTranscription': 'Uzun ses transkripsiyonu', + 'meetingKeyPointSummary': 'Anahtar nokta çıkarımı', + 'meetingTopicNameSearch': 'Konu/isme göre arama', + 'meetingTimelineJump': 'Zaman çizelgesine atlama', + 'meetingExportSummary': 'Tutanakları dışa aktar', + 'meetingMultiPlatformShare': 'Platformlar arası paylaşım', + 'meetingDisclaimer': + 'Sessiz ortamlarda kullanın; performans mikrofona ve ağa bağlıdır.', + + // 商品模块 - VIP会员页 + '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': + '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 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', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + 'iapCustomerServiceQQLabel': 'IAP müşteri hizmetleri QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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': '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': 'Lily\'e söyleyin: \u201cBiraz rock müziği çal\u201d', + 'guideMusicInput': 'Biraz rock müziği çal', + 'guideMusicSend': 'Lily sizin için müzik bulacak', + 'guideMusicEnd': 'Lily müzik buldu \u2014 diğer komutları deneyin', + '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': + '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", 'edit': 'Düzenle', 'delete': 'Sil', @@ -383,49 +490,54 @@ const Map trTR = { 'recordingDetails': 'Kayıt Detayları', 'aiSummary': 'Yapay Zeka Özeti', 'meetingTranscript': 'Toplantı Metni', - - // Meeting模块 - 导航和基础功能 - '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': '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': + 'İ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', - 'importAudio': 'Import Audio', + 'startRecording': 'Kaydı Başlat', + 'liveRecording': 'Canlı Kayıt', + 'audioVideoRecording': 'Ses/Video Kaydı', + 'callRecording': 'Arama Kaydı', + 'importAudio': 'Ses İçe Aktar', 'meetingRecordExitTitle': 'Kayıttan Çık', // 退出录音 - 'meetingRecordExitMessage': 'Lütfen ayrıldıktan sonra bir işlem seçin', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Lütfen ayrıldıktan sonra bir işlem seçin', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Bitir ve Kaydet', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Kaydetmeden Bitir', // 结束录音不保存 'meetingRecordContinueInBackground': 'Arka planda kayda devam et', // 后台继续录音 - 'meetingRecordStopTimeout': 'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Kayıt durdurulamadı, lütfen tekrar deneyin', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Kayıt kaydedilemedi, lütfen tekrar deneyin', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Kayıt durdurma zaman aşımı, lütfen tekrar deneyin', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Kayıt durdurulamadı, lütfen tekrar deneyin', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Kayıt kaydedilemedi, lütfen tekrar deneyin', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Kayıt yapılıyor', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Arka planda kaydediliyor, uygulamaya dönmek için dokunun', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Arka planda kaydediliyor, uygulamaya dönmek için dokunun', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Yüzen Pencere İzni', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'Aramalar sırasında veya ses/video çevirisi yaparken çeviri sonuçlarını göstermek için diğer uygulamaların üzerine çizme iznine ihtiyacımız var. Bu sayede diğer uygulamaları kullanırken gerçek zamanlı çevirileri görebilirsiniz.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,201 +545,234 @@ 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', - //'generating': '正在生成...', - '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': 'Yeniden Özetle', + 'dateAndTime': 'Tarih ve Saat', + 'location': 'Konum', + 'attendees': 'Katılımcılar', + 'inputLocation': 'Konum Girin', + 'inputAttendees': 'Katılımcıları Girin', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Özet Şablonu Seç', + 'useThisTemplate': 'Bu Şablonu Kullan', + 'lastUsed': 'Son Kullanılan', + 'create': 'Oluştur', + 'templateDetails': 'Şablon Detayları', + 'tag': 'Etiket', + 'description': 'Açıklama', + 'template': 'Şablon', + 'deleteTemplate': 'Şablonu Sil', + 'deleteTemplateConfirm': 'Bu şablonu silmek istediğinizden emin misiniz?', + 'editTemplate': 'Şablonu Düzenle', + 'createTemplate': 'Şablon Oluştur', + 'name': 'Ad', + 'templateContentHint': + 'Lütfen şablon içeriğini girin! İpucu: Girdiğiniz ad ve açıklamaya göre hızlıca şablon içeriği oluşturmak için yukarıdaki AI düğmesine tıklayın', + 'inputNameHint': 'Lütfen ad girin', + 'inputDescHint': 'Lütfen açıklama girin', + 'custom': 'Özel', + 'pleaseEnter': 'Lütfen girin', + 'viewAll': 'Hepsini Gör', + 'recordingLanguage': 'Kayıt Dili', + 'chineseSimplified': 'Çince Mandarin (Basitleştirilmiş)', + 'meetingGenerateNow': 'Şimdi Oluştur', + 'keyEventsAnalyzed': '{count} önemli olay analiz edildi.', + 'aiAnalysisDesc': + 'AI analizi kayıtlardaki önemli olayları belirler ve AI oluşturma için önemli olayları seçmenizi sağlar.', + + // Meeting模块 - 文件操作 + 'importing': 'İçe aktarılıyor...', + 'batchImporting': 'Toplu içe aktarılıyor...', + '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': 'Toplantı Sesini Paylaş', + 'shareComplete': 'Paylaşım tamamlandı!', + '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': 'Zihin Haritasını Paylaş', + 'shareSuccess': 'Paylaşım Başarılı', + + // Meeting模块 - AI问答 + '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': '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': 'Mevcut Konuşmacıyı Adlandır', + 'recentlyUsedNames': 'Son Kullanılan İsimler', + 'applyToCurrentParagraph': 'Mevcut Paragrafa Uygula', + 'totalTime': 'Toplam Süre', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Özet konuşmacıları otomatik güncellenecek', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Buluta Senkronize Et', + 'syncToCloudTip': + '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', - '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', - - // 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', - '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.', - '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.', + 'enabled': 'Etkin', + 'disabled': 'Devre Dışı', + 'myVoitransDevice': 'VOITRANS Cihazım', + 'helpAndFeedback': 'Yardım ve Geri Bildirim', + 'aboutVoitrans': 'VOITRANS Hakkında', + 'meetingDays': 'Gün', + 'meetingHours': 'Saat', + 'voitransAiMember': 'Voitrans AI Üyesi', + 'unlockStarterMember': 'Başlangıç Üyeliğini Aç', + 'bindDeviceToActivate': + 'Starter üyeliğini etkinleştirmek için Voitrans cihazını bağlayın', + 'unlockNow': 'Şimdi Aç', + + // Meeting模块 - 会员与升级 + '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': + 'İş verimliliğinizi artırmak için profesyonel şablon tasarımı. Sektör ihtiyaçlarına göre özelleştirilmiş.', + 'customTemplateDesc': + 'Özet istemlerini ihtiyaçlarınıza göre özelleştirebilir ve gerekli özetleri oluşturmak için kullanabilirsiniz.', + 'askAiDesc': + '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': + 'Özetlerin ötesine geçin - zihin haritalarıyla temel noktaları düzenleyin ve görselleştirerek tam metni daha etkin anlayın.', + 'templateCommunityDesc': + 'Kullanıcılar tarafından oluşturulan şablon kitaplığından ilham alın, keşfedin ve paylaşın.', + 'speakerIdentificationDesc': + 'Ses transkripsiyonu konuşmacı tanımlama özelliğini destekleyecek, toplantı veya telefon görüşmesi içeriğini daha sezgisel biçimde geri yükleyecek. Aynı zamanda özet daha doğru olacaktır.', + 'privateCloudSyncDesc': + '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 ses iyileştirme, birden fazla gürültü azaltma ayarını destekler, arka plan gürültüsünü akıllıca ortadan kaldırır, ses netliğini artırır ve ses oynatma kalitesini iyileştirir.', + 'audioImportDesc': + 'Sesli notlar, Google Drive gibi yerel veya üçüncü taraf uygulamalardan ses dosyalarını kolayca içe aktarın.', + 'multipleExportFormatsDesc': + '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 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 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', - '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.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Bu konuşmacının tüm paragraflarına uygula', - 'summaryWillBeUpdatedAutomatically': 'Özet, şablona göre otomatik olarak güncellenecektir', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'proMonthlyPrice': '¥120/ay', + 'subscribe': 'Abone Ol', + 'unlimitedPrice': 'Sınırsız ¥198', + 'unlimitedMonthlyPrice': '¥198/ay', + 'upgradeNote': + '*Aboneliği yükselttikten sonra, mevcut aboneliğin kalan günleri otomatik olarak hesaplanır ve ödeme hesabınıza iade edilir', + 'buyMoreTranscriptionTime': 'Daha Fazla Transkripsiyon Süresi Satın Al', + 'sixThousandMinutes': '6.000 dakika', + 'threeThousandMinutes': '3.000 dakika', + 'sixHundredMinutes': '600 dakika', + 'oneHundredTwentyMinutes': '120 dakika', + 'validityPeriod': '*Geçerlilik Süresi: ', + 'validityNote': + 'Satın alma işleminin hemen ardından etkinleştirilir, etkinleştirmeden itibaren 2 yıl geçerlidir.', + 'purchase': 'Satın Al', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Kayıt Dili', + 'cantonese': 'Kantonca', + 'sichuan': 'Sichuan Lehçesi', + 'shanghai': 'Şangay Lehçesi', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Bilinmeyen Dil', + 'analysisFailed': 'Analiz başarısız oldu, lütfen daha sonra tekrar deneyin', + 'transcriptionFailed': + 'Transkripsiyon başarısız oldu, lütfen daha sonra tekrar deneyin', + 'summaryFailed': 'Özet başarısız oldu, lütfen daha sonra tekrar deneyin', + 'summaryFailedShort': 'Özet başarısız', + 'transcriptionFailedShort': 'Transkripsiyon başarısız', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Ses oynatıcı hazır değil, lütfen bekleyin', + 'playFailed': 'Oynatma başarısız', + 'audioFileNotFound': 'Ses dosyası bulunamadı', + 'fetchingAudio': 'Buluttan ses alınıyor...', + 'playerLoadFailed': 'Ses oynatıcı yüklenemedi', // 设置页 "systemSettings": "Sistem Ayarları", - "vipRecharge": "Premium Üye Recharge", - "aiRecharge": "Premium Üye", - "translationRecharge": "Çeviri Toplantı Recharge", - "meetingAssistantRecharge": "Toplantı Asistanı Recharge", - "cloudSync": "Bulut Sincronizasyonu", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.", + "vipRecharge": "VIP Üyelik Yükleme", + "aiRecharge": "AI Yükleme", + "translationRecharge": "Çeviri Yükleme", + "meetingAssistantRecharge": "Toplantı Yükleme", + "cloudSync": "Bulut Senkronizasyonu", + "memberService": "Üye Hizmeti", + "bindRewardTitle": "Ödüller", + "bindRewardSimpleDesc": + "İlk cihaz bağlama ödülü verildi. Kapatmak için OK'a dokunun.", "joinDevice": "Bağlı cihaz:", "accountId": "Hesap Kimliği:", "systemSetting": "Sistem Ayarları", "languageSetting": "Dil Ayarları", "darkMode": "Karanlık Mod", - "darkModeInfo": "Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın", + "darkModeInfo": + "Uygulamanın aydınlık ve karanlık temaları arasında geçiş yapın", "backups": "Yedekle ve Geri Yükle", "backupsInfo": "Ayarları ve yapay zeka etkileşim geçmişini yedekleyin", "lastBackup": "Son yedekleme:", @@ -643,9 +788,11 @@ const Map trTR = { "voiceServiceInfo": "Ses tanıma ve sentezleme hizmetini seçin", "selectVoiceService": "Ses Hizmeti Seç", "azureVoiceService": "Azure Ses Hizmeti", - "azureVoiceServiceInfo": "Yüksek kaliteli ses sentezi ve tanımayı destekleyen Microsoft bulut ses hizmeti", + "azureVoiceServiceInfo": + "Yüksek kaliteli ses sentezi ve tanımayı destekleyen Microsoft bulut ses hizmeti", "flutterVoiceService": "Flutter Yerel Ses Hizmeti", - "flutterVoiceServiceInfo": "Cihazın yerel ses hizmeti, internet bağlantısı olmadan kullanılabilir", + "flutterVoiceServiceInfo": + "Cihazın yerel ses hizmeti, internet bağlantısı olmadan kullanılabilir", 'timbreService': 'Ses Tonu Hizmeti', 'timbreServiceInfo': 'Ses sentezi için ses tonu hizmeti seçin', 'defaultTimbre': 'Varsayılan Ses Tonu', @@ -656,44 +803,35 @@ const Map trTR = { 'pleaseRead': 'Lütfen Yüksek Sesle Okuyun', 'completeRecording': 'Kaydı Tamamla', "firmwareUpgrade": "Donanım Yazılımı Güncellemesi", - "bleHeadsetFirmwareUpgrade": "BLE Kulaklık Donanım Yazılımı Sürüm Güncellemesi", + "bleHeadsetFirmwareUpgrade": + "BLE Kulaklık Donanım Yazılımı Sürüm Güncellemesi", "deviceManagement": "Cihaz Yönetimi", "manageConnectedDevices": "Bağlı Bluetooth cihazlarını yönetin", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Şu anda en son sürümdesiniz {version}', 'checkUpdateFailed': 'Güncellemeler kontrol edilemedi', 'networkErrorRetry': 'Ağ hatası, lütfen daha sonra tekrar deneyin', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Gerçek Zamanlı Sesli Sohbet", - "realtimeVoiceChatInfo": "Akıllı sesli etkileşim özelliğini deneyimleyin (Özellik Önizlemesi)", + "realtimeVoiceChatInfo": + "Akıllı sesli etkileşim özelliğini deneyimleyin (Özellik Önizlemesi)", "loading": "Yükleniyor...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "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", - -//Agent 模块 - // agent View + "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", "clearChatHistory": "Sohbet Geçmişini Temizle", "online": "Çevrimiçi", @@ -721,49 +859,54 @@ 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", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "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": "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': '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.', - 'voiceTranslationPermissionText': 'Ses tanıma ve çeviri özelliği mikrofon erişimi gerektirir.', - 'phoneCallPermissionText': 'Arama yapma özelliği sesli aramalar için mikrofon erişimi gerektirir.', - 'permissionDeniedText': 'Mikrofon iznini kalıcı olarak reddettiniz, lütfen sistem ayarlarından izni etkinleştirin.', + 'voiceRecognitionPermissionText': + 'Ses tanıma özelliği mikrofon erişimi gerektirir.', + 'voiceTranslationPermissionText': + 'Ses tanıma ve çeviri özelliği mikrofon erişimi gerektirir.', + 'phoneCallPermissionText': + 'Arama yapma özelliği sesli aramalar için mikrofon erişimi gerektirir.', + 'permissionDeniedText': + 'Mikrofon iznini kalıcı olarak reddettiniz, lütfen sistem ayarlarından izni etkinleştirin.', 'startVoiceInput': 'Sesli girişi başlat', 'startPhoneCallMode': 'Arama modunu başlat, sesli girişi başlat', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Mesajınızı buraya girin...', // 全屏编辑器输入提示 'characterCount': '{count} karakter', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Kopyala', 'copySuccess': 'Başarıyla kopyalandı', 'report': 'Şikayet Et', 'submitSuccess': 'Başarıyla gönderildi', 'submitFailed': 'Gönderim başarısız', 'reportSubmitted': 'Şikayetiniz gönderildi, en kısa sürede işleme alacağız', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Zararlı/Güvensiz', 'pornographicVulgar': 'Pornografik/Kaba', 'misleadingAttack': 'Yanıltıcı/Saldırgan', @@ -771,18 +914,23 @@ const Map trTR = { 'privacyRelated': 'Gizlilikle İlgili', 'copyrightViolation': 'Telif hakkımı, itibarımı vb. ihlal ediyor', 'other': 'Diğer', - 'reportDescriptionHint': 'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'Şikayet nedeninizi öğrenmek istiyoruz, karşılaştığınız sorunu açıklayabilirsiniz.', 'generatedByAi': 'Yapay Zeka tarafından oluşturuldu', - //音乐卡片 music_card + // Agent模块 - 工具调用 + '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:', 'playList': 'Çalma Listesi', 'moreMusic': 'Daha Fazla Müzik', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'saat', // 小时单位 @@ -797,20 +945,52 @@ const Map trTR = { "bicycling": "Bisiklet", "tsransit": "Toplu Taşıma", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Navigasyon Uygulamasını Seç', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Amap ile navigasyon', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Baidu Maps ile navigasyon', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Google Maps ile navigasyon', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Apple Maps ile navigasyon', + 'builtInNavigation': 'Yerleşik Navigasyon', + 'useBuiltInNavigation': 'Yerleşik harita ile navigasyon', + 'navigationStartFailed': 'Navigasyon başlatılamadı', + 'cannotPlayMusicListRetryLater': + '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:', 'highest': 'En Yüksek', 'lowest': 'En Düşük', 'futureForecast': 'Gelecek Tahmini', - 'hotWeatherTip': 'Bugün hava sıcak, lütfen serin kalmaya ve güneş çarpmasını önlemek için bol su içmeye dikkat edin', - 'coldWeatherTip': 'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin', - 'rainyWeatherTip': 'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun', - 'snowyWeatherTip': 'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın', - 'foggyWeatherTip': 'Bugün sisli, görüş mesafesi düşük, dışarı çıkarken maske takın', - 'windyWeatherTip': 'Bugün rüzgarlı, dışarı çıkarken dikkatli olun ve eşyalarınızı sabitleyin', - 'sunnyWeatherTip': 'Bugün güneşli ve UV ışınları güçlü, dışarı çıkarken güneş kremi kullanın', - 'temperatureDifferenceTip': 'Bugün gece ile gündüz arasında büyük sıcaklık farkı var, giysilerinizi buna göre ayarlayın', - 'comfortableWeatherTip': 'Bugün hava güzel, dışarıda vakit geçirmek için harika bir zaman', + 'hotWeatherTip': + 'Bugün hava sıcak, lütfen serin kalmaya ve güneş çarpmasını önlemek için bol su içmeye dikkat edin', + 'coldWeatherTip': + 'Bugün hava soğuk, dışarı çıkarken üşütmemek için sıkı giyinin', + 'rainyWeatherTip': + 'Bugün yağmurlu, dışarı çıkarken şemsiye alın ve dikkatli olun', + 'snowyWeatherTip': + 'Bugün karlı, yollar kaygan, lütfen dikkatli olun ve sıcak kalmak için önlem alın', + 'foggyWeatherTip': + 'Bugün sisli, görüş mesafesi düşük, dışarı çıkarken maske takın', + 'windyWeatherTip': + 'Bugün rüzgarlı, dışarı çıkarken dikkatli olun ve eşyalarınızı sabitleyin', + 'sunnyWeatherTip': + 'Bugün güneşli ve UV ışınları güçlü, dışarı çıkarken güneş kremi kullanın', + 'temperatureDifferenceTip': + 'Bugün gece ile gündüz arasında büyük sıcaklık farkı var, giysilerinizi buna göre ayarlayın', + 'comfortableWeatherTip': + 'Bugün hava güzel, dışarıda vakit geçirmek için harika bir zaman', "monday": "Pzt", "tuesday": "Sal", "wednesday": "Çar", @@ -818,18 +998,8 @@ const Map trTR = { "friday": "Cum", "saturday": "Cmt", "sunday": "Paz", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - - // 天气描述 + + // Agent模块 - 天气描述 "sunny": "Güneşli", "partlyCloudy": "Az Bulutlu", "partlySunny": "Parçalı Güneşli", @@ -850,7 +1020,140 @@ const Map trTR = { "haze": "Pus", "strongWind": "Şiddetli Rüzgar", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Resim Çevirisi", + "textTranslation": "Metin Çevirisi", + + // 翻译模块 - 主页 + "translationHistory": "Çeviri Geçmişi", + "enableRecording": "Kaydı Etkinleştir", + "viewAudioFiles": "Ses Dosyalarını Görüntüle", + "headsetUser": "Kulaklık Kullanıcısı", + "phoneUser": "Telefon Kullanıcısı", + "selectSourceLanguage": "Kaynak Dil Seç", + "selectTargetLanguage": "Hedef Dil Seç", + "me": "Ben", + "counterPart": "Karşı Taraf", + "bluetoothCallStateError": + "Lütfen Bluetooth kulaklığın telefona bağlı olduğundan ve arama durumunda olduğundan emin olun", + "autoDetect": "Otomatik Algıla", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + '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": "Dil algılama başarısız", + "translationFailed": "Çeviri başarısız", + "translating": "Çevriliyor", + "translate": "Çevir", + "pleaseInputText": "Lütfen metin girin", + "inputTextToTranslate": "Lütfen çevrilecek metni girin", + "textTooLong": "Metin çok uzun, maksimum 5000 karakter", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Henüz geçmiş yok", + "historyRecords": "Geçmiş Kayıtlar", + "clearResults": "Sonuçları Temizle", + "clearHistory": "Geçmişi Temizle", + "clearHistoryConfirm": + "Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "unknownLanguage": "Bilinmeyen Dil", + "deleteSessionRecord": "Oturum Kaydını Sil", + "deleteSessionConfirm": + "Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Resim Kaynağı Seçin", + "imagePreview": "Resim Önizlemesi", + "translationResult": "Çeviri Sonucu", + "recognitionResult": "Tanıma Sonucu", + "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": "Resim Kalitesi", + "maxSize": "Maksimum Boyut", + "close": "Kapat", + "setImageQuality": "Resim Kalitesini Ayarla", + "currentQuality": "Mevcut kalite: @value%", + "setMaxSize": "Maksimum Boyutu Ayarla", + "currentMaxSize": "Mevcut: @pxpx", + "waitingForAction": "İşlem bekleniyor", + "pleaseSelectImageToStart": "Başlamak için lütfen bir resim seçin", + "chooseImage": "Resim Seçin", + "openingCamera": "Kamera açılıyor...", + "openingPhotoAlbum": "Fotoğraf albümü açılıyor...", + "cancelled": "İptal edildi", + "userCancelledSelection": "Kullanıcı seçimi iptal etti", + "translatingImage": "Resim Çevriliyor", + "callingImageTranslateService": "Resim çeviri hizmeti çağrılıyor...", + "savingRecord": "Kayıt kaydediliyor", + "savingTranslationResult": "Çeviri sonucu kaydediliyor...", + "translationCompleted": "Çeviri Tamamlandı", + "allStepsCompleted": "Tüm adımlar tamamlandı", + "processingFailed": "İşleme Başarısız", + "imageProcessingOrTranslationFailed": + "Resim işleme veya çeviri başarısız oldu. Lütfen tekrar deneyin.\nHata: {error}", + "imageTooLarge": "Resim boyutu 4MB sınırını aşıyor", + "imageTooLargeHint": + "Resim boyutu 4MB'ı aşıyor. Kaliteyi veya boyutları azaltıp tekrar deneyin", + "emptyTranslationResult": "Resim çeviri API'si boş sonuç döndürdü", + "imageTranslationFailedTryLater": + "Resim çevirisi başarısız oldu. Ağ sorunu veya hız sınırı olabilir. Lütfen daha sonra tekrar deneyin", + "imageTranslationApiException": + "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": + "Resim seçmek için fotoğraf albümü izni gereklidir", + "translationDetails": "Çeviri Detayları", + "originalImage": "Orijinal Resim", + "sourceLanguage": "Kaynak Dil", + "targetLanguage": "Hedef Dil", + "translationTime": "Çeviri Süresi", + "shareInDevelopment": "Paylaşım özelliği geliştirme aşamasında", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Ses Dosyalarını Çevir", + "noAudioFiles": "Henüz ses dosyası yok", + "calculating": "Hesaplanıyor...", + "playing": "Oynatılıyor...", + "paused": "Duraklatıldı", + "clickToPlay": "Oynatmak için tıklayın", + "rename": "Yeniden Adlandır", + "smartTranscription": "Akıllı Metne Çevirme", + "renameAudioFile": "Ses Dosyasını Yeniden Adlandır", + "enterNewFileName": "Lütfen yeni bir dosya adı girin", + + // 翻译模块 - 翻译详情 + "originalRecord": "Orijinal Kayıt", + "recordSummary": "Kayıt Özeti", + "clickToGenerateSummary": + "Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın", + "summaryContent": "Özet İçeriği", + "copied": "Kopyalandı", + "summaryCopiledToClipboard": "Özet panoya kopyalandı", + "extractSummary": "Özeti Çıkar", + "summaryGenerated": "Özet oluşturuldu", + "generating": "Oluşturuluyor...", + "regenerate": "Yeniden Oluştur", + "summaryTimeoutMessage": + "Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.", + "deleteTranslationRecord": "Çeviri Kaydını Sil", + "deleteTranslationConfirm": + "Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "originalText": "Orijinal Metin", + "translatedText": "Çevrilmiş Metin", + "sessionSummary": "Oturum Özeti", + "cannotShare": "Paylaşılamıyor", + "generateSummaryFirst": "Lütfen önce bir özet oluşturun", + "translationSessionRecord": "Çeviri Oturumu Kaydı", + + // 个人资料模块 "editProfile": "Profili Düzenle", "avatar": "Avatar", "nickname": "Takma Ad", @@ -862,26 +1165,26 @@ const Map trTR = { "logout": "Çıkış Yap", "logoutTips": "Mevcut hesaptan çıkmak istediğinizden emin misiniz?", 'deleteAccount': 'Hesabı Sil', - 'deleteAccountTips': 'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 - 'networkConnectionFailed': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin', - 'serverTemporarilyUnavailable': 'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin', + 'deleteAccountTips': + 'Hesabınızı kalıcı olarak silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.', + 'clean': 'Önbelleği Temizle', + 'cleanTips': 'Kişisel önbelleği temizlemek istediğinizden emin misiniz?', + 'networkConnectionFailed': + 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edip tekrar deneyin', + 'serverTemporarilyUnavailable': + 'Sunucu geçici olarak yanıt vermiyor, lütfen daha sonra tekrar deneyin', 'loginExpiredPleaseRelogin': 'Oturum süresi doldu, lütfen tekrar giriş yapın', 'noPermissionForThisOperation': 'Bu işlemi gerçekleştirmek için izniniz yok', 'requestedResourceNotFound': 'İstenen kaynak bulunamadı', - 'imageProcessingFailedPleaseReselect': 'Resim işlenemedi, lütfen resmi yeniden seçin', + 'imageProcessingFailedPleaseReselect': + 'Resim işlenemedi, lütfen resmi yeniden seçin', 'operationFailedPleaseRetry': 'İşlem başarısız, lütfen tekrar deneyin', 'serverReturnedError': 'Sunucu bir hata döndürdü', 'serverError': 'Sunucu Hatası', - 'networkConnectionFailedCheckSettings': 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin', - 'serverInternalErrorRetryLater': 'Sunucu iç hatası, lütfen daha sonra tekrar deneyin', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', + 'networkConnectionFailedCheckSettings': + 'Ağ bağlantısı başarısız, lütfen ağ ayarlarını kontrol edin', + 'serverInternalErrorRetryLater': + 'Sunucu iç hatası, lütfen daha sonra tekrar deneyin', 'imageCompressionFailed': 'Resim sıkıştırılamadı', 'avatarUpdateFailed': 'Avatar güncellenemedi', 'usernameCannotBeEmpty': 'Kullanıcı adı boş olamaz', @@ -892,42 +1195,52 @@ const Map trTR = { 'logoutFailedRetry': 'Çıkış yapılamadı, lütfen tekrar deneyin', 'accountPermanentlyDeleted': 'Hesap kalıcı olarak silindi', 'deleteAccountFailedRetry': 'Hesap silinemedi, lütfen tekrar deneyin', - - // 账号服务相关 'clearUserDataFailed': 'Kullanıcı verileri temizlenemedi', // 清理用户数据失败 'deleteUserDataFailed': 'Kullanıcı verileri silinemedi', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功 + 'thirdPartyLogoutSuccess': + 'Üçüncü taraf oturumu başarıyla kapatıldı', // 第三方登录退出成功 'thirdPartyLogoutFailed': 'Üçüncü taraf oturumu kapatılamadı', // 第三方登录退出失败 - 'signOutProcessError': 'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误 - 'deleteAccountProcessError': 'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误 + 'signOutProcessError': + 'Oturum kapatma işlemi sırasında bir hata oluştu', // 登出过程发生错误 + 'deleteAccountProcessError': + 'Hesap silme işlemi sırasında bir hata oluştu', // 删除账号过程发生错误 'userDataClearSuccess': 'Kullanıcı verileri başarıyla temizlendi', // 用户数据清理成功 - 'allUserDataClearSuccess': 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功 - 'accountServiceInitialized': 'Hesap Hizmeti başlatıldı', // AccountService 已初始化 - - // 权限管理页面 + 'allUserDataClearSuccess': + 'Tüm kullanıcı verileri başarıyla temizlendi', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'Hesap Hizmeti başlatıldı', // AccountService 已初始化 + + // 权限模块 + 'meetingStoragePermission': 'Depolama', + 'meetingStoragePermissionExplanation': + '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', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', + 'contacts': 'Kişiler', + 'notification': 'Bildirim', 'alarm': 'Alarm', 'calendarWrite': 'Takvime Yaz', 'calendarFullAccess': 'Tam Takvim Erişimi', 'locationInfo': 'Konum Bilgisi', 'phonePermissionDesc': 'Telefon arama özelliği için kullanılır', 'smsPermissionDesc': 'SMS gönderme özelliği için kullanılır', - 'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time', - 'calendarWritePermissionDesc': 'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır', - 'calendarFullAccessPermissionDesc': 'Takvim etkinliklerini ve hatırlatıcıları okumak ve yönetmek için kullanılır', + 'alarmPermissionDesc': + 'Hatırlatıcıların zamanında tetiklenmesini sağlamak için kesin alarm ayarlamak amacıyla kullanılır', + 'calendarWritePermissionDesc': + 'Takvim etkinlikleri ve hatırlatıcılar oluşturmak için kullanılır', + 'calendarFullAccessPermissionDesc': + 'Takvim etkinliklerini ve hatırlatıcıları okumak ve yönetmek için kullanılır', 'locationPermissionDesc': 'Mevcut konum bilgisini almak için kullanılır', 'appFunctionNeeds': 'Uygulama özelliğinin ihtiyacı var', 'authorized': 'Yetkilendirildi', @@ -939,300 +1252,103 @@ const Map trTR = { 'permissionRequestError': 'İzin istenirken hata oluştu', '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', - 'calendarWritePermissionDetailDesc': 'Takvim etkinliği oluşturma takvime yazma izni gerektirir', - 'calendarFullAccessPermissionDetailDesc': 'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir', + 'alarmPermissionDetailDesc': + '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': + 'Takvim etkinliklerini yönetme tam takvim erişimi gerektirir', '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', - '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': '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', + 'contactsPermissionDesc': 'Kişi bilgilerine erişmek için kullanılır', + 'contactsPermissionDetailDesc': + 'Arama ve SMS işlevleri, kişileri seçebilmek için kişiler izni gerektirir', + 'bluetoothPermissionDesc': + 'Bluetooth cihazlarını bağlamak ve yönetmek için kullanılır', + 'bluetoothPermissionDetailDesc': + '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': + 'Yakındaki Bluetooth cihazlarını taramak için Bluetooth tarama izni gerekir', + 'bluetoothConnectPermissionDesc': + 'Bluetooth cihazlarına bağlanmak için kullanılır', + 'bluetoothConnectPermissionDetailDesc': + 'Bluetooth cihazlarına bağlanmak için Bluetooth bağlantı izni gerekir', + 'notificationPermissionDesc': 'Bildirim mesajları göndermek için kullanılır', + 'notificationPermissionDetailDesc': + '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', - '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.', -//'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.', + 'bluetoothScan': 'Bluetooth Tarama', + 'bluetoothConnect': 'Bluetooth Bağlantısı', + 'bluetoothScanExplanation': + 'Uygulamanın yakındaki Bluetooth cihazlarını taramak için Bluetooth tarama iznine ihtiyacı var.', + 'bluetoothConnectExplanation': + 'Uygulamanın Bluetooth cihazlarına bağlanmak için Bluetooth bağlantı iznine ihtiyacı var.', + 'locationForBluetoothExplanation': + 'Uygulamanın Bluetooth cihazlarını taramak için konum iznine ihtiyacı var.', + 'bluetoothScanPermanentDenial': + 'Bluetooth tarama izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', + 'bluetoothConnectPermanentDenial': + 'Bluetooth bağlantı izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', + 'locationPermanentDenial': + 'Konum izni kalıcı olarak reddedildi, lütfen ayarlara gidip manuel olarak etkinleştirin.', + 'notificationPermission': 'Bildirim', + 'locationPermission': 'Konum', + 'notificationPermissionExplanation': + 'Müzik çalma durumunu göstermek için bildirim izni gereklidir.', + 'locationPermissionExplanation': + 'Mevcut konumu almak için konum izni gereklidir.', + 'notificationPermissionPermanentDenial': + 'Bildirim iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.', + 'locationPermissionPermanentDenial': + 'Konum iznini kalıcı olarak reddettiniz, lütfen etkinleştirmek için ayarlara gidin.', + 'storagePermission': 'Depolama', + 'microphonePermissionExplanation': + 'Ses içeriğini kaydetmek için mikrofon iznine ihtiyacımız var.', + 'storagePermissionExplanation': + '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': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart + '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', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'permissionUtilPermission': ' İzin', + 'permissionUtilRestricted': ' İzin Kısıtlandı', + 'permissionUtilRestrictedMessage': + '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) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Navigasyon devam ediyor', + 'native.notification.navigation.keepRunning': + 'Navigasyon yapılıyor, uygulamayı açık tutun', + 'native.notification.bleAgent.running': 'Sesli asistan ajanı çalışıyor', + 'native.notification.audioRecording.recording': + 'Ses kaydediliyor, uygulamaya dönmek için dokunun', + 'native.notification.music.waiting': 'Oynatma bekleniyor', + 'native.notification.music.previous': 'Önceki', + 'native.notification.music.next': 'Sonraki', + 'native.notification.music.play': 'Oynat', + 'native.notification.music.pause': 'Duraklat', + 'native.notification.qqMusic.playing': 'Müzik çalınıyor', + + // 版本更新 'newVersionFound': 'Yeni Sürüm Bulundu', // 版本更新对话框标题 'remindLater': 'Daha Sonra Hatırlat', // 稍后提醒按钮 'updateNow': 'Şimdi Güncelle', // 立即更新按钮 'checkUpdate': 'Güncellemeleri Kontrol Et', // 检查更新按钮 'updateFailed': 'Güncelleme Başarısız', // 更新失败提示 - 'cannotOpenAppStore': 'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示 - 'updateErrorRetry': 'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示 - - //国家列表 - "邮箱": "E-posta", - "中国": "Çin", - "美国": "Amerika Birleşik Devletleri", - "加拿大": "Kanada", - "俄罗斯": "Rusya", - "英国": "Birleşik Krallık", - "德国": "Almanya", - "意大利": "İtalya", - "法国": "Fransa", - "西班牙": "İspanya", - "南非": "Güney Afrika", - "沙特阿拉伯": "Suudi Arabistan", - "土耳其": "Türkiye", - "日本": "Japonya", - "韩国": "Güney Kore", - "新加坡": "Singapur", - "马来西亚": "Malezya", - "泰国": "Tayland", - "越南": "Vietnam", - "印度": "Hindistan", - "巴基斯坦": "Pakistan", - "菲律宾": "Filipinler", - "印度尼西亚": "Endonezya", - "阿联酋": "Birleşik Arap Emirlikleri", - "墨西哥": "Meksika", - "巴西": "Brezilya", - "阿根廷": "Arjantin", - "澳大利亚": "Avustralya", - "新西兰": "Yeni Zelanda", - "中国香港": "Hong Kong, Çin", - "中国澳门": "Makao, Çin", - "中国台湾": "Tayvan, Çin", - "埃及": "Mısır", - "希腊": "Yunanistan", - "荷兰": "Hollanda", - "比利时": "Belçika", - "匈牙利": "Macaristan", - "罗马尼亚": "Romanya", - "瑞士": "İsviçre", - "奥地利": "Avusturya", - "丹麦": "Danimarka", - "瑞典": "İsveç", - "挪威": "Norveç", - "波兰": "Polonya", - "秘鲁": "Peru", - "智利": "Şili", - "哥伦比亚": "Kolombiya", - "委内瑞拉": "Venezuela", - "葡萄牙": "Portekiz", - "卢森堡": "Lüksemburg", - "爱尔兰": "İrlanda", - "冰岛": "İzlanda", - "阿尔巴尼亚": "Arnavutluk", - "马耳他": "Malta", - "塞浦路斯": "Kıbrıs", - "芬兰": "Finlandiya", - "保加利亚": "Bulgaristan", - "立陶宛": "Litvanya", - "拉脱维亚": "Letonya", - "爱沙尼亚": "Estonya", - "乌克兰": "Ukrayna", - "塞尔维亚": "Sırbistan", - "克罗地亚": "Hırvatistan", - "斯洛文尼亚": "Slovenya", - "捷克": "Çek Cumhuriyeti", - "斯洛伐克": "Slovakya", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nikaragua", - "哥斯达黎加": "Kosta Rika", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivya", - "厄瓜多尔": "Ekvador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Fas", - "阿尔及利亚": "Cezayir", - "突尼斯": "Tunus", - "尼日利亚": "Nijerya", - "加纳": "Gana", - "埃塞俄比亚": "Etiyopya", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzanya", - "乌干达": "Uganda", - "孟加拉国": "Bangladeş", - "以色列": "İsrail", - "黎巴嫩": "Lübnan", - "约旦": "Ürdün", - "伊拉克": "Irak", - "科威特": "Kuveyt", - "巴林": "Bahreyn", - "卡塔尔": "Katar", - "阿曼": "Umman", - "阿富汗": "Afganistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Moğolistan", - "柬埔寨": "Kamboçya", - "老挝": "Laos", - "文莱": "Brunei", - "东帝汶": "Doğu Timor", - "斐济": "Fiji", - "所罗门群岛": "Solomon Adaları", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Çeviri Geçmişi", - "enableRecording": "Kaydı Etkinleştir", - "viewAudioFiles": "Ses Dosyalarını Görüntüle", - "headsetUser": "Kulaklık Kullanıcısı", - "phoneUser": "Telefon Kullanıcısı", - "selectSourceLanguage": "Kaynak Dil Seç", - "selectTargetLanguage": "Hedef Dil Seç", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Henüz geçmiş yok", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Geçmişi Temizle", - "clearHistoryConfirm": "Tüm çeviri geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "unknownLanguage": "Bilinmeyen Dil", - "deleteSessionRecord": "Oturum Kaydını Sil", - "deleteSessionConfirm": "Bu oturumun tüm çeviri kayıtlarını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Ses Dosyalarını Çevir", - "noAudioFiles": "Henüz ses dosyası yok", - "calculating": "Hesaplanıyor...", - "playing": "Oynatılıyor...", - "paused": "Duraklatıldı", - "clickToPlay": "Oynatmak için tıklayın", - "rename": "Yeniden Adlandır", - "smartTranscription": "Akıllı Metne Çevirme", - "renameAudioFile": "Ses Dosyasını Yeniden Adlandır", - "enterNewFileName": "Lütfen yeni bir dosya adı girin", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Orijinal Kayıt", - "recordSummary": "Kayıt Özeti", - "clickToGenerateSummary": "Oturum özeti oluşturmak için aşağıdaki düğmeye tıklayın", - "summaryContent": "Özet İçeriği", - "copied": "Kopyalandı", - "summaryCopiledToClipboard": "Özet panoya kopyalandı", - "extractSummary": "Özeti Çıkar", - "summaryGenerated": "Özet oluşturuldu", - "generating": "Oluşturuluyor...", - "regenerate": "Yeniden Oluştur", - "summaryTimeoutMessage": "Özet oluşturma isteği zaman aşımına uğradı. Ağ sorunları veya sunucu yoğunluğu olabilir.", - "deleteTranslationRecord": "Çeviri Kaydını Sil", - "deleteTranslationConfirm": "Bu çeviri kaydını silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "originalText": "Orijinal Metin", - "translatedText": "Çevrilmiş Metin", - "sessionSummary": "Oturum Özeti", - "cannotShare": "Paylaşılamıyor", - "generateSummaryFirst": "Lütfen önce bir özet oluşturun", - "translationSessionRecord": "Çeviri Oturumu Kaydı", + 'cannotOpenAppStore': + 'Uygulama mağazası açılamıyor, lütfen güncellemek için manuel olarak gidin', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Güncelleme sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin', // 更新错误重试提示 // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Cihaz Eşleştirme", "connectYourDeepSoundHeadset": "Voitrans Kulaklığınızı Bağlayın", "bind": "Bağla", @@ -1241,42 +1357,36 @@ const Map trTR = { "autoInputCode": "Kodu otomatik gir", "skipBinding": "Bağlamayı Atla", "rescan": "Yeniden Tara", - "verifyingDevice": "Cihaz doğrulanıyor...", "confirmBinding": "Bağlamayı Onayla", "associatingDevice": "Cihaz ilişkilendiriliyor...", "goToBluetoothSettings": "Bluetooth Ayarlarına Git", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Eşleştirmeye hazır", "preparingPairingEnvironment": "Eşleştirme ortamı hazırlanıyor...", - "connectDeepSoundViaSystemBluetooth": "Lütfen önce sistem Bluetooth'u üzerinden Voitrans cihazına bağlanın", + "connectDeepSoundViaSystemBluetooth": + "Lütfen önce sistem Bluetooth'u üzerinden Voitrans cihazına bağlanın", "deviceBindingConfirm": "Cihaz bağlama onayı...", "establishingDeviceAssociation": "Cihaz ilişkisi kuruluyor...", "waitingCompletePairing": "Lütfen bekleyin, eşleştirme tamamlanıyor...", - "pairingSuccessRedirecting": "Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...", - - // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun", + "pairingSuccessRedirecting": + "Eşleştirme başarılı! Ana sayfaya yönlendiriliyor...", + "ensureConnectedDeepSoundDevice": + "Lütfen bir Voitrans cihazına bağlı olduğunuzdan emin olun", "deviceAlreadyBoundToOtherAccount": "Bu cihaz başka bir hesaba zaten bağlı", "deviceAssociationFailed": "Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin", - "scanTimeoutEnsureDeviceNearby": "Tarama zaman aşımına uğradı, lütfen cihazın yakında olduğundan emin olun", + "scanTimeoutEnsureDeviceNearby": + "Tarama zaman aşımına uğradı, lütfen cihazın yakında olduğundan emin olun", "networkError": "Ağ Hatası", - "authorizationFailedCheckCode": "Yetkilendirme başarısız, lütfen yetkilendirme kodunun doğru olup olmadığını kontrol edin", + "authorizationFailedCheckCode": + "Yetkilendirme başarısız, lütfen yetkilendirme kodunun doğru olup olmadığını kontrol edin", "pairingFailedRetry": "Eşleştirme başarısız, lütfen tekrar deneyin", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Lütfen Bluetooth\\', 'deviceDisconnected': 'Cihaz bağlantısı kesildi', 'readyToStartPairing': 'Eşleştirmeye başlamaya hazır', 'checkingEnvironment': 'Ortam kontrol ediliyor...', - 'ensureHeadsetOnAndPairingMode': 'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', + 'ensureHeadsetOnAndPairingMode': + 'Lütfen kulaklığın açık ve eşleştirme modunda olduğundan emin olun', 'establishingSecureConnection': 'Güvenli bağlantı kuruluyor...', 'needManualBindingAuthCode': 'Manuel bağlama yetkilendirme kodu gerekli...', 'pairingSuccessful': 'Eşleştirme başarılı!', @@ -1290,35 +1400,56 @@ const Map trTR = { 'verificationFailedRetry': 'Doğrulama başarısız, lütfen tekrar deneyin', 'invalidDeviceAddress': 'Geçersiz cihaz adresi', 'bleDeviceAssociationFailed': 'BLE cihaz ilişkisi kurulamadı', - 'deviceAssociationFailedRetry': 'Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin', - 'bleConnectionTimeoutRetry': 'BLE bağlantısı zaman aşımına uğradı, lütfen tekrar deneyin', + 'deviceAssociationFailedRetry': + 'Cihaz ilişkisi kurulamadı, lütfen tekrar deneyin', + 'bleConnectionTimeoutRetry': + 'BLE bağlantısı zaman aşımına uğradı, lütfen tekrar deneyin', 'blePairingStartupFailed': 'BLE eşleştirmesi başlatılamadı', 'bleConnectionFailed': 'BLE bağlantısı başarısız', - 'deviceAuthorizationFailedCheckCode': 'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 - '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': + 'Cihaz yetkilendirmesi başarısız, lütfen yetkilendirme kodunu kontrol edin', + 'bluetoothGuideTitle': + "Bluetooth'u manuel olarak etkinleştirme gerekli", // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Lütfen şu adımları izleyin:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'Bluetooth\'u etkinleştirin: Ayarlar → Bluetooth → Aç', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'Cihazı bağlayın: "Cihazlarım" içinde cihazınızı bulun ve bağlanmak için dokunun', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': + 'Eşleştirme sürecine devam etmek için uygulamaya geri dönün', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'İpucu: Bluetooth ayarlarına hızlı erişmek için Denetim Merkezi’nde Bluetooth simgesine uzun basabilirsiniz', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Anladım', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Hoş Geldiniz Ödülü", + "firstBindRewardDesc": "Bağlama ödüllerinizi aldınız.", + "vipLevelLabel": "VIP Seviyesi:", + "expiryLabel": "Son Kullanma:", + "notActivated": "Etkinleştirilmedi", + "aiChatCreditsLabel": "AI Sohbet Kredisi:", + "translationCreditsLabel": "Çeviri Kredisi:", + "meetingCreditsLabel": "Toplantı Kredisi:", + "ok": "Tamam", + + // 用户反馈模块 "feedback": "Kullanıcı Geri Bildirimi", 'feedbackInfo': 'Geri bildirim veya öneri sağlayın', - 'feedbackDescription': 'Lütfen karşılaştığınız sorunu veya önerinizi açıklayın', + 'feedbackDescription': + 'Lütfen karşılaştığınız sorunu veya önerinizi açıklayın', 'feedbackHint': 'Lütfen geri bildiriminizi girin...', 'feedbackRequired': 'Lütfen geri bildirim içeriğini girin', 'contactInfo': 'İletişim Bilgileri', 'contactHint': 'E-posta/Telefon, sizinle iletişime geçebilmemiz için', 'submit': 'Gönder', - 'feedbackSubmitSuccess': 'Geri bildirim başarıyla gönderildi, geri bildiriminiz için teşekkür ederiz!', - 'feedbackSubmitFailed': 'Geri bildirim gönderilemedi, lütfen daha sonra tekrar deneyin', + 'feedbackSubmitSuccess': + 'Geri bildirim başarıyla gönderildi, geri bildiriminiz için teşekkür ederiz!', + 'feedbackSubmitFailed': + 'Geri bildirim gönderilemedi, lütfen daha sonra tekrar deneyin', // OTA升级模块 - "upgradeExitConfirm": "Yükseltme devam ediyor. Çıkmak işlemi kesecektir, çıkmak istediğinizden emin misiniz?", + "upgradeExitConfirm": + "Yükseltme devam ediyor. Çıkmak işlemi kesecektir, çıkmak istediğinizden emin misiniz?", "deviceModel": "Cihaz Modeli", "unknownDevice": "Bilinmeyen Cihaz", "currentFirmwareVersion": "Mevcut Donanım Yazılımı Sürümü", @@ -1330,17 +1461,72 @@ 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.", - "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": "Lütfen cihazı bağlı tutun ve uygulamayı kapatmayın", + "otaVersionInfoFailed": + "Sürüm bilgisi alınamadı. Lütfen daha sonra tekrar deneyin.", + "otaDeviceInfoUnavailable": + "Cihaz bilgisi alınamıyor. Bağlantıyı kontrol edip tekrar deneyin.", + "otaProductInfoUnavailable": + "Cihaz tanımlanamıyor. Lütfen yeniden bağlanıp tekrar deneyin.", + "otaFirmwareVersionInvalid": + "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", "charging": "Şarj oluyor", "updateContent": "Güncelleme İçeriği", - "removeEarbudsEnsureBattery": "Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun", - - // 音乐列表页面 + "removeEarbudsEnsureBattery": + "Her iki kulaklığı da çıkarın ve pil seviyelerinin %20'un üzerinde olduğundan emin olun", + + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Yeni sürüm @version bulundu', + 'otaConfirmUpdateNow': 'Şimdi güncelle?', + 'otaUpdate': 'Güncelle', + 'otaUpgradeSuccess': 'Yükseltme Başarılı', + 'otaUpgradeCompleteRepair': + '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': 'Daha Sonra Eşleştir', + 'otaPairNow': 'Şimdi Eşleştir', + 'okConfirm': 'Tamam', + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'BLE bağlantısı kontrol edilirken hata: @error', + 'otaBleNotConnected': 'BLE Cihazı Bağlı Değil', + 'otaBleNeedConnection': + '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': + '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': + 'Cihaz bilgisi alınamıyor, lütfen cihaz bağlantısını kontrol edin', + 'otaCannotGetProductInfoWithName': + 'Ürün bilgisi alınamıyor, cihaz adı: @deviceName', + 'otaCannotGetBatteryInfo': 'Geçerli pil bilgisi alınamıyor', + 'otaLowBattery': 'Düşük Pil', + 'otaSingleBatteryLow': + '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': + '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': + 'Bu güncelleme performans optimizasyonları ve hata düzeltmeleri içermektedir.', + 'otaGetLatestVersionFailed': 'En son sürüm bilgisi alınamadı', + 'otaGetVersionInfoFailed': 'Sürüm bilgisi alınamadı', + 'otaCheckingDeviceStatus': 'Cihaz durumu kontrol ediliyor...', + 'otaDownloadFailedCheckNetwork': + 'İ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': + '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", // 暂无音乐 "noPlayingMusic": "Çalan Müzik Yok", // 暂无播放音乐 "unknownSong": "Bilinmeyen Şarkı", // 未知歌曲 @@ -1388,20 +1574,122 @@ const Map trTR = { "波斯语": "Farsça", "斯瓦希里语": "Svahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "E-posta", + "中国": "Çin", + "美国": "Amerika Birleşik Devletleri", + "加拿大": "Kanada", + "俄罗斯": "Rusya", + "英国": "Birleşik Krallık", + "德国": "Almanya", + "意大利": "İtalya", + "法国": "Fransa", + "西班牙": "İspanya", + "南非": "Güney Afrika", + "沙特阿拉伯": "Suudi Arabistan", + "土耳其": "Türkiye", + "日本": "Japonya", + "韩国": "Güney Kore", + "新加坡": "Singapur", + "马来西亚": "Malezya", + "泰国": "Tayland", + "越南": "Vietnam", + "印度": "Hindistan", + "巴基斯坦": "Pakistan", + "菲律宾": "Filipinler", + "印度尼西亚": "Endonezya", + "阿联酋": "Birleşik Arap Emirlikleri", + "墨西哥": "Meksika", + "巴西": "Brezilya", + "阿根廷": "Arjantin", + "澳大利亚": "Avustralya", + "新西兰": "Yeni Zelanda", + "中国香港": "Hong Kong, Çin", + "中国澳门": "Makao, Çin", + "中国台湾": "Tayvan, Çin", + "埃及": "Mısır", + "希腊": "Yunanistan", + "荷兰": "Hollanda", + "比利时": "Belçika", + "匈牙利": "Macaristan", + "罗马尼亚": "Romanya", + "瑞士": "İsviçre", + "奥地利": "Avusturya", + "丹麦": "Danimarka", + "瑞典": "İsveç", + "挪威": "Norveç", + "波兰": "Polonya", + "秘鲁": "Peru", + "智利": "Şili", + "哥伦比亚": "Kolombiya", + "委内瑞拉": "Venezuela", + "葡萄牙": "Portekiz", + "卢森堡": "Lüksemburg", + "爱尔兰": "İrlanda", + "冰岛": "İzlanda", + "阿尔巴尼亚": "Arnavutluk", + "马耳他": "Malta", + "塞浦路斯": "Kıbrıs", + "芬兰": "Finlandiya", + "保加利亚": "Bulgaristan", + "立陶宛": "Litvanya", + "拉脱维亚": "Letonya", + "爱沙尼亚": "Estonya", + "乌克兰": "Ukrayna", + "塞尔维亚": "Sırbistan", + "克罗地亚": "Hırvatistan", + "斯洛文尼亚": "Slovenya", + "捷克": "Çek Cumhuriyeti", + "斯洛伐克": "Slovakya", + "危地马拉": "Guatemala", + "萨尔瓦多": "El Salvador", + "洪都拉斯": "Honduras", + "尼加拉瓜": "Nikaragua", + "哥斯达黎加": "Kosta Rika", + "巴拿马": "Panama", + "海地": "Haiti", + "玻利维亚": "Bolivya", + "厄瓜多尔": "Ekvador", + "巴拉圭": "Paraguay", + "乌拉圭": "Uruguay", + "摩洛哥": "Fas", + "阿尔及利亚": "Cezayir", + "突尼斯": "Tunus", + "尼日利亚": "Nijerya", + "加纳": "Gana", + "埃塞俄比亚": "Etiyopya", + "肯尼亚": "Kenya", + "坦桑尼亚": "Tanzanya", + "乌干达": "Uganda", + "孟加拉国": "Bangladeş", + "以色列": "İsrail", + "黎巴嫩": "Lübnan", + "约旦": "Ürdün", + "伊拉克": "Irak", + "科威特": "Kuveyt", + "巴林": "Bahreyn", + "卡塔尔": "Katar", + "阿曼": "Umman", + "阿富汗": "Afganistan", + "斯里兰卡": "Sri Lanka", + "缅甸": "Myanmar", + "尼泊尔": "Nepal", + "蒙古": "Moğolistan", + "柬埔寨": "Kamboçya", + "老挝": "Laos", + "文莱": "Brunei", + "东帝汶": "Doğu Timor", + "斐济": "Fiji", + "所罗门群岛": "Solomon Adaları", + "刚果民主共和国": "Kongo Demokratik Cumhuriyeti", + "安哥拉": "Angola", + "苏丹": "Sudan", + "马尔代夫": "Maldivler", + "不丹": "Bhutan", + "摩纳哥": "Monako", + "圣马力诺": "San Marino", + "牙买加": "Jamaika", + "巴哈马": "Bahamalar", + "巴布亚新几内亚": "Papua Yeni Gine", + "萨摩亚": "Samoa", }; diff --git a/lib/core/translations/language/uk_ua.dart b/lib/core/translations/language/uk_ua.dart index 0bf99ad19..3c0a19e01 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': 'Продовжити', @@ -18,6 +19,11 @@ const Map ukUA = { "unknownError": "Невідома помилка", "asrConnectionFailed": "Не вдалося підключитися до служби розпізнавання мовлення. Перевірте мережу або спробуйте пізніше ще раз.", + "justNow": "Щойно", + "minutesAgo": "@minutes хв тому", + "yesterday": "Вчора", + "daysAgo": "@days дн. тому", + "hoursAgo": "@hours год тому", // 启动页 "slogan": "З'єднуючи світ, більше ніж просто звук", @@ -28,7 +34,7 @@ const Map ukUA = { "explore": "Огляд", "settings": "Налаштування", - // 语言 + // 语言列表 "followingSystem": "За системою", "chinese": "Китайська", "english": "Англійська", @@ -72,9 +78,10 @@ const Map ukUA = { "arabic": "Арабська", "persian": "Персська", - // 登录页 + // 登录模块 "welcome": "Ласкаво просимо", - "loginTips": "Увійдіть або зареєструйтеся за допомогою номера телефону або електронної пошти", + "loginTips": + "Увійдіть або зареєструйтеся за допомогою номера телефону або електронної пошти", "accountNumber": "Номер телефону або Email", "verificationCode": "Код підтвердження", "getCode": "Отримати код", @@ -93,20 +100,18 @@ const Map ukUA = { "tip": "Підказка", "pleaseEnterCompleteCode": "Будь ласка, введіть повний код підтвердження", "loginFailed": "Помилка входу, спробуйте ще раз", - 'pleaseAcceptPrivacyPolicy': 'Будь ласка, спочатку прочитайте та погодьтеся з Політикою конфіденційності та Угодою користувача', + 'pleaseAcceptPrivacyPolicy': + 'Будь ласка, спочатку прочитайте та погодьтеся з Політикою конфіденційності та Угодою користувача', "enterVerificationCode": "Введіть код підтвердження", "verificationCodeSentTo": "Код підтвердження надіслано на", "resendVerificationCode": "Надіслати код ще раз", "login": "Увійти", "usePasswordLogin": "Увійти за паролем", - - // 隐私政策弹窗 "loginDeclaration": "Декларація Voitrans", // Voitrans 声明 - "welcomeToThisApp": "Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "welcomeToThisApp": + "Ласкаво просимо до Voitrans, будь ласка, уважно прочитайте", // 欢迎使用Voitrans,请充分阅读 "privacyPolicyText": - ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 + "Натискаючи «Погодитися та увійти», ви підтверджуєте, що прочитали та погоджуєтесь із наведеними вище документами. Натисніть «Не погоджуватися», щоб вийти із застосунку.", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "Не погоджуватися", // 不同意 "agreeAndEnter": "Погодитися та увійти", // 同意并进入 @@ -118,24 +123,29 @@ const Map ukUA = { "signal": "Сигнал", "deviceId": "ID пристрою", "firmwareVersion": "Версія прошивки", - "disconnectedDevice": "Пристрій не підключено, натисніть кнопку нижче, щоб підключити", + "disconnectedDevice": + "Пристрій не підключено, натисніть кнопку нижче, щоб підключити", "connectDevice": "Підключити пристрій", "topAiExperiences": "Найкращі враження від AI", "aiAssistant": "Всемогутній помічник AI", - "aiAssistantInfo": "Ексклюзивний консультант 24/7, відповідає на запитання, надає поради", + "aiAssistantInfo": + "Ексклюзивний консультант 24/7, відповідає на запитання, надає поради", "interpretation": "Синхронний переклад", - "simultaneousInterpretationInfo": "Переклад у реальному часі багатьма мовами, безтурботні подорожі за кордон", + "simultaneousInterpretationInfo": + "Переклад у реальному часі багатьма мовами, безтурботні подорожі за кордон", "aiCompanion": "Сімейний компаньйон", "aiCompanionInfo": "Розуміє вас, тепла компанія", "homeSlogan": "З'єднуючи світ, перевершуючи звук", - "turnEarphones": "Будь ласка, відкрийте зарядний кейс для навушників і вставте навушники у вуха", + "turnEarphones": + "Будь ласка, відкрийте зарядний кейс для навушників і вставте навушники у вуха", "currentlyConnected": "Наразі підключено:", "unsystemSetup": "Перейти до налаштувань системи", "talkLater": "Пізніше", "initializing": "Ініціалізація...", "bluetoothInitializationFailure": "Помилка ініціалізації служби Bluetooth", "checkingPermissions": "Перевірка дозволів...", - "lackPermissions": "Відсутні дозволи Bluetooth і необхідно дозволити доступ до місцезнаходження", + "lackPermissions": + "Відсутні дозволи Bluetooth і необхідно дозволити доступ до місцезнаходження", "searchingDevice": "Пошук пристроїв...", "findConnectedDevice": "Знайдено підключений пристрій", "notFound": "Не знайдено підключеного пристрою Bluetooth", @@ -159,7 +169,30 @@ const Map ukUA = { 'right': 'Право', 'checkConnectionStatusFailed': 'Не вдалося перевірити статус підключення', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Помилка ініціалізації Bluetooth: @error', + 'needBluetoothAndLocationPermission': + 'Для сканування пристроїв потрібні дозволи Bluetooth та місцезнаходження', + 'permissionRequestFailedWithError': 'Не вдалося запросити дозвіл: @error', + 'needPermission': 'Потрібен дозвіл', + 'blePermissionDialogContent': + 'Цей додаток потребує дозволів Bluetooth та місцезнаходження для сканування пристроїв. Увімкніть їх у Налаштуваннях.', + 'needEnableBluetooth': 'Увімкніть Bluetooth', + 'enableBluetoothDialogContent': + 'Будь ласка, увімкніть Bluetooth для сканування та підключення пристроїв.', + 'bleScanFailedWithError': 'Помилка сканування: @error', + 'bleConnectionSuccess': 'Підключення успішне', + 'bleConnectedToDevice': 'Підключено до @device', + 'bleConnectionFailedWithError': 'Помилка підключення: @error', + 'bleDisconnected': 'Відключено', + 'bleDeviceDisconnected': 'Пристрій відключено', + 'bleDisconnectFailedWithError': 'Помилка відключення: @error', + 'signalStrong': 'Сильний', + 'signalMedium': 'Середній', + 'signalWeak': 'Слабкий', + 'signalVeryWeak': 'Дуже слабкий', + + // 发现页 "searchAi": "Пошук функцій AI...", "exploreSlogan": "Розумні навушники, безмежні можливості", "exploreSlogan1": "Розумний компаньйон, безмежні можливості", @@ -178,200 +211,280 @@ const Map ukUA = { "healthConsultant": "Багатофункціональний чат AI", "healthConsultantInfo": "Надає більше функцій чату AI", "conferenceAssistant": "Помічник для ділових зустрічей", - "conferenceAssistantInfo": "Запис протоколів у реальному часі, багатомовний переклад", + "conferenceAssistantInfo": + "Запис протоколів у реальному часі, багатомовний переклад", "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", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 - 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', - 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', + "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': 'Доступні пакети', + 'remainingQuota': 'Залишок квоти', + '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', + "insufficientIntegral": "Недостатньо балів", + "insufficientBalanceDesc": + "Недостатньо коштів, перейдіть на відповідну сторінку поповнення.", + "recharge": "Перейти до поповнення", + "aiMemberExpiredDesc": + "Підписка AI закінчилася, перейдіть на сторінку продовження, щоб поновити її.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Музика та рекомендації', + 'navigationAndRoutes': 'Навігація та маршрути', + 'nearbySearch': 'Пошук поруч', + 'newsInformation': 'Новини', + 'communicationAssistant': 'Комунікаційний асистент', + 'aiHeaderDesc1': + 'Більша квота діалогів, більше викликів інструментів, довший контекст.', + 'aiHeaderDesc2': + 'Підходить для запитань до агента, підсумовування, аналізу та виконання завдань.', + 'musicSearchPlaybackControl': + 'Пошук у бібліотеці музики та керування відтворенням', + 'smartPlaylistAndSimilarRecommendations': + 'Розумні плейлисти та рекомендації схожих пісень', + 'routePlanningAndCongestionAvoidance': + 'Планування маршруту та уникнення заторів', + 'voiceBroadcastAndWaypoints': + 'Голосові підказки та налаштування точок маршруту', + 'realTimeWeatherForecast': 'Погода та прогноз у реальному часі', + 'clothingAdviceAndTravelReminders': + 'Поради щодо одягу та нагадування в дорозі', + 'poiSearchFoodGasParking': 'Пошук POI: їжа / заправки / паркування', + 'ratingsHoursAndDirectRoutes': + 'Рейтинги, години роботи та прокладання маршруту', + 'hotNewsAndTopicOverview': 'Гарячі новини та огляд тем', + 'longArticleSummariesAndKeyPoints': + 'Підсумки довгих статей і ключові моменти', + 'helpCallAndSMS': 'Допомога зі дзвінками та SMS', + 'templatedMessagesAndScheduleReminders': + 'Шаблонні повідомлення та заплановані нагадування', + 'aiDisclaimer': + 'Функції залежать від дозволів пристрою, доступності сервісу та умов мережі.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Транскрипція в реальному часі', + 'sceneLexicon': 'Глосарій за сценаріями', + 'subtitleDisplay': 'Субтитри', + 'transHeaderDesc1': + 'Синхронний переклад у реальному часі та текстовий переклад із низькою затримкою голосу.', + 'transHeaderDesc2': 'Підходить для подорожей, роботи, виступів і навчання.', + 'translateZhEn': 'Переклад китайська–англійська', + 'lowLatencyVoiceBroadcast': 'Голосове озвучення з низькою затримкою', + 'multiLangTextTranslation': 'Багатомовний текстовий переклад', + 'termOptimizationContextPreserve': + 'Оптимізація термінології та збереження контексту', + 'lexiconTourBusinessLife': 'Словники: подорожі/бізнес/побут', + 'personalVocabularyMemory': 'Персональна пам’ять словника', + 'conversationSubtitleLargeText': 'Субтитри розмови / режим великого тексту', + 'colorHighContrast': 'Високий контраст кольорів', + 'transDisclaimer': + 'Якість перекладу залежить від мікрофона, затримки мережі та фонового шуму.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Запис зустрічей', + 'transcriptionAndSummary': 'Транскрипція та підсумок', + 'keywordSearch': 'Пошук за ключовими словами', + 'collaborationSharing': 'Співпраця та поширення', + 'meetingHeaderDesc1': + 'Запис аудіо, транскрипція, пошук за ключовими словами та автоматичні підсумки для підвищення ефективності зустрічей.', + 'meetingHeaderDesc2': + 'Підходить для ділових зустрічей, конспектів занять і протоколів інтерв’ю.', + 'meetingAutoRecording': 'Автозапис і сегментація', + 'meetingSpeakerTagging': 'Позначення спікерів', + 'meetingLongAudioTranscription': 'Транскрипція довгих аудіо', + 'meetingKeyPointSummary': 'Виділення ключових пунктів', + 'meetingTopicNameSearch': 'Пошук за темою/іменем', + 'meetingTimelineJump': 'Перехід по таймлайну', + 'meetingExportSummary': 'Експорт протоколу', + 'meetingMultiPlatformShare': 'Поширення між платформами', + 'meetingDisclaimer': + 'Використовуйте в тихих умовах; якість залежить від мікрофона та мережі.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Огляд переваг', + 'higherQuota': 'Більша квота використання', + 'lowerUnitPrice': 'Нижча ціна за одиницю', + 'priorityService': 'Пріоритетний сервіс', + 'exclusiveSupportChannel': 'Окремий канал підтримки', + 'fastResponse': 'Швидка реакція на проблеми', + 'eventsAndDiscounts': 'Події та знижки', + 'memberExclusiveEvents': 'Події лише для учасників', + 'longTermDiscountPlan': 'Довгостроковий план зі знижкою', + 'generalPrivileges': 'Загальні привілеї', + 'earlyAccessNewFeatures': 'Ранній доступ до нових функцій', + 'crossDeviceSync': 'Синхронізація між пристроями', + 'vipDisclaimer': + 'Фактичні переваги залежать від деталей пакету та можуть змінюватися залежно від версії.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Базовий 100', + 'ai_002_name': 'AI Базовий 500', + 'ai_003_name': 'AI Базовий 1000', + 'meet_001_name': 'Зустрічі Базовий 100', + 'meet_002_name': 'Зустрічі Базовий 500', + 'meet_003_name': 'Зустрічі Базовий 1000', + 'trans_001_name': 'Переклад Базовий 100', + 'trans_002_name': 'Переклад Базовий 500', + 'trans_003_name': 'Переклад Базовий 1000', + 'ai_001_desc': 'Містить 100 використань. Доступ до базових функцій AI.', + 'ai_002_desc': 'Містить 500 використань. Доступ до базових функцій AI.', + 'ai_003_desc': 'Містить 1000 використань. Доступ до базових функцій AI.', + 'meet_001_desc': 'Містить 100 записів/транскрипцій зустрічей.', + 'meet_002_desc': 'Містить 500 записів/транскрипцій зустрічей.', + 'meet_003_desc': 'Містить 1000 записів/транскрипцій зустрічей.', + 'trans_001_desc': 'Містить 100 перекладів (голос/текст).', + 'trans_002_desc': 'Містить 500 перекладів (голос/текст).', + 'trans_003_desc': 'Містить 1000 перекладів (голос/текст).', + + // 商品模块 - 页脚 + 'appNameProvider': 'Додаток: VoiTrans · Надається: VoiTrans', + 'iapCustomerServiceQQLabel': 'Служба підтримки IAP QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 '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, ', - // AI 引导步骤 - '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: “Створи нагадування про зустріч на 15:00 завтра”', + 'guideMeetingInput': 'Створи нагадування про зустріч на 15:00 завтра', + 'guideMeetingSend': 'Lily створить нагадування', + 'guideMeetingEnd': 'Нагадування створено — спробуйте інші команди', + 'guidePhoneStart': 'Скажіть Lily: “Подзвони мамі”', + 'guidePhoneInput': 'Подзвони мамі', + 'guidePhoneSend': 'Lily здійснить дзвінок', + 'guidePhoneEnd': 'Дзвінок здійснено — спробуйте інші команди', + 'guideSmsStart': 'Скажіть Lily: “Напиши татові: Я буду вдома на вечерю”', + 'guideSmsInput': 'Напиши татові: Я буду вдома на вечерю', + 'guideSmsSend': 'Lily надішле повідомлення', + 'guideSmsEnd': 'Повідомлення надіслано — керування голосом дуже зручне', + + // Meeting模块 - 首页与导航 "startMeeting": "Почати зустріч", 'edit': 'Редагувати', 'delete': 'Видалити', @@ -383,49 +496,55 @@ const Map ukUA = { 'recordingDetails': 'Деталі запису', 'aiSummary': 'Підсумок від AI', 'meetingTranscript': 'Транскрипт зустрічі', - - // Meeting模块 - 导航和基础功能 - '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': 'Будь ласка, виберіть дію після виходу', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Будь ласка, виберіть дію після виходу', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Завершити та зберегти', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Завершити без збереження', // 结束录音不保存 - 'meetingRecordContinueInBackground': 'Продовжити запис у фоновому режимі', // 后台继续录音 - 'meetingRecordStopTimeout': 'Час зупинки запису минув, спробуйте ще раз', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Не вдалося зупинити запис, спробуйте ще раз', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Не вдалося зберегти запис, спробуйте ще раз', // 保存录音失败,请重试 + 'meetingRecordContinueInBackground': + 'Продовжити запис у фоновому режимі', // 后台继续录音 + 'meetingRecordStopTimeout': + 'Час зупинки запису минув, спробуйте ще раз', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Не вдалося зупинити запис, спробуйте ще раз', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Не вдалося зберегти запис, спробуйте ще раз', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Запис триває', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Запис у фоновому режимі, натисніть, щоб повернутися', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Запис у фоновому режимі, натисніть, щоб повернутися', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Дозвіл на плаваюче вікно', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'Щоб показувати результати перекладу під час дзвінків або перекладу аудіо/відео, нам потрібен дозвіл на відображення поверх інших програм. Це дозволить бачити переклад у реальному часі під час використання інших додатків.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,184 +552,215 @@ const Map ukUA = { 'Щоб під час запису показувати плаваючу панель запису (таймер/пауза/продовжити), нам потрібен дозвіл на відображення поверх інших програм.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Не вдалося автоматично відкрити системні налаштування. Відкрийте Налаштування та вручну увімкніть дозвіл на відображення поверх інших програм.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - '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': 'Перестворити підсумок', + 'dateAndTime': 'Дата й час', + 'location': 'Місце', + 'attendees': 'Учасники', + 'inputLocation': 'Введіть місце', + 'inputAttendees': 'Введіть учасників', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Виберіть шаблон підсумку', + 'useThisTemplate': 'Використати цей шаблон', + 'lastUsed': 'Останній використаний', + 'create': 'Створити', + 'templateDetails': 'Деталі шаблону', + 'tag': 'Тег', + 'description': 'Опис', + 'template': 'Шаблон', + 'deleteTemplate': 'Видалити шаблон', + 'deleteTemplateConfirm': 'Ви впевнені, що хочете видалити цей шаблон?', + 'editTemplate': 'Редагувати шаблон', + 'createTemplate': 'Створити шаблон', + 'name': 'Назва', + 'templateContentHint': + 'Будь ласка, введіть вміст шаблону! Порада: натисніть кнопку AI вище, щоб швидко згенерувати вміст шаблону на основі введеної назви та опису', + 'inputNameHint': 'Будь ласка, введіть назву', + 'inputDescHint': 'Будь ласка, введіть опис', + 'custom': 'Користувацький', + 'pleaseEnter': 'Будь ласка, введіть', + 'viewAll': 'Переглянути все', + 'recordingLanguage': 'Мова запису', + 'chineseSimplified': 'Китайська (мандарин, спрощена)', + 'meetingGenerateNow': 'Згенерувати зараз', + 'keyEventsAnalyzed': 'Проаналізовано ключових подій: {count}.', + 'aiAnalysisDesc': + 'AI‑аналіз визначає ключові події в записах, щоб ви могли вибрати важливі для генерації.', + + // Meeting模块 - 文件操作 + 'importing': 'Імпортування...', + 'batchImporting': 'Пакетне імпортування...', + 'importingLocalRecordings': 'Імпортування локальних записів...', + 'importFailed': 'Не вдалося імпортувати файл: {filePath}, помилка: {error}', + 'importSuccess': 'Успішно імпортовано {count} локальних записів', + 'importError': 'Імпорт не вдався: {error}', + 'pleaseSelectAudioFile': 'Будь ласка, виберіть аудіофайл', + 'shareAudio': 'Поділитися аудіо зустрічі', + 'shareComplete': 'Поширення завершено!', + 'shareFailed': 'Не вдалося поділитися: {error}', + 'fileProcessingFailed': + 'Не вдалося обробити файл: {filePath}, помилка: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Зберегти інтелект-карту', + 'shareMindMap': 'Поділитися інтелект‑картою', + 'shareSuccess': 'Успішно поширено', + + // Meeting模块 - AI问答 + 'askAI': 'Запитати AI...', + 'askAIPrompt': 'Чим я можу допомогти сьогодні?', + 'continueAsk': 'Продовжити запит', + 'todoList': 'Список справ', + 'extractConclusion': 'Витягти висновки', + 'generateKeyIndicators': 'Згенерувати ключові показники', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Поділитися посиланням', + 'copyTranscript': 'Копіювати транскрипт', + 'copySummary': 'Копіювати підсумок', + 'exportAudio': 'Експортувати аудіо', + 'exportTranscript': 'Експортувати транскрипт', + 'shareMeetingAudio': 'Поділитися аудіо зустрічі', + 'exportSummary': 'Експортувати підсумок', + 'exportAs': 'Експортувати як', + 'exportingPDF': 'Експорт PDF...', + 'export': 'Експорт', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Застосувати до всіх абзаців цього мовця', + 'summaryWillBeUpdatedAutomatically': + 'Підсумок буде автоматично оновлюватися на основі шаблону', + 'nameCurrentSpeaker': 'Назвати поточного мовця', + 'recentlyUsedNames': 'Нещодавно використані імена', + 'applyToCurrentParagraph': 'Застосувати до поточного абзацу', + 'totalTime': 'Загальний час', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Мовці в підсумку будуть оновлюватися автоматично', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Синхронізувати з хмарою', + 'syncToCloudTip': + 'Автоматично синхронізуйте свої записи з хмарою; ви можете відтворювати, керувати та ділитися ними через 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', - - // 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', - '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.', - '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.', + 'enabled': 'Увімкнено', + 'disabled': 'Вимкнено', + 'myVoitransDevice': 'Мій пристрій VOITRANS', + 'helpAndFeedback': 'Допомога та відгуки', + 'aboutVoitrans': 'Про VOITRANS', + 'meetingDays': 'Дні', + 'meetingHours': 'Години', + 'voitransAiMember': 'Підписка Voitrans AI', + 'unlockStarterMember': 'Розблокувати Starter', + 'bindDeviceToActivate': + 'Прив’яжіть пристрій Voitrans, щоб активувати підписку Starter', + 'unlockNow': 'Розблокувати зараз', + + // Meeting模块 - 会员与升级 + 'comparison': 'Порівняння', + 'detailedInfo': 'Детальна інформація', + 'monthlyTranscriptionTime': 'Місячний час транскрипції', + 'unlimited': 'Без обмежень', + 'professionalTemplates': 'Професійні шаблони', + 'limited': 'Обмежено', + 'fullTemplates': 'Повний набір шаблонів', + 'professionalTerms': 'Професійні терміни', + 'customTemplates': 'Користувацькі шаблони', + 'visualMindMap': 'Візуальна інтелект‑карта', + 'speakerIdentification': 'Визначення мовців', + 'aiVoiceEnhancement': 'Покращення голосу AI', + 'audioImport': 'Імпорт аудіо', + 'multipleExportFormats': 'Кілька форматів експорту', + 'professionalSummaryTemplates': 'Професійні шаблони підсумків', + 'professionalTemplateDesc': + 'Професійний дизайн шаблонів для підвищення ефективності роботи. Налаштовується відповідно до потреб галузі.', + 'customTemplateDesc': + 'Ви можете налаштувати підказки для підсумків під свої потреби та використовувати їх для генерації потрібних підсумків.', + 'askAiDesc': + 'Інтелектуально витягуйте глибшу інформацію із записів, створюйте таблиці даних, ключові висновки обговорення, списки справ, листи‑звіти та інший форматований вміст одним натисканням.', + 'visualMindMapDesc': + 'Більше, ніж підсумки — організовуйте й візуалізуйте ключові пункти за допомогою інтелект‑карт для кращого розуміння всього тексту.', + 'templateCommunityDesc': + 'Відкривайте, діліться та надихайтеся бібліотекою шаблонів, створеною користувачами.', + 'speakerIdentificationDesc': + 'Транскрипція аудіо підтримуватиме визначення мовців, щоб інтуїтивніше відтворювати зміст зустрічі чи телефонної розмови. Водночас підсумок буде точнішим.', + 'privateCloudSyncDesc': + 'Ваші записи та транскрипції будуть надійно збережені на виділених хмарних серверах із повним шифруванням під час завантаження та вивантаження, щоб забезпечити конфіденційність і безпеку.', + 'aiVoiceEnhancementDesc': + 'Покращення голосу AI підтримує кілька рівнів шумозаглушення, інтелектуально прибирає фоновий шум, підвищує чіткість голосу та покращує якість відтворення.', + 'audioImportDesc': + 'Легко імпортуйте аудіофайли з пристрою або сторонніх застосунків, як‑от голосові нотатки, Google Drive тощо.', + 'multipleExportFormatsDesc': + 'Експортуйте аудіозаписи, текст транскрипції та підсумки у різних форматах (TXT, PDF, JPEG) відповідно до ваших потреб.', + 'upgradeMembership': 'Оновити підписку', + 'yearlySubscription': 'Річна підписка', + 'monthlySubscription': 'Місячна підписка', + 'proMonthly': 'Pro ¥60/міс.', + 'proMonthlyDesc': + 'Безкоштовна пробна 7 днів, далі ¥800/рік. Можна скасувати до завершення пробного періоду.', + 'sevenDayTrial': 'Безкоштовна пробна 7 днів', + 'unlimitedMonthly': 'Unlimited ¥120/міс.', + 'unlimitedMonthlyDesc': + 'Безкоштовна пробна 7 днів, далі ¥1600/рік. Можна скасувати до завершення пробного періоду.', + 'trialNote': + '*Безкоштовно 7 днів, далі оплата щорічно; можна скасувати будь‑коли.', 'proPrice': 'Pro ¥120', - 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', + 'proMonthlyPrice': '¥120/міс.', + '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', - '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', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Застосувати до всіх абзаців цього мовця', - 'summaryWillBeUpdatedAutomatically': 'Підсумок буде автоматично оновлюватися на основі шаблону', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'unlimitedMonthlyPrice': '¥198/міс.', + 'upgradeNote': + '*Після оновлення підписки залишок днів попередньої підписки буде автоматично перераховано та повернено на ваш платіжний рахунок', + 'buyMoreTranscriptionTime': 'Купити більше часу транскрипції', + 'sixThousandMinutes': '6 000 хвилин', + 'threeThousandMinutes': '3 000 хвилин', + 'sixHundredMinutes': '600 хвилин', + 'oneHundredTwentyMinutes': '120 хвилин', + 'validityPeriod': '*Термін дії: ', + 'validityNote': + 'Активується одразу після покупки, діє 2 роки після активації.', + 'purchase': 'Купити', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Мова запису', + 'cantonese': 'Кантонська', + 'sichuan': 'Сичуаньський діалект', + 'shanghai': 'Шанхайський діалект', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Невідома мова', + 'analysisFailed': 'Аналіз не вдався, спробуйте пізніше', + 'transcriptionFailed': 'Транскрипція не вдалася, спробуйте пізніше', + 'summaryFailed': 'Не вдалося створити підсумок, спробуйте пізніше', + 'summaryFailedShort': 'Підсумок не вдався', + 'transcriptionFailedShort': 'Транскрипція не вдалася', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Аудіоплеєр не готовий, зачекайте', + 'playFailed': 'Помилка відтворення', + 'audioFileNotFound': 'Аудіофайл не знайдено', + 'fetchingAudio': 'Отримання аудіо з хмари...', + 'playerLoadFailed': 'Не вдалося завантажити аудіоплеєр', // 设置页 "systemSettings": "Системні налаштування", @@ -619,9 +769,10 @@ const Map ukUA = { "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": "Системні налаштування", @@ -634,7 +785,8 @@ const Map ukUA = { "privacySettings": "Налаштування конфіденційності", "privacySettingsInfo": "Керування збором даних та дозволами", "permissionManagement": "Керування дозволами", // 权限管理 - "permissionManagementInfo": "Керування налаштуваннями дозволів програми", // 管理应用权限设置 + "permissionManagementInfo": + "Керування налаштуваннями дозволів програми", // 管理应用权限设置 "aboutApplication": "Про програму", "versions": "Версія", "checkUpdates": "Перевірити оновлення", @@ -643,9 +795,11 @@ const Map ukUA = { "voiceServiceInfo": "Вибір служби розпізнавання та синтезу мовлення", "selectVoiceService": "Вибрати голосову службу", "azureVoiceService": "Голосова служба Azure", - "azureVoiceServiceInfo": "Хмарна голосова служба Microsoft, що підтримує високоякісний синтез та розпізнавання мовлення", + "azureVoiceServiceInfo": + "Хмарна голосова служба Microsoft, що підтримує високоякісний синтез та розпізнавання мовлення", "flutterVoiceService": "Локальна голосова служба Flutter", - "flutterVoiceServiceInfo": "Локальна голосова служба пристрою, яку можна використовувати без підключення до Інтернету", + "flutterVoiceServiceInfo": + "Локальна голосова служба пристрою, яку можна використовувати без підключення до Інтернету", 'timbreService': 'Служба тембрів', 'timbreServiceInfo': 'Вибір служби синтезу мовлення з різними тембрами', 'defaultTimbre': 'Стандартний тембр', @@ -659,41 +813,31 @@ const Map ukUA = { "bleHeadsetFirmwareUpgrade": "Оновлення версії прошивки навушників BLE", "deviceManagement": "Керування пристроями", "manageConnectedDevices": "Керування підключеними пристроями Bluetooth", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Наразі у вас остання версія {version}', 'checkUpdateFailed': 'Не вдалося перевірити оновлення', 'networkErrorRetry': 'Помилка мережі, спробуйте ще раз пізніше', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Голосовий чат у реальному часі", - "realtimeVoiceChatInfo": "Спробуйте функцію інтелектуальної голосової взаємодії (попередній перегляд)", + "realtimeVoiceChatInfo": + "Спробуйте функцію інтелектуальної голосової взаємодії (попередній перегляд)", "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Ще немає прив’язаних пристроїв", + "pleaseBindDeviceFirst": "Спочатку прив’яжіть пристрій для керування", + "noMacAddress": "Немає MAC-адреси", + "licenseCode": "Ліцензійний код", + "confirmUnbind": "Підтвердити відв’язування", + "confirmUnbindMessage": + "Ви впевнені, що хочете відв’язати пристрій \"{deviceName}\"?", + "confirmUnbindAction": "Підтвердити відв’язування", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Очистити історію чату", "online": "В мережі", @@ -721,49 +865,54 @@ const Map ukUA = { "loadMoreMessages": "Завантажити більше повідомлень...", "loadFailedClickRetry": "Не вдалося завантажити, натисніть, щоб повторити", "swipeUpForMore": "Проведіть пальцем вгору, щоб побачити більше", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', + "callingTool": "Я допомагаю вам, зачекайте!", // 正在帮您,请稍等! + "voice_interrupt": "Перервати", // 语音打断 + 'voice_interrupt_tip': + 'При увімкненні: ШІ не буде перериватися вашим голосом під час відповіді та зможе обробляти лише один раунд розмови за раз. Щоб почати новий раунд, просто скажіть слово активації.', + + // Agent模块 - 预设提示词 + "presetMusic": "Увімкни музику", // 来点音乐 + "presetNavigation": "Навігація до", // 导航 + "presetWeather": "Погода сьогодні", // 今日天气 + "presetNews": "Новини сьогодні", // 今日新闻 + "presetFood": "Їжа поруч", // 美食 + "playSomeMusic": "Увімкни популярну музику", // 播放一些流行音乐 + "navigationTo": "Допоможи прокласти маршрут до", // 导航到 + "todayWeather": "Яка сьогодні погода?", // 今日天气 + "todayNews": "Які сьогодні новини?", // 今日新闻 + "nearbyFood": "Яка смачна їжа є поруч?", // 美食 + + // Agent模块 - 欢迎消息与权限 + 'welcomeMessage': 'Привіт! Я **Lily**.\n\n' + '• Відповідаю на питання та надаєю інформацію\n\n' + '• Реальний часовий переклад мови\n\n' + '• Рекомендую музику та podcast\n\n' + '• Зберігаю голосові нотатки та запам’ятятки\n\n' + '• Керую функціями гарнітури\n\n' + 'Чи можу я допомогти вам?', 'microphonePermission': 'Мікрофон', - 'voiceRecognitionPermissionText': 'Для розпізнавання мовлення потрібен доступ до мікрофона.', - 'voiceTranslationPermissionText': 'Для розпізнавання та перекладу мовлення потрібен доступ до мікрофона.', - 'phoneCallPermissionText': 'Для здійснення дзвінків потрібен доступ до мікрофона для голосових викликів.', - 'permissionDeniedText': 'Ви назавжди відмовили в доступі до мікрофона, будь ласка, увімкніть дозвіл у налаштуваннях системи.', + 'voiceRecognitionPermissionText': + 'Для розпізнавання мовлення потрібен доступ до мікрофона.', + 'voiceTranslationPermissionText': + 'Для розпізнавання та перекладу мовлення потрібен доступ до мікрофона.', + 'phoneCallPermissionText': + 'Для здійснення дзвінків потрібен доступ до мікрофона для голосових викликів.', + 'permissionDeniedText': + 'Ви назавжди відмовили в доступі до мікрофона, будь ласка, увімкніть дозвіл у налаштуваннях системи.', 'startVoiceInput': 'Почати голосове введення', 'startPhoneCallMode': 'Почати режим дзвінка, почати голосове введення', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Введіть своє повідомлення тут...', // 全屏编辑器输入提示 'characterCount': '{count} символів', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Копіювати', 'copySuccess': 'Скопійовано успішно', 'report': 'Поскаржитися', 'submitSuccess': 'Надіслано успішно', 'submitFailed': 'Не вдалося надіслати', 'reportSubmitted': 'Скаргу надіслано, ми її розглянемо найближчим часом', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Шкідливий/Небезпечний', 'pornographicVulgar': 'Порнографічний/Вульгарний', 'misleadingAttack': 'Вводить в оману/Атака', @@ -771,18 +920,24 @@ const Map ukUA = { 'privacyRelated': 'Пов\'язано з конфіденційністю', 'copyrightViolation': 'Порушення моїх авторських прав, репутації тощо', 'other': 'Інше', - 'reportDescriptionHint': 'Ми хочемо знати причину вашої скарги, ви можете описати проблему, з якою зіткнулися.', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'Ми хочемо знати причину вашої скарги, ви можете описати проблему, з якою зіткнулися.', 'generatedByAi': 'Згенеровано AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Виклик інструмента', + 'noResult': 'Немає результату', + 'noToolCallContentToCopy': 'Немає вмісту виклику інструмента для копіювання', + 'toolCallDetails': 'Деталі виклику інструмента:', + 'toolCallContentCopied': + 'Вміст виклику інструмента скопійовано в буфер обміну', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Ось кілька рекомендованих композицій:', 'playList': 'Список відтворення', 'moreMusic': 'Більше музики', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'км', // 公里单位 'meters': 'м', // 米单位 'hours': 'год', // 小时单位 @@ -797,20 +952,52 @@ const Map ukUA = { "bicycling": "Велосипедом", "tsransit": "Громадський транспорт", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Виберіть навігаційний додаток', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Навігація з Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Навігація з Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Навігація з Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Навігація з Apple Maps', + 'builtInNavigation': 'Вбудована навігація', + 'useBuiltInNavigation': 'Навігація з вбудованою картою', + 'navigationStartFailed': 'Не вдалося запустити навігацію', + 'cannotPlayMusicListRetryLater': + 'Не вдається відтворити список музики, спробуйте пізніше', + 'cannotPlaySong': 'Не вдається відтворити пісню', + 'openMapError': 'Помилка під час відкриття карти', + 'pleaseInstallAmapApp': 'Спочатку встановіть додаток Amap', + 'pleaseInstallBaiduMapApp': 'Спочатку встановіть додаток Baidu Maps', + 'appleMapStartFailed': 'Не вдалося запустити Apple Maps', + 'appleMapUnavailable': 'Apple Maps недоступний', + 'openAppleMapError': 'Помилка під час відкриття Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Запит погодних умов:', 'highest': 'Макс.', 'lowest': 'Мін.', 'futureForecast': 'Прогноз на майбутнє', - 'hotWeatherTip': 'Сьогодні спекотно, будь ласка, уникайте перегріву та пийте більше води, щоб уникнути сонячного удару', - 'coldWeatherTip': 'Сьогодні температура низька, будь ласка, тепло одягайтеся, виходячи на вулицю, щоб не застудитися', - 'rainyWeatherTip': 'Сьогодні дощ, будь ласка, візьміть з собою парасольку та будьте обережні під час поїздок', - 'snowyWeatherTip': 'Сьогодні сніг, дороги слизькі, будьте обережні та тепло одягайтеся', - 'foggyWeatherTip': 'Сьогодні туман, видимість обмежена, будь ласка, надягайте маску, виходячи на вулицю', - 'windyWeatherTip': 'Сьогодні сильний вітер, будь ласка, будьте обережні та закріпіть свої речі, виходячи на вулицю', - 'sunnyWeatherTip': 'Сьогодні сонячно та сильне ультрафіолетове випромінювання, будь ласка, використовуйте сонцезахисний крем, виходячи на вулицю', - 'temperatureDifferenceTip': 'Сьогодні велика різниця температур між днем і ніччю, будь ласка, одягайтеся відповідно', - 'comfortableWeatherTip': 'Сьогодні приємна погода, чудовий час для активного відпочинку на свіжому повітрі', + 'hotWeatherTip': + 'Сьогодні спекотно, будь ласка, уникайте перегріву та пийте більше води, щоб уникнути сонячного удару', + 'coldWeatherTip': + 'Сьогодні температура низька, будь ласка, тепло одягайтеся, виходячи на вулицю, щоб не застудитися', + 'rainyWeatherTip': + 'Сьогодні дощ, будь ласка, візьміть з собою парасольку та будьте обережні під час поїздок', + 'snowyWeatherTip': + 'Сьогодні сніг, дороги слизькі, будьте обережні та тепло одягайтеся', + 'foggyWeatherTip': + 'Сьогодні туман, видимість обмежена, будь ласка, надягайте маску, виходячи на вулицю', + 'windyWeatherTip': + 'Сьогодні сильний вітер, будь ласка, будьте обережні та закріпіть свої речі, виходячи на вулицю', + 'sunnyWeatherTip': + 'Сьогодні сонячно та сильне ультрафіолетове випромінювання, будь ласка, використовуйте сонцезахисний крем, виходячи на вулицю', + 'temperatureDifferenceTip': + 'Сьогодні велика різниця температур між днем і ніччю, будь ласка, одягайтеся відповідно', + 'comfortableWeatherTip': + 'Сьогодні приємна погода, чудовий час для активного відпочинку на свіжому повітрі', "monday": "Пн", "tuesday": "Вт", "wednesday": "Ср", @@ -818,18 +1005,8 @@ const Map ukUA = { "friday": "Пт", "saturday": "Сб", "sunday": "Нд", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Сонячно", "partlyCloudy": "Мінлива хмарність", "partlySunny": "Частково сонячно", @@ -850,7 +1027,141 @@ const Map ukUA = { "haze": "Імла", "strongWind": "Сильний вітер", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Переклад зображень", + "textTranslation": "Текстовий переклад", + + // 翻译模块 - 主页 + "translationHistory": "Історія перекладів", + "enableRecording": "Увімкнути запис", + "viewAudioFiles": "Переглянути аудіофайли", + "headsetUser": "Користувач навушників", + "phoneUser": "Користувач телефону", + "selectSourceLanguage": "Вибрати вихідну мову", + "selectTargetLanguage": "Вибрати цільову мову", + "me": "Я", + "counterPart": "Співрозмовник", + "bluetoothCallStateError": + "Переконайтеся, що Bluetooth-навушники підключені до телефону та триває дзвінок", + "autoDetect": "Автовизначення", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Вимкнути плаваюче вікно', + 'enableFloatingWindow': 'Увімкнути плаваюче вікно', + 'permissionTip': 'Підказка щодо дозволів', + 'micPermissionRequiredForRecording': 'Для запису потрібен дозвіл на мікрофон', + 'deleteTranslationRecordError': 'Помилка видалення запису перекладу: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Не вдалося визначити мову", + "translationFailed": "Переклад не вдався", + "translating": "Переклад...", + "translate": "Перекласти", + "pleaseInputText": "Введіть текст", + "inputTextToTranslate": "Введіть текст для перекладу", + "textTooLong": "Текст надто довгий, максимум 5000 символів", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Історія відсутня", + "historyRecords": "Історія записів", + "clearResults": "Очистити результати", + "clearHistory": "Очистити історію", + "clearHistoryConfirm": + "Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.", + "unknownLanguage": "Невідома мова", + "deleteSessionRecord": "Видалити запис сесії", + "deleteSessionConfirm": + "Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Виберіть джерело зображення", + "imagePreview": "Попередній перегляд зображення", + "translationResult": "Результат перекладу", + "recognitionResult": "Результат розпізнавання", + "translatedImagePreview": "Попередній перегляд перекладеного зображення", + "translatedImageLoadFailed": "Не вдалося завантажити перекладене зображення", + "pleaseSelectImage": "Виберіть зображення", + "imageLoadFailed": "Не вдалося завантажити зображення", + "imageQuality": "Якість зображення", + "maxSize": "Максимальний розмір", + "close": "Закрити", + "setImageQuality": "Налаштувати якість зображення", + "currentQuality": "Поточна якість: @value%", + "setMaxSize": "Налаштувати максимальний розмір", + "currentMaxSize": "Поточне: @pxpx", + "waitingForAction": "Очікування дії", + "pleaseSelectImageToStart": "Виберіть зображення, щоб почати", + "chooseImage": "Вибрати зображення", + "openingCamera": "Відкриття камери...", + "openingPhotoAlbum": "Відкриття фотоальбому...", + "cancelled": "Скасовано", + "userCancelledSelection": "Користувач скасував вибір", + "translatingImage": "Переклад зображення", + "callingImageTranslateService": "Виклик сервісу перекладу зображень...", + "savingRecord": "Збереження запису", + "savingTranslationResult": "Збереження результату перекладу...", + "translationCompleted": "Переклад завершено", + "allStepsCompleted": "Усі кроки завершено", + "processingFailed": "Обробка не вдалася", + "imageProcessingOrTranslationFailed": + "Обробка зображення або переклад не вдалися. Спробуйте ще раз.\nПомилка: {error}", + "imageTooLarge": "Розмір зображення перевищує ліміт 4 МБ", + "imageTooLargeHint": + "Розмір зображення перевищує 4 МБ. Зменште якість або розміри та спробуйте ще раз", + "emptyTranslationResult": + "API перекладу зображень повернуло порожній результат", + "imageTranslationFailedTryLater": + "Переклад зображення не вдався. Проблеми з мережею або ліміт запитів. Спробуйте пізніше", + "imageTranslationApiException": + "Помилка API перекладу зображень. Перевірте мережу та повторіть", + "permissionRequired": "Потрібен дозвіл", + "cameraPermissionRequired": "Для фотографування потрібен дозвіл камери", + "photoAlbumPermissionRequired": + "Для вибору зображень потрібен дозвіл на фотоальбом", + "translationDetails": "Деталі перекладу", + "originalImage": "Оригінальне зображення", + "sourceLanguage": "Вихідна мова", + "targetLanguage": "Цільова мова", + "translationTime": "Час перекладу", + "shareInDevelopment": "Функція поширення в розробці", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Перекласти аудіофайли", + "noAudioFiles": "Аудіофайли відсутні", + "calculating": "Обчислення...", + "playing": "Відтворення...", + "paused": "Призупинено", + "clickToPlay": "Натисніть, щоб відтворити", + "rename": "Перейменувати", + "smartTranscription": "Розумна транскрипція", + "renameAudioFile": "Перейменувати аудіофайл", + "enterNewFileName": "Будь ласка, введіть нову назву файлу", + + // 翻译模块 - 翻译详情 + "originalRecord": "Оригінальний запис", + "recordSummary": "Підсумок запису", + "clickToGenerateSummary": + "Натисніть кнопку нижче, щоб згенерувати підсумок сесії", + "summaryContent": "Зміст підсумку", + "copied": "Скопійовано", + "summaryCopiledToClipboard": "Підсумок скопійовано до буфера обміну", + "extractSummary": "Витягти підсумок", + "summaryGenerated": "Підсумок згенеровано", + "generating": "Генерація...", + "regenerate": "Згенерувати знову", + "summaryTimeoutMessage": + "Час очікування запиту на генерацію підсумку минув, можливо, через проблеми з мережею або завантаженість сервера.", + "deleteTranslationRecord": "Видалити запис перекладу", + "deleteTranslationConfirm": + "Ви впевнені, що хочете видалити цей запис перекладу? Цю дію неможливо скасувати.", + "originalText": "Оригінальний текст", + "translatedText": "Перекладений текст", + "sessionSummary": "Підсумок сесії", + "cannotShare": "Неможливо поділитися", + "generateSummaryFirst": "Будь ласка, спочатку згенеруйте підсумок", + "translationSessionRecord": "Запис сесії перекладу", + + // 个人资料模块 "editProfile": "Редагувати профіль", "avatar": "Аватар", "nickname": "Псевдонім", @@ -862,26 +1173,27 @@ const Map ukUA = { "logout": "Вийти", "logoutTips": "Ви впевнені, що хочете вийти з поточного облікового запису?", 'deleteAccount': 'Видалити обліковий запис', - 'deleteAccountTips': 'Ви впевнені, що хочете назавжди видалити свій обліковий запис? Цю дію неможливо скасувати', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 - 'networkConnectionFailed': 'Помилка мережевого підключення, перевірте налаштування мережі та спробуйте ще раз', - 'serverTemporarilyUnavailable': 'Сервер тимчасово недоступний, спробуйте ще раз пізніше', - 'loginExpiredPleaseRelogin': 'Термін дії сесії закінчився, будь ласка, увійдіть знову', + 'deleteAccountTips': + 'Ви впевнені, що хочете назавжди видалити свій обліковий запис? Цю дію неможливо скасувати', + 'clean': 'Очистити кеш', + 'cleanTips': 'Ви впевнені, що хочете очистити особистий кеш?', + 'networkConnectionFailed': + 'Помилка мережевого підключення, перевірте налаштування мережі та спробуйте ще раз', + 'serverTemporarilyUnavailable': + 'Сервер тимчасово недоступний, спробуйте ще раз пізніше', + 'loginExpiredPleaseRelogin': + 'Термін дії сесії закінчився, будь ласка, увійдіть знову', 'noPermissionForThisOperation': 'Немає дозволу на виконання цієї операції', 'requestedResourceNotFound': 'Запитаний ресурс не знайдено', - 'imageProcessingFailedPleaseReselect': 'Не вдалося обробити зображення, будь ласка, виберіть інше зображення', + 'imageProcessingFailedPleaseReselect': + 'Не вдалося обробити зображення, будь ласка, виберіть інше зображення', 'operationFailedPleaseRetry': 'Операція не вдалася, спробуйте ще раз', 'serverReturnedError': 'Сервер повернув помилку', 'serverError': 'Помилка сервера', - 'networkConnectionFailedCheckSettings': 'Помилка мережевого підключення, перевірте налаштування мережі', - 'serverInternalErrorRetryLater': 'Внутрішня помилка сервера, спробуйте ще раз пізніше', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', + 'networkConnectionFailedCheckSettings': + 'Помилка мережевого підключення, перевірте налаштування мережі', + 'serverInternalErrorRetryLater': + 'Внутрішня помилка сервера, спробуйте ще раз пізніше', 'imageCompressionFailed': 'Не вдалося стиснути зображення', 'avatarUpdateFailed': 'Не вдалося оновити аватар', 'usernameCannotBeEmpty': 'Ім\'я користувача не може бути порожнім', @@ -891,44 +1203,56 @@ const Map ukUA = { 'loggedOut': 'Ви вийшли з системи', 'logoutFailedRetry': 'Не вдалося вийти, спробуйте ще раз', 'accountPermanentlyDeleted': 'Обліковий запис було назавжди видалено', - 'deleteAccountFailedRetry': 'Не вдалося видалити обліковий запис, спробуйте ще раз', - - // 账号服务相关 + 'deleteAccountFailedRetry': + 'Не вдалося видалити обліковий запис, спробуйте ще раз', 'clearUserDataFailed': 'Не вдалося очистити дані користувача', // 清理用户数据失败 'deleteUserDataFailed': 'Не вдалося видалити дані користувача', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': 'Вихід зі стороннього сервісу успішний', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': 'Не вдалося вийти зі стороннього сервісу', // 第三方登录退出失败 + 'thirdPartyLogoutSuccess': + 'Вихід зі стороннього сервісу успішний', // 第三方登录退出成功 + 'thirdPartyLogoutFailed': + 'Не вдалося вийти зі стороннього сервісу', // 第三方登录退出失败 'signOutProcessError': 'Сталася помилка під час виходу з системи', // 登出过程发生错误 - 'deleteAccountProcessError': 'Сталася помилка під час видалення облікового запису', // 删除账号过程发生错误 + 'deleteAccountProcessError': + 'Сталася помилка під час видалення облікового запису', // 删除账号过程发生错误 'userDataClearSuccess': 'Дані користувача успішно очищено', // 用户数据清理成功 - 'allUserDataClearSuccess': 'Усі дані користувача успішно очищено', // 所有用户数据清理成功 - 'accountServiceInitialized': 'Службу облікових записів ініціалізовано', // AccountService 已初始化 - - // 权限管理页面 + 'allUserDataClearSuccess': + 'Усі дані користувача успішно очищено', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'Службу облікових записів ініціалізовано', // AccountService 已初始化 + + // 权限模块 + 'meetingStoragePermission': 'Сховище', + 'meetingStoragePermissionExplanation': + 'Нам потрібен доступ до сховища, щоб ви могли вибирати та завантажувати аудіофайли.', + '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', - //'bluetooth': '蓝牙', - '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': 'Використовується для читання та керування подіями та нагадуваннями у календарі', - 'locationPermissionDesc': 'Використовується для отримання інформації про поточне місцезнаходження', + 'alarmPermissionDesc': + 'Використовується для встановлення точних будильників, щоб нагадування спрацьовували вчасно', + 'calendarWritePermissionDesc': + 'Використовується для створення подій та нагадувань у календарі', + 'calendarFullAccessPermissionDesc': + 'Використовується для читання та керування подіями та нагадуваннями у календарі', + 'locationPermissionDesc': + 'Використовується для отримання інформації про поточне місцезнаходження', 'appFunctionNeeds': 'Функції програми потребують', 'authorized': 'Дозволено', 'unauthorized': 'Не дозволено', @@ -937,67 +1261,338 @@ const Map ukUA = { 'unknownStatus': 'Невідомий статус', 'permissionGranted': 'Дозвіл надано', 'permissionRequestError': 'Помилка під час запиту дозволу', - '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', - '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': 'Програмі потрібен цей дозвіл для надання повної функціональності', - 'permanentDenialText': 'Ви назавжди відмовили в доступі до {permission}, будь ласка, перейдіть до налаштувань програми, щоб увімкнути його', + 'phonePermissionDetailDesc': + 'Для функції дзвінків потрібен дозвіл на доступ до телефону', + 'smsPermissionDetailDesc': + 'Для функції надсилання SMS потрібен дозвіл на доступ до SMS', + 'alarmPermissionDetailDesc': + 'Цей дозвіл потрібен для встановлення точних будильників і гарантованого своєчасного спрацювання нагадувань', + 'calendarWritePermissionDetailDesc': + 'Для створення подій у календарі потрібен дозвіл на запис до календаря', + 'calendarFullAccessPermissionDetailDesc': + 'Для керування подіями у календарі потрібен повний доступ до календаря', + 'locationPermissionDetailDesc': + 'Для отримання інформації про місцезнаходження потрібен дозвіл на доступ до місцезнаходження', + 'contactsPermissionDesc': + 'Використовується для доступу до контактної інформації', + 'contactsPermissionDetailDesc': + 'Для функцій дзвінків і SMS потрібен доступ до контактів, щоб вибирати контакти', + 'bluetoothPermissionDesc': + 'Використовується для підключення та керування Bluetooth-пристроями', + 'bluetoothPermissionDetailDesc': + 'Для підключення Bluetooth-навушників та інших пристроїв потрібен дозвіл Bluetooth', + 'bluetoothScanPermissionDesc': + 'Використовується для сканування Bluetooth-пристроїв поблизу', + 'bluetoothScanPermissionDetailDesc': + 'Для сканування Bluetooth-пристроїв поблизу потрібен дозвіл на сканування Bluetooth', + 'bluetoothConnectPermissionDesc': + 'Використовується для підключення до Bluetooth-пристроїв', + 'bluetoothConnectPermissionDetailDesc': + 'Для підключення до Bluetooth-пристроїв потрібен дозвіл на підключення Bluetooth', + 'notificationPermissionDesc': 'Використовується для надсилання сповіщень', + 'notificationPermissionDetailDesc': + 'Програмі потрібен дозвіл на сповіщення, щоб надсилати вам важливі попередження та повідомлення', + 'appNeedsPermissionForFullFunction': + 'Програмі потрібен цей дозвіл для надання повної функціональності', + 'permanentDenialText': + 'Ви назавжди відмовили в доступі до {permission}, будь ласка, перейдіть до налаштувань програми, щоб увімкнути його', 'goToSettings': 'Перейти до налаштувань', - - // 权限申请 - '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.', -//'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.', + 'bluetoothScan': 'Сканування Bluetooth', + 'bluetoothConnect': 'Підключення Bluetooth', + 'bluetoothScanExplanation': + 'Програмі потрібен дозвіл на сканування Bluetooth, щоб знаходити пристрої поблизу.', + 'bluetoothConnectExplanation': + 'Програмі потрібен дозвіл на підключення Bluetooth, щоб підключатися до пристроїв.', + 'locationForBluetoothExplanation': + 'Програмі потрібен дозвіл на місцезнаходження, щоб сканувати Bluetooth-пристрої.', + 'bluetoothScanPermanentDenial': + 'Дозвіл на сканування Bluetooth назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', + 'bluetoothConnectPermanentDenial': + 'Дозвіл на підключення Bluetooth назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', + 'locationPermanentDenial': + 'Дозвіл на місцезнаходження назавжди відхилено, перейдіть до налаштувань і увімкніть його вручну.', + 'notificationPermission': 'Сповіщення', + 'locationPermission': 'Місцезнаходження', + 'notificationPermissionExplanation': + 'Дозвіл на сповіщення потрібен, щоб показувати статус відтворення музики.', + 'locationPermissionExplanation': + 'Дозвіл на місцезнаходження потрібен, щоб отримувати поточне місцезнаходження.', + 'notificationPermissionPermanentDenial': + 'Ви назавжди відмовили в доступі до сповіщень, перейдіть до налаштувань і увімкніть його.', + 'locationPermissionPermanentDenial': + 'Ви назавжди відмовили в доступі до місцезнаходження, перейдіть до налаштувань і увімкніть його.', + 'storagePermission': 'Сховище', + 'microphonePermissionExplanation': + 'Нам потрібен дозвіл на мікрофон для запису аудіо.', + 'storagePermissionExplanation': + 'Нам потрібен дозвіл на сховище, щоб ви могли вибирати та завантажувати аудіофайли.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Виявлено, що ви назавжди відмовили в доступі до мікрофона. Щоб продовжити використання цієї функції, перейдіть у налаштування програми та вручну увімкніть дозвіл на мікрофон.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Виявлено, що ви назавжди відмовили в доступі до сховища. Щоб продовжити використання цієї функції, перейдіть у налаштування програми та вручну увімкніть дозвіл на сховище.', + 'permissionUtilNeed': 'Потрібен ', + 'permissionUtilPermission': ' дозвіл', + 'permissionUtilRestricted': ' дозвіл обмежено', + 'permissionUtilRestrictedMessage': + 'Ця функція недоступна або обмежена на поточному пристрої. Перевірте налаштування пристрою або системні обмеження.', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Навігація в процесі', + 'native.notification.navigation.keepRunning': + 'Навігація, тримайте додаток запущеним', + 'native.notification.bleAgent.running': 'Голосовий помічник працює', + 'native.notification.audioRecording.recording': + 'Запис аудіо, натисніть, щоб повернутися до додатку', + 'native.notification.music.waiting': 'Очікування відтворення', + 'native.notification.music.previous': 'Попередня', + 'native.notification.music.next': 'Наступна', + 'native.notification.music.play': 'Відтворити', + 'native.notification.music.pause': 'Пауза', + 'native.notification.qqMusic.playing': 'Відтворення музики', + + // 版本更新 'newVersionFound': 'Знайдено нову версію', // 版本更新对话框标题 'remindLater': 'Нагадати пізніше', // 稍后提醒按钮 'updateNow': 'Оновити зараз', // 立即更新按钮 'checkUpdate': 'Перевірити оновлення', // 检查更新按钮 'updateFailed': 'Не вдалося оновити', // 更新失败提示 - 'cannotOpenAppStore': 'Не вдається відкрити App Store, будь ласка, перейдіть до App Store вручну, щоб оновити', // 无法打开应用商店提示 - 'updateErrorRetry': 'Сталася помилка під час оновлення, спробуйте ще раз пізніше', // 更新错误重试提示 + 'cannotOpenAppStore': + 'Не вдається відкрити App Store, будь ласка, перейдіть до App Store вручну, щоб оновити', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Сталася помилка під час оновлення, спробуйте ще раз пізніше', // 更新错误重试提示 + + // 配对模块 + "devicePairing": "Спарювання пристрою", + "connectYourDeepSoundHeadset": "Підключіть ваші навушники Voitrans", + "bind": "Прив'язати", + "authorizeBind": "Авторизувати прив'язку", + "enterCode": "Будь ласка, введіть код", + "autoInputCode": "Автоматичне введення коду", + "skipBinding": "Пропустити прив'язку", + "rescan": "Повторне сканування", + "verifyingDevice": "Перевірка пристрою...", + "confirmBinding": "Підтвердити прив'язку", + "associatingDevice": "Асоціація пристрою...", + "goToBluetoothSettings": "Перейти до налаштувань Bluetooth", + 'bluetooth': 'Bluetooth', + "readyToPair": "Готово до спарювання", + "preparingPairingEnvironment": "Підготовка середовища для спарювання...", + "connectDeepSoundViaSystemBluetooth": + "Будь ласка, спочатку підключіться до пристрою Voitrans через системний Bluetooth", + "deviceBindingConfirm": "Підтвердження прив'язки пристрою...", + "establishingDeviceAssociation": "Встановлення асоціації пристрою...", + "waitingCompletePairing": "Будь ласка, зачекайте, завершується спарювання...", + "pairingSuccessRedirecting": + "Спарювання успішне! Перенаправлення на головну сторінку...", + "ensureConnectedDeepSoundDevice": + "Переконайтеся, що ви підключені до пристрою Voitrans", + "deviceAlreadyBoundToOtherAccount": + "Цей пристрій вже прив'язаний до іншого облікового запису", + "deviceAssociationFailed": "Не вдалося асоціювати пристрій, спробуйте ще раз", + "scanTimeoutEnsureDeviceNearby": + "Час сканування минув, переконайтеся, що пристрій знаходиться поруч", + "networkError": "Помилка мережі", + "authorizationFailedCheckCode": + "Помилка авторизації, перевірте правильність коду авторизації", + "pairingFailedRetry": "Не вдалося спарити, спробуйте ще раз", + 'pleaseEnableBluetooth': 'Будь ласка, увімкніть Bluetooth', + 'deviceDisconnected': 'Пристрій відключено', + 'readyToStartPairing': 'Готово до початку спарювання', + 'checkingEnvironment': 'Перевірка середовища...', + 'ensureHeadsetOnAndPairingMode': + 'Переконайтеся, що навушники увімкнені та знаходяться в режимі спарювання', + 'establishingSecureConnection': 'Встановлення безпечного з\\', + 'needManualBindingAuthCode': 'Потрібен код авторизації для ручної прив\\', + 'pairingSuccessful': 'Спарювання успішне!', + 'enableBluetooth': 'Увімкнути Bluetooth', + 'grantPermissions': 'Надати дозволи', + 'retryAssociation': 'Повторити асоціацію', + 'retryAuthorization': 'Повторити авторизацію', + 'pleaseGrantNecessaryPermissions': 'Будь ласка, надайте необхідні дозволи', + 'checkFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', + 'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій Voitrans', + 'verificationFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', + 'invalidDeviceAddress': 'Недійсна адреса пристрою', + 'bleDeviceAssociationFailed': 'Не вдалося асоціювати пристрій BLE', + 'deviceAssociationFailedRetry': + 'Не вдалося асоціювати пристрій, спробуйте ще раз', + 'bleConnectionTimeoutRetry': + 'Час очікування підключення BLE минув, спробуйте ще раз', + 'blePairingStartupFailed': 'Не вдалося розпочати спарювання BLE', + 'bleConnectionFailed': 'Не вдалося підключитися через BLE', + 'deviceAuthorizationFailedCheckCode': + 'Помилка авторизації пристрою, перевірте код авторизації', + 'bluetoothGuideTitle': 'Потрібно вручну увімкнути Bluetooth', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Будь ласка, виконайте ці кроки:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'Увімкніть Bluetooth: Налаштування → Bluetooth → Увімкнути', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'Підключіть пристрій: знайдіть свій пристрій у «Мої пристрої» та натисніть, щоб підключитися', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': + 'Поверніться до програми, щоб продовжити спарювання', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'Порада: можна також натиснути й утримувати значок Bluetooth у Центрі керування, щоб швидко відкрити налаштування Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Зрозуміло', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Вітальна нагорода", + "firstBindRewardDesc": "Ви отримали нагороду за прив’язку.", + "vipLevelLabel": "Рівень VIP:", + "expiryLabel": "Термін дії:", + "notActivated": "Не активовано", + "aiChatCreditsLabel": "Кредити AI чату:", + "translationCreditsLabel": "Кредити перекладу:", + "meetingCreditsLabel": "Кредити зустрічей:", + "ok": "OK", - //国家列表 + // 用户反馈模块 + "feedback": "Відгук користувача", + 'feedbackInfo': 'Надати відгук або пропозицію', + 'feedbackDescription': + 'Будь ласка, опишіть проблему, з якою ви зіткнулися, або вашу пропозицію', + 'feedbackHint': 'Будь ласка, введіть ваш відгук...', + 'feedbackRequired': 'Будь ласка, введіть зміст відгуку', + 'contactInfo': 'Контактна інформація', + 'contactHint': 'Email/Телефон, щоб ми могли з вами зв\'язатися', + 'submit': 'Надіслати', + 'feedbackSubmitSuccess': 'Відгук успішно надіслано, дякуємо за ваш відгук!', + 'feedbackSubmitFailed': + 'Не вдалося надіслати відгук, спробуйте ще раз пізніше', + + // OTA升级模块 + "upgradeExitConfirm": + "Наразі триває оновлення, вихід перерве процес оновлення, ви впевнені, що хочете вийти?", + "deviceModel": "Модель пристрою", + "unknownDevice": "Невідомий пристрій", + "currentFirmwareVersion": "Поточна версія прошивки", + "latestFirmwareVersion": "Остання версія прошивки", + "ota_newVersionFound": "Знайдено нову версію", + "latestVersion": "У вас остання версія", + "gettingDeviceInfo": "Отримання інформації про пристрій...", + "keepDeviceConnected": "Будь ласка, тримайте пристрій підключеним", + "connectionFailed": "Помилка підключення", + "retryConnection": "Повторити підключення", + "ota_updateNow": "Оновити зараз", + "otaVersionInfoFailed": + "Не вдалося отримати інформацію про версію. Спробуйте пізніше.", + "otaDeviceInfoUnavailable": + "Не вдалося отримати інформацію про пристрій. Перевірте підключення та спробуйте ще раз.", + "otaProductInfoUnavailable": + "Не вдалося визначити пристрій. Підключіться знову та спробуйте ще раз.", + "otaFirmwareVersionInvalid": + "Некоректна версія прошивки. Підключіться знову та спробуйте ще раз.", + "keepConnectedDontClose": + "Будь ласка, тримайте пристрій підключеним, не закривайте програму", + "doNotDisconnect": "Будь ласка, не відключайте", + "charging": "Зарядка", + "updateContent": "Зміст оновлення", + "removeEarbudsEnsureBattery": + "Вийміть обидва навушники та переконайтеся, що заряд батареї в обох перевищує 20%", + + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Знайдено нову версію @version', + 'otaConfirmUpdateNow': 'Оновити зараз?', + 'otaUpdate': 'Оновити', + 'otaUpgradeSuccess': 'Оновлення успішне', + 'otaUpgradeCompleteRepair': + 'Оновлення прошивки завершено!\n\nПристрій потрібно повторно спарувати для коректної роботи. Перейти на сторінку спарювання зараз?', + 'otaPairLater': 'Спарувати пізніше', + 'otaPairNow': 'Спарувати зараз', + 'okConfirm': 'OK', + // OTA升级模块 - 设备检查 + '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': + 'Це оновлення містить оптимізації продуктивності та виправлення помилок.', + 'otaGetLatestVersionFailed': + 'Не вдалося отримати інформацію про останню версію', + 'otaGetVersionInfoFailed': 'Не вдалося отримати інформацію про версію', + 'otaCheckingDeviceStatus': 'Перевірка стану пристрою...', + 'otaDownloadFailedCheckNetwork': + 'Не вдалося завантажити, перевірте підключення до мережі', + 'otaDownloadFailed': 'Завантаження не вдалося', + 'otaPreparingConnection': 'Підготовка підключення пристрою...', + 'otaConnectingDevice': 'Підключення до пристрою...', + 'otaUpgradeStarted': 'Оновлення OTA розпочато...', + 'otaUpgradeProgressWithPercent': 'Прогрес оновлення: @percent%', + 'otaUpgradeSuccessComplete': 'Оновлення успішно завершено', + 'otaUpgradeFailedWithCode': 'Оновлення не вдалося, код помилки: @code', + 'otaUpgradeFailedTitle': 'Оновлення не вдалося', + 'otaUpgradeFailedDesc': + 'Перевірте підключення пристрою або пакет оновлення, код помилки: @code', + 'otaDeviceDisconnected': 'Пристрій відключено', + 'otaDeviceConnected': 'Пристрій підключено', + + // 音乐模块 + "noMusic": "Немає музики", // 暂无音乐 + "noPlayingMusic": "Немає відтворюваної музики", // 暂无播放音乐 + "unknownSong": "Невідома пісня", // 未知歌曲 + "unknownArtist": "Невідомий виконавець", // 未知歌手 + "playAll": "Відтворити все", // 播放全部 + + // 语言名称 + "中文(简体)": "中文(简体)", + "中文(繁体)": "中文(繁体)", + "中文(香港繁体)": "中文(香港繁体)", + "英语": "Англійська", + "日语": "Японська", + "韩语": "Корейська", + "法语": "Французька", + "西班牙语": "Іспанська", + "葡萄牙语": "Португальська", + "意大利语": "Італійська", + "德语": "Німецька", + "俄语": "Російська", + "波兰语": "Польська", + "荷兰语": "Нідерландська", + "瑞典语": "Шведська", + "捷克语": "Чеська", + "现代希腊语": "Новогрецька", + "罗马尼亚语": "Румунська", + "匈牙利语": "Угорська", + "乌克兰语": "Українська", + "丹麦语": "Данська", + "芬兰语": "Фінська", + "挪威语": "Норвезька", + "克罗地亚语": "Хорватська", + "加泰隆语": "Каталанська", + "阿拉伯语": "Арабська", + "泰语": "Тайська", + "越南语": "В'єтнамська", + "印尼语": "Індонезійська", + "印地语": "Гінді", + "土耳其语": "Турецька", + "马来语": "Малайська", + "孟加拉语": "Бенгальська", + "泰米尔语": "Тамільська", + "泰卢固语": "Телугу", + "马拉提语": "Маратхі", + "乌尔都语": "Урду", + "波斯语": "Перська", + "斯瓦希里语": "Свахілі", + + // 国家列表 "邮箱": "Email", "中国": "Китай", "美国": "США", @@ -1115,293 +1710,4 @@ const Map ukUA = { "巴哈马": "Bahamas", "巴布亚新几内亚": "Papua New Guinea", "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Історія перекладів", - "enableRecording": "Увімкнути запис", - "viewAudioFiles": "Переглянути аудіофайли", - "headsetUser": "Користувач навушників", - "phoneUser": "Користувач телефону", - "selectSourceLanguage": "Вибрати вихідну мову", - "selectTargetLanguage": "Вибрати цільову мову", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Історія відсутня", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Очистити історію", - "clearHistoryConfirm": "Ви впевнені, що хочете очистити всю історію перекладів? Цю дію неможливо скасувати.", - "unknownLanguage": "Невідома мова", - "deleteSessionRecord": "Видалити запис сесії", - "deleteSessionConfirm": "Ви впевнені, що хочете видалити всі записи перекладів цієї сесії? Цю дію неможливо скасувати.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Перекласти аудіофайли", - "noAudioFiles": "Аудіофайли відсутні", - "calculating": "Обчислення...", - "playing": "Відтворення...", - "paused": "Призупинено", - "clickToPlay": "Натисніть, щоб відтворити", - "rename": "Перейменувати", - "smartTranscription": "Розумна транскрипція", - "renameAudioFile": "Перейменувати аудіофайл", - "enterNewFileName": "Будь ласка, введіть нову назву файлу", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Оригінальний запис", - "recordSummary": "Підсумок запису", - "clickToGenerateSummary": "Натисніть кнопку нижче, щоб згенерувати підсумок сесії", - "summaryContent": "Зміст підсумку", - "copied": "Скопійовано", - "summaryCopiledToClipboard": "Підсумок скопійовано до буфера обміну", - "extractSummary": "Витягти підсумок", - "summaryGenerated": "Підсумок згенеровано", - "generating": "Генерація...", - "regenerate": "Згенерувати знову", - "summaryTimeoutMessage": "Час очікування запиту на генерацію підсумку минув, можливо, через проблеми з мережею або завантаженість сервера.", - "deleteTranslationRecord": "Видалити запис перекладу", - "deleteTranslationConfirm": "Ви впевнені, що хочете видалити цей запис перекладу? Цю дію неможливо скасувати.", - "originalText": "Оригінальний текст", - "translatedText": "Перекладений текст", - "sessionSummary": "Підсумок сесії", - "cannotShare": "Неможливо поділитися", - "generateSummaryFirst": "Будь ласка, спочатку згенеруйте підсумок", - "translationSessionRecord": "Запис сесії перекладу", - - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) - "devicePairing": "Спарювання пристрою", - "connectYourDeepSoundHeadset": "Підключіть ваші навушники Voitrans", - "bind": "Прив'язати", - "authorizeBind": "Авторизувати прив'язку", - "enterCode": "Будь ласка, введіть код", - "autoInputCode": "Автоматичне введення коду", - "skipBinding": "Пропустити прив'язку", - "rescan": "Повторне сканування", - - "verifyingDevice": "Перевірка пристрою...", - "confirmBinding": "Підтвердити прив'язку", - "associatingDevice": "Асоціація пристрою...", - "goToBluetoothSettings": "Перейти до налаштувань Bluetooth", - 'bluetooth': 'Bluetooth', - - // 配对状态文本 - "readyToPair": "Готово до спарювання", - "preparingPairingEnvironment": "Підготовка середовища для спарювання...", - "connectDeepSoundViaSystemBluetooth": "Будь ласка, спочатку підключіться до пристрою Voitrans через системний Bluetooth", - "deviceBindingConfirm": "Підтвердження прив'язки пристрою...", - "establishingDeviceAssociation": "Встановлення асоціації пристрою...", - "waitingCompletePairing": "Будь ласка, зачекайте, завершується спарювання...", - "pairingSuccessRedirecting": "Спарювання успішне! Перенаправлення на головну сторінку...", - - // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "Переконайтеся, що ви підключені до пристрою Voitrans", - "deviceAlreadyBoundToOtherAccount": "Цей пристрій вже прив'язаний до іншого облікового запису", - "deviceAssociationFailed": "Не вдалося асоціювати пристрій, спробуйте ще раз", - "scanTimeoutEnsureDeviceNearby": "Час сканування минув, переконайтеся, що пристрій знаходиться поруч", - "networkError": "Помилка мережі", - "authorizationFailedCheckCode": "Помилка авторизації, перевірте правильність коду авторизації", - "pairingFailedRetry": "Не вдалося спарити, спробуйте ще раз", - - // 配对控制器相关 - //'connectDevice': '连接设备', - 'pleaseEnableBluetooth': 'Будь ласка, увімкніть Bluetooth', - 'deviceDisconnected': 'Пристрій відключено', - 'readyToStartPairing': 'Готово до початку спарювання', - 'checkingEnvironment': 'Перевірка середовища...', - 'ensureHeadsetOnAndPairingMode': 'Переконайтеся, що навушники увімкнені та знаходяться в режимі спарювання', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', - 'establishingSecureConnection': 'Встановлення безпечного з\\', - 'needManualBindingAuthCode': 'Потрібен код авторизації для ручної прив\\', - 'pairingSuccessful': 'Спарювання успішне!', - 'enableBluetooth': 'Увімкнути Bluetooth', - 'grantPermissions': 'Надати дозволи', - 'retryAssociation': 'Повторити асоціацію', - 'retryAuthorization': 'Повторити авторизацію', - 'pleaseGrantNecessaryPermissions': 'Будь ласка, надайте необхідні дозволи', - 'checkFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', - 'pleaseConnectDeepSoundDevice': 'Будь ласка, підключіть пристрій Voitrans', - 'verificationFailedRetry': 'Перевірка не вдалася, спробуйте ще раз', - 'invalidDeviceAddress': 'Недійсна адреса пристрою', - 'bleDeviceAssociationFailed': 'Не вдалося асоціювати пристрій BLE', - 'deviceAssociationFailedRetry': 'Не вдалося асоціювати пристрій, спробуйте ще раз', - 'bleConnectionTimeoutRetry': 'Час очікування підключення BLE минув, спробуйте ще раз', - 'blePairingStartupFailed': 'Не вдалося розпочати спарювання BLE', - 'bleConnectionFailed': 'Не вдалося підключитися через BLE', - 'deviceAuthorizationFailedCheckCode': 'Помилка авторизації пристрою, перевірте код авторизації', - - ///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', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': 'I Know', // 我知道了 - - //用户反馈页 - "feedback": "Відгук користувача", - 'feedbackInfo': 'Надати відгук або пропозицію', - 'feedbackDescription': 'Будь ласка, опишіть проблему, з якою ви зіткнулися, або вашу пропозицію', - 'feedbackHint': 'Будь ласка, введіть ваш відгук...', - 'feedbackRequired': 'Будь ласка, введіть зміст відгуку', - 'contactInfo': 'Контактна інформація', - 'contactHint': 'Email/Телефон, щоб ми могли з вами зв\\', - 'submit': 'Надіслати', - 'feedbackSubmitSuccess': 'Відгук успішно надіслано, дякуємо за ваш відгук!', - 'feedbackSubmitFailed': 'Не вдалося надіслати відгук, спробуйте ще раз пізніше', - - // OTA升级模块 - "upgradeExitConfirm": "Наразі триває оновлення, вихід перерве процес оновлення, ви впевнені, що хочете вийти?", - "deviceModel": "Модель пристрою", - "unknownDevice": "Невідомий пристрій", - "currentFirmwareVersion": "Поточна версія прошивки", - "latestFirmwareVersion": "Остання версія прошивки", - "ota_newVersionFound": "Знайдено нову версію", - "latestVersion": "У вас остання версія", - "gettingDeviceInfo": "Отримання інформації про пристрій...", - "keepDeviceConnected": "Будь ласка, тримайте пристрій підключеним", - "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.", - "keepConnectedDontClose": "Будь ласка, тримайте пристрій підключеним, не закривайте програму", - "doNotDisconnect": "Будь ласка, не відключайте", - "charging": "Зарядка", - "updateContent": "Зміст оновлення", - "removeEarbudsEnsureBattery": "Вийміть обидва навушники та переконайтеся, що заряд батареї в обох перевищує 20%", - - // 音乐列表页面 - "noMusic": "Немає музики", // 暂无音乐 - "noPlayingMusic": "Немає відтворюваної музики", // 暂无播放音乐 - "unknownSong": "Невідома пісня", // 未知歌曲 - "unknownArtist": "Невідомий виконавець", // 未知歌手 - "playAll": "Відтворити все", // 播放全部 - - // 语言名称 - "中文(简体)": "中文(简体)", - "中文(繁体)": "中文(繁体)", - "中文(香港繁体)": "中文(香港繁体)", - "英语": "Англійська", - "日语": "Японська", - "韩语": "Корейська", - "法语": "Французька", - "西班牙语": "Іспанська", - "葡萄牙语": "Португальська", - "意大利语": "Італійська", - "德语": "Німецька", - "俄语": "Російська", - "波兰语": "Польська", - "荷兰语": "Нідерландська", - "瑞典语": "Шведська", - "捷克语": "Чеська", - "现代希腊语": "Новогрецька", - "罗马尼亚语": "Румунська", - "匈牙利语": "Угорська", - "乌克兰语": "Українська", - "丹麦语": "Данська", - "芬兰语": "Фінська", - "挪威语": "Норвезька", - "克罗地亚语": "Хорватська", - "加泰隆语": "Каталанська", - "阿拉伯语": "Арабська", - "泰语": "Тайська", - "越南语": "В'єтнамська", - "印尼语": "Індонезійська", - "印地语": "Гінді", - "土耳其语": "Турецька", - "马来语": "Малайська", - "孟加拉语": "Бенгальська", - "泰米尔语": "Тамільська", - "泰卢固语": "Телугу", - "马拉提语": "Маратхі", - "乌尔都语": "Урду", - "波斯语": "Перська", - "斯瓦希里语": "Свахілі", - - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", }; diff --git a/lib/core/translations/language/vi_vn.dart b/lib/core/translations/language/vi_vn.dart index bc7535a96..6c59d5bfe 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', @@ -18,6 +19,11 @@ const Map viVN = { "unknownError": "Lỗi không xác định", "asrConnectionFailed": "Kết nối tới dịch vụ nhận dạng giọng nói thất bại. Vui lòng kiểm tra mạng hoặc thử lại sau.", + "justNow": "Vừa xong", + "minutesAgo": "@minutes phút trước", + "yesterday": "Hôm qua", + "daysAgo": "@days ngày trước", + "hoursAgo": "@hours giờ trước", // 启动页 "slogan": "Kết nối thế giới, vượt trên cả âm thanh", @@ -28,7 +34,7 @@ const Map viVN = { "explore": "Khám phá", "settings": "Cài đặt", - // 语言 + // 语言列表 "followingSystem": "Theo hệ thống", "chinese": "Tiếng Trung", "english": "Tiếng Anh", @@ -72,7 +78,7 @@ const Map viVN = { "arabic": "Tiếng Arab", "persian": "Tiếng Persian", - // 登录页 + // 登录模块 "welcome": "Chào mừng bạn", "loginTips": "Vui lòng đăng nhập hoặc đăng ký bằng số điện thoại hoặc email", "accountNumber": "Số điện thoại hoặc email", @@ -93,20 +99,18 @@ const Map viVN = { "tip": "Gợi ý", "pleaseEnterCompleteCode": "Vui lòng nhập đầy đủ mã xác minh", "loginFailed": "Đăng nhập thất bại, vui lòng thử lại", - 'pleaseAcceptPrivacyPolicy': 'Vui lòng đọc và đồng ý với Chính sách bảo mật và Thỏa thuận người dùng trước', + 'pleaseAcceptPrivacyPolicy': + 'Vui lòng đọc và đồng ý với Chính sách bảo mật và Thỏa thuận người dùng trước', "enterVerificationCode": "Nhập mã xác minh", "verificationCodeSentTo": "Mã xác minh đã được gửi đến", "resendVerificationCode": "Gửi lại mã xác minh", "login": "Đăng nhập", "usePasswordLogin": "Đăng nhập bằng mật khẩu", - - // 隐私政策弹窗 "loginDeclaration": "Tuyên bố của Voitrans", // Voitrans 声明 - "welcomeToThisApp": "Chào mừng bạn đến với Voitrans, vui lòng đọc kỹ", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 + "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", // 同意并进入 @@ -122,9 +126,11 @@ const Map viVN = { "connectDevice": "Kết nối thiết bị", "topAiExperiences": "Trải nghiệm AI hàng đầu", "aiAssistant": "Trợ lý toàn năng AI", - "aiAssistantInfo": "Tư vấn viên độc quyền 24/7, trả lời câu hỏi, cung cấp đề xuất", + "aiAssistantInfo": + "Tư vấn viên độc quyền 24/7, trả lời câu hỏi, cung cấp đề xuất", "interpretation": "Phiên dịch đồng thời", - "simultaneousInterpretationInfo": "Dịch thời gian thực đa ngôn ngữ, du lịch nước ngoài không lo", + "simultaneousInterpretationInfo": + "Dịch thời gian thực đa ngôn ngữ, du lịch nước ngoài không lo", "aiCompanion": "Bạn đồng hành gia đình", "aiCompanionInfo": "Thấu hiểu bạn, đồng hành ấm áp", "homeSlogan": "Kết nối thế giới, vượt trên cả âm thanh", @@ -135,7 +141,8 @@ const Map viVN = { "initializing": "Đang khởi tạo...", "bluetoothInitializationFailure": "Khởi tạo dịch vụ Bluetooth thất bại", "checkingPermissions": "Đang kiểm tra quyền...", - "lackPermissions": "Thiếu quyền Bluetooth và cần phải cấp quyền truy cập vị trí", + "lackPermissions": + "Thiếu quyền Bluetooth và cần phải cấp quyền truy cập vị trí", "searchingDevice": "Đang tìm kiếm thiết bị...", "findConnectedDevice": "Đã tìm thấy thiết bị đã kết nối", "notFound": "Không tìm thấy thiết bị Bluetooth đã kết nối", @@ -159,7 +166,30 @@ const Map viVN = { 'right': 'Phải', 'checkConnectionStatusFailed': 'Kiểm tra trạng thái kết nối thất bại', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': 'Khởi tạo Bluetooth thất bại: @error', + 'needBluetoothAndLocationPermission': + 'Cần quyền Bluetooth và vị trí để quét thiết bị', + 'permissionRequestFailedWithError': 'Yêu cầu quyền thất bại: @error', + 'needPermission': 'Cần cấp quyền', + 'blePermissionDialogContent': + 'Ứng dụng cần quyền Bluetooth và vị trí để quét thiết bị. Vui lòng bật trong Cài đặt.', + 'needEnableBluetooth': 'Bật Bluetooth', + 'enableBluetoothDialogContent': + 'Vui lòng bật Bluetooth để quét và kết nối thiết bị.', + 'bleScanFailedWithError': 'Quét thất bại: @error', + 'bleConnectionSuccess': 'Kết nối thành công', + 'bleConnectedToDevice': 'Đã kết nối @device', + 'bleConnectionFailedWithError': 'Kết nối thất bại: @error', + 'bleDisconnected': 'Đã ngắt kết nối', + 'bleDeviceDisconnected': 'Thiết bị đã ngắt kết nối', + 'bleDisconnectFailedWithError': 'Ngắt kết nối thất bại: @error', + 'signalStrong': 'Mạnh', + 'signalMedium': 'Trung bình', + 'signalWeak': 'Yếu', + 'signalVeryWeak': 'Rất yếu', + + // 发现页 "searchAi": "Tìm kiếm chức năng AI...", "exploreSlogan": "Tai nghe thông minh, khả năng vô hạn", "exploreSlogan1": "Bạn đồng hành thông minh, khả năng vô hạn", @@ -178,200 +208,273 @@ const Map viVN = { "healthConsultant": "Trò chuyện AI đa chức năng", "healthConsultantInfo": "Cung cấp thêm chức năng trò chuyện AI", "conferenceAssistant": "Trợ lý hội nghị kinh doanh", - "conferenceAssistantInfo": "Ghi lại biên bản họp thời gian thực, dịch đa ngôn ngữ", + "conferenceAssistantInfo": + "Ghi lại biên bản họp thời gian thực, dịch đa ngôn ngữ", "usageStats": "Thống kê sử dụng", "usageStatsInfo": "Xem thống kê sử dụng của bạn", "scene": "Tình huống", + // 用量统计模块 - "aiChat": "AI Chat", - "translationStats": "Translation Statistics", - "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": "Trò chuyện AI", + "translationStats": "Thống kê dịch", + "meetingStats": "Thống kê cuộc họp", + "today": "Hôm nay", + "thisWeek": "Tuần này", + "thisMonth": "Tháng này", + "history": "Lịch sử", + "currentSessionStats": "Thống kê phiên hiện tại", + "translationCount": "Số lượt dịch", + "sessionDuration": "Thời lượng phiên", + "characters": "Ký tự", + "recordingDuration": "Thời lượng ghi âm", + "totalApiCalls": "Tổng số lượt gọi API", + "sessionCount": "Số phiên", + "totalCharacters": "Tổng số ký tự", + "apiCallStats": "Thống kê lượt gọi API", + "translationApi": "API dịch", "asr": "ASR", "tts": "TTS", - //"aiSummary": "AI摘要", - "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", - - // 商品页面(AI/翻译/会议) - 'availablePackages': 'Available Packages', - 'remainingQuota': 'Remaining Quota', - 'totalQuota': 'Total Quota', - 'remaining': 'Remaining', - 'featureDescription': 'Feature Description', - // AI 功能卡片 - 'musicAndRecommendation': 'Music & Recommendation', - 'navigationAndRoutes': 'Navigation & Routes', - 'nearbySearch': 'Nearby Search', - 'newsInformation': 'News', - 'communicationAssistant': 'Communication Assistant', - // 翻译功能卡片 - 'realtimeTranscription': 'Real-time Transcription', - // 'textTranslation' 已存在 - 'sceneLexicon': 'Scenario Glossary', - 'subtitleDisplay': 'Subtitles', - // 会议功能卡片 - 'meetingRecording': 'Meeting Recording', - 'transcriptionAndSummary': 'Transcription & Summary', - 'keywordSearch': 'Keyword Search', - 'collaborationSharing': 'Collaboration & Sharing', - // 商品名称(按ID) - 'ai_001_name': 'AI Basic 100', - 'ai_002_name': 'AI Basic 500', - 'ai_003_name': 'AI Basic 1000', - 'meet_001_name': 'Meeting Basic 100', - 'meet_002_name': 'Meeting Basic 500', - 'meet_003_name': 'Meeting Basic 1000', - 'trans_001_name': 'Translation Basic 100', - 'trans_002_name': 'Translation Basic 500', - 'trans_003_name': 'Translation Basic 1000', - - // 商品描述(按ID) - 'ai_001_desc': 'Includes 100 uses. Access core AI features.', - 'ai_002_desc': 'Includes 500 uses. Access core AI features.', - 'ai_003_desc': 'Includes 1000 uses. Access core AI features.', - 'meet_001_desc': 'Includes 100 meeting recordings/transcriptions.', - 'meet_002_desc': 'Includes 500 meeting recordings/transcriptions.', - 'meet_003_desc': 'Includes 1000 meeting recordings/transcriptions.', - 'trans_001_desc': 'Includes 100 translations (voice/text).', - 'trans_002_desc': 'Includes 500 translations (voice/text).', - 'trans_003_desc': 'Includes 1000 translations (voice/text).', - -// 商品页通用页脚 + "dataVolumeStats": "Thống kê dung lượng dữ liệu", + "sourceTextCharacters": "Ký tự văn bản gốc", + "ttsTextCharacters": "Ký tự văn bản TTS", + "effectiveAudioDuration": "Thời lượng âm thanh hiệu dụng", + "totalSessionDuration": "Tổng thời lượng các phiên", + "costStats": "Thống kê chi phí", + "estimatedCost": "Chi phí ước tính", + "dailyCostThreshold": "Ngưỡng chi phí theo ngày", + "monthlyCostThreshold": "Ngưỡng chi phí theo tháng", + "usageBehaviorStats": "Thống kê hành vi sử dụng", + "mostUsedLanguagePair": "Cặp ngôn ngữ được dùng nhiều nhất", + "mostUsedMode": "Chế độ sử dụng nhiều nhất", + "asrApiCalls": "Lượt gọi ASR", + "totalAudioDuration": "Tổng thời lượng âm thanh", + "audioFileSize": "Kích thước tệp âm thanh", + "transcriptBytes": "Số byte bản ghi lời", + "loadFailed": "Tải thất bại", + "statsLoadFailedTryLater": "Không tải được thống kê. Vui lòng thử lại sau.", + "cleanupComplete": "Dọn dẹp hoàn tất", + "cleanedOldData": "Đã dọn dữ liệu cũ hơn 90 ngày", + "exportFeature": "Tính năng xuất dữ liệu", + "exportInDevelopment": "Chức năng xuất dữ liệu đang được phát triển", + + // 商品模块 - 通用 + 'availablePackages': 'Các gói có sẵn', + 'remainingQuota': 'Hạn mức còn lại', + 'totalQuota': 'Tổng hạn mức', + 'remaining': 'Còn lại', + 'featureDescription': 'Mô tả tính năng', + 'paymentSuccess': 'Thanh toán thành công', + 'paymentFailed': 'Thanh toán thất bại', + 'gotIt': 'Đã hiểu', + 'paymentFailedTryAgain': 'Thanh toán thất bại. Vui lòng thử lại.', + 'selectPaymentMethod': 'Chọn phương thức thanh toán', + 'wechatPay': 'WeChat Pay', + 'alipayPay': 'Alipay', + 'paypalPay': 'PayPal', + 'appleIap': 'Apple IAP', + 'googleIap': 'Google IAP', + 'wechatOrderCreateFailed': 'Không thể tạo đơn hàng WeChat', + 'alipayOrderCreateFailed': 'Không thể tạo đơn hàng Alipay', + 'appleOrderCreateFailed': 'Không thể tạo đơn hàng Apple', + 'googleOrderCreateFailed': 'Không thể tạo đơn hàng Google', + 'paypalOrderCreateFailed': 'Không thể tạo đơn hàng PayPal', + 'paymentException': 'Lỗi thanh toán', + 'paymentLaunchFailed': 'Không thể khởi chạy thanh toán', + 'paymentExceptionWithError': 'Lỗi thanh toán: @error', + 'paymentProcessingCheckLater': + 'Đơn hàng của bạn đang được xử lý. Vui lòng kiểm tra lại sau.', + 'paymentResultQueryException': + 'Không thể truy vấn kết quả thanh toán: @error', + 'orderConfirmedQuotaRefreshed': + 'Đơn hàng đã được xác nhận. Hạn mức của bạn đã được làm mới.', + 'paymentCompletedConfirming': 'Thanh toán hoàn tất. Đang xác nhận…', + 'paymentCancelled': 'Đã hủy thanh toán', + 'paypalOpenedCompleteInBrowser': + 'PayPal đã mở. Vui lòng hoàn tất thanh toán trong trình duyệt.', + 'paypalOpenFailed': 'Không thể mở trang thanh toán PayPal', + 'paymentTestTitle': 'Kiểm tra thanh toán', + 'paymentTestOrderInfo': 'Thông tin đơn hàng kiểm tra', + 'paymentTestProductId': 'Mã sản phẩm', + 'paymentTestProductDescription': 'Mô tả sản phẩm', + 'paymentTestWechatDescription': 'Kiểm tra thanh toán WeChat', + 'paymentTestAlipayDescription': 'Kiểm tra thanh toán Alipay', + 'paymentTestAmount': 'Số tiền', + 'paymentTestSelectAmount': 'Chọn số tiền kiểm tra', + 'paying': 'Đang thanh toán...', + 'wechatPayWithAmount': 'WeChat Pay ¥@amount', + 'alipayPayWithAmount': 'Alipay ¥@amount', + 'paymentStatusTitle': 'Trạng thái thanh toán', + 'errorInfoWithMessage': 'Lỗi: @message', + 'retest': 'Kiểm tra lại', + 'paymentTestInstructionsTitle': 'Hướng dẫn', + 'paymentTestInstructionsContent': + '1. Chọn số tiền kiểm tra (khuyến nghị: ¥0.01)\n2. Nhấn nút thanh toán để bắt đầu\n3. Hoàn tất thanh toán trong ứng dụng thanh toán\n4. Quay lại kiểm tra kết quả', + 'startingWechatPayment': 'Đang khởi động WeChat Pay...', + 'startingAlipayPayment': 'Đang khởi động Alipay...', + 'wechatPaymentSuccess': 'Thanh toán WeChat Pay thành công!', + 'wechatPaymentFailed': 'Thanh toán WeChat Pay thất bại', + 'wechatPaymentLaunchFailed': 'Không thể khởi chạy WeChat Pay', + 'cannotLaunchWechatPayment': 'Không thể mở WeChat Pay', + 'wechatPaymentException': 'WeChat Pay gặp lỗi', + 'wechatPaymentTestCompleted': 'Kiểm tra thanh toán WeChat Pay hoàn tất', + 'alipayPaymentSuccess': 'Thanh toán Alipay thành công!', + 'alipayPaymentFailed': 'Thanh toán Alipay thất bại', + 'alipayPaymentLaunchFailed': 'Không thể khởi chạy Alipay', + 'cannotLaunchAlipayPayment': 'Không thể mở Alipay', + 'alipayPaymentException': 'Alipay gặp lỗi', + "insufficientIntegral": "Không đủ điểm", + "insufficientBalanceDesc": + "Số dư không đủ, vui lòng đến trang nạp tương ứng để nạp tiền.", + "recharge": "Đi nạp tiền", + "aiMemberExpiredDesc": + "Gói thành viên AI đã hết hạn, vui lòng đến trang gia hạn để gia hạn.", + + // 商品模块 - AI商品页 + 'musicAndRecommendation': 'Âm nhạc & Gợi ý', + 'navigationAndRoutes': 'Điều hướng & Lộ trình', + 'nearbySearch': 'Tìm kiếm lân cận', + 'newsInformation': 'Tin tức', + 'communicationAssistant': 'Trợ lý liên lạc', + 'aiHeaderDesc1': + 'Hạn mức hội thoại dài hơn, nhiều lượt gọi công cụ hơn, ngữ cảnh dài hơn.', + 'aiHeaderDesc2': + 'Phù hợp cho hỏi đáp tác nhân, tóm tắt, phân tích và thực thi nhiệm vụ.', + 'musicSearchPlaybackControl': 'Tìm kiếm thư viện nhạc và điều khiển phát', + 'smartPlaylistAndSimilarRecommendations': + 'Danh sách phát thông minh và gợi ý bài hát tương tự', + 'routePlanningAndCongestionAvoidance': + 'Lập kế hoạch lộ trình và tránh ùn tắc', + 'voiceBroadcastAndWaypoints': 'Phát giọng nói và cài đặt điểm dừng', + 'realTimeWeatherForecast': 'Thời tiết và dự báo theo thời gian thực', + 'clothingAdviceAndTravelReminders': 'Gợi ý trang phục và nhắc nhở di chuyển', + 'poiSearchFoodGasParking': 'Tìm POI: ăn uống / xăng / đỗ xe', + 'ratingsHoursAndDirectRoutes': 'Đánh giá, giờ mở cửa và dẫn đường trực tiếp', + 'hotNewsAndTopicOverview': 'Tin nóng và tổng quan chủ đề', + 'longArticleSummariesAndKeyPoints': 'Tóm tắt bài dài và điểm chính', + 'helpCallAndSMS': 'Hỗ trợ gọi điện và SMS', + 'templatedMessagesAndScheduleReminders': 'Tin nhắn mẫu và nhắc lịch', + 'aiDisclaimer': + 'Tính năng phụ thuộc vào quyền thiết bị, khả dụng dịch vụ và điều kiện mạng.', + + // 商品模块 - 翻译商品页 + 'realtimeTranscription': 'Chuyển giọng nói thành văn bản thời gian thực', + 'sceneLexicon': 'Từ điển theo ngữ cảnh', + 'subtitleDisplay': 'Phụ đề', + 'transHeaderDesc1': + 'Phiên dịch đồng thời thời gian thực và dịch văn bản với giọng nói độ trễ thấp.', + 'transHeaderDesc2': + 'Phù hợp cho du lịch, công việc, thuyết trình và giảng dạy.', + 'translateZhEn': 'Dịch Trung–Anh', + 'lowLatencyVoiceBroadcast': 'Phát giọng nói độ trễ thấp', + 'multiLangTextTranslation': 'Dịch văn bản đa ngôn ngữ', + 'termOptimizationContextPreserve': 'Tối ưu thuật ngữ và giữ ngữ cảnh', + 'lexiconTourBusinessLife': 'Từ vựng Du lịch/Kinh doanh/Đời sống', + 'personalVocabularyMemory': 'Ghi nhớ từ vựng cá nhân', + 'conversationSubtitleLargeText': 'Phụ đề hội thoại / Chế độ chữ lớn', + 'colorHighContrast': 'Tương phản màu cao', + 'transDisclaimer': + 'Hiệu quả dịch phụ thuộc vào micro, độ trễ mạng và tiếng ồn môi trường.', + + // 商品模块 - 会议商品页 + 'meetingRecording': 'Ghi âm cuộc họp', + 'transcriptionAndSummary': 'Chuyển biên & Tóm tắt', + 'keywordSearch': 'Tìm kiếm theo từ khóa', + 'collaborationSharing': 'Cộng tác & Chia sẻ', + 'meetingHeaderDesc1': + 'Ghi âm, chuyển biên, tìm kiếm từ khóa và tóm tắt tự động để tăng hiệu quả cuộc họp.', + 'meetingHeaderDesc2': + 'Phù hợp cho họp công việc, ghi chú lớp học và biên bản phỏng vấn.', + 'meetingAutoRecording': 'Ghi âm và phân đoạn tự động', + 'meetingSpeakerTagging': 'Gắn nhãn người nói', + 'meetingLongAudioTranscription': 'Chuyển biên audio dài', + 'meetingKeyPointSummary': 'Trích xuất điểm chính', + 'meetingTopicNameSearch': 'Tìm theo chủ đề/tên', + 'meetingTimelineJump': 'Nhảy theo mốc thời gian', + 'meetingExportSummary': 'Xuất biên bản', + 'meetingMultiPlatformShare': 'Chia sẻ đa nền tảng', + 'meetingDisclaimer': + 'Nên dùng ở nơi yên tĩnh; hiệu quả phụ thuộc vào micro và mạng.', + + // 商品模块 - VIP会员页 + 'benefitsOverview': 'Tổng quan quyền lợi', + 'higherQuota': 'Hạn mức sử dụng cao hơn', + 'lowerUnitPrice': 'Đơn giá thấp hơn', + 'priorityService': 'Dịch vụ ưu tiên', + 'exclusiveSupportChannel': 'Kênh hỗ trợ riêng', + 'fastResponse': 'Phản hồi nhanh', + 'eventsAndDiscounts': 'Sự kiện và ưu đãi', + 'memberExclusiveEvents': 'Sự kiện dành riêng cho hội viên', + 'longTermDiscountPlan': 'Gói ưu đãi dài hạn', + 'generalPrivileges': 'Quyền lợi chung', + 'earlyAccessNewFeatures': 'Trải nghiệm sớm tính năng mới', + 'crossDeviceSync': 'Đồng bộ đa thiết bị', + 'vipDisclaimer': + 'Quyền lợi thực tế phụ thuộc vào chi tiết gói và có thể thay đổi theo phiên bản.', + + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI Cơ bản 100', + 'ai_002_name': 'AI Cơ bản 500', + 'ai_003_name': 'AI Cơ bản 1000', + 'meet_001_name': 'Cuộc họp Cơ bản 100', + 'meet_002_name': 'Cuộc họp Cơ bản 500', + 'meet_003_name': 'Cuộc họp Cơ bản 1000', + 'trans_001_name': 'Dịch Cơ bản 100', + 'trans_002_name': 'Dịch Cơ bản 500', + 'trans_003_name': 'Dịch Cơ bản 1000', + 'ai_001_desc': 'Bao gồm 100 lượt dùng. Truy cập tính năng AI cốt lõi.', + 'ai_002_desc': 'Bao gồm 500 lượt dùng. Truy cập tính năng AI cốt lõi.', + 'ai_003_desc': 'Bao gồm 1000 lượt dùng. Truy cập tính năng AI cốt lõi.', + 'meet_001_desc': 'Bao gồm 100 lượt ghi âm/chuyển biên cuộc họp.', + 'meet_002_desc': 'Bao gồm 500 lượt ghi âm/chuyển biên cuộc họp.', + 'meet_003_desc': 'Bao gồm 1000 lượt ghi âm/chuyển biên cuộc họp.', + 'trans_001_desc': 'Bao gồm 100 lượt dịch (giọng nói/văn bản).', + 'trans_002_desc': 'Bao gồm 500 lượt dịch (giọng nói/văn bản).', + 'trans_003_desc': 'Bao gồm 1000 lượt dịch (giọng nói/văn bản).', + + // 商品模块 - 页脚 'appNameProvider': 'App: VoiTrans · Provided by: VoiTrans', 'iapCustomerServiceQQLabel': 'IAP customer service QQ: @qq', 'copyrightVoitrans': '© 2025 Voitrans Technologies', - // 会议商品页描述 - 'meetingHeaderDesc1': 'Audio recording, transcription, keyword search, and auto summary to boost meeting efficiency.', - 'meetingHeaderDesc2': 'Suitable for business meetings, class notes, and interview minutes.', - 'meetingAutoRecording': 'Auto recording and segmentation', - 'meetingSpeakerTagging': 'Speaker labeling', - 'meetingLongAudioTranscription': 'Long audio transcription', - 'meetingKeyPointSummary': 'Key point extraction', - 'meetingTopicNameSearch': 'Search by topic/name', - 'meetingTimelineJump': 'Timeline jump', - 'meetingExportSummary': 'Export minutes', - 'meetingMultiPlatformShare': 'Share across platforms', - 'meetingDisclaimer': 'Use in quiet environments; performance depends on microphone and network.', - - // 同传/翻译商品页描述 - 'transHeaderDesc1': 'Real-time simultaneous interpretation and text translation with low-latency voice.', - 'transHeaderDesc2': 'Suitable for travel, business, speeches, and teaching.', - 'translateZhEn': 'Chinese-English translation', - 'lowLatencyVoiceBroadcast': 'Low-latency voice broadcast', - 'multiLangTextTranslation': 'Multilingual text translation', - 'termOptimizationContextPreserve': 'Terminology optimization and context preservation', - 'lexiconTourBusinessLife': 'Travel/Business/Life lexicons', - 'personalVocabularyMemory': 'Personal vocabulary memory', - 'conversationSubtitleLargeText': 'Conversation subtitles / Large-text mode', - 'colorHighContrast': 'High color contrast', - 'transDisclaimer': 'Translation performance depends on microphone, network latency, and ambient noise.', - - // AI 商品页描述 - 'aiHeaderDesc1': 'Longer conversation quota, more tool calls, extended context length.', - 'aiHeaderDesc2': '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.', - - // 会员商品页 - '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.', - - // 新手引导 / Onboarding + // 新手引导 'skip': 'Bỏ qua', - '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, ', - // AI 引导步骤 - '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': 'Tiếp theo', + 'sayLilyHint': 'Nói "Lily Lily" vào mic', + 'imHere': 'Tôi đây~', + 'guideWelcomeWakeAI': + 'Chào mừng đến với Voitrans! Trước tiên, hãy đánh thức AI “Lily” của bạn.', + 'aiReplyCompleted': 'Lily đã trả lời xong!', + 'aiThinking': 'Lily đang suy nghĩ…', + 'guideAwakenSuccess': 'Tuyệt! Lily đã thức dậy—hãy nhờ Lily giúp.', + 'confirmInput': 'Xác nhận nhập', + 'guideClickSendPrefix': 'Nhấn gửi, ', + 'guideWeatherStart': 'Nói với Lily: “Hôm nay thời tiết thế nào?”', + 'guideWeatherInput': 'Hôm nay thời tiết thế nào?', + 'guideWeatherSend': 'Lily sẽ báo thời tiết theo thời gian thực', + 'guideWeatherEnd': 'Lily có thể báo thời tiết trực tiếp—hãy thử lệnh khác', + 'guideMusicStart': 'Nói với Lily: “Bật một chút nhạc rock”', + 'guideMusicInput': 'Bật một chút nhạc rock', + 'guideMusicSend': 'Lily sẽ tìm nhạc cho bạn', + 'guideMusicEnd': 'Lily đã tìm được nhạc—hãy thử lệnh khác', + 'guideNavStart': 'Nói với Lily: “Điều hướng đến Sân bay Thâm Quyến”', + 'guideNavInput': 'Điều hướng đến Sân bay Thâm Quyến', + 'guideNavSend': 'Lily sẽ lập lộ trình', + 'guideNavEnd': 'Đã thiết lập điều hướng—hãy thử lệnh khác', + 'guideMeetingStart': + 'Nói với Lily: “Tạo nhắc nhở cuộc họp lúc 3 giờ chiều ngày mai”', + 'guideMeetingInput': 'Tạo nhắc nhở cuộc họp lúc 3 giờ chiều ngày mai', + 'guideMeetingSend': 'Lily sẽ tạo nhắc nhở cuộc họp', + 'guideMeetingEnd': 'Đã tạo nhắc nhở—hãy thử lệnh khác', + 'guidePhoneStart': 'Nói với Lily: “Gọi cho Mẹ”', + 'guidePhoneInput': 'Gọi cho Mẹ', + 'guidePhoneSend': 'Lily sẽ thực hiện cuộc gọi', + 'guidePhoneEnd': 'Đã thực hiện cuộc gọi—hãy thử lệnh khác', + 'guideSmsStart': 'Nói với Lily: “Nhắn cho Bố: Con sẽ về nhà ăn tối”', + 'guideSmsInput': 'Nhắn cho Bố: Con sẽ về nhà ăn tối', + 'guideSmsSend': 'Lily sẽ gửi tin nhắn', + 'guideSmsEnd': 'Đã gửi tin nhắn—điều khiển giọng nói thật tiện lợi', + + // Meeting模块 - 首页与导航 "startMeeting": "Bắt đầu cuộc họp", 'edit': 'Chỉnh sửa', 'delete': 'Xóa', @@ -383,49 +486,53 @@ const Map viVN = { 'recordingDetails': 'Chi tiết bản ghi', 'aiSummary': 'Tóm tắt AI', 'meetingTranscript': 'Bản ghi cuộc họp', - - // Meeting模块 - 导航和基础功能 - 'files': 'Files', - 'mine': 'Mine', - 'connect': 'Connect', - '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': 'Tệp', + 'mine': 'Của tôi', + 'connect': 'Kết nối', + 'allFiles': 'Tất cả tệp', + 'searchInAllFiles': 'Tìm trong tất cả tệp', + 'from': 'Từ', + 'sortBy': 'Sắp xếp theo', + 'creationTime': 'Thời gian tạo', + 'bluetoothConnection': 'Kết nối Bluetooth', + 'meetingReconnect': 'Kết nối lại', + 'searching': 'Đang tìm kiếm...', + 'searchFailed': 'Tìm kiếm thất bại, vui lòng kiểm tra Bluetooth đã bật chưa', + 'aiPenNotFound': 'Không tìm thấy thiết bị AI PEN', + 'connectedToAiPen': 'Đã kết nối với thiết bị AI PEN', + 'checkingNewFiles': 'Đang kiểm tra tệp mới để nhập', + 'startingWifi': 'Đang khởi động Wi‑Fi...', + 'newFilesDetected': 'Phát hiện tệp mới, đang chuẩn bị nhập', + 'noNewFiles': 'Không có tệp mới để nhập', + 'connectingWifi': 'Đang kết nối Wi‑Fi...', + 'wifiConnected': 'Kết nối Wi‑Fi thành công', + 'downloadingFiles': 'Đang tải xuống tệp...', + 'downloadingFileProgress': 'Tổng {total} tệp, đang tải tệp {current}', + 'downloadComplete': 'Tải xuống hoàn tất', + 'downloadCompleteInfo': + 'Tải xuống hoàn tất, tổng {count} tệp, tự động quay lại sau 2 giây', // Meeting模块 - 录音功能 - 'startRecording': 'Start Recording', - 'liveRecording': 'Live Recording', - 'audioVideoRecording': 'Audio/Video Recording', - 'callRecording': 'Call Recording', - 'importAudio': 'Import Audio', + 'startRecording': 'Bắt đầu ghi âm', + 'liveRecording': 'Ghi âm trực tiếp', + 'audioVideoRecording': 'Ghi âm âm thanh/video', + 'callRecording': 'Ghi âm cuộc gọi', + 'importAudio': 'Nhập audio', 'meetingRecordExitTitle': 'Thoát ghi âm', // 退出录音 - 'meetingRecordExitMessage': 'Vui lòng chọn thao tác sau khi thoát', // 请选择离开后的操作 + 'meetingRecordExitMessage': + 'Vui lòng chọn thao tác sau khi thoát', // 请选择离开后的操作 'meetingRecordEndAndSave': 'Kết thúc và lưu', // 结束录音并保存 'meetingRecordEndWithoutSave': 'Kết thúc không lưu', // 结束录音不保存 'meetingRecordContinueInBackground': 'Tiếp tục ghi âm trong nền', // 后台继续录音 - 'meetingRecordStopTimeout': 'Hết thời gian dừng ghi âm, vui lòng thử lại', // 结束录音超时,请重试 - 'meetingRecordStopFailed': 'Dừng ghi âm thất bại, vui lòng thử lại', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': 'Lưu ghi âm thất bại, vui lòng thử lại', // 保存录音失败,请重试 + 'meetingRecordStopTimeout': + 'Hết thời gian dừng ghi âm, vui lòng thử lại', // 结束录音超时,请重试 + 'meetingRecordStopFailed': + 'Dừng ghi âm thất bại, vui lòng thử lại', // 结束录音失败,请重试 + 'meetingRecordSaveFailed': + 'Lưu ghi âm thất bại, vui lòng thử lại', // 保存录音失败,请重试 'meetingRecordRecordingNotificationTitle': 'Đang ghi âm', // 录音进行中 - 'meetingRecordRecordingNotificationBody': 'Đang ghi âm trong nền, nhấn để quay lại ứng dụng', // 正在后台录音,点击返回应用 + 'meetingRecordRecordingNotificationBody': + 'Đang ghi âm trong nền, nhấn để quay lại ứng dụng', // 正在后台录音,点击返回应用 'overlayPermissionTitle': 'Quyền cửa sổ nổi', // 悬浮窗权限 'overlayPermissionTranslationDesc': 'Để hiển thị kết quả dịch trong cuộc gọi hoặc khi dịch âm thanh/video, chúng tôi cần quyền hiển thị trên ứng dụng khác. Quyền này giúp bạn xem bản dịch theo thời gian thực khi đang dùng các ứng dụng khác.', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 @@ -433,184 +540,213 @@ const Map viVN = { 'Để hiển thị thanh nổi ghi âm (hẹn giờ/tạm dừng/tiếp tục) trong khi ghi âm, chúng tôi cần quyền hiển thị trên ứng dụng khác.', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 'overlayPermissionOpenSettingsFailed': 'Không thể tự động mở cài đặt hệ thống. Vui lòng mở Cài đặt và bật quyền hiển thị trên ứng dụng khác theo cách thủ công.', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 - 'transcribing': 'Transcribing...', - 'summarizing': 'Summarizing...', - 'analyzing': 'Analyzing...', - 'summaryComplete': 'Summary Complete', - //'generating': '正在生成...', - 'generate': 'Generate', - 'overview': 'Overview', - 'transcription': 'Transcription', - 'summary': 'Summary', - 'mindMap': 'Mind Map', - 'editSpeaker': 'Edit', - 'nameSpeaker': 'Name Speaker', + 'transcribing': 'Đang chuyển biên...', + 'summarizing': 'Đang tóm tắt...', + 'analyzing': 'Đang phân tích...', + 'summaryComplete': 'Tóm tắt hoàn tất', + 'generate': 'Tạo', + 'overview': 'Tổng quan', + 'transcription': 'Bản ghi', + 'summary': 'Tóm tắt', + 'mindMap': 'Sơ đồ tư duy', + 'editSpeaker': 'Chỉnh sửa', + 'nameSpeaker': 'Đặt tên người nói', + + // Meeting模块 - 转写与总结 + 'reSummarize': 'Tóm tắt lại', + 'dateAndTime': 'Ngày & giờ', + 'location': 'Địa điểm', + 'attendees': 'Người tham dự', + 'inputLocation': 'Nhập địa điểm', + 'inputAttendees': 'Nhập người tham dự', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': 'Chọn mẫu tóm tắt', + 'useThisTemplate': 'Dùng mẫu này', + 'lastUsed': 'Dùng gần đây', + 'create': 'Tạo', + 'templateDetails': 'Chi tiết mẫu', + 'tag': 'Thẻ', + 'description': 'Mô tả', + 'template': 'Mẫu', + 'deleteTemplate': 'Xóa mẫu', + 'deleteTemplateConfirm': 'Bạn có chắc chắn muốn xóa mẫu này không?', + 'editTemplate': 'Chỉnh sửa mẫu', + 'createTemplate': 'Tạo mẫu', + 'name': 'Tên', + 'templateContentHint': + 'Vui lòng nhập nội dung mẫu! Mẹo: Nhấn nút AI ở trên để tạo nhanh nội dung mẫu dựa trên tên và mô tả bạn đã nhập', + 'inputNameHint': 'Vui lòng nhập tên', + 'inputDescHint': 'Vui lòng nhập mô tả', + 'custom': 'Tùy chỉnh', + 'pleaseEnter': 'Vui lòng nhập', + 'viewAll': 'Xem tất cả', + 'recordingLanguage': 'Ngôn ngữ ghi âm', + 'chineseSimplified': 'Quan thoại (Giản thể)', + 'meetingGenerateNow': 'Tạo ngay', + 'keyEventsAnalyzed': 'Đã phân tích {count} sự kiện chính.', + 'aiAnalysisDesc': + 'Phân tích AI giúp xác định các sự kiện chính trong bản ghi, cho phép bạn chọn sự kiện quan trọng để AI tạo nội dung.', + + // Meeting模块 - 文件操作 + 'importing': 'Đang nhập...', + 'batchImporting': 'Đang nhập hàng loạt...', + 'importingLocalRecordings': 'Đang nhập bản ghi cục bộ...', + 'importFailed': 'Nhập tệp thất bại: {filePath}, lỗi: {error}', + 'importSuccess': 'Đã nhập thành công {count} bản ghi cục bộ', + 'importError': 'Nhập thất bại: {error}', + 'pleaseSelectAudioFile': 'Vui lòng chọn tệp audio', + 'shareAudio': 'Chia sẻ audio cuộc họp', + 'shareComplete': 'Chia sẻ hoàn tất', + 'shareFailed': 'Chia sẻ thất bại: {error}', + 'fileProcessingFailed': 'Xử lý tệp thất bại: {filePath}, lỗi: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': 'Lưu sơ đồ tư duy', + 'shareMindMap': 'Chia sẻ sơ đồ tư duy', + 'shareSuccess': 'Chia sẻ thành công', + + // Meeting模块 - AI问答 + 'askAI': 'Hỏi AI ...', + 'askAIPrompt': 'Hôm nay tôi có thể giúp gì cho bạn?', + 'continueAsk': 'Tiếp tục hỏi', + 'todoList': 'Danh sách việc cần làm', + 'extractConclusion': 'Trích xuất kết luận', + 'generateKeyIndicators': 'Tạo chỉ số chính', + + // Meeting模块 - 分享与导出 + 'shareLink': 'Chia sẻ liên kết', + 'copyTranscript': 'Sao chép bản ghi', + 'copySummary': 'Sao chép tóm tắt', + 'exportAudio': 'Xuất audio', + 'exportTranscript': 'Xuất bản ghi', + 'shareMeetingAudio': 'Chia sẻ audio cuộc họp', + 'exportSummary': 'Xuất tóm tắt', + 'exportAs': 'Xuất dưới dạng', + 'exportingPDF': 'Đang xuất PDF...', + 'export': 'Xuất', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': 'Áp dụng cho tất cả đoạn của người nói này', + 'summaryWillBeUpdatedAutomatically': + 'Tóm tắt sẽ được cập nhật tự động dựa trên mẫu', + 'nameCurrentSpeaker': 'Đặt tên người nói hiện tại', + 'recentlyUsedNames': 'Tên dùng gần đây', + 'applyToCurrentParagraph': 'Áp dụng cho đoạn hiện tại', + 'totalTime': 'Tổng thời gian', + 'summarySpeakerWillBeUpdatedAutomatically': + 'Người nói trong phần tóm tắt sẽ được cập nhật tự động', + + // Meeting模块 - 云端同步 + 'syncToCloud': 'Đồng bộ lên đám mây', + 'syncToCloudTip': + 'Tự động đồng bộ bản ghi của bạn lên đám mây; bạn có thể phát, quản lý và chia sẻ bản ghi qua VOITRANS APP hoặc VOITRANS Web (web.voitrans.com).', + 'syncToVoitransApp': 'Đồng bộ VOITRANS APP', + 'transcriptionRecord': 'Bản ghi chuyển biên', // Meeting模块 - 我的页面 - 'transcriptionRecords': 'Transcription Records', - 'templateCommunity': 'Template Community', - 'comingSoon': 'Coming Soon', - 'integration': 'Integration', + 'transcriptionRecords': 'Các bản ghi chuyển biên', + 'templateCommunity': 'Cộng đồng mẫu', + 'comingSoon': 'Sắp ra mắt', + 'integration': 'Tích hợp', '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', - - // 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', - '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', + 'enabled': 'Bật', + 'disabled': 'Tắt', + 'myVoitransDevice': 'Thiết bị VOITRANS của tôi', + 'helpAndFeedback': 'Trợ giúp & phản hồi', + 'aboutVoitrans': 'Về VOITRANS', + 'meetingDays': 'Ngày', + 'meetingHours': 'Giờ', + 'voitransAiMember': 'Thành viên Voitrans AI', + 'unlockStarterMember': 'Mở khóa gói Starter', + 'bindDeviceToActivate': 'Liên kết thiết bị Voitrans để kích hoạt gói Starter', + 'unlockNow': 'Mở khóa ngay', + + // Meeting模块 - 会员与升级 + 'comparison': 'So sánh', + 'detailedInfo': 'Thông tin chi tiết', + 'monthlyTranscriptionTime': 'Thời lượng chuyển biên hằng tháng', + 'unlimited': 'Không giới hạn', + 'professionalTemplates': 'Mẫu chuyên nghiệp', + 'limited': 'Giới hạn', + 'fullTemplates': 'Đầy đủ mẫu', + 'professionalTerms': 'Thuật ngữ chuyên nghiệp', + 'customTemplates': 'Mẫu tùy chỉnh', + 'visualMindMap': 'Sơ đồ tư duy trực quan', + 'speakerIdentification': 'Nhận diện người nói', + 'aiVoiceEnhancement': 'Tăng cường giọng nói bằng AI', + 'audioImport': 'Nhập audio', + 'multipleExportFormats': 'Nhiều định dạng xuất', + 'professionalSummaryTemplates': 'Mẫu tóm tắt chuyên nghiệp', + 'professionalTemplateDesc': + 'Thiết kế mẫu chuyên nghiệp giúp tăng hiệu quả công việc. Tùy chỉnh theo nhu cầu ngành.', + 'customTemplateDesc': + 'Bạn có thể tùy chỉnh gợi ý tóm tắt theo nhu cầu và dùng để tạo bản tóm tắt mong muốn.', + 'askAiDesc': + 'Trích xuất thông tin sâu hơn từ bản ghi một cách thông minh; tạo bảng dữ liệu, kết luận thảo luận chính, danh sách việc cần làm, email báo cáo và nội dung định dạng khác chỉ với một chạm.', + 'visualMindMapDesc': + 'Không chỉ tóm tắt—sắp xếp và trực quan hóa điểm chính bằng sơ đồ tư duy để hiểu toàn văn hiệu quả hơn.', + 'templateCommunityDesc': + 'Khám phá, chia sẻ và lấy cảm hứng từ thư viện mẫu do người dùng tạo.', + 'speakerIdentificationDesc': + 'Chuyển biên sẽ hỗ trợ nhận diện người nói, tái hiện nội dung cuộc họp/cuộc gọi trực quan hơn. Đồng thời bản tóm tắt cũng chính xác hơn.', + 'privateCloudSyncDesc': + 'Bản ghi và bản chuyển biên của bạn sẽ được lưu an toàn trên máy chủ đám mây chuyên dụng, mã hóa toàn bộ khi tải lên và tải xuống để đảm bảo quyền riêng tư và bảo mật.', + 'aiVoiceEnhancementDesc': + 'Tăng cường giọng nói bằng AI hỗ trợ nhiều mức khử ồn, tự động loại bỏ tiếng ồn nền, tăng độ rõ giọng nói và cải thiện chất lượng phát lại.', + 'audioImportDesc': + 'Dễ dàng nhập tệp audio từ thiết bị hoặc ứng dụng bên thứ ba, như ghi âm, Google Drive, v.v.', + 'multipleExportFormatsDesc': + 'Xuất bản ghi audio, văn bản chuyển biên và bản tóm tắt ở nhiều định dạng (TXT, PDF, JPEG) theo nhu cầu.', + 'upgradeMembership': 'Nâng cấp gói thành viên', + 'yearlySubscription': 'Gói theo năm', + 'monthlySubscription': 'Gói theo tháng', 'proMonthly': 'Pro ¥60/month', - 'proMonthlyDesc': '7-day free trial, then ¥800/year. Cancel anytime before trial ends.', - 'sevenDayTrial': '7-day Free Trial', + 'proMonthlyDesc': + 'Dùng thử miễn phí 7 ngày, sau đó ¥800/năm. Có thể hủy trước khi kết thúc dùng thử.', + 'sevenDayTrial': 'Dùng thử miễn phí 7 ngày', '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.', + 'unlimitedMonthlyDesc': + 'Dùng thử miễn phí 7 ngày, sau đó ¥1600/năm. Có thể hủy trước khi kết thúc dùng thử.', + 'trialNote': + '*Dùng thử miễn phí 7 ngày, sau đó tính phí theo năm, có thể hủy bất cứ lúc nào.', 'proPrice': 'Pro ¥120', 'proMonthlyPrice': '¥120/month', - 'subscribe': 'Subscribe', - 'unlimitedPrice': 'Unlimited ¥198', + 'subscribe': 'Đăng ký', + 'unlimitedPrice': 'Không giới hạn ¥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: ', - 'validityNote': 'Activated immediately after purchase, valid for 2 years after activation.', - 'purchase': 'Purchase', - - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': 'Select Summary Template', - 'useThisTemplate': 'Use This Template', - 'lastUsed': 'Last Used', - 'viewAll': 'View All', - 'recordingLanguage': 'Recording Language', - 'chineseSimplified': 'Chinese Mandarin (Simplified)', - 'meetingGenerateNow': 'Generate Now', - 'keyEventsAnalyzed': 'Analyzed {count} key events.', - 'aiAnalysisDesc': 'AI analysis identifies key events in recordings, allowing you to select important events for AI generation.', - - // Meeting模块 - 文件操作和状态 - 'importing': 'Importing...', - 'batchImporting': 'Batch importing...', - 'importingLocalRecordings': 'Importing local recordings...', - 'importFailed': 'Import file failed: {filePath}, error: {error}', - 'importSuccess': 'Successfully imported {count} local recordings', - 'importError': 'Import failed: {error}', - 'pleaseSelectAudioFile': 'Please select audio file', - 'shareAudio': 'Share Meeting Audio', - 'shareComplete': 'Share complete!', - 'shareFailed': 'Share failed: {error}', - 'fileProcessingFailed': 'File processing failed: {filePath}, error: {error}', - - // 翻译模块 - Meeting相关 - 'meetingUnknownLanguage': 'Unknown Language', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': 'Storage', - 'meetingStoragePermissionExplanation': 'We need access to storage permissions so you can select and upload audio files.', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'shareMindMap': 'Share Mind Map', - 'shareSuccess': 'Share Success', - - // Meeting模块 - AI相关 - 'askAI': 'Ask AI ...', - 'askAIPrompt': 'What can I help you with today?', - 'continueAsk': 'Continue Asking', - 'todoList': 'To-Do List', - 'extractConclusion': 'Extract Conclusion', - 'generateKeyIndicators': 'Generate Key Indicators', - - // Meeting模块 - 更多操作相关 - 'reSummarize': 'Re-summarize', - - // Meeting模块 - 录音语言相关 - 'recordLanguage': 'Recording Language', - // 'chinese': '中文普通话(简体)', - 'cantonese': 'Cantonese', - 'sichuan': 'Sichuan Dialect', - 'shanghai': 'Shanghai Dialect', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': 'Share Link', - 'copyTranscript': 'Copy Transcript', - 'copySummary': 'Copy Summary', - 'exportAudio': 'Export Audio', - 'exportTranscript': 'Export Transcript', - 'shareMeetingAudio': 'Share Meeting Audio', - 'exportSummary': 'Export Summary', - 'exportAs': 'Export As', - 'exportingPDF': 'Exporting PDF...', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': 'Áp dụng cho tất cả đoạn của người nói này', - 'summaryWillBeUpdatedAutomatically': 'Tóm tắt sẽ được cập nhật tự động dựa trên mẫu', - 'nameCurrentSpeaker': 'Name Current Speaker', - 'recentlyUsedNames': 'Recently Used Names', - 'applyToCurrentParagraph': 'Apply to Current Paragraph', - 'totalTime': 'Total Time', - 'summarySpeakerWillBeUpdatedAutomatically': 'Summary speakers will be updated automatically', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': 'Sync to Cloud', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': 'Sync VOITRANS APP', - 'transcriptionRecord': 'Transcription Record', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': 'Date & Time', - 'location': 'Location', - 'attendees': 'Attendees', - 'inputLocation': 'Enter Location', - 'inputAttendees': 'Enter Attendees', + 'upgradeNote': + '*Sau khi nâng cấp đăng ký, số ngày còn lại của gói hiện tại sẽ được tính tự động và hoàn tiền vào tài khoản thanh toán của bạn', + 'buyMoreTranscriptionTime': 'Mua thêm thời lượng chuyển biên', + 'sixThousandMinutes': '6.000 phút', + 'threeThousandMinutes': '3.000 phút', + 'sixHundredMinutes': '600 phút', + 'oneHundredTwentyMinutes': '120 phút', + 'validityPeriod': '*Thời hạn: ', + 'validityNote': + 'Kích hoạt ngay sau khi mua, có hiệu lực 2 năm kể từ khi kích hoạt.', + 'purchase': 'Mua', + + // Meeting模块 - 录音语言 + 'recordLanguage': 'Ngôn ngữ ghi âm', + 'cantonese': 'Tiếng Quảng Đông', + 'sichuan': 'Phương ngữ Tứ Xuyên', + 'shanghai': 'Phương ngữ Thượng Hải', + + // Meeting模块 - 错误提示 + 'meetingUnknownLanguage': 'Ngôn ngữ không xác định', + 'analysisFailed': 'Phân tích thất bại, vui lòng thử lại sau', + 'transcriptionFailed': 'Chuyển đổi giọng nói thất bại, vui lòng thử lại sau', + 'summaryFailed': 'Tóm tắt thất bại, vui lòng thử lại sau', + 'summaryFailedShort': 'Tóm tắt thất bại', + 'transcriptionFailedShort': 'Chuyển đổi giọng nói thất bại', + + // Meeting模块 - 播放器 + 'playerNotReady': 'Trình phát âm thanh chưa sẵn sàng, vui lòng đợi', + 'playFailed': 'Phát thất bại', + 'audioFileNotFound': 'Không tìm thấy tệp âm thanh', + 'fetchingAudio': 'Đang tải âm thanh từ đám mây...', + 'playerLoadFailed': 'Trình phát âm thanh không thể tải', // 设置页 "systemSettings": "Cài đặt hệ thống", @@ -619,9 +755,10 @@ const Map viVN = { "translationRecharge": "Nạp lại dịch vụ dịch", "meetingAssistantRecharge": "Nạp lại dịch vụ hỗ trợ họp", "cloudSync": "Chuyển đổi đồng bộ hóa đám mây", - "memberService": "Member Service", - "bindRewardTitle": "Rewards", - "bindRewardSimpleDesc": "First bind device reward has been issued. Tap OK to close.", + "memberService": "Dịch vụ hội viên", + "bindRewardTitle": "Phần thưởng", + "bindRewardSimpleDesc": + "Phần thưởng liên kết thiết bị lần đầu đã được phát. Nhấn OK để đóng.", "joinDevice": "Thiết bị đã kết nối:", "accountId": "ID tài khoản:", "systemSetting": "Cài đặt hệ thống", @@ -643,9 +780,11 @@ const Map viVN = { "voiceServiceInfo": "Chọn dịch vụ nhận dạng và tổng hợp giọng nói", "selectVoiceService": "Chọn dịch vụ giọng nói", "azureVoiceService": "Dịch vụ giọng nói Azure", - "azureVoiceServiceInfo": "Dịch vụ giọng nói đám mây của Microsoft, hỗ trợ tổng hợp và nhận dạng giọng nói chất lượng cao", + "azureVoiceServiceInfo": + "Dịch vụ giọng nói đám mây của Microsoft, hỗ trợ tổng hợp và nhận dạng giọng nói chất lượng cao", "flutterVoiceService": "Dịch vụ giọng nói cục bộ Flutter", - "flutterVoiceServiceInfo": "Dịch vụ giọng nói cục bộ trên thiết bị, có thể sử dụng mà không cần kết nối mạng", + "flutterVoiceServiceInfo": + "Dịch vụ giọng nói cục bộ trên thiết bị, có thể sử dụng mà không cần kết nối mạng", 'timbreService': 'Dịch vụ âm sắc', 'timbreServiceInfo': 'Chọn dịch vụ tổng hợp giọng nói âm sắc', 'defaultTimbre': 'Âm sắc mặc định', @@ -659,41 +798,31 @@ const Map viVN = { "bleHeadsetFirmwareUpgrade": "Nâng cấp phiên bản firmware tai nghe BLE", "deviceManagement": "Quản lý thiết bị", "manageConnectedDevices": "Quản lý các thiết bị Bluetooth đã ghép nối", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': 'Hiện tại đã là phiên bản mới nhất {version}', 'checkUpdateFailed': 'Kiểm tra cập nhật thất bại', 'networkErrorRetry': 'Lỗi mạng, vui lòng thử lại sau', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "Trò chuyện giọng nói thời gian thực", - "realtimeVoiceChatInfo": "Trải nghiệm chức năng tương tác giọng nói thông minh (xem trước chức năng)", + "realtimeVoiceChatInfo": + "Trải nghiệm chức năng tương tác giọng nói thông minh (xem trước chức năng)", "loading": "Đang tải...", - //设备管理页面 - "deviceTypeUnknown": "Unknown Device", - "deviceTypeClassicBluetoothHeadset": "Classic Bluetooth Headset", - "deviceTypeBleBluetoothHeadset": "BLE Bluetooth Headset", - "deviceTypeSmartVoiceRecorder": "Smart Voice Recorder", - "deviceTypeSmartEye": "Smart Glasses", + // 设备管理模块 + "deviceTypeUnknown": "Thiết bị không xác định", + "deviceTypeClassicBluetoothHeadset": "Tai nghe Bluetooth cổ điển", + "deviceTypeBleBluetoothHeadset": "Tai nghe Bluetooth BLE", + "deviceTypeSmartVoiceRecorder": "Máy ghi âm giọng nói thông minh", + "deviceTypeSmartEye": "Kính thông minh", "unbind": "Hủy liên kết", - "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", - -//Agent 模块 - // agent View + "noDevicesBound": "Chưa liên kết thiết bị nào", + "pleaseBindDeviceFirst": "Vui lòng liên kết một thiết bị trước để quản lý", + "noMacAddress": "Không có địa chỉ MAC", + "licenseCode": "Mã giấy phép", + "confirmUnbind": "Xác nhận hủy liên kết", + "confirmUnbindMessage": + "Bạn có chắc chắn muốn hủy liên kết thiết bị \"{deviceName}\" không?", + "confirmUnbindAction": "Xác nhận hủy liên kết", + + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "Xóa lịch sử trò chuyện", "online": "Trực tuyến", @@ -721,49 +850,55 @@ const Map viVN = { "loadMoreMessages": "Tải thêm tin nhắn...", "loadFailedClickRetry": "Tải thất bại, nhấn để thử lại", "swipeUpForMore": "Vuốt lên để xem thêm", - "callingTool": "I'm helping you, please wait!", // 正在帮您,请稍等! - "voice_interrupt": "Interrupt", // 语音打断 - - // 预设提示词 - "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?", // 美食 - - // Agent controller - 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' - '• 回答问题和提供信息\n\n' - '• 实时语音翻译\n\n' - '• 推荐音乐和播客\n\n' - '• 语音备忘录和提醒\n\n' - '• 控制耳机功能\n\n' - '有什么我可以帮你的吗?', - 'microphonePermission': 'Microphone', - 'voiceRecognitionPermissionText': 'Chức năng nhận dạng giọng nói cần truy cập microphone.', - 'voiceTranslationPermissionText': 'Chức năng nhận dạng và dịch giọng nói cần truy cập microphone.', - 'phoneCallPermissionText': 'Chức năng gọi điện cần truy cập microphone để thực hiện cuộc gọi thoại.', - 'permissionDeniedText': 'Bạn đã từ chối vĩnh viễn quyền truy cập microphone, vui lòng vào cài đặt hệ thống để cấp quyền.', + "callingTool": "Tôi đang giúp bạn, vui lòng đợi!", // 正在帮您,请稍等! + "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.', + + // Agent模块 - 预设提示词 + "presetMusic": "Bật nhạc", // 来点音乐 + "presetNavigation": "Điều hướng đến", // 导航 + "presetWeather": "Thời tiết hôm nay", // 今日天气 + "presetNews": "Tin tức hôm nay", // 今日新闻 + "presetFood": "Món ngon gần đây", // 美食 + "playSomeMusic": "Bật một chút nhạc thịnh hành", // 播放一些流行音乐 + "navigationTo": "Hãy giúp tôi điều hướng đến", // 导航到 + "todayWeather": "Hôm nay thời tiết thế nào?", // 今日天气 + "todayNews": "Hôm nay có tin gì?", // 今日新闻 + "nearbyFood": "Gần đây có món gì ngon?", // 美食 + + // Agent模块 - 欢迎消息与权限 + 'welcomeMessage': 'Xin chào! Tôi là **Lily**, tôi có thể giúp bạn:\n\n' + '• Trả lời câu hỏi và cung cấp thông tin\n\n' + '• Dịch giọng nói theo thời gian thực\n\n' + '• Gợi ý nhạc và podcast\n\n' + '• Ghi nhớ bằng giọng nói và nhắc nhở\n\n' + '• Điều khiển tính năng tai nghe\n\n' + 'Tôi có thể giúp gì cho bạn?', + 'microphonePermission': 'Micrô', + 'voiceRecognitionPermissionText': + 'Chức năng nhận dạng giọng nói cần truy cập microphone.', + 'voiceTranslationPermissionText': + 'Chức năng nhận dạng và dịch giọng nói cần truy cập microphone.', + 'phoneCallPermissionText': + 'Chức năng gọi điện cần truy cập microphone để thực hiện cuộc gọi thoại.', + 'permissionDeniedText': + 'Bạn đã từ chối vĩnh viễn quyền truy cập microphone, vui lòng vào cài đặt hệ thống để cấp quyền.', 'startVoiceInput': 'Bắt đầu nhập liệu bằng giọng nói', - 'startPhoneCallMode': 'Bắt đầu chế độ gọi điện, bắt đầu nhập liệu bằng giọng nói', + 'startPhoneCallMode': + 'Bắt đầu chế độ gọi điện, bắt đầu nhập liệu bằng giọng nói', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': 'Nhập tin nhắn của bạn ở đây...', // 全屏编辑器输入提示 'characterCount': '{count} ký tự', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': 'Sao chép', 'copySuccess': 'Sao chép thành công', 'report': 'Báo cáo', 'submitSuccess': 'Gửi thành công', 'submitFailed': 'Gửi thất bại', 'reportSubmitted': 'Báo cáo đã được gửi, chúng tôi sẽ xử lý sớm', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': 'Có hại/Không an toàn', 'pornographicVulgar': 'Khiêu dâm/Thô tục', 'misleadingAttack': 'Gây hiểu lầm/Tấn công', @@ -771,18 +906,23 @@ const Map viVN = { 'privacyRelated': 'Liên quan đến quyền riêng tư', 'copyrightViolation': 'Vi phạm bản quyền, danh dự của tôi, v.v.', 'other': 'Khác', - 'reportDescriptionHint': 'Chúng tôi muốn biết lý do bạn báo cáo, bạn có thể mô tả vấn đề bạn gặp phải.', - //'submit': '提交', - - //Message_bubble + 'reportDescriptionHint': + 'Chúng tôi muốn biết lý do bạn báo cáo, bạn có thể mô tả vấn đề bạn gặp phải.', 'generatedByAi': 'Được tạo bởi AI', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': 'Gọi công cụ', + 'noResult': 'Không có kết quả', + 'noToolCallContentToCopy': 'Không có nội dung gọi công cụ để sao chép', + 'toolCallDetails': 'Chi tiết gọi công cụ:', + 'toolCallContentCopied': 'Đã sao chép nội dung gọi công cụ vào khay nhớ tạm', + + // Agent模块 - 音乐卡片 'recommendedMusic': 'Dưới đây là một số bản nhạc được đề xuất:', 'playList': 'Danh sách phát', 'moreMusic': 'Thêm nhạc', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': 'km', // 公里单位 'meters': 'm', // 米单位 'hours': 'giờ', // 小时单位 @@ -797,20 +937,51 @@ const Map viVN = { "bicycling": "Đi xe đạp", "tsransit": "Giao thông công cộng", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': 'Chọn ứng dụng dẫn đường', + 'amapMap': 'Amap', + 'useAmapNavigation': 'Dẫn đường bằng Amap', + 'baiduMap': 'Baidu Maps', + 'useBaiduNavigation': 'Dẫn đường bằng Baidu Maps', + 'googleMap': 'Google Maps', + 'useGoogleNavigation': 'Dẫn đường bằng Google Maps', + 'appleMap': 'Apple Maps', + 'useAppleNavigation': 'Dẫn đường bằng Apple Maps', + 'builtInNavigation': 'Dẫn đường tích hợp', + 'useBuiltInNavigation': 'Dẫn đường bằng bản đồ tích hợp', + 'navigationStartFailed': 'Không thể bắt đầu dẫn đường', + 'cannotPlayMusicListRetryLater': + 'Không thể phát danh sách nhạc, vui lòng thử lại sau', + 'cannotPlaySong': 'Không thể phát bài hát', + 'openMapError': 'Lỗi khi mở bản đồ', + 'pleaseInstallAmapApp': 'Vui lòng cài ứng dụng Amap trước', + 'pleaseInstallBaiduMapApp': 'Vui lòng cài ứng dụng Baidu Maps trước', + 'appleMapStartFailed': 'Apple Maps không thể khởi chạy', + 'appleMapUnavailable': 'Apple Maps không khả dụng', + 'openAppleMapError': 'Lỗi khi mở Apple Maps', + + // Agent模块 - 天气卡片 'weatherQuery': 'Truy vấn tình hình thời tiết:', 'highest': 'Cao nhất', 'lowest': 'Thấp nhất', 'futureForecast': 'Dự báo tương lai', - 'hotWeatherTip': 'Hôm nay trời nóng, chú ý chống nóng, uống nhiều nước để tránh say nắng', - 'coldWeatherTip': 'Hôm nay nhiệt độ thấp, ra ngoài chú ý giữ ấm, cẩn thận cảm lạnh', - 'rainyWeatherTip': 'Hôm nay có mưa, ra ngoài nhớ mang theo ô, chú ý an toàn khi đi lại', - 'snowyWeatherTip': 'Hôm nay có tuyết, đường trơn trượt chú ý an toàn, giữ ấm cơ thể', - 'foggyWeatherTip': 'Hôm nay có sương mù, tầm nhìn thấp, ra ngoài nhớ đeo khẩu trang', - 'windyWeatherTip': 'Hôm nay gió lớn, ra ngoài chú ý an toàn, buộc chặt đồ đạc', + 'hotWeatherTip': + 'Hôm nay trời nóng, chú ý chống nóng, uống nhiều nước để tránh say nắng', + 'coldWeatherTip': + 'Hôm nay nhiệt độ thấp, ra ngoài chú ý giữ ấm, cẩn thận cảm lạnh', + 'rainyWeatherTip': + 'Hôm nay có mưa, ra ngoài nhớ mang theo ô, chú ý an toàn khi đi lại', + 'snowyWeatherTip': + 'Hôm nay có tuyết, đường trơn trượt chú ý an toàn, giữ ấm cơ thể', + 'foggyWeatherTip': + 'Hôm nay có sương mù, tầm nhìn thấp, ra ngoài nhớ đeo khẩu trang', + 'windyWeatherTip': + 'Hôm nay gió lớn, ra ngoài chú ý an toàn, buộc chặt đồ đạc', 'sunnyWeatherTip': 'Hôm nay nắng đẹp, tia UV mạnh, ra ngoài nhớ chống nắng', - 'temperatureDifferenceTip': 'Hôm nay chênh lệch nhiệt độ ngày đêm lớn, chú ý thêm bớt quần áo cho phù hợp', - 'comfortableWeatherTip': 'Hôm nay thời tiết dễ chịu, là thời điểm tốt để hoạt động ngoài trời', + 'temperatureDifferenceTip': + 'Hôm nay chênh lệch nhiệt độ ngày đêm lớn, chú ý thêm bớt quần áo cho phù hợp', + 'comfortableWeatherTip': + 'Hôm nay thời tiết dễ chịu, là thời điểm tốt để hoạt động ngoài trời', "monday": "Thứ 2", "tuesday": "Thứ 3", "wednesday": "Thứ 4", @@ -818,18 +989,8 @@ const Map viVN = { "friday": "Thứ 6", "saturday": "Thứ 7", "sunday": "Chủ nhật", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "Expiration:", - "notActivated": "Not activated", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "Nắng", "partlyCloudy": "Ít mây", "partlySunny": "Nắng nhẹ", @@ -850,7 +1011,137 @@ const Map viVN = { "haze": "Khói bụi", "strongWind": "Gió lớn", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "Dịch hình ảnh", + "textTranslation": "Dịch văn bản", + + // 翻译模块 - 主页 + "translationHistory": "Lịch sử dịch", + "enableRecording": "Bật ghi âm", + "viewAudioFiles": "Xem tệp âm thanh", + "headsetUser": "Người dùng tai nghe", + "phoneUser": "Người dùng điện thoại", + "selectSourceLanguage": "Chọn ngôn ngữ nguồn", + "selectTargetLanguage": "Chọn ngôn ngữ đích", + "me": "Tôi", + "counterPart": "Người đối thoại", + "bluetoothCallStateError": + "Vui lòng đảm bảo tai nghe Bluetooth đã kết nối với điện thoại và đang trong cuộc gọi", + "autoDetect": "Tự động nhận diện", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': 'Tắt cửa sổ nổi', + 'enableFloatingWindow': 'Bật cửa sổ nổi', + 'permissionTip': 'Gợi ý quyền', + 'micPermissionRequiredForRecording': 'Cần quyền micrô để ghi âm', + 'deleteTranslationRecordError': 'Lỗi khi xóa bản ghi dịch: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "Nhận diện ngôn ngữ thất bại", + "translationFailed": "Dịch thất bại", + "translating": "Đang dịch", + "translate": "Dịch", + "pleaseInputText": "Vui lòng nhập văn bản", + "inputTextToTranslate": "Vui lòng nhập văn bản cần dịch", + "textTooLong": "Văn bản quá dài, tối đa 5000 ký tự", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "Chưa có lịch sử", + "historyRecords": "Lịch sử", + "clearResults": "Xóa kết quả", + "clearHistory": "Xóa lịch sử", + "clearHistoryConfirm": + "Bạn có chắc muốn xóa toàn bộ lịch sử dịch không? Thao tác này không thể hoàn tác.", + "unknownLanguage": "Ngôn ngữ không xác định", + "deleteSessionRecord": "Xóa bản ghi phiên", + "deleteSessionConfirm": + "Bạn có chắc muốn xóa tất cả các bản ghi dịch của phiên này không? Thao tác này không thể hoàn tác.", + + // 翻译模块 - 图片翻译 + "selectImageSource": "Chọn nguồn ảnh", + "imagePreview": "Xem trước ảnh", + "translationResult": "Kết quả dịch", + "recognitionResult": "Kết quả nhận dạng", + "translatedImagePreview": "Xem trước ảnh đã dịch", + "translatedImageLoadFailed": "Không thể tải ảnh đã dịch", + "pleaseSelectImage": "Vui lòng chọn một ảnh", + "imageLoadFailed": "Tải ảnh thất bại", + "imageQuality": "Chất lượng ảnh", + "maxSize": "Kích thước tối đa", + "close": "Đóng", + "setImageQuality": "Đặt chất lượng ảnh", + "currentQuality": "Chất lượng hiện tại: @value%", + "setMaxSize": "Đặt kích thước tối đa", + "currentMaxSize": "Hiện tại: @pxpx", + "waitingForAction": "Đang chờ thao tác", + "pleaseSelectImageToStart": "Vui lòng chọn ảnh để bắt đầu", + "chooseImage": "Chọn ảnh", + "openingCamera": "Đang mở camera...", + "openingPhotoAlbum": "Đang mở album ảnh...", + "cancelled": "Đã hủy", + "userCancelledSelection": "Người dùng đã hủy lựa chọn", + "translatingImage": "Đang dịch ảnh", + "callingImageTranslateService": "Đang gọi dịch vụ dịch ảnh...", + "savingRecord": "Đang lưu bản ghi", + "savingTranslationResult": "Đang lưu kết quả dịch...", + "translationCompleted": "Dịch xong", + "allStepsCompleted": "Hoàn tất tất cả bước", + "processingFailed": "Xử lý thất bại", + "imageProcessingOrTranslationFailed": + "Xử lý ảnh hoặc dịch thất bại. Vui lòng thử lại.\nLỗi: {error}", + "imageTooLarge": "Kích thước ảnh vượt quá giới hạn 4MB", + "imageTooLargeHint": + "Ảnh vượt quá 4MB. Giảm chất lượng hoặc kích thước rồi thử lại", + "emptyTranslationResult": "API dịch ảnh trả về kết quả rỗng", + "imageTranslationFailedTryLater": + "Dịch ảnh thất bại. Lỗi mạng hoặc giới hạn tần suất. Vui lòng thử lại sau", + "imageTranslationApiException": "Lỗi API dịch ảnh. Kiểm tra mạng và thử lại", + "permissionRequired": "Cần cấp quyền", + "cameraPermissionRequired": "Cần quyền camera để chụp ảnh", + "photoAlbumPermissionRequired": "Cần quyền album ảnh để chọn ảnh", + "translationDetails": "Chi tiết dịch", + "originalImage": "Ảnh gốc", + "sourceLanguage": "Ngôn ngữ nguồn", + "targetLanguage": "Ngôn ngữ đích", + "translationTime": "Thời gian dịch", + "shareInDevelopment": "Chức năng chia sẻ đang được phát triển", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "Dịch tệp âm thanh", + "noAudioFiles": "Chưa có tệp âm thanh", + "calculating": "Đang tính toán...", + "playing": "Đang phát...", + "paused": "Đã tạm dừng", + "clickToPlay": "Nhấn để phát", + "rename": "Đổi tên", + "smartTranscription": "Chuyển đổi thông minh", + "renameAudioFile": "Đổi tên tệp âm thanh", + "enterNewFileName": "Vui lòng nhập tên tệp mới", + + // 翻译模块 - 翻译详情 + "originalRecord": "Bản ghi gốc", + "recordSummary": "Tóm tắt bản ghi", + "clickToGenerateSummary": "Nhấn nút bên dưới để tạo tóm tắt phiên", + "summaryContent": "Nội dung tóm tắt", + "copied": "Đã sao chép", + "summaryCopiledToClipboard": "Tóm tắt đã được sao chép vào khay nhớ tạm", + "extractSummary": "Trích xuất tóm tắt", + "summaryGenerated": "Đã tạo tóm tắt", + "generating": "Đang tạo...", + "regenerate": "Tạo lại", + "summaryTimeoutMessage": + "Yêu cầu tạo tóm tắt đã hết thời gian, có thể do sự cố mạng hoặc máy chủ bận.", + "deleteTranslationRecord": "Xóa bản ghi dịch", + "deleteTranslationConfirm": + "Bạn có chắc muốn xóa bản ghi dịch này không? Thao tác này không thể hoàn tác.", + "originalText": "Văn bản gốc", + "translatedText": "Văn bản dịch", + "sessionSummary": "Tóm tắt phiên", + "cannotShare": "Không thể chia sẻ", + "generateSummaryFirst": "Vui lòng tạo tóm tắt trước", + "translationSessionRecord": "Bản ghi phiên dịch", + + // 个人资料模块 "editProfile": "Chỉnh sửa thông tin cá nhân", "avatar": "Ảnh đại diện", "nickname": "Biệt danh", @@ -860,28 +1151,28 @@ const Map viVN = { "notSet": "Chưa đặt", "accountSetting": "Cài đặt tài khoản", "logout": "Đăng xuất", - "logoutTips": "Bạn có chắc chắn muốn đăng xuất khỏi tài khoản hiện tại không?", + "logoutTips": + "Bạn có chắc chắn muốn đăng xuất khỏi tài khoản hiện tại không?", 'deleteAccount': 'Xóa tài khoản', - 'deleteAccountTips': 'Bạn có chắc chắn muốn xóa vĩnh viễn tài khoản của mình không? Thao tác này không thể hoàn tác', - 'clean': 'Clear Cache', - 'cleanTips': 'Are you sure you want to clear personal cache?', - - // Profile 错误信息 - 'networkConnectionFailed': 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng và thử lại', - 'serverTemporarilyUnavailable': 'Máy chủ tạm thời không khả dụng, vui lòng thử lại sau', + 'deleteAccountTips': + 'Bạn có chắc chắn muốn xóa vĩnh viễn tài khoản của mình không? Thao tác này không thể hoàn tác', + 'clean': 'Xóa bộ nhớ cache', + 'cleanTips': 'Bạn có chắc chắn muốn xóa bộ nhớ cache cá nhân không?', + 'networkConnectionFailed': + 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng và thử lại', + 'serverTemporarilyUnavailable': + 'Máy chủ tạm thời không khả dụng, vui lòng thử lại sau', 'loginExpiredPleaseRelogin': 'Đăng nhập đã hết hạn, vui lòng đăng nhập lại', 'noPermissionForThisOperation': 'Không có quyền thực hiện thao tác này', 'requestedResourceNotFound': 'Không tìm thấy tài nguyên được yêu cầu', - 'imageProcessingFailedPleaseReselect': 'Xử lý hình ảnh thất bại, vui lòng chọn lại hình ảnh', + 'imageProcessingFailedPleaseReselect': + 'Xử lý hình ảnh thất bại, vui lòng chọn lại hình ảnh', 'operationFailedPleaseRetry': 'Thao tác thất bại, vui lòng thử lại', 'serverReturnedError': 'Máy chủ trả về lỗi', 'serverError': 'Lỗi máy chủ', - 'networkConnectionFailedCheckSettings': 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng', + 'networkConnectionFailedCheckSettings': + 'Kết nối mạng thất bại, vui lòng kiểm tra cài đặt mạng', 'serverInternalErrorRetryLater': 'Lỗi nội bộ máy chủ, vui lòng thử lại sau', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': 'Nén hình ảnh thất bại', 'avatarUpdateFailed': 'Cập nhật ảnh đại diện thất bại', 'usernameCannotBeEmpty': 'Tên người dùng không được để trống', @@ -892,42 +1183,49 @@ const Map viVN = { 'logoutFailedRetry': 'Đăng xuất thất bại, vui lòng thử lại', 'accountPermanentlyDeleted': 'Tài khoản đã bị xóa vĩnh viễn', 'deleteAccountFailedRetry': 'Xóa tài khoản thất bại, vui lòng thử lại', - - // 账号服务相关 'clearUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 清理用户数据失败 'deleteUserDataFailed': 'Xóa dữ liệu người dùng thất bại', // 删除用户数据失败 'thirdPartyLogoutSuccess': 'Đăng xuất bên thứ ba thành công', // 第三方登录退出成功 'thirdPartyLogoutFailed': 'Đăng xuất bên thứ ba thất bại', // 第三方登录退出失败 'signOutProcessError': 'Đã xảy ra lỗi trong quá trình đăng xuất', // 登出过程发生错误 - 'deleteAccountProcessError': 'Đã xảy ra lỗi trong quá trình xóa tài khoản', // 删除账号过程发生错误 + 'deleteAccountProcessError': + 'Đã xảy ra lỗi trong quá trình xóa tài khoản', // 删除账号过程发生错误 'userDataClearSuccess': 'Xóa dữ liệu người dùng thành công', // 用户数据清理成功 - 'allUserDataClearSuccess': 'Tất cả dữ liệu người dùng đã được xóa thành công', // 所有用户数据清理成功 - 'accountServiceInitialized': 'AccountService đã được khởi tạo', // AccountService 已初始化 - - // 权限管理页面 + 'allUserDataClearSuccess': + 'Tất cả dữ liệu người dùng đã được xóa thành công', // 所有用户数据清理成功 + 'accountServiceInitialized': + 'AccountService đã được khởi tạo', // AccountService 已初始化 + + // 权限模块 + 'meetingStoragePermission': 'Lưu trữ', + 'meetingStoragePermissionExplanation': + 'Chúng tôi cần quyền lưu trữ để bạn có thể chọn và tải lên tệp âm thanh.', + 'meetingStoragePermissionPermanentDenial': + 'Phát hiện bạn đã từ chối vĩnh viễn quyền lưu trữ. Để tiếp tục dùng tính năng này, vui lòng vào cài đặt ứng dụng để bật quyền lưu trữ thủ công.', 'getPermissionStatusFailed': 'Lấy trạng thái quyền thất bại', 'communicationPermissions': 'Quyền giao tiếp', - 'bluetoothPermissions': 'Bluetooth Permissions', - 'notificationPermissions': 'Notification Permissions', - 'storagePermissions': 'Storage Permissions', - 'microphonePermissions': 'Microphone Permissions', - 'alarmPermissions': 'Alarm Permissions', + 'bluetoothPermissions': 'Quyền Bluetooth', + 'notificationPermissions': 'Quyền thông báo', + 'storagePermissions': 'Quyền lưu trữ', + 'microphonePermissions': 'Quyền micrô', + 'alarmPermissions': 'Quyền báo thức', 'calendarPermissions': 'Quyền lịch', 'locationPermissions': 'Quyền vị trí', 'phone': 'Điện thoại', 'sms': 'SMS', - 'contacts': 'Contacts', - //'bluetooth': '蓝牙', - 'notification': 'Notification', - 'alarm': 'Alarm', + 'contacts': 'Danh bạ', + 'notification': 'Thông báo', + 'alarm': 'Báo thức', 'calendarWrite': 'Ghi lịch', 'calendarFullAccess': 'Truy cập lịch đầy đủ', 'locationInfo': 'Thông tin vị trí', 'phonePermissionDesc': 'Dùng cho chức năng gọi điện thoại', 'smsPermissionDesc': 'Dùng cho chức năng gửi SMS', - 'alarmPermissionDesc': 'Used to set exact alarms to ensure reminders trigger on time', + 'alarmPermissionDesc': + 'Dùng để đặt báo thức chính xác để đảm bảo nhắc nhở đúng giờ', 'calendarWritePermissionDesc': 'Dùng để tạo sự kiện và lời nhắc trên lịch', - 'calendarFullAccessPermissionDesc': 'Dùng để đọc và quản lý các sự kiện và lời nhắc trên lịch', + 'calendarFullAccessPermissionDesc': + 'Dùng để đọc và quản lý các sự kiện và lời nhắc trên lịch', 'locationPermissionDesc': 'Dùng để lấy thông tin vị trí hiện tại', 'appFunctionNeeds': 'Chức năng ứng dụng cần', 'authorized': 'Đã cấp quyền', @@ -937,302 +1235,103 @@ const Map viVN = { 'unknownStatus': 'Trạng thái không xác định', 'permissionGranted': 'Quyền đã được cấp', 'permissionRequestError': 'Lỗi khi yêu cầu quyền', - 'phonePermissionDetailDesc': 'Chức năng gọi điện cần quyền truy cập điện thoại', + 'phonePermissionDetailDesc': + 'Chức năng gọi điện cần quyền truy cập điện thoại', 'smsPermissionDetailDesc': 'Chức năng gửi SMS cần quyền truy cập SMS', - 'alarmPermissionDetailDesc': 'This permission is required to set exact alarms and ensure reminders trigger on time', - 'calendarWritePermissionDetailDesc': 'Tạo sự kiện lịch cần quyền ghi vào lịch', - 'calendarFullAccessPermissionDetailDesc': 'Quản lý sự kiện lịch cần quyền truy cập lịch đầy đủ', - 'locationPermissionDetailDesc': 'Lấy thông tin vị trí cần quyền truy cập vị trí', - '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': 'Ứng dụng cần quyền này để cung cấp đầy đủ chức năng', - 'permanentDenialText': 'Bạn đã từ chối vĩnh viễn quyền {permission}, vui lòng vào cài đặt ứng dụng để bật', + 'alarmPermissionDetailDesc': + 'Quyền này cần thiết để đặt báo thức chính xác và đảm bảo nhắc nhở được kích hoạt đúng giờ', + 'calendarWritePermissionDetailDesc': + 'Tạo sự kiện lịch cần quyền ghi vào lịch', + 'calendarFullAccessPermissionDetailDesc': + 'Quản lý sự kiện lịch cần quyền truy cập lịch đầy đủ', + 'locationPermissionDetailDesc': + 'Lấy thông tin vị trí cần quyền truy cập vị trí', + 'contactsPermissionDesc': 'Dùng để truy cập thông tin liên hệ', + 'contactsPermissionDetailDesc': + 'Chức năng gọi điện và SMS cần quyền danh bạ để chọn liên hệ', + 'bluetoothPermissionDesc': 'Dùng để kết nối và quản lý thiết bị Bluetooth', + 'bluetoothPermissionDetailDesc': + 'Kết nối tai nghe Bluetooth và các thiết bị khác cần quyền Bluetooth', + 'bluetoothScanPermissionDesc': 'Dùng để quét thiết bị Bluetooth gần đây', + 'bluetoothScanPermissionDetailDesc': + 'Quét thiết bị Bluetooth gần đây cần quyền quét Bluetooth', + 'bluetoothConnectPermissionDesc': 'Dùng để kết nối thiết bị Bluetooth', + 'bluetoothConnectPermissionDetailDesc': + 'Kết nối thiết bị Bluetooth cần quyền kết nối Bluetooth', + 'notificationPermissionDesc': 'Dùng để gửi thông báo', + 'notificationPermissionDetailDesc': + 'Ứng dụng cần quyền thông báo để gửi cho bạn cảnh báo và tin nhắn quan trọng', + 'appNeedsPermissionForFullFunction': + 'Ứng dụng cần quyền này để cung cấp đầy đủ chức năng', + 'permanentDenialText': + 'Bạn đã từ chối vĩnh viễn quyền {permission}, vui lòng vào cài đặt ứng dụng để bật', 'goToSettings': 'Đi đến cài đặt', - - // 权限申请 - 'bluetoothScan': 'Bluetooth Scan', - 'bluetoothConnect': 'Bluetooth Connect', - 'bluetoothScanExplanation': 'The app needs Bluetooth scan permission to scan nearby Bluetooth devices.', - '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.', -//'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.', + 'bluetoothScan': 'Quét Bluetooth', + 'bluetoothConnect': 'Kết nối Bluetooth', + 'bluetoothScanExplanation': + 'Ứng dụng cần quyền quét Bluetooth để quét thiết bị Bluetooth gần đây.', + 'bluetoothConnectExplanation': + 'Ứng dụng cần quyền kết nối Bluetooth để kết nối thiết bị Bluetooth.', + 'locationForBluetoothExplanation': + 'Ứng dụng cần quyền vị trí để quét thiết bị Bluetooth.', + 'bluetoothScanPermanentDenial': + 'Bạn đã từ chối vĩnh viễn quyền quét Bluetooth, vui lòng vào cài đặt để bật thủ công.', + 'bluetoothConnectPermanentDenial': + 'Bạn đã từ chối vĩnh viễn quyền kết nối Bluetooth, vui lòng vào cài đặt để bật thủ công.', + 'locationPermanentDenial': + 'Bạn đã từ chối vĩnh viễn quyền vị trí, vui lòng vào cài đặt để bật thủ công.', + 'notificationPermission': 'Thông báo', + 'locationPermission': 'Vị trí', + 'notificationPermissionExplanation': + 'Cần quyền thông báo để hiển thị trạng thái phát nhạc.', + 'locationPermissionExplanation': 'Cần quyền vị trí để lấy vị trí hiện tại.', + 'notificationPermissionPermanentDenial': + 'Bạn đã từ chối vĩnh viễn quyền thông báo, vui lòng vào cài đặt để bật.', + 'locationPermissionPermanentDenial': + 'Bạn đã từ chối vĩnh viễn quyền vị trí, vui lòng vào cài đặt để bật.', + 'storagePermission': 'Lưu trữ', + 'microphonePermissionExplanation': + 'Chúng tôi cần quyền micrô để ghi âm nội dung.', + 'storagePermissionExplanation': + 'Chúng tôi cần quyền lưu trữ để bạn có thể chọn và tải lên tệp âm thanh.', 'microphonePermissionPermanentDenial': - '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', + 'Phát hiện bạn đã từ chối vĩnh viễn quyền ghi âm. Để tiếp tục dùng tính năng này, vui lòng vào cài đặt ứng dụng để bật quyền micrô thủ công.', 'storagePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - //permission_util.dart - 'permissionUtilNeed': 'Need ', - 'permissionUtilPermission': ' Permission', - 'permissionUtilRestricted': ' Permission Restricted', - 'permissionUtilRestrictedMessage': 'This feature is unavailable or restricted on the current device, please check device settings or system restrictions', + 'Phát hiện bạn đã từ chối vĩnh viễn quyền lưu trữ. Để tiếp tục dùng tính năng này, vui lòng vào cài đặt ứng dụng để bật quyền lưu trữ thủ công.', + 'permissionUtilNeed': 'Cần ', + 'permissionUtilPermission': ' quyền', + 'permissionUtilRestricted': ' quyền bị hạn chế', + 'permissionUtilRestrictedMessage': + 'Tính năng này không khả dụng hoặc bị hạn chế trên thiết bị hiện tại, vui lòng kiểm tra cài đặt thiết bị hoặc các hạn chế của hệ thống', 'permissionUtilConfirm': 'OK', - // 版本更新对话框 + // 原生前台服务通知(Android) + 'native.notification.appName': 'VOITRANS', + 'native.notification.navigation.title': 'Đang dẫn đường', + 'native.notification.navigation.keepRunning': + 'Đang dẫn đường, giữ ứng dụng hoạt động', + 'native.notification.bleAgent.running': 'Trợ lý giọng nói đang chạy', + 'native.notification.audioRecording.recording': + 'Đang ghi âm, nhấn để quay lại ứng dụng', + 'native.notification.music.waiting': 'Đang chờ phát', + 'native.notification.music.previous': 'Trước đó', + 'native.notification.music.next': 'Tiếp theo', + 'native.notification.music.play': 'Phát', + 'native.notification.music.pause': 'Tạm dừng', + 'native.notification.qqMusic.playing': 'Đang phát nhạc', + + // 版本更新 'newVersionFound': 'Đã tìm thấy phiên bản mới', // 版本更新对话框标题 'remindLater': 'Nhắc lại sau', // 稍后提醒按钮 'updateNow': 'Cập nhật ngay', // 立即更新按钮 'checkUpdate': 'Kiểm tra cập nhật', // 检查更新按钮 'updateFailed': 'Cập nhật thất bại', // 更新失败提示 - 'cannotOpenAppStore': 'Không thể mở App Store, vui lòng vào App Store để cập nhật thủ công', // 无法打开应用商店提示 - 'updateErrorRetry': 'Đã xảy ra lỗi trong quá trình cập nhật, vui lòng thử lại sau', // 更新错误重试提示 - - //国家列表 - "邮箱": "Email", - "中国": "Trung Quốc", - "美国": "Hoa Kỳ", - "加拿大": "Canada", - "俄罗斯": "Nga", - "英国": "Vương quốc Anh", - "德国": "Đức", - "意大利": "Ý", - "法国": "Pháp", - "西班牙": "Tây Ban Nha", - "南非": "Nam Phi", - "沙特阿拉伯": "Ả Rập Xê Út", - "土耳其": "Thổ Nhĩ Kỳ", - "日本": "Nhật Bản", - "韩国": "Hàn Quốc", - "新加坡": "Singapore", - "马来西亚": "Malaysia", - "泰国": "Thái Lan", - "越南": "Việt Nam", - "印度": "Ấn Độ", - "巴基斯坦": "Pakistan", - "菲律宾": "Philippines", - "印度尼西亚": "Indonesia", - "阿联酋": "Các Tiểu vương quốc Ả Rập Thống nhất", - "墨西哥": "Mexico", - "巴西": "Brazil", - "阿根廷": "Argentina", - "澳大利亚": "Úc", - "新西兰": "New Zealand", - "中国香港": "Hồng Kông (Trung Quốc)", - "中国澳门": "Macao (Trung Quốc)", - "中国台湾": "Đài Loan (Trung Quốc)", - "埃及": "Ai Cập", - "希腊": "Hy Lạp", - "荷兰": "Hà Lan", - "比利时": "Bỉ", - "匈牙利": "Hungary", - "罗马尼亚": "Romania", - "瑞士": "Thụy Sĩ", - "奥地利": "Áo", - "丹麦": "Đan Mạch", - "瑞典": "Thụy Điển", - "挪威": "Na Uy", - "波兰": "Ba Lan", - "秘鲁": "Peru", - "智利": "Chile", - "哥伦比亚": "Colombia", - "委内瑞拉": "Venezuela", - "葡萄牙": "Bồ Đào Nha", - "卢森堡": "Luxembourg", - "爱尔兰": "Ireland", - "冰岛": "Iceland", - "阿尔巴尼亚": "Albania", - "马耳他": "Malta", - "塞浦路斯": "Síp", - "芬兰": "Phần Lan", - "保加利亚": "Bulgaria", - "立陶宛": "Litva", - "拉脱维亚": "Latvia", - "爱沙尼亚": "Estonia", - "乌克兰": "Ukraina", - "塞尔维亚": "Serbia", - "克罗地亚": "Croatia", - "斯洛文尼亚": "Slovenia", - "捷克": "Cộng hòa Séc", - "斯洛伐克": "Slovakia", - "危地马拉": "Guatemala", - "萨尔瓦多": "El Salvador", - "洪都拉斯": "Honduras", - "尼加拉瓜": "Nicaragua", - "哥斯达黎加": "Costa Rica", - "巴拿马": "Panama", - "海地": "Haiti", - "玻利维亚": "Bolivia", - "厄瓜多尔": "Ecuador", - "巴拉圭": "Paraguay", - "乌拉圭": "Uruguay", - "摩洛哥": "Ma Rốc", - "阿尔及利亚": "Algeria", - "突尼斯": "Tunisia", - "尼日利亚": "Nigeria", - "加纳": "Ghana", - "埃塞俄比亚": "Ethiopia", - "肯尼亚": "Kenya", - "坦桑尼亚": "Tanzania", - "乌干达": "Uganda", - "孟加拉国": "Bangladesh", - "以色列": "Israel", - "黎巴嫩": "Lebanon", - "约旦": "Jordan", - "伊拉克": "Iraq", - "科威特": "Kuwait", - "巴林": "Bahrain", - "卡塔尔": "Qatar", - "阿曼": "Oman", - "阿富汗": "Afghanistan", - "斯里兰卡": "Sri Lanka", - "缅甸": "Myanmar", - "尼泊尔": "Nepal", - "蒙古": "Mông Cổ", - "柬埔寨": "Campuchia", - "老挝": "Lào", - "文莱": "Brunei", - "东帝汶": "Timor-Leste", - "斐济": "Fiji", - "所罗门群岛": "Quần đảo Solomon", - "刚果民主共和国": "Democratic Republic of the Congo", - "安哥拉": "Angola", - "苏丹": "Sudan", - "马尔代夫": "Maldives", - "不丹": "Bhutan", - "摩纳哥": "Monaco", - "圣马力诺": "San Marino", - "牙买加": "Jamaica", - "巴哈马": "Bahamas", - "巴布亚新几内亚": "Papua New Guinea", - "萨摩亚": "Samoa", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "Picture Translation", - "textTranslation": "Text Translation", - - // 翻译主页 (translation_view.dart) - "translationHistory": "Lịch sử dịch", - "enableRecording": "Bật ghi âm", - "viewAudioFiles": "Xem tệp âm thanh", - "headsetUser": "Người dùng tai nghe", - "phoneUser": "Người dùng điện thoại", - "selectSourceLanguage": "Chọn ngôn ngữ nguồn", - "selectTargetLanguage": "Chọn ngôn ngữ đích", - "me": "Me", - "counterPart": "Counterpart", - "bluetoothCallStateError": "Please make sure the Bluetooth headset is connected to the phone and in a call state", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "Auto Detect", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "Language detection failed", - "translationFailed": "Translation failed", - "pleaseInputText": "Please input text", - "textTooLong": "Text too long, max 5000 characters", - - // 翻译历史页 - "noTranslationHistory": "Chưa có lịch sử", - "historyRecords": "History Records", - "clearResults": "Clear Results", - "clearHistory": "Xóa lịch sử", - "clearHistoryConfirm": "Bạn có chắc muốn xóa toàn bộ lịch sử dịch không? Thao tác này không thể hoàn tác.", - "unknownLanguage": "Ngôn ngữ không xác định", - "deleteSessionRecord": "Xóa bản ghi phiên", - "deleteSessionConfirm": "Bạn có chắc muốn xóa tất cả các bản ghi dịch của phiên này không? Thao tác này không thể hoàn tác.", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "Select Image Source", - "imagePreview": "Image Preview", - "translationResult": "Translation Result", - "recognitionResult": "Recognition Result", - "translatedImagePreview": "Translated Image Preview", - "translatedImageLoadFailed": "Failed to load translated image", - "pleaseSelectImage": "Please select an image", - "imageLoadFailed": "Image load failed", - "imageQuality": "Image Quality", - "maxSize": "Max Size", - "close": "Close", - "setImageQuality": "Set Image Quality", - "currentQuality": "Current quality: @value%", - "setMaxSize": "Set Max Size", - "currentMaxSize": "Current: @pxpx", - "waitingForAction": "Waiting for action", - "pleaseSelectImageToStart": "Please select an image to start", - "chooseImage": "Choose Image", - "openingCamera": "Opening camera...", - "openingPhotoAlbum": "Opening photo album...", - "cancelled": "Cancelled", - "userCancelledSelection": "User cancelled selection", - "translatingImage": "Translating Image", - "callingImageTranslateService": "Calling image translation service...", - "savingRecord": "Saving Record", - "savingTranslationResult": "Saving translation result...", - "translationCompleted": "Translation Completed", - "allStepsCompleted": "All steps completed", - "processingFailed": "Processing Failed", - "imageProcessingOrTranslationFailed": "Image processing or translation failed. Please retry.\nError: {error}", - "imageTooLarge": "Image size exceeds 4MB limit", - "imageTooLargeHint": "Image size exceeds 4MB. Reduce quality or dimensions and retry", - "emptyTranslationResult": "Image translation API returned empty result", - "imageTranslationFailedTryLater": "Image translation failed. Network issue or rate limit. Please try later", - "imageTranslationApiException": "Image translation API exception. Check network and retry", - "permissionRequired": "Permission Required", - "cameraPermissionRequired": "Camera permission required to take photos", - "photoAlbumPermissionRequired": "Photo album permission required to pick images", - "translationDetails": "Translation Details", - "originalImage": "Original Image", - "sourceLanguage": "Source Language", - "targetLanguage": "Target Language", - "translationTime": "Translation Time", - "shareInDevelopment": "Sharing feature under development", - - // 翻译录音文件列表页 - "translateAudioFiles": "Dịch tệp âm thanh", - "noAudioFiles": "Chưa có tệp âm thanh", - "calculating": "Đang tính toán...", - "playing": "Đang phát...", - "paused": "Đã tạm dừng", - "clickToPlay": "Nhấn để phát", - "rename": "Đổi tên", - "smartTranscription": "Chuyển đổi thông minh", - "renameAudioFile": "Đổi tên tệp âm thanh", - "enterNewFileName": "Vui lòng nhập tên tệp mới", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "Bản ghi gốc", - "recordSummary": "Tóm tắt bản ghi", - "clickToGenerateSummary": "Nhấn nút bên dưới để tạo tóm tắt phiên", - "summaryContent": "Nội dung tóm tắt", - "copied": "Đã sao chép", - "summaryCopiledToClipboard": "Tóm tắt đã được sao chép vào khay nhớ tạm", - "extractSummary": "Trích xuất tóm tắt", - "summaryGenerated": "Đã tạo tóm tắt", - "generating": "Đang tạo...", - "regenerate": "Tạo lại", - "summaryTimeoutMessage": "Yêu cầu tạo tóm tắt đã hết thời gian, có thể do sự cố mạng hoặc máy chủ bận.", - "deleteTranslationRecord": "Xóa bản ghi dịch", - "deleteTranslationConfirm": "Bạn có chắc muốn xóa bản ghi dịch này không? Thao tác này không thể hoàn tác.", - "originalText": "Văn bản gốc", - "translatedText": "Văn bản dịch", - "sessionSummary": "Tóm tắt phiên", - "cannotShare": "Không thể chia sẻ", - "generateSummaryFirst": "Vui lòng tạo tóm tắt trước", - "translationSessionRecord": "Bản ghi phiên dịch", + 'cannotOpenAppStore': + 'Không thể mở App Store, vui lòng vào App Store để cập nhật thủ công', // 无法打开应用商店提示 + 'updateErrorRetry': + 'Đã xảy ra lỗi trong quá trình cập nhật, vui lòng thử lại sau', // 更新错误重试提示 // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "Ghép nối thiết bị", "connectYourDeepSoundHeadset": "Kết nối tai nghe Voitrans của bạn", "bind": "Liên kết", @@ -1241,42 +1340,37 @@ const Map viVN = { "autoInputCode": "Tự động nhập mã", "skipBinding": "Bỏ qua liên kết", "rescan": "Quét lại", - "verifyingDevice": "Đang xác minh thiết bị...", "confirmBinding": "Xác nhận liên kết", "associatingDevice": "Đang liên kết thiết bị...", "goToBluetoothSettings": "Đến cài đặt Bluetooth", 'bluetooth': 'Bluetooth', - - // 配对状态文本 "readyToPair": "Sẵn sàng để ghép nối", "preparingPairingEnvironment": "Đang chuẩn bị môi trường ghép nối...", - "connectDeepSoundViaSystemBluetooth": "Vui lòng kết nối với thiết bị Voitrans qua Bluetooth hệ thống trước", + "connectDeepSoundViaSystemBluetooth": + "Vui lòng kết nối với thiết bị Voitrans qua Bluetooth hệ thống trước", "deviceBindingConfirm": "Xác nhận liên kết thiết bị...", "establishingDeviceAssociation": "Đang thiết lập liên kết thiết bị...", "waitingCompletePairing": "Vui lòng đợi, đang hoàn tất ghép nối...", - "pairingSuccessRedirecting": "Ghép nối thành công! Sắp chuyển hướng đến trang chủ...", - - // 配对错误状态文本 - "ensureConnectedDeepSoundDevice": "Vui lòng đảm bảo bạn đang kết nối với thiết bị Voitrans", - "deviceAlreadyBoundToOtherAccount": "Thiết bị này đã được liên kết với tài khoản khác", + "pairingSuccessRedirecting": + "Ghép nối thành công! Sắp chuyển hướng đến trang chủ...", + "ensureConnectedDeepSoundDevice": + "Vui lòng đảm bảo bạn đang kết nối với thiết bị Voitrans", + "deviceAlreadyBoundToOtherAccount": + "Thiết bị này đã được liên kết với tài khoản khác", "deviceAssociationFailed": "Liên kết thiết bị thất bại, vui lòng thử lại", - "scanTimeoutEnsureDeviceNearby": "Quét hết thời gian, vui lòng đảm bảo thiết bị ở gần", + "scanTimeoutEnsureDeviceNearby": + "Quét hết thời gian, vui lòng đảm bảo thiết bị ở gần", "networkError": "Lỗi mạng", - "authorizationFailedCheckCode": "Ủy quyền thất bại, vui lòng kiểm tra xem mã ủy quyền có đúng không", + "authorizationFailedCheckCode": + "Ủy quyền thất bại, vui lòng kiểm tra xem mã ủy quyền có đúng không", "pairingFailedRetry": "Ghép nối thất bại, vui lòng thử lại", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': 'Vui lòng bật Bluetooth', 'deviceDisconnected': 'Thiết bị đã ngắt kết nối', 'readyToStartPairing': 'Sẵn sàng bắt đầu ghép nối', 'checkingEnvironment': 'Đang kiểm tra môi trường...', - 'ensureHeadsetOnAndPairingMode': 'Vui lòng đảm bảo tai nghe đã bật và ở chế độ ghép nối', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', + 'ensureHeadsetOnAndPairingMode': + 'Vui lòng đảm bảo tai nghe đã bật và ở chế độ ghép nối', 'establishingSecureConnection': 'Đang thiết lập kết nối an toàn...', 'needManualBindingAuthCode': 'Cần mã ủy quyền liên kết thủ công...', 'pairingSuccessful': 'Ghép nối thành công!', @@ -1290,22 +1384,37 @@ const Map viVN = { 'verificationFailedRetry': 'Xác minh thất bại, vui lòng thử lại', 'invalidDeviceAddress': 'Địa chỉ thiết bị không hợp lệ', 'bleDeviceAssociationFailed': 'Liên kết thiết bị BLE thất bại', - 'deviceAssociationFailedRetry': 'Liên kết thiết bị thất bại, vui lòng thử lại', + 'deviceAssociationFailedRetry': + 'Liên kết thiết bị thất bại, vui lòng thử lại', 'bleConnectionTimeoutRetry': 'Kết nối BLE hết thời gian, vui lòng thử lại', 'blePairingStartupFailed': 'Khởi động ghép nối BLE thất bại', 'bleConnectionFailed': 'Kết nối BLE thất bại', - 'deviceAuthorizationFailedCheckCode': 'Ủy quyền thiết bị thất bại, vui lòng kiểm tra mã ủy quyền', - - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': 'Manual Bluetooth Activation Required', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': 'Please follow these steps:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': 'Enable Bluetooth: Settings → Bluetooth → Turn On', // 开启蓝牙:设置 → 蓝牙 → 开启 - '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': + 'Ủy quyền thiết bị thất bại, vui lòng kiểm tra mã ủy quyền', + 'bluetoothGuideTitle': 'Cần bật Bluetooth thủ công', // 需要手动开启蓝牙 + 'bluetoothGuideSteps': 'Vui lòng làm theo các bước sau:', // 请按照以下步骤操作: + 'bluetoothGuideStep1': + 'Bật Bluetooth: Cài đặt → Bluetooth → Bật', // 开启蓝牙:设置 → 蓝牙 → 开启 + 'bluetoothGuideStep2': + 'Kết nối thiết bị: Tìm thiết bị của bạn trong "Thiết bị của tôi" và chạm để kết nối', // 连接设备:在"我的设备"中找到您的设备并点击连接 + 'bluetoothGuideStep3': + 'Quay lại ứng dụng để tiếp tục quá trình ghép nối', // 返回应用继续配对流程 + 'bluetoothGuideTip': + 'Mẹo: Bạn cũng có thể nhấn giữ biểu tượng Bluetooth trong Trung tâm điều khiển để mở nhanh cài đặt Bluetooth', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 + 'iKnow': 'Tôi hiểu', // 我知道了 + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "Quà chào mừng", + "firstBindRewardDesc": "Bạn đã nhận được phần thưởng liên kết.", + "vipLevelLabel": "Cấp VIP:", + "expiryLabel": "Hết hạn:", + "notActivated": "Chưa kích hoạt", + "aiChatCreditsLabel": "Tín dụng trò chuyện AI:", + "translationCreditsLabel": "Tín dụng dịch:", + "meetingCreditsLabel": "Tín dụng cuộc họp:", + "ok": "OK", + + // 用户反馈模块 "feedback": "Phản hồi người dùng", 'feedbackInfo': 'Cung cấp phản hồi hoặc đề xuất', 'feedbackDescription': 'Vui lòng mô tả vấn đề hoặc đề xuất của bạn', @@ -1318,7 +1427,8 @@ const Map viVN = { 'feedbackSubmitFailed': 'Gửi phản hồi thất bại, vui lòng thử lại sau', // OTA升级模块 - "upgradeExitConfirm": "Đang nâng cấp, thoát sẽ làm gián đoạn quá trình nâng cấp, bạn có chắc chắn muốn thoát không?", + "upgradeExitConfirm": + "Đang nâng cấp, thoát sẽ làm gián đoạn quá trình nâng cấp, bạn có chắc chắn muốn thoát không?", "deviceModel": "Kiểu máy", "unknownDevice": "Thiết bị không xác định", "currentFirmwareVersion": "Phiên bản firmware hiện tại", @@ -1330,17 +1440,74 @@ const Map viVN = { "connectionFailed": "Kết nối thất bại", "retryConnection": "Thử kết nối lại", "ota_updateNow": "Cập nhật ngay", - "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.", - "keepConnectedDontClose": "Vui lòng giữ thiết bị kết nối, không đóng ứng dụng", + "otaVersionInfoFailed": + "Không thể lấy thông tin phiên bản. Vui lòng thử lại sau.", + "otaDeviceInfoUnavailable": + "Không thể lấy thông tin thiết bị. Vui lòng kiểm tra kết nối và thử lại.", + "otaProductInfoUnavailable": + "Không thể nhận diện thiết bị. Vui lòng kết nối lại và thử lại.", + "otaFirmwareVersionInvalid": + "Phiên bản firmware bất thường. Vui lòng kết nối lại và thử lại.", + "keepConnectedDontClose": + "Vui lòng giữ thiết bị kết nối, không đóng ứng dụng", "doNotDisconnect": "Vui lòng không ngắt kết nối", "charging": "Đang sạc", "updateContent": "Nội dung cập nhật", - "removeEarbudsEnsureBattery": "Lấy cả hai tai nghe ra và đảm bảo pin của cả hai đều trên 20%", - - // 音乐列表页面 + "removeEarbudsEnsureBattery": + "Lấy cả hai tai nghe ra và đảm bảo pin của cả hai đều trên 20%", + + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': 'Đã tìm thấy phiên bản mới @version', + 'otaConfirmUpdateNow': 'Cập nhật ngay?', + 'otaUpdate': 'Cập nhật', + 'otaUpgradeSuccess': 'Nâng cấp thành công', + 'otaUpgradeCompleteRepair': + 'Nâng cấp firmware hoàn tất!\n\nThiết bị cần ghép nối lại để hoạt động bình thường. Đi đến trang ghép nối ngay bây giờ?', + 'otaPairLater': 'Ghép nối sau', + 'otaPairNow': 'Ghép nối ngay', + 'okConfirm': 'OK', + // OTA升级模块 - 设备检查 + 'otaBleCheckErrorWithError': 'Lỗi khi kiểm tra kết nối BLE: @error', + 'otaBleNotConnected': 'Thiết bị BLE chưa được kết nối', + 'otaBleNeedConnection': + 'Nâng cấp firmware yêu cầu kết nối thiết bị BLE\nVui lòng đảm bảo thiết bị đã kết nối đúng và thử lại', + 'otaDeviceInfoUnavailableTitle': 'Không có thông tin thiết bị', + 'otaCannotGetDeviceInfo': + 'Không thể lấy thông tin thiết bị\nVui lòng kết nối lại thiết bị hoặc thử lại sau', + 'otaBleCheckFailed': 'Kiểm tra kết nối BLE thất bại', + 'otaCannotGetDeviceInfoCheckConnection': + 'Không thể lấy thông tin thiết bị, vui lòng kiểm tra kết nối thiết bị', + 'otaCannotGetProductInfoWithName': + 'Không thể lấy thông tin sản phẩm, tên thiết bị: @deviceName', + 'otaCannotGetBatteryInfo': 'Không thể lấy thông tin pin hợp lệ', + 'otaLowBattery': 'Pin yếu', + 'otaSingleBatteryLow': + 'Pin thiết bị quá thấp để nâng cấp firmware\nYêu cầu: pin phải trên 20%\nHiện tại: @ear @battery%\nVui lòng sạc và thử lại', + 'otaDoubleBatteryLow': + 'Pin thiết bị quá thấp để nâng cấp firmware\nYêu cầu: cả hai tai nghe phải trên 20%\nHiện tại: Trái @left%, Phải @right%\nVui lòng sạc và thử lại', + 'otaBatteryCheckFailed': 'Kiểm tra pin thất bại', + // OTA升级模块 - 升级状态 + 'otaDefaultUpdateDesc': + 'Bản cập nhật này bao gồm tối ưu hiệu năng và sửa lỗi.', + 'otaGetLatestVersionFailed': 'Không thể lấy thông tin phiên bản mới nhất', + 'otaGetVersionInfoFailed': 'Không thể lấy thông tin phiên bản', + 'otaCheckingDeviceStatus': 'Đang kiểm tra trạng thái thiết bị...', + 'otaDownloadFailedCheckNetwork': + 'Tải xuống thất bại, vui lòng kiểm tra kết nối mạng', + 'otaDownloadFailed': 'Tải xuống thất bại', + 'otaPreparingConnection': 'Đang chuẩn bị kết nối thiết bị...', + 'otaConnectingDevice': 'Đang kết nối đến thiết bị...', + 'otaUpgradeStarted': 'Bắt đầu nâng cấp OTA...', + 'otaUpgradeProgressWithPercent': 'Tiến độ nâng cấp: @percent%', + 'otaUpgradeSuccessComplete': 'Nâng cấp hoàn tất thành công', + 'otaUpgradeFailedWithCode': 'Nâng cấp thất bại, mã lỗi: @code', + 'otaUpgradeFailedTitle': 'Nâng cấp thất bại', + 'otaUpgradeFailedDesc': + 'Vui lòng kiểm tra kết nối thiết bị hoặc gói cập nhật, mã lỗi: @code', + 'otaDeviceDisconnected': 'Thiết bị đã ngắt kết nối', + 'otaDeviceConnected': 'Thiết bị đã kết nối', + + // 音乐模块 "noMusic": "Không có nhạc", // 暂无音乐 "noPlayingMusic": "Không có nhạc đang phát", // 暂无播放音乐 "unknownSong": "Bài hát không xác định", // 未知歌曲 @@ -1388,20 +1555,122 @@ const Map viVN = { "波斯语": "Tiếng Ba Tư", "斯瓦希里语": "Tiếng Swahili", - // 时间相关 - "justNow": "Just now", - "minutesAgo": "@minutes minutes ago", - "yesterday": "Yesterday", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days days ago", - "hoursAgo": "@hours hours ago", - - //补充 - "insufficientIntegral": "Insufficient integral", - - //余额不足弹窗 - "insufficientBalanceDesc": "Insufficient balance, please go to the corresponding recharge page to recharge.", - "recharge": "Go to Recharge", - // 会员到期提示 - "aiMemberExpiredDesc": "AI membership expired, please go to the membership recharge page to renew.", + // 国家列表 + "邮箱": "Email", + "中国": "Trung Quốc", + "美国": "Hoa Kỳ", + "加拿大": "Ca-na-đa", + "俄罗斯": "Nga", + "英国": "Vương quốc Anh", + "德国": "Đức", + "意大利": "Ý", + "法国": "Pháp", + "西班牙": "Tây Ban Nha", + "南非": "Nam Phi", + "沙特阿拉伯": "Ả Rập Xê Út", + "土耳其": "Thổ Nhĩ Kỳ", + "日本": "Nhật Bản", + "韩国": "Hàn Quốc", + "新加坡": "Xinh-ga-po", + "马来西亚": "Ma-lai-xi-a", + "泰国": "Thái Lan", + "越南": "Việt Nam", + "印度": "Ấn Độ", + "巴基斯坦": "Pa-ki-xtan", + "菲律宾": "Phi-líp-pin", + "印度尼西亚": "In-đô-nê-xi-a", + "阿联酋": "Các Tiểu vương quốc Ả Rập Thống nhất", + "墨西哥": "Mê-hi-cô", + "巴西": "Bra-xin", + "阿根廷": "Ác-hen-ti-na", + "澳大利亚": "Úc", + "新西兰": "Niu Di-lân", + "中国香港": "Hồng Kông (Trung Quốc)", + "中国澳门": "Macao (Trung Quốc)", + "中国台湾": "Đài Loan (Trung Quốc)", + "埃及": "Ai Cập", + "希腊": "Hy Lạp", + "荷兰": "Hà Lan", + "比利时": "Bỉ", + "匈牙利": "Hung-ga-ri", + "罗马尼亚": "Ru-ma-ni", + "瑞士": "Thụy Sĩ", + "奥地利": "Áo", + "丹麦": "Đan Mạch", + "瑞典": "Thụy Điển", + "挪威": "Na Uy", + "波兰": "Ba Lan", + "秘鲁": "Pê-ru", + "智利": "Chi-lê", + "哥伦比亚": "Cô-lôm-bi-a", + "委内瑞拉": "Vê-nê-zu-ê-la", + "葡萄牙": "Bồ Đào Nha", + "卢森堡": "Lúc-xăm-bua", + "爱尔兰": "Ai-len", + "冰岛": "Ai-xlen", + "阿尔巴尼亚": "An-ba-ni", + "马耳他": "Man-ta", + "塞浦路斯": "Síp", + "芬兰": "Phần Lan", + "保加利亚": "Bun-ga-ri", + "立陶宛": "Litva", + "拉脱维亚": "Lát-vi-a", + "爱沙尼亚": "Ê-xtô-ni-a", + "乌克兰": "Ukraina", + "塞尔维亚": "Séc-bi-a", + "克罗地亚": "Crô-a-ti-a", + "斯洛文尼亚": "Xlô-ven-ni-a", + "捷克": "Cộng hòa Séc", + "斯洛伐克": "Xlô-va-ki-a", + "危地马拉": "Goa-tê-ma-la", + "萨尔瓦多": "En Xan-va-đo", + "洪都拉斯": "Hôn-đu-rát", + "尼加拉瓜": "Ni-ca-ra-goa", + "哥斯达黎加": "Cô-xta Ri-ca", + "巴拿马": "Pa-na-ma", + "海地": "Ha-i-ti", + "玻利维亚": "Bô-li-vi-a", + "厄瓜多尔": "Ê-cua-đo", + "巴拉圭": "Pa-ra-goay", + "乌拉圭": "U-ru-goay", + "摩洛哥": "Ma Rốc", + "阿尔及利亚": "An-giê-ri", + "突尼斯": "Tuy-ni-di", + "尼日利亚": "Ni-giê-ri-a", + "加纳": "Gha-na", + "埃塞俄比亚": "Ê-ti-ô-pi-a", + "肯尼亚": "Kê-ni-a", + "坦桑尼亚": "Tan-da-ni-a", + "乌干达": "U-gan-đa", + "孟加拉国": "Băng-la-đét", + "以色列": "I-xra-en", + "黎巴嫩": "Li-băng", + "约旦": "Gioóc-đa-ni", + "伊拉克": "I-rắc", + "科威特": "Cô-oét", + "巴林": "Ba-ren", + "卡塔尔": "Ca-ta", + "阿曼": "Ô-man", + "阿富汗": "Áp-ga-ni-xtan", + "斯里兰卡": "Sri Lan-ca", + "缅甸": "Mi-an-ma", + "尼泊尔": "Nê-pan", + "蒙古": "Mông Cổ", + "柬埔寨": "Campuchia", + "老挝": "Lào", + "文莱": "Bru-nây", + "东帝汶": "Đông Ti-mo", + "斐济": "Phi-ji", + "所罗门群岛": "Quần đảo Solomon", + "刚果民主共和国": "Cộng hòa Dân chủ Congo", + "安哥拉": "Ăng-gô-la", + "苏丹": "Xu-đăng", + "马尔代夫": "Mal-đi-vơ", + "不丹": "Bu-tan", + "摩纳哥": "Mô-na-cô", + "圣马力诺": "Xan Ma-ri-nô", + "牙买加": "Gia-mai-ca", + "巴哈马": "Ba-ha-ma", + "巴布亚新几内亚": "Pa-pua Niu Ghi-nê", + "萨摩亚": "Sa-moa", }; diff --git a/lib/core/translations/language/zh_cn.dart b/lib/core/translations/language/zh_cn.dart index 36db75d26..4008d3244 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': '继续', @@ -17,6 +18,11 @@ const Map zhCN = { "responseTimeout": "响应超时", "unknownError": "未知错误", "asrConnectionFailed": "语音识别服务连接失败,请检查网络或稍后重试", + "justNow": "刚刚", + "minutesAgo": "@minutes分钟前", + "yesterday": "昨天", + "daysAgo": "@days天前", + "hoursAgo": "@hours小时前", // 启动页 "slogan": "连接世界,岂止声音", @@ -27,7 +33,7 @@ const Map zhCN = { "explore": "发现", "settings": "设置", - // 语言 + // 语言列表 "followingSystem": "跟随系统", "chinese": "中文", "english": "英语", @@ -71,7 +77,7 @@ const Map zhCN = { "arabic": "阿拉伯语", "persian": "波斯语", - // 登录页 + // 登录模块 "welcome": "欢迎使用", "loginTips": "请使用手机号或邮箱登录/注册", "accountNumber": "手机号码或邮箱", @@ -98,12 +104,8 @@ const Map zhCN = { "resendVerificationCode": "重新发送验证码", "login": "登录", "usePasswordLogin": "使用密码登录", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 声明", // Voitrans 声明 "welcomeToThisApp": "欢迎使用Voitrans,请充分阅读", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": ",点击'同意并进入'表示您已充分阅读并同意上述协议。点击'不同意'将退出应用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,27 @@ const Map zhCN = { 'right': '右', 'checkConnectionStatusFailed': '检查连接状态失败', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': '蓝牙初始化失败: @error', + 'needBluetoothAndLocationPermission': '需要蓝牙和位置权限才能扫描设备', + 'permissionRequestFailedWithError': '权限请求失败: @error', + 'needPermission': '需要权限', + 'blePermissionDialogContent': '应用需要蓝牙和位置权限才能扫描设备。请在设置中手动开启权限。', + 'needEnableBluetooth': '需要开启蓝牙', + 'enableBluetoothDialogContent': '请开启蓝牙以扫描和连接设备。', + 'bleScanFailedWithError': '扫描失败: @error', + 'bleConnectionSuccess': '连接成功', + 'bleConnectedToDevice': '已连接到 @device', + 'bleConnectionFailedWithError': '连接失败: @error', + 'bleDisconnected': '已断开连接', + 'bleDeviceDisconnected': '设备已断开连接', + 'bleDisconnectFailedWithError': '断开连接失败: @error', + 'signalStrong': '信号强', + 'signalMedium': '信号中等', + 'signalWeak': '信号弱', + 'signalVeryWeak': '信号很弱', + + // 发现页 "searchAi": "搜索AI功能...", "exploreSlogan": "智能耳机,无限可能", "exploreSlogan1": "智能陪伴,无限可能", @@ -181,6 +203,7 @@ const Map zhCN = { "usageStats": "用量统计", "usageStatsInfo": "查看您的使用统计数据", "scene": "场景", + // 用量统计模块 "aiChat": "AI聊天", "translationStats": "翻译统计", @@ -201,7 +224,6 @@ const Map zhCN = { "translationApi": "翻译API", "asr": "语音识别", "tts": "语音合成", - //"aiSummary": "AI摘要", "dataVolumeStats": "数据量统计", "sourceTextCharacters": "源文本字符", "ttsTextCharacters": "TTS文本字符", @@ -218,7 +240,6 @@ const Map zhCN = { "totalAudioDuration": "音频总时长", "audioFileSize": "音频文件大小", "transcriptBytes": "转写字节", - // 通知文案 "loadFailed": "加载失败", "statsLoadFailedTryLater": "统计数据加载失败,请稍后重试", "cleanupComplete": "清理完成", @@ -226,7 +247,7 @@ const Map zhCN = { "exportFeature": "导出功能", "exportInDevelopment": "数据导出功能正在开发中", - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可购买套餐', 'remainingQuota': '剩余额度', 'totalQuota': '总额度', @@ -291,50 +312,54 @@ const Map zhCN = { 'alipayPaymentLaunchFailed': '支付宝支付启动失败', 'cannotLaunchAlipayPayment': '无法启动支付宝支付', 'alipayPaymentException': '支付宝支付异常', - // AI 功能卡片 + "insufficientIntegral": "积分不足", + "insufficientBalanceDesc": "余额不足,请前往对应充值界面进行充值", + "recharge": "前往充值", + "aiMemberExpiredDesc": "AI会员已到期,请前往会员充值续费", + + // 商品模块 - AI商品页 'musicAndRecommendation': '听歌与推荐', 'navigationAndRoutes': '导航与路线', 'nearbySearch': '附近搜索', 'newsInformation': '新闻资讯', 'communicationAssistant': '通讯助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更长对话额度、更多工具调用、更强上下文长度支持。', + 'aiHeaderDesc2': '适用于智能体问答、总结分析、任务执行等场景。', + 'musicSearchPlaybackControl': '检索曲库、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推荐歌单与相似歌曲', + 'routePlanningAndCongestionAvoidance': '路线规划与拥堵规避', + 'voiceBroadcastAndWaypoints': '语音播报与途径点设置', + 'realTimeWeatherForecast': '实时天气与预报', + 'clothingAdviceAndTravelReminders': '穿衣建议与出行提醒', + 'poiSearchFoodGasParking': '餐饮/加油/停车等地点检索', + 'ratingsHoursAndDirectRoutes': '评分、营业时间与路线直达', + 'hotNewsAndTopicOverview': '热点快讯与专题速览', + 'longArticleSummariesAndKeyPoints': '长文总结与要点提炼', + 'helpCallAndSMS': '帮忙拨打电话与发短信', + 'templatedMessagesAndScheduleReminders': '模板消息与日程提醒', + 'aiDisclaimer': '以上功能受设备权限、服务可用性与网络状况影响,具体以实际表现为准。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '实时同传', - // 'textTranslation' 已存在 'sceneLexicon': '场景词库', 'subtitleDisplay': '字幕显示', - // 会议功能卡片 + 'transHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。', + 'transHeaderDesc2': '适用于出行、商务、演讲与教学等场景。', + 'translateZhEn': '中英互译', + 'lowLatencyVoiceBroadcast': '低延时语音播报', + 'multiLangTextTranslation': '多语种文本翻译', + 'termOptimizationContextPreserve': '术语优化与语境保持', + 'lexiconTourBusinessLife': '旅游/商务/生活词库', + 'personalVocabularyMemory': '专属词汇记忆', + 'conversationSubtitleLargeText': '对话字幕/大字模式', + 'colorHighContrast': '颜色高对比度', + 'transDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。', + + // 商品模块 - 会议商品页 'meetingRecording': '会议记录', 'transcriptionAndSummary': '转写与总结', 'keywordSearch': '关键词检索', 'collaborationSharing': '协同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基础 100 次', - 'ai_002_name': 'AI基础 500 次', - 'ai_003_name': 'AI基础 1000 次', - 'meet_001_name': '会议基础 100 次', - 'meet_002_name': '会议基础 500 次', - 'meet_003_name': '会议基础 1000 次', - 'trans_001_name': '翻译基础 100 次', - 'trans_002_name': '翻译基础 500 次', - 'trans_003_name': '翻译基础 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,覆盖核心 AI 功能', - 'ai_002_desc': '含 500 次使用,覆盖核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,覆盖核心 AI 功能', - 'meet_001_desc': '含 100 次会议录音/转写', - 'meet_002_desc': '含 500 次会议录音/转写', - 'meet_003_desc': '含 1000 次会议录音/转写', - 'trans_001_desc': '含 100 次翻译(语音/文本)', - 'trans_002_desc': '含 500 次翻译(语音/文本)', - 'trans_003_desc': '含 1000 次翻译(语音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '应用名称:Voitrans · 服务提供:Voitrans', - 'iapCustomerServiceQQLabel': '内购商品专属客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '录音转写、关键词检索与自动总结,提升会议效率。', 'meetingHeaderDesc2': '适用于商务会议、课堂笔记、访谈纪要等场景。', 'meetingAutoRecording': '自动录音与分段', @@ -347,37 +372,7 @@ const Map zhCN = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建议在安静环境使用,效果受麦克风与网络影响,具体以实际表现为准。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多语种实时同传与文本翻译,低延时语音播报。', - 'transHeaderDesc2': '适用于出行、商务、演讲与教学等场景。', - 'translateZhEn': '中英互译', - 'lowLatencyVoiceBroadcast': '低延时语音播报', - 'multiLangTextTranslation': '多语种文本翻译', - 'termOptimizationContextPreserve': '术语优化与语境保持', - 'lexiconTourBusinessLife': '旅游/商务/生活词库', - 'personalVocabularyMemory': '专属词汇记忆', - 'conversationSubtitleLargeText': '对话字幕/大字模式', - 'colorHighContrast': '颜色高对比度', - 'transDisclaimer': '翻译效果受麦克风、网络时延与环境噪声影响,具体以实际表现为准。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更长对话额度、更多工具调用、更强上下文长度支持。', - 'aiHeaderDesc2': '适用于智能体问答、总结分析、任务执行等场景。', - 'musicSearchPlaybackControl': '检索曲库、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推荐歌单与相似歌曲', - 'routePlanningAndCongestionAvoidance': '路线规划与拥堵规避', - 'voiceBroadcastAndWaypoints': '语音播报与途径点设置', - 'realTimeWeatherForecast': '实时天气与预报', - 'clothingAdviceAndTravelReminders': '穿衣建议与出行提醒', - 'poiSearchFoodGasParking': '餐饮/加油/停车等地点检索', - 'ratingsHoursAndDirectRoutes': '评分、营业时间与路线直达', - 'hotNewsAndTopicOverview': '热点快讯与专题速览', - 'longArticleSummariesAndKeyPoints': '长文总结与要点提炼', - 'helpCallAndSMS': '帮忙拨打电话与发短信', - 'templatedMessagesAndScheduleReminders': '模板消息与日程提醒', - 'aiDisclaimer': '以上功能受设备权限、服务可用性与网络状况影响,具体以实际表现为准。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '权益总览', 'higherQuota': '更高使用额度', 'lowerUnitPrice': '更低单价', @@ -392,7 +387,32 @@ const Map zhCN = { 'crossDeviceSync': '跨设备同步', 'vipDisclaimer': '具体权益以实际套餐说明为准,可能随版本迭代调整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基础 100 次', + 'ai_002_name': 'AI基础 500 次', + 'ai_003_name': 'AI基础 1000 次', + 'meet_001_name': '会议基础 100 次', + 'meet_002_name': '会议基础 500 次', + 'meet_003_name': '会议基础 1000 次', + 'trans_001_name': '翻译基础 100 次', + 'trans_002_name': '翻译基础 500 次', + 'trans_003_name': '翻译基础 1000 次', + 'ai_001_desc': '含 100 次使用,覆盖核心 AI 功能', + 'ai_002_desc': '含 500 次使用,覆盖核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,覆盖核心 AI 功能', + 'meet_001_desc': '含 100 次会议录音/转写', + 'meet_002_desc': '含 500 次会议录音/转写', + 'meet_003_desc': '含 1000 次会议录音/转写', + 'trans_001_desc': '含 100 次翻译(语音/文本)', + 'trans_002_desc': '含 500 次翻译(语音/文本)', + 'trans_003_desc': '含 1000 次翻译(语音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '应用名称:Voitrans · 服务提供:Voitrans', + 'iapCustomerServiceQQLabel': '内购商品专属客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': '跳过', 'next': '下一步', 'sayLilyHint': '对着麦克风说:“Lily Lily”', @@ -403,7 +423,6 @@ const Map zhCN = { 'guideAwakenSuccess': '太棒了!你已成功唤醒Lily,接下来试试让它帮你做件事吧', 'confirmInput': '确定输入', 'guideClickSendPrefix': '点击发送,', - // AI 引导步骤 'guideWeatherStart': '对Lily说:“今天天气怎么样”', 'guideWeatherInput': '今天天气怎么样', 'guideWeatherSend': 'Lily会为你实时为你播报天气', @@ -429,7 +448,7 @@ const Map zhCN = { 'guideSmsSend': 'Lily会为你发送短信', 'guideSmsEnd': '短信已发送,语音操控更便捷', - // 商务会议助手页 + // Meeting模块 - 首页与导航 "startMeeting": "开始会议", 'edit': '编辑', 'delete': '删除', @@ -441,8 +460,6 @@ const Map zhCN = { 'recordingDetails': '录音详情', 'aiSummary': 'AI总结', 'meetingTranscript': '会议原文', - - // Meeting模块 - 导航和基础功能 'files': '文件', 'mine': '我的', 'connect': '连接', @@ -474,28 +491,25 @@ const Map zhCN = { 'audioVideoRecording': '音、视频录音', 'callRecording': '通话录音', 'importAudio': '导入音频', - 'meetingRecordExitTitle': '退出录音', // 退出录音 - 'meetingRecordExitMessage': '请选择离开后的操作', // 请选择离开后的操作 - 'meetingRecordEndAndSave': '结束录音并保存', // 结束录音并保存 - 'meetingRecordEndWithoutSave': '结束录音不保存', // 结束录音不保存 - 'meetingRecordContinueInBackground': '后台继续录音', // 后台继续录音 - 'meetingRecordStopTimeout': '结束录音超时,请重试', // 结束录音超时,请重试 - 'meetingRecordStopFailed': '结束录音失败,请重试', // 结束录音失败,请重试 - 'meetingRecordSaveFailed': '保存录音失败,请重试', // 保存录音失败,请重试 - 'meetingRecordRecordingNotificationTitle': '录音进行中', // 录音进行中 - 'meetingRecordRecordingNotificationBody': '正在后台录音,点击返回应用', // 正在后台录音,点击返回应用 - 'overlayPermissionTitle': '悬浮窗权限', // 悬浮窗权限 + 'meetingRecordExitTitle': '退出录音', + 'meetingRecordExitMessage': '请选择离开后的操作', + 'meetingRecordEndAndSave': '结束录音并保存', + 'meetingRecordEndWithoutSave': '结束录音不保存', + 'meetingRecordContinueInBackground': '后台继续录音', + 'meetingRecordStopTimeout': '结束录音超时,请重试', + 'meetingRecordStopFailed': '结束录音失败,请重试', + 'meetingRecordSaveFailed': '保存录音失败,请重试', + 'meetingRecordRecordingNotificationTitle': '录音进行中', + 'meetingRecordRecordingNotificationBody': '正在后台录音,点击返回应用', + 'overlayPermissionTitle': '悬浮窗权限', 'overlayPermissionTranslationDesc': - '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', // 为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。 - 'overlayPermissionRecordingDesc': - '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', // 为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。 - 'overlayPermissionOpenSettingsFailed': - '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。', // 无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。 + '为了在通话或音视频翻译时显示翻译结果,需要悬浮窗权限。这样您就可以在使用其他应用时看到实时翻译。', + 'overlayPermissionRecordingDesc': '为了在录音过程中显示录音悬浮条(计时/暂停/继续),需要悬浮窗权限。', + 'overlayPermissionOpenSettingsFailed': '无法自动跳转到系统设置,请手动前往系统设置开启悬浮窗权限。', 'transcribing': '正在转写...', 'summarizing': '正在总结...', 'analyzing': '正在分析...', 'summaryComplete': '总结完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概览', 'transcription': '转写', @@ -504,6 +518,94 @@ const Map zhCN = { 'editSpeaker': '编辑', 'nameSpeaker': '命名发言者', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新总结', + 'dateAndTime': '日期时间', + 'location': '地点', + 'attendees': '与会人员', + 'inputLocation': '输入地点', + 'inputAttendees': '输入与会人员', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '选择总结模版', + 'useThisTemplate': '就用这个模版', + 'lastUsed': '上次使用', + 'create': '创建', + 'templateDetails': '模版详情', + 'tag': '标签', + 'description': '描述', + 'template': '模版', + 'deleteTemplate': '删除模版', + 'deleteTemplateConfirm': '确定要删除当前模版吗?', + 'editTemplate': '编辑模版', + 'createTemplate': '创建模版', + 'name': '名称', + 'templateContentHint': '请输入模版内容!温馨提示:点击上方AI,根据上面填写的名称和描述,可以帮助你快速生成模版内容', + 'inputNameHint': '请输入名称', + 'inputDescHint': '请输入描述', + 'custom': '自定义', + 'pleaseEnter': '请输入', + 'viewAll': '查看全部', + 'recordingLanguage': '录音语言', + 'chineseSimplified': '中文普通话(简体)', + 'meetingGenerateNow': '立即生成', + 'keyEventsAnalyzed': '分析出{count}个关键事件。', + 'aiAnalysisDesc': 'AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。', + + // Meeting模块 - 文件操作 + 'importing': '正在导入...', + 'batchImporting': '正在批量导入...', + 'importingLocalRecordings': '正在导入本地录音...', + 'importFailed': '导入文件失败: {filePath}, error: {error}', + 'importSuccess': '成功导入本地 {count} 条录音', + 'importError': '导入失败: {error}', + 'pleaseSelectAudioFile': '请选择音频文件', + 'shareAudio': '分享会议音频', + 'shareComplete': '分享完成!', + 'shareFailed': '分享失败: {error}', + 'fileProcessingFailed': '文件处理失败: {filePath}, 错误: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '保存思维导图', + 'shareMindMap': '分享思维导图', + 'shareSuccess': '分享成功', + + // Meeting模块 - AI问答 + 'askAI': '问 AI ...', + 'askAIPrompt': '今天我能帮您做点什么呢?', + 'continueAsk': '继续提问', + 'todoList': '代办事项', + 'extractConclusion': '提取结论', + 'generateKeyIndicators': '生成关键指标', + + // Meeting模块 - 分享与导出 + 'shareLink': '分享链接', + 'copyTranscript': '复制转写', + 'copySummary': '复制总结', + 'exportAudio': '导出音频', + 'exportTranscript': '导出转写', + 'shareMeetingAudio': '分享会议音频', + 'exportSummary': '导出总结', + 'exportAs': '导出为', + 'exportingPDF': '正在导出PDF...', + 'export': '导出', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '应用到这个发言者的所有段落', + 'summaryWillBeUpdatedAutomatically': '总结将根据模版自动更新', + 'nameCurrentSpeaker': '命名当前发言者', + 'recentlyUsedNames': '最近使用过的名称', + 'applyToCurrentParagraph': '应用到当前段落', + 'totalTime': '总计', + 'summarySpeakerWillBeUpdatedAutomatically': '总结的发言者将自动更新', + + // Meeting模块 - 云端同步 + 'syncToCloud': '同步到云端', + 'syncToCloudTip': + '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', + 'syncToVoitransApp': '同步VOITRANS APP', + 'transcriptionRecord': '转写记录', + // Meeting模块 - 我的页面 'transcriptionRecords': '转写记录', 'templateCommunity': '模版社区', @@ -522,7 +624,7 @@ const Map zhCN = { 'bindDeviceToActivate': '绑定 Voitrans 设备可激活 Starter 会员', 'unlockNow': '立即解锁', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': '对比', 'detailedInfo': '详细信息', 'monthlyTranscriptionTime': '每月转写时长', @@ -548,8 +650,6 @@ const Map zhCN = { 'aiVoiceEnhancementDesc': 'Al 人声增强支持多档降噪设置,智能消除背景噪音,增强语音清晰度,提升音频回放效果。', 'audioImportDesc': '可以轻松从本地或第三方应用导入音频文件,如语音备忘录、Google云端硬盘等。', 'multipleExportFormatsDesc': '导出您的音频录音、转写文本和摘要为各种格式(TXT、PDF、JPEG),以满足您的需求。', - - // Meeting模块 - 升级会员 'upgradeMembership': '升级您的会员', 'yearlySubscription': '年订阅', 'monthlySubscription': '月订阅', @@ -574,132 +674,27 @@ const Map zhCN = { 'validityNote': '购买后立即激活,激活后2年内有效。', 'purchase': '购买', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': '选择总结模版', - 'useThisTemplate': '就用这个模版', - 'lastUsed': '上次使用', - 'create': '创建', - 'templateDetails': '模版详情', - 'tag': '标签', - 'description': '描述', - 'template': '模版', - 'deleteTemplate': '删除模版', - 'deleteTemplateConfirm': '确定要删除当前模版吗?', - 'editTemplate': '编辑模版', - 'createTemplate': '创建模版', - 'name': '名称', - 'templateContentHint': '请输入模版内容!温馨提示:点击上方AI,根据上面填写的名称和描述,可以帮助你快速生成模版内容', - 'inputNameHint': '请输入名称', - 'inputDescHint': '请输入描述', - 'custom': '自定义', - 'viewAll': '查看全部', - 'recordingLanguage': '录音语言', - 'chineseSimplified': '中文普通话(简体)', - 'meetingGenerateNow': '立即生成', - 'keyEventsAnalyzed': '分析出{count}个关键事件。', - 'aiAnalysisDesc': 'AI分析识别录音中的关键事件,让你选择重要事件进行AI生成。', - - // Meeting模块 - 文件操作和状态 - 'importing': '正在导入...', - 'batchImporting': '正在批量导入...', - 'importingLocalRecordings': '正在导入本地录音...', - 'importFailed': '导入文件失败: {filePath}, error: {error}', - 'importSuccess': '成功导入本地 {count} 条录音', - 'importError': '导入失败: {error}', - 'pleaseSelectAudioFile': '请选择音频文件', - 'shareAudio': '分享会议音频', - 'shareComplete': '分享完成!', - 'shareFailed': '分享失败: {error}', - 'fileProcessingFailed': '文件处理失败: {filePath}, 错误: {error}', + // Meeting模块 - 录音语言 + 'recordLanguage': '录音语言', + 'cantonese': '粤语', + 'sichuan': '四川话', + 'shanghai': '上海话', - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': '未知语言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '存储', - 'meetingStoragePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', - 'meetingStoragePermissionPermanentDenial': - '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': '保存思维导图', - 'shareMindMap': '分享思维导图', - 'shareSuccess': '分享成功', - - // Meeting模块 - AI相关 - 'askAI': '问 AI ...', - 'askAIPrompt': '今天我能帮您做点什么呢?', - 'continueAsk': '继续提问', - 'todoList': '代办事项', - 'extractConclusion': '提取结论', - 'generateKeyIndicators': '生成关键指标', - - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新总结', - - // Meeting模块 - 错误提示相关 'analysisFailed': '分析失败,请稍后重试', 'transcriptionFailed': '转写失败,请稍后重试', 'summaryFailed': '总结失败,请稍后重试', 'summaryFailedShort': '总结失败', 'transcriptionFailedShort': '转写失败', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': '音频播放器未准备好,请稍候', 'playFailed': '播放失败', 'audioFileNotFound': '音频文件不存在', 'fetchingAudio': '正在从云端获取音频...', // 导出音频时本地文件不存在,尝试从云端下载的提示 'playerLoadFailed': '音频播放器加载失败', - // Meeting模块 - 录音语言相关 - 'recordLanguage': '录音语言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粤语', - 'sichuan': '四川话', - 'shanghai': '上海话', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': '分享链接', - 'copyTranscript': '复制转写', - 'copySummary': '复制总结', - 'exportAudio': '导出音频', - 'exportTranscript': '导出转写', - 'shareMeetingAudio': '分享会议音频', - 'exportSummary': '导出总结', - 'exportAs': '导出为', - 'exportingPDF': '正在导出PDF...', - 'export': '导出', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '应用到这个发言者的所有段落', - 'summaryWillBeUpdatedAutomatically': '总结将根据模版自动更新', - 'nameCurrentSpeaker': '命名当前发言者', - 'recentlyUsedNames': '最近使用过的名称', - 'applyToCurrentParagraph': '应用到当前段落', - 'totalTime': '总计', - 'summarySpeakerWillBeUpdatedAutomatically': '总结的发言者将自动更新', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': '同步到云端', - 'syncToCloudTip': - '自动将你的录音同步到云端,你可以通过任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享录音。', - 'syncToVoitransApp': '同步VOITRANS APP', - 'transcriptionRecord': '转写记录', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期时间', - 'location': '地点', - 'attendees': '与会人员', - 'inputLocation': '输入地点', - 'inputAttendees': '输入与会人员', - // 设置页 "systemSettings": "系统设置", "vipRecharge": "会员充值", @@ -747,25 +742,14 @@ const Map zhCN = { "bleHeadsetFirmwareUpgrade": "BLE耳机固件版本升级", "deviceManagement": "设备管理", "manageConnectedDevices": "管理已绑定的蓝牙设备", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '当前已是最新版本 {version}', 'checkUpdateFailed': '检查更新失败', 'networkErrorRetry': '网络错误,请稍后重试', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "实时语音对话", "realtimeVoiceChatInfo": "体验智能语音交互功能(功能预览)", "loading": "加载中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": "未知设备", "deviceTypeClassicBluetoothHeadset": "经典蓝牙耳机", "deviceTypeBleBluetoothHeadset": "BLE蓝牙耳机", @@ -780,8 +764,7 @@ const Map zhCN = { "confirmUnbindMessage": "确定要解绑设备 \"{deviceName}\" 吗?", "confirmUnbindAction": "确认解绑", -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天记录", "online": "在线", @@ -814,7 +797,7 @@ const Map zhCN = { "voice_interrupt_tip": "开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词开启新一轮对话。", // 开启后:AI播报时不会被语音打断,只能进行单轮对话,需要打断时请说唤醒词。关闭后:播报期间保持拾音,可能出现回声或误触发。 - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": "来点音乐", // 来点音乐 "presetNavigation": "导航到", // 导航 "presetWeather": "今日天气", // 今日天气 @@ -826,7 +809,7 @@ const Map zhCN = { "todayNews": "今天有哪些新闻?", // 今日新闻 "nearbyFood": "附近有哪些美食?", // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能帮你:\n\n' '• 回答问题和提供信息\n\n' '• 实时语音翻译\n\n' @@ -842,18 +825,17 @@ const Map zhCN = { 'startVoiceInput': '开始语音输入', 'startPhoneCallMode': '开始打电话模式,开始语音输入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在这里输入你的消息...', // 全屏编辑器输入提示 'characterCount': '{count} 字符', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '复制', 'copySuccess': '复制成功', 'report': '举报', 'submitSuccess': '提交成功', 'submitFailed': '提交失败', 'reportSubmitted': '举报已提交,我们会尽快处理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '误导攻击', @@ -862,24 +844,28 @@ const Map zhCN = { 'copyrightViolation': '侵犯我的著作权、名誉权等', 'other': '其他', 'reportDescriptionHint': '我们想知道你举报的原因,你可以描述你遇到的问题。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': '工具调用', + 'noResult': '无结果', + 'noToolCallContentToCopy': '没有工具调用内容可以拷贝', + 'toolCallDetails': '工具调用详情:', + 'toolCallContentCopied': '工具调用内容已复制到剪贴板', + + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推荐的音乐:', 'playList': '播放列表', 'moreMusic': '更多音乐', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小时', // 小时单位 'minutes': '分钟', // 分钟单位 'seconds': '秒', // 秒单位 'navigating': '导航中', // 导航状态 - 'currentLocation': '当前位置', // 当前位置 + 'currentLocation': '当前位置', 'approximate': '约', // 大约 'enterRoad': '进入', // 进入道路 "driving": "驾车", @@ -887,7 +873,29 @@ const Map zhCN = { "bicycling": "骑行", "tsransit": "公交", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': '选择导航软件', + 'amapMap': '高德地图', + 'useAmapNavigation': '使用高德地图导航', + 'baiduMap': '百度地图', + 'useBaiduNavigation': '使用百度地图导航', + 'googleMap': '谷歌地图', + 'useGoogleNavigation': '使用谷歌地图导航', + 'appleMap': '苹果地图', + 'useAppleNavigation': '使用苹果地图导航', + 'builtInNavigation': '内置导航', + 'useBuiltInNavigation': '使用内置地图导航', + 'navigationStartFailed': '启动导航失败', + 'cannotPlayMusicListRetryLater': '无法播放音乐列表,请稍后重试', + 'cannotPlaySong': '无法播放歌曲', + 'openMapError': '打开地图时发生错误', + 'pleaseInstallAmapApp': '请先安装高德地图应用', + 'pleaseInstallBaiduMapApp': '请先安装百度地图应用', + 'appleMapStartFailed': '苹果地图启动失败', + 'appleMapUnavailable': '苹果地图不可用', + 'openAppleMapError': '打开苹果地图时发生错误', + + // Agent模块 - 天气卡片 'weatherQuery': '查询天气情况:', 'highest': '最高', 'lowest': '最低', @@ -908,18 +916,8 @@ const Map zhCN = { "friday": "周五", "saturday": "周六", "sunday": "周日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": "Welcome Reward", - "firstBindRewardDesc": "You've received binding rewards.", - "vipLevelLabel": "VIP Level:", - "expiryLabel": "到期时间:", - "notActivated": "未激活", - "aiChatCreditsLabel": "AI Chat Credits:", - "translationCreditsLabel": "Translation Credits:", - "meetingCreditsLabel": "Meeting Credits:", - "ok": "OK", - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少云", "partlySunny": "晴间多云", @@ -940,7 +938,129 @@ const Map zhCN = { "haze": "霾", "strongWind": "大风", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": "图片翻译", + "textTranslation": "文本翻译", + + // 翻译模块 - 主页 + "translationHistory": "翻译历史", + "enableRecording": "是否开启录音", + "viewAudioFiles": "查看录音文件", + "headsetUser": "耳机用户", + "phoneUser": "手机用户", + "selectSourceLanguage": "选择源语言", + "selectTargetLanguage": "选择目标语言", + "me": "我", + "counterPart": "对方", + "bluetoothCallStateError": "请确保蓝牙耳机已连接到手机并处于通话状态", + "autoDetect": "自动检测", // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': '禁用悬浮窗', + 'enableFloatingWindow': '启用悬浮窗', + 'permissionTip': '权限提示', + 'micPermissionRequiredForRecording': '需要麦克风权限才能使用录音功能', + 'deleteTranslationRecordError': '删除翻译记录时发生错误: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": "语言检测失败", + "inputTextToTranslate": "请输入待翻译的文本", + "translationFailed": "翻译失败", + "translating": "正在翻译", + "translate": "翻译", + "pleaseInputText": "请输入文本", + "textTooLong": "文本过长,最多5000字符", + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暂无历史记录", + "historyRecords": "历史记录", + "clearResults": "清空结果", + "clearHistory": "清除历史记录", + "clearHistoryConfirm": "确定要清除所有翻译历史记录吗?此操作无法撤销。", + "unknownLanguage": "未知语言", + "deleteSessionRecord": "删除会话记录", + "deleteSessionConfirm": "确定要删除该会话的所有翻译记录吗?此操作无法撤销。", + + // 翻译模块 - 图片翻译 + "selectImageSource": "选择图片来源", + "imagePreview": "图片预览", + "translationResult": "翻译结果", + "recognitionResult": "识别结果", + "translatedImagePreview": "翻译后的图片预览", + "translatedImageLoadFailed": "翻译图片加载失败", + "pleaseSelectImage": "请选择图片", + "imageLoadFailed": "图片加载失败", + "imageQuality": "图片质量", + "maxSize": "最大尺寸", + "close": "关闭", + "setImageQuality": "设置图片质量", + "currentQuality": "当前质量: @value%", + "setMaxSize": "设置最大尺寸", + "currentMaxSize": "当前: @pxpx", + "waitingForAction": "等待操作", + "pleaseSelectImageToStart": "请选择图片开始翻译", + "chooseImage": "选择图片", + "openingCamera": "正在打开相机...", + "openingPhotoAlbum": "正在打开相册...", + "cancelled": "已取消", + "userCancelledSelection": "用户取消了选择", + "translatingImage": "翻译图片", + "callingImageTranslateService": "正在调用图片翻译服务...", + "savingRecord": "保存记录", + "savingTranslationResult": "正在保存翻译结果...", + "translationCompleted": "翻译完成", + "allStepsCompleted": "所有步骤已完成", + "processingFailed": "处理失败", + "imageProcessingOrTranslationFailed": "图片处理或翻译失败,请重试。\n错误信息: {error}", + "imageTooLarge": "图片大小超过4MB限制", + "imageTooLargeHint": "图片大小超过4MB限制,请降低质量或尺寸后重试", + "emptyTranslationResult": "图片翻译接口返回空结果", + "imageTranslationFailedTryLater": "图片翻译失败,可能的原因:网络异常或接口限流,请稍后重试", + "imageTranslationApiException": "图片翻译接口调用异常,请检查网络后重试", + "permissionRequired": "权限需求", + "cameraPermissionRequired": "需要相机权限才能拍照", + "photoAlbumPermissionRequired": "需要相册权限才能选择图片", + "translationDetails": "翻译详情", + "originalImage": "原图片", + "sourceLanguage": "源语言", + "targetLanguage": "目标语言", + "translationTime": "翻译时间", + "shareInDevelopment": "分享功能开发中", + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻译录音文件", + "noAudioFiles": "暂无音频文件", + "calculating": "计算中...", + "playing": "播放中...", + "paused": "已暂停", + "clickToPlay": "点击播放", + "rename": "重命名", + "smartTranscription": "智能转写", + "renameAudioFile": "重命名音频文件", + "enterNewFileName": "请输入新的文件名", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始记录", + "recordSummary": "记录摘要", + "clickToGenerateSummary": "点击下方按钮生成会话摘要", + "summaryContent": "摘要内容", + "copied": "已复制", + "summaryCopiledToClipboard": "摘要已复制到剪贴板", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要请求超时,可能是网络问题或服务器繁忙。", + "deleteTranslationRecord": "删除翻译记录", + "deleteTranslationConfirm": "确定要删除这条翻译记录吗?此操作无法撤销。", + "originalText": "原文", + "translatedText": "译文", + "sessionSummary": "会话摘要", + "cannotShare": "无法分享", + "generateSummaryFirst": "请先生成摘要", + "translationSessionRecord": "翻译会话记录", + + // 个人资料模块 "editProfile": "编辑个人信息", "avatar": "头像", "nickname": "昵称", @@ -955,8 +1075,6 @@ const Map zhCN = { 'deleteAccountTips': '确定要永久删除您的账号吗?此操作不可撤销', 'clean': '清除缓存', 'cleanTips': '确定要清除个人缓存吗?', - - // Profile 错误信息 'networkConnectionFailed': '网络连接失败,请检查网络设置后重试', 'serverTemporarilyUnavailable': '服务器暂时无法响应,请稍后重试', 'loginExpiredPleaseRelogin': '登录已过期,请重新登录', @@ -968,10 +1086,6 @@ const Map zhCN = { 'serverError': '服务器错误', 'networkConnectionFailedCheckSettings': '网络连接失败,请检查网络设置', 'serverInternalErrorRetryLater': '服务器内部错误,请稍后重试', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '图片压缩失败', 'avatarUpdateFailed': '头像更新失败', 'usernameCannotBeEmpty': '用户名不能为空', @@ -982,19 +1096,21 @@ const Map zhCN = { 'logoutFailedRetry': '退出登录失败,请重试', 'accountPermanentlyDeleted': '账号已被永久删除', 'deleteAccountFailedRetry': '删除账号失败,请重试', - - // 账号服务相关 - 'clearUserDataFailed': '清理用户数据失败', // 清理用户数据失败 - 'deleteUserDataFailed': '删除用户数据失败', // 删除用户数据失败 - 'thirdPartyLogoutSuccess': '第三方登录退出成功', // 第三方登录退出成功 - 'thirdPartyLogoutFailed': '第三方登录退出失败', // 第三方登录退出失败 - 'signOutProcessError': '登出过程发生错误', // 登出过程发生错误 - 'deleteAccountProcessError': '删除账号过程发生错误', // 删除账号过程发生错误 - 'userDataClearSuccess': '用户数据清理成功', // 用户数据清理成功 - 'allUserDataClearSuccess': '所有用户数据清理成功', // 所有用户数据清理成功 - 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - - // 权限管理页面 + 'clearUserDataFailed': '清理用户数据失败', + 'deleteUserDataFailed': '删除用户数据失败', + 'thirdPartyLogoutSuccess': '第三方登录退出成功', + 'thirdPartyLogoutFailed': '第三方登录退出失败', + 'signOutProcessError': '登出过程发生错误', + 'deleteAccountProcessError': '删除账号过程发生错误', + 'userDataClearSuccess': '用户数据清理成功', + 'allUserDataClearSuccess': '所有用户数据清理成功', + 'accountServiceInitialized': '账号服务已初始化', + + // 权限模块 + 'meetingStoragePermission': '存储', + 'meetingStoragePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', + 'meetingStoragePermissionPermanentDenial': + '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', 'getPermissionStatusFailed': '获取权限状态失败', 'communicationPermissions': '通讯权限', 'bluetoothPermissions': '蓝牙权限', @@ -1007,7 +1123,6 @@ const Map zhCN = { 'phone': '电话', 'sms': '短信', 'contacts': '联系人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '闹钟', 'calendarWrite': '日历写入', @@ -1046,8 +1161,6 @@ const Map zhCN = { 'appNeedsPermissionForFullFunction': '应用需要此权限以提供完整功能', 'permanentDenialText': '您已永久拒绝{permission}权限,请前往应用设置开启', 'goToSettings': '去设置', - - // 权限申请 'bluetoothScan': '蓝牙扫描', 'bluetoothConnect': '蓝牙连接', 'bluetoothScanExplanation': '为了扫描附近的蓝牙设备,应用需要获取蓝牙扫描权限。', @@ -1062,7 +1175,6 @@ const Map zhCN = { 'locationPermissionExplanation': '需要定位权限来获取当前位置。', 'notificationPermissionPermanentDenial': '您已永久拒绝通知权限,请前往设置开启权限。', 'locationPermissionPermanentDenial': '您已永久拒绝定位权限,请前往设置开启权限。', -//'microphonePermission': '录音', 'storagePermission': '存储', 'microphonePermissionExplanation': '我们需要访问麦克风权限,以便您录制音频内容。', 'storagePermissionExplanation': '我们需要访问存储权限,以便您可以选择并上传音频文件。', @@ -1070,6 +1182,11 @@ const Map zhCN = { '检测到您已永久拒绝录音权限。如需继续使用此功能,请前往应用设置中手动开启麦克风权限。', 'storagePermissionPermanentDenial': '检测到您已永久拒绝存储权限。如需继续使用此功能,请前往应用设置中手动开启存储权限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '权限', + 'permissionUtilRestricted': '权限受限', + 'permissionUtilRestrictedMessage': '此功能在当前设备上不可用或受限,请检查设备设置或系统限制', + 'permissionUtilConfirm': '确定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1084,14 +1201,7 @@ const Map zhCN = { 'native.notification.music.pause': '暂停', 'native.notification.qqMusic.playing': '正在播放音乐', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '权限', - 'permissionUtilRestricted': '权限受限', - 'permissionUtilRestrictedMessage': '此功能在当前设备上不可用或受限,请检查设备设置或系统限制', - 'permissionUtilConfirm': '确定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '发现新版本', // 版本更新对话框标题 'remindLater': '稍后提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1100,242 +1210,7 @@ const Map zhCN = { 'cannotOpenAppStore': '无法打开应用商店,请手动前往应用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新过程中发生错误,请稍后重试', // 更新错误重试提示 - //国家列表 - "邮箱": "邮箱", - "中国": "中国", - "美国": "美国", - "加拿大": "加拿大", - "俄罗斯": "俄罗斯", - "英国": "英国", - "德国": "德国", - "意大利": "意大利", - "法国": "法国", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韩国", - "新加坡": "新加坡", - "马来西亚": "马来西亚", - "泰国": "泰国", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律宾", - "印度尼西亚": "印度尼西亚", - "阿联酋": "阿联酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亚", - "新西兰": "新西兰", - "中国香港": "中国香港", - "中国澳门": "中国澳门", - "中国台湾": "中国台湾", - "埃及": "埃及", - "希腊": "希腊", - "荷兰": "荷兰", - "比利时": "比利时", - "匈牙利": "匈牙利", - "罗马尼亚": "罗马尼亚", - "瑞士": "瑞士", - "奥地利": "奥地利", - "丹麦": "丹麦", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波兰", - "秘鲁": "秘鲁", - "智利": "智利", - "哥伦比亚": "哥伦比亚", - "委内瑞拉": "委内瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "卢森堡", - "爱尔兰": "爱尔兰", - "冰岛": "冰岛", - "阿尔巴尼亚": "阿尔巴尼亚", - "马耳他": "马耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬兰", - "保加利亚": "保加利亚", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脱维亚", - "爱沙尼亚": "爱沙尼亚", - "乌克兰": "乌克兰", - "塞尔维亚": "塞尔维亚", - "克罗地亚": "克罗地亚", - "斯洛文尼亚": "斯洛文尼亚", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地马拉", - "萨尔瓦多": "萨尔瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯达黎加", - "巴拿马": "巴拿马", - "海地": "海地", - "玻利维亚": "玻利维亚", - "厄瓜多尔": "厄瓜多尔", - "巴拉圭": "巴拉圭", - "乌拉圭": "乌拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿尔及利亚", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亚", - "加纳": "加纳", - "埃塞俄比亚": "埃塞俄比亚", - "肯尼亚": "肯尼亚", - "坦桑尼亚": "坦桑尼亚", - "乌干达": "乌干达", - "孟加拉国": "孟加拉国", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "约旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔尔", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里兰卡", - "缅甸": "缅甸", - "尼泊尔": "尼泊尔", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老挝", - "文莱": "文莱", - "东帝汶": "东帝汶", - "斐济": "斐济", - "所罗门群岛": "所罗门群岛", - "刚果民主共和国": "刚果民主共和国", - "安哥拉": "安哥拉", - "苏丹": "苏丹", - "马尔代夫": "马尔代夫", - "不丹": "不丹", - "摩纳哥": "摩纳哥", - "圣马力诺": "圣马力诺", - "牙买加": "牙买加", - "巴哈马": "巴哈马", - "巴布亚新几内亚": "巴布亚新几内亚", - "萨摩亚": "萨摩亚", - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": "图片翻译", - "textTranslation": "文本翻译", - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻译历史", - "enableRecording": "是否开启录音", - "viewAudioFiles": "查看录音文件", - "headsetUser": "耳机用户", - "phoneUser": "手机用户", - "selectSourceLanguage": "选择源语言", - "selectTargetLanguage": "选择目标语言", - "me": "我", - "counterPart": "对方", - "bluetoothCallStateError": "请确保蓝牙耳机已连接到手机并处于通话状态", - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": "自动检测", // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": "语言检测失败", - "translationFailed": "翻译失败", - "pleaseInputText": "请输入文本", - "textTooLong": "文本过长,最多5000字符", - - // 翻译历史页 - "noTranslationHistory": "暂无历史记录", - "historyRecords": "历史记录", - "clearResults": "清空结果", - "clearHistory": "清除历史记录", - "clearHistoryConfirm": "确定要清除所有翻译历史记录吗?此操作无法撤销。", - "unknownLanguage": "未知语言", - "deleteSessionRecord": "删除会话记录", - "deleteSessionConfirm": "确定要删除该会话的所有翻译记录吗?此操作无法撤销。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": "选择图片来源", - "imagePreview": "图片预览", - "translationResult": "翻译结果", - "recognitionResult": "识别结果", - "translatedImagePreview": "翻译后的图片预览", - "translatedImageLoadFailed": "翻译图片加载失败", - "pleaseSelectImage": "请选择图片", - "imageLoadFailed": "图片加载失败", - "imageQuality": "图片质量", - "maxSize": "最大尺寸", - "close": "关闭", - "setImageQuality": "设置图片质量", - "currentQuality": "当前质量: @value%", - "setMaxSize": "设置最大尺寸", - "currentMaxSize": "当前: @pxpx", - "waitingForAction": "等待操作", - "pleaseSelectImageToStart": "请选择图片开始翻译", - "chooseImage": "选择图片", - "openingCamera": "正在打开相机...", - "openingPhotoAlbum": "正在打开相册...", - "cancelled": "已取消", - "userCancelledSelection": "用户取消了选择", - "translatingImage": "翻译图片", - "callingImageTranslateService": "正在调用图片翻译服务...", - "savingRecord": "保存记录", - "savingTranslationResult": "正在保存翻译结果...", - "translationCompleted": "翻译完成", - "allStepsCompleted": "所有步骤已完成", - "processingFailed": "处理失败", - "imageProcessingOrTranslationFailed": "图片处理或翻译失败,请重试。\n错误信息: {error}", - "imageTooLarge": "图片大小超过4MB限制", - "imageTooLargeHint": "图片大小超过4MB限制,请降低质量或尺寸后重试", - "emptyTranslationResult": "图片翻译接口返回空结果", - "imageTranslationFailedTryLater": "图片翻译失败,可能的原因:网络异常或接口限流,请稍后重试", - "imageTranslationApiException": "图片翻译接口调用异常,请检查网络后重试", - "permissionRequired": "权限需求", - "cameraPermissionRequired": "需要相机权限才能拍照", - "photoAlbumPermissionRequired": "需要相册权限才能选择图片", - "translationDetails": "翻译详情", - "originalImage": "原图片", - "sourceLanguage": "源语言", - "targetLanguage": "目标语言", - "translationTime": "翻译时间", - "shareInDevelopment": "分享功能开发中", - - // 翻译录音文件列表页 - "translateAudioFiles": "翻译录音文件", - "noAudioFiles": "暂无音频文件", - "calculating": "计算中...", - "playing": "播放中...", - "paused": "已暂停", - "clickToPlay": "点击播放", - "rename": "重命名", - "smartTranscription": "智能转写", - "renameAudioFile": "重命名音频文件", - "enterNewFileName": "请输入新的文件名", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始记录", - "recordSummary": "记录摘要", - "clickToGenerateSummary": "点击下方按钮生成会话摘要", - "summaryContent": "摘要内容", - "copied": "已复制", - "summaryCopiledToClipboard": "摘要已复制到剪贴板", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要请求超时,可能是网络问题或服务器繁忙。", - "deleteTranslationRecord": "删除翻译记录", - "deleteTranslationConfirm": "确定要删除这条翻译记录吗?此操作无法撤销。", - "originalText": "原文", - "translatedText": "译文", - "sessionSummary": "会话摘要", - "cannotShare": "无法分享", - "generateSummaryFirst": "请先生成摘要", - "translationSessionRecord": "翻译会话记录", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "设备配对", "connectYourDeepSoundHeadset": "连接您的 Voitrans 耳机", "bind": "绑定", @@ -1344,14 +1219,11 @@ const Map zhCN = { "autoInputCode": "自动输入代码", "skipBinding": "跳过绑定", "rescan": "重新扫描", - "verifyingDevice": "正在验证设备...", "confirmBinding": "确认绑定", "associatingDevice": "正在关联设备...", "goToBluetoothSettings": "前往蓝牙设置", 'bluetooth': '蓝牙', - - // 配对状态文本 "readyToPair": "准备开始配对", "preparingPairingEnvironment": "正在准备配对环境...", "connectDeepSoundViaSystemBluetooth": "请先通过系统蓝牙连接Voitrans设备", @@ -1359,8 +1231,6 @@ const Map zhCN = { "establishingDeviceAssociation": "正在建立设备关联...", "waitingCompletePairing": "请稍候,正在完成配对...", "pairingSuccessRedirecting": "配对成功!即将跳转到主页...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "当前使用设备:%s,请确保连接的是Voitrans支持的设备", "deviceAlreadyBoundToOtherAccount": "该设备已被其他账号绑定", "deviceAssociationFailed": "设备关联失败,请重试", @@ -1368,18 +1238,11 @@ const Map zhCN = { "networkError": "网络错误", "authorizationFailedCheckCode": "授权失败,请检查授权码是否正确", "pairingFailedRetry": "配对失败,请重试", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '请开启蓝牙', 'deviceDisconnected': '设备已断开', 'readyToStartPairing': '准备开始配对', 'checkingEnvironment': '正在检查环境...', 'ensureHeadsetOnAndPairingMode': '请确保耳机已开启并进入配对模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全连接...', 'needManualBindingAuthCode': '需要手动绑定授权码...', 'pairingSuccessful': '配对成功!', @@ -1398,17 +1261,26 @@ const Map zhCN = { 'blePairingStartupFailed': 'BLE配对启动失败', 'bleConnectionFailed': 'BLE连接失败', 'deviceAuthorizationFailedCheckCode': '设备授权失败,请检查授权码', + 'bluetoothGuideTitle': '需要手动开启蓝牙', + 'bluetoothGuideSteps': '请按照以下步骤操作:', + 'bluetoothGuideStep1': '开启蓝牙:设置 → 蓝牙 → 开启', + 'bluetoothGuideStep2': '连接设备:在"我的设备"中找到您的设备并点击连接', + 'bluetoothGuideStep3': '返回应用继续配对流程', + 'bluetoothGuideTip': '提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置', + 'iKnow': '我知道了', + + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": "首次绑定奖励", + "firstBindRewardDesc": "您已领取绑定奖励。", + "vipLevelLabel": "VIP等级:", + "expiryLabel": "到期时间:", + "notActivated": "未激活", + "aiChatCreditsLabel": "AI聊天额度:", + "translationCreditsLabel": "翻译额度:", + "meetingCreditsLabel": "会议额度:", + "ok": "确定", - ///iOS蓝牙引导窗 - 'bluetoothGuideTitle': '需要手动开启蓝牙', // 需要手动开启蓝牙 - 'bluetoothGuideSteps': '请按照以下步骤操作:', // 请按照以下步骤操作: - 'bluetoothGuideStep1': '开启蓝牙:设置 → 蓝牙 → 开启', // 开启蓝牙:设置 → 蓝牙 → 开启 - 'bluetoothGuideStep2': '连接设备:在"我的设备"中找到您的设备并点击连接', // 连接设备:在"我的设备"中找到您的设备并点击连接 - 'bluetoothGuideStep3': '返回应用继续配对流程', // 返回应用继续配对流程 - 'bluetoothGuideTip': '提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 - 'iKnow': '我知道了', // 我知道了 - - //用户反馈页 + // 用户反馈模块 "feedback": "用户反馈", 'feedbackInfo': '提供反馈或建议', 'feedbackDescription': '请描述您遇到的问题或建议', @@ -1443,7 +1315,52 @@ const Map zhCN = { "updateContent": "更新内容", "removeEarbudsEnsureBattery": "取出双耳机,并保证电量均为20%以上的状态", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': '发现新版本 @version', + 'otaConfirmUpdateNow': '是否立即更新?', + 'otaUpdate': '更新', + 'otaUpgradeSuccess': '升级成功', + 'otaUpgradeCompleteRepair': '固件升级已完成!\n\n设备需要重新配对才能正常使用,现在跳转到配对页面吗?', + 'otaPairLater': '稍后配对', + 'otaPairNow': '立即配对', + 'okConfirm': '确定', + + // OTA升级模块 - 设备检查 + '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': '本次更新包含性能优化和错误修复。', + 'otaGetLatestVersionFailed': '获取最新版本信息失败', + 'otaGetVersionInfoFailed': '获取版本信息失败', + 'otaCheckingDeviceStatus': '正在检查设备状态...', + 'otaDownloadFailedCheckNetwork': '下载失败,请检查网络连接', + 'otaDownloadFailed': '下载失败', + 'otaPreparingConnection': '准备设备连接...', + 'otaConnectingDevice': '正在连接设备...', + 'otaUpgradeStarted': 'OTA升级已开始...', + 'otaUpgradeProgressWithPercent': '升级进度: @percent%', + 'otaUpgradeSuccessComplete': '升级成功完成', + 'otaUpgradeFailedWithCode': '升级失败,错误码:@code', + 'otaUpgradeFailedTitle': '升级失败', + 'otaUpgradeFailedDesc': '请检查设备连接或升级包,错误码:@code', + 'otaDeviceDisconnected': '设备连接断开', + 'otaDeviceConnected': '设备连接成功', + + // 音乐模块 "noMusic": "暂无音乐", // 暂无音乐 "noPlayingMusic": "暂无播放音乐", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1491,20 +1408,122 @@ const Map zhCN = { "波斯语": "波斯语", "斯瓦希里语": "斯瓦希里语", - // 时间相关 - "justNow": "刚刚", - "minutesAgo": "@minutes分钟前", - "yesterday": "昨天", - // 时间扩展(图片翻译模块使用) - "daysAgo": "@days天前", - "hoursAgo": "@hours小时前", - - //补充 - "insufficientIntegral": "积分不足", - - //余额不足弹窗 - "insufficientBalanceDesc": "余额不足,请前往对应充值界面进行充值", - "recharge": "前往充值", - // 会员到期提示 - "aiMemberExpiredDesc": "AI会员已到期,请前往会员充值续费", + // 国家列表 + "邮箱": "邮箱", + "中国": "中国", + "美国": "美国", + "加拿大": "加拿大", + "俄罗斯": "俄罗斯", + "英国": "英国", + "德国": "德国", + "意大利": "意大利", + "法国": "法国", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": "沙特阿拉伯", + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韩国", + "新加坡": "新加坡", + "马来西亚": "马来西亚", + "泰国": "泰国", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律宾", + "印度尼西亚": "印度尼西亚", + "阿联酋": "阿联酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亚", + "新西兰": "新西兰", + "中国香港": "中国香港", + "中国澳门": "中国澳门", + "中国台湾": "中国台湾", + "埃及": "埃及", + "希腊": "希腊", + "荷兰": "荷兰", + "比利时": "比利时", + "匈牙利": "匈牙利", + "罗马尼亚": "罗马尼亚", + "瑞士": "瑞士", + "奥地利": "奥地利", + "丹麦": "丹麦", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波兰", + "秘鲁": "秘鲁", + "智利": "智利", + "哥伦比亚": "哥伦比亚", + "委内瑞拉": "委内瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "卢森堡", + "爱尔兰": "爱尔兰", + "冰岛": "冰岛", + "阿尔巴尼亚": "阿尔巴尼亚", + "马耳他": "马耳他", + "塞浦路斯": "塞浦路斯", + "芬兰": "芬兰", + "保加利亚": "保加利亚", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脱维亚", + "爱沙尼亚": "爱沙尼亚", + "乌克兰": "乌克兰", + "塞尔维亚": "塞尔维亚", + "克罗地亚": "克罗地亚", + "斯洛文尼亚": "斯洛文尼亚", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地马拉", + "萨尔瓦多": "萨尔瓦多", + "洪都拉斯": "洪都拉斯", + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯达黎加", + "巴拿马": "巴拿马", + "海地": "海地", + "玻利维亚": "玻利维亚", + "厄瓜多尔": "厄瓜多尔", + "巴拉圭": "巴拉圭", + "乌拉圭": "乌拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿尔及利亚", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亚", + "加纳": "加纳", + "埃塞俄比亚": "埃塞俄比亚", + "肯尼亚": "肯尼亚", + "坦桑尼亚": "坦桑尼亚", + "乌干达": "乌干达", + "孟加拉国": "孟加拉国", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "约旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔尔", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里兰卡", + "缅甸": "缅甸", + "尼泊尔": "尼泊尔", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老挝", + "文莱": "文莱", + "东帝汶": "东帝汶", + "斐济": "斐济", + "所罗门群岛": "所罗门群岛", + "刚果民主共和国": "刚果民主共和国", + "安哥拉": "安哥拉", + "苏丹": "苏丹", + "马尔代夫": "马尔代夫", + "不丹": "不丹", + "摩纳哥": "摩纳哥", + "圣马力诺": "圣马力诺", + "牙买加": "牙买加", + "巴哈马": "巴哈马", + "巴布亚新几内亚": "巴布亚新几内亚", + "萨摩亚": "萨摩亚", }; diff --git a/lib/core/translations/language/zh_hk.dart b/lib/core/translations/language/zh_hk.dart index aef489f72..22ac4a07f 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': '繼續', @@ -17,6 +18,11 @@ const Map zhHK = { "responseTimeout": "響應超時", "unknownError": "未知錯誤", "asrConnectionFailed": "語音識別服務連接失敗,請檢查網絡或稍後重試", + "justNow": '剛剛', + "minutesAgo": '@minutes分鐘前', + "yesterday": '昨天', + "daysAgo": '@days天前', + "hoursAgo": '@hours小時前', // 启动页 "slogan": "連接世界,豈止聲音", @@ -27,7 +33,7 @@ const Map zhHK = { "explore": "發現", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "跟隨系統", "chinese": "中文", "english": "英語", @@ -71,7 +77,7 @@ const Map zhHK = { "arabic": "阿拉伯語", "persian": "波斯語", - // 登录页 + // 登录模块 "welcome": "歡迎使用", "loginTips": "請使用手機號或郵箱登入/註冊", "accountNumber": "手機號碼或郵箱", @@ -98,12 +104,8 @@ const Map zhHK = { "resendVerificationCode": "重新發送驗證碼", "login": "登入", "usePasswordLogin": "使用密碼登入", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 聲明", // Voitrans 声明 "welcomeToThisApp": "歡迎使用Voitrans,請充分閱讀", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "點擊'同意並進入'表示您已充分閱讀並同意上述協議。點擊'不同意'將退出應用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,27 @@ const Map zhHK = { 'right': '右', 'checkConnectionStatusFailed': '檢查連接狀態失敗', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': '藍牙初始化失敗: @error', + 'needBluetoothAndLocationPermission': '需要藍牙和位置權限才能掃描裝置', + 'permissionRequestFailedWithError': '權限請求失敗: @error', + 'needPermission': '需要權限', + 'blePermissionDialogContent': '應用需要藍牙和位置權限才能掃描裝置。請在設定中手動開啟權限。', + 'needEnableBluetooth': '需要開啟藍牙', + 'enableBluetoothDialogContent': '請開啟藍牙以掃描和連接裝置。', + 'bleScanFailedWithError': '掃描失敗: @error', + 'bleConnectionSuccess': '連接成功', + 'bleConnectedToDevice': '已連接到 @device', + 'bleConnectionFailedWithError': '連接失敗: @error', + 'bleDisconnected': '已斷開連接', + 'bleDeviceDisconnected': '裝置已斷開連接', + 'bleDisconnectFailedWithError': '斷開連接失敗: @error', + 'signalStrong': '信號強', + 'signalMedium': '信號中等', + 'signalWeak': '信號弱', + 'signalVeryWeak': '信號很弱', + + // 发现页 "searchAi": "搜尋AI功能...", "exploreSlogan": "智能耳機,無限可能", "exploreSlogan1": "智能陪伴,無限可能", @@ -181,6 +203,7 @@ const Map zhHK = { "usageStats": "用量統計", "usageStatsInfo": "查看您的使用統計數據", "scene": "場景", + // 用量统计模块 "aiChat": 'AI聊天', "translationStats": '翻譯統計', @@ -201,7 +224,6 @@ const Map zhHK = { "translationApi": '翻譯API', "asr": '語音識別', "tts": '語音合成', - //"aiSummary": "AI摘要", "dataVolumeStats": '數據量統計', "sourceTextCharacters": '來源文本字元', "ttsTextCharacters": 'TTS文本字元', @@ -218,7 +240,6 @@ const Map zhHK = { "totalAudioDuration": '音訊總時長', "audioFileSize": '音訊檔案大小', "transcriptBytes": '轉寫位元組', - // 通知文案 "loadFailed": '載入失敗', "statsLoadFailedTryLater": '統計數據載入失敗,請稍後重試', "cleanupComplete": '清理完成', @@ -226,7 +247,7 @@ const Map zhHK = { "exportFeature": '導出功能', "exportInDevelopment": '數據導出功能正在開發中', - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可購買套餐', 'remainingQuota': '剩餘額度', 'totalQuota': '總額度', @@ -291,50 +312,54 @@ const Map zhHK = { 'alipayPaymentLaunchFailed': '支付寶支付啟動失敗', 'cannotLaunchAlipayPayment': '無法啟動支付寶支付', 'alipayPaymentException': '支付寶支付異常', - // AI 功能卡片 + "insufficientIntegral": '積分不足', + "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", + "recharge": "去充值", + "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + + // 商品模块 - AI商品页 'musicAndRecommendation': '聽歌與推薦', 'navigationAndRoutes': '導航與路線', 'nearbySearch': '附近搜尋', 'newsInformation': '新聞資訊', 'communicationAssistant': '通訊助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更長對話額度、更多工具調用、更強上下文長度支持。', + 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', + 'musicSearchPlaybackControl': '檢索曲庫、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', + 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', + 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', + 'realTimeWeatherForecast': '實時天氣與預報', + 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', + 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', + 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', + 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', + 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', + 'helpCallAndSMS': '幫忙撥打電話與發短信', + 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', + 'aiDisclaimer': '以上功能受設備權限、服務可用性與網絡狀況影響,具體以實際表現為準。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '實時同傳', - // 'textTranslation' 已存在 'sceneLexicon': '場景詞庫', 'subtitleDisplay': '字幕顯示', - // 会议功能卡片 + 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', + 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', + 'translateZhEn': '中英互譯', + 'lowLatencyVoiceBroadcast': '低延時語音播報', + 'multiLangTextTranslation': '多語種文本翻譯', + 'termOptimizationContextPreserve': '術語優化與語境保持', + 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', + 'personalVocabularyMemory': '專屬詞彙記憶', + 'conversationSubtitleLargeText': '對話字幕/大字模式', + 'colorHighContrast': '顏色高對比度', + 'transDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。', + + // 商品模块 - 会议商品页 'meetingRecording': '會議記錄', 'transcriptionAndSummary': '轉寫與總結', 'keywordSearch': '關鍵詞檢索', 'collaborationSharing': '協同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基礎 100 次', - 'ai_002_name': 'AI基礎 500 次', - 'ai_003_name': 'AI基礎 1000 次', - 'meet_001_name': '會議基礎 100 次', - 'meet_002_name': '會議基礎 500 次', - 'meet_003_name': '會議基礎 1000 次', - 'trans_001_name': '翻譯基礎 100 次', - 'trans_002_name': '翻譯基礎 500 次', - 'trans_003_name': '翻譯基礎 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', - 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', - 'meet_001_desc': '含 100 次會議錄音/轉寫', - 'meet_002_desc': '含 500 次會議錄音/轉寫', - 'meet_003_desc': '含 1000 次會議錄音/轉寫', - 'trans_001_desc': '含 100 次翻譯(語音/文本)', - 'trans_002_desc': '含 500 次翻譯(語音/文本)', - 'trans_003_desc': '含 1000 次翻譯(語音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', - 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '錄音轉寫、關鍵詞檢索與自動總結,提升會議效率。', 'meetingHeaderDesc2': '適用於商務會議、課堂筆記、訪談紀要等場景。', 'meetingAutoRecording': '自動錄音與分段', @@ -347,37 +372,7 @@ const Map zhHK = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建議在安靜環境使用,效果受麥克風與網絡影響,具體以實際表現為準。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', - 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', - 'translateZhEn': '中英互譯', - 'lowLatencyVoiceBroadcast': '低延時語音播報', - 'multiLangTextTranslation': '多語種文本翻譯', - 'termOptimizationContextPreserve': '術語優化與語境保持', - 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', - 'personalVocabularyMemory': '專屬詞彙記憶', - 'conversationSubtitleLargeText': '對話字幕/大字模式', - 'colorHighContrast': '顏色高對比度', - 'transDisclaimer': '翻譯效果受麥克風、網絡時延與環境噪聲影響,具體以實際表現為準。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更長對話額度、更多工具調用、更強上下文長度支持。', - 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', - 'musicSearchPlaybackControl': '檢索曲庫、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', - 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', - 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', - 'realTimeWeatherForecast': '實時天氣與預報', - 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', - 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', - 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', - 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', - 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', - 'helpCallAndSMS': '幫忙撥打電話與發短信', - 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', - 'aiDisclaimer': '以上功能受設備權限、服務可用性與網絡狀況影響,具體以實際表現為準。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '權益總覽', 'higherQuota': '更高使用額度', 'lowerUnitPrice': '更低單價', @@ -392,45 +387,68 @@ const Map zhHK = { 'crossDeviceSync': '跨設備同步', 'vipDisclaimer': '具體權益以實際套餐說明為準,可能隨版本迭代調整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基礎 100 次', + 'ai_002_name': 'AI基礎 500 次', + 'ai_003_name': 'AI基礎 1000 次', + 'meet_001_name': '會議基礎 100 次', + 'meet_002_name': '會議基礎 500 次', + 'meet_003_name': '會議基礎 1000 次', + 'trans_001_name': '翻譯基礎 100 次', + 'trans_002_name': '翻譯基礎 500 次', + 'trans_003_name': '翻譯基礎 1000 次', + 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', + 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', + 'meet_001_desc': '含 100 次會議錄音/轉寫', + 'meet_002_desc': '含 500 次會議錄音/轉寫', + 'meet_003_desc': '含 1000 次會議錄音/轉寫', + 'trans_001_desc': '含 100 次翻譯(語音/文本)', + 'trans_002_desc': '含 500 次翻譯(語音/文本)', + 'trans_003_desc': '含 1000 次翻譯(語音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', + 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "跳過", 'next': '下一步', - 'sayLilyHint': "Say \"Lily Lily\" to the mic", - '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, ", - // AI 引导步骤 - '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", - - // 商务会议助手页 + '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": "開始會議", 'edit': '編輯', 'delete': '刪除', @@ -442,8 +460,6 @@ const Map zhHK = { 'recordingDetails': '錄音詳情', 'aiSummary': 'AI總結', 'meetingTranscript': '會議原文', - - // Meeting模块 - 导航和基础功能 'files': '檔案', 'mine': '我的', 'connect': '連接', @@ -496,7 +512,6 @@ const Map zhHK = { 'summarizing': '正在總結...', 'analyzing': '正在分析...', 'summaryComplete': '總結完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概覽', 'transcription': '轉寫', @@ -505,11 +520,99 @@ const Map zhHK = { 'editSpeaker': '編輯', 'nameSpeaker': '命名發言者', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新總結', + 'dateAndTime': '日期時間', + 'location': '地點', + 'attendees': '與會人員', + 'inputLocation': '輸入地點', + 'inputAttendees': '輸入與會人員', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '選擇總結模板', + 'useThisTemplate': '就用這個模板', + 'lastUsed': '上次使用', + 'create': '創建', + 'templateDetails': '模板詳情', + 'tag': '標籤', + 'description': '描述', + 'template': '模板', + 'deleteTemplate': '刪除模板', + 'deleteTemplateConfirm': '確定要刪除當前模板嗎?', + 'editTemplate': '編輯模板', + 'createTemplate': '創建模板', + 'name': '名稱', + 'templateContentHint': '請輸入模板內容!溫馨提示:點擊上方AI,根據上面填寫的名稱和描述,可以幫助你快速生成模板內容', + 'inputNameHint': '請輸入名稱', + 'inputDescHint': '請輸入描述', + 'custom': '自訂', + 'pleaseEnter': '請輸入', + 'viewAll': '查看全部', + 'recordingLanguage': '錄音語言', + 'chineseSimplified': '中文普通話(簡體)', + 'meetingGenerateNow': '立即生成', + 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', + 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', + + // Meeting模块 - 文件操作 + 'importing': '正在導入...', + 'batchImporting': '正在批量導入...', + 'importingLocalRecordings': '正在導入本地錄音...', + 'importFailed': '導入檔案失敗: {filePath}, error: {error}', + 'importSuccess': '成功導入本地 {count} 條錄音', + 'importError': '導入失敗: {error}', + 'pleaseSelectAudioFile': '請選擇音訊檔案', + 'shareAudio': '分享會議音訊', + 'shareComplete': '分享完成!', + 'shareFailed': '分享失敗: {error}', + 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '儲存思維導圖', + 'shareMindMap': '分享思維導圖', + 'shareSuccess': '分享成功', + + // Meeting模块 - AI问答 + 'askAI': '問 AI ...', + 'askAIPrompt': '今天我能幫您做點什麼呢?', + 'continueAsk': '繼續提問', + 'todoList': '待辦事項', + 'extractConclusion': '提取結論', + 'generateKeyIndicators': '生成關鍵指標', + + // Meeting模块 - 分享与导出 + 'shareLink': '分享連結', + 'copyTranscript': '複製轉寫', + 'copySummary': '複製總結', + 'exportAudio': '導出音訊', + 'exportTranscript': '導出轉寫', + 'shareMeetingAudio': '分享會議音訊', + 'exportSummary': '導出總結', + 'exportAs': '導出為', + 'exportingPDF': '正在導出PDF...', + 'export': '導出', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '應用到這個發言者的所有段落', + 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', + 'nameCurrentSpeaker': '命名當前發言者', + 'recentlyUsedNames': '最近使用過的名稱', + 'applyToCurrentParagraph': '應用到當前段落', + 'totalTime': '總計', + 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', + + // Meeting模块 - 云端同步 + 'syncToCloud': '同步到雲端', + 'syncToCloudTip': + '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', + 'syncToVoitransApp': '同步VOITRANS APP', + 'transcriptionRecord': '轉寫記錄', + // Meeting模块 - 我的页面 'transcriptionRecords': '轉寫記錄', 'templateCommunity': '模板社區', 'comingSoon': '敬請期待', - 'integration': '集成', + 'integration': '整合', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', 'enabled': '開啟', 'disabled': '關閉', @@ -523,7 +626,7 @@ const Map zhHK = { 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', 'unlockNow': '立即解鎖', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': '對比', 'detailedInfo': '詳細資訊', 'monthlyTranscriptionTime': '每月轉寫時長', @@ -549,8 +652,6 @@ const Map zhHK = { 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', - - // Meeting模块 - 升级会员 'upgradeMembership': '升級您的會員', 'yearlySubscription': '年訂閱', 'monthlySubscription': '月訂閱', @@ -575,132 +676,27 @@ const Map zhHK = { 'validityNote': '購買後立即啟用,啟用後2年內有效。', 'purchase': '購買', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': '選擇總結模板', - 'useThisTemplate': '就用這個模板', - 'lastUsed': '上次使用', - 'create': '創建', - 'templateDetails': '模板詳情', - 'tag': '標籤', - 'description': '描述', - 'template': '模板', - 'deleteTemplate': '刪除模板', - 'deleteTemplateConfirm': '確定要刪除當前模板嗎?', - 'editTemplate': '編輯模板', - 'createTemplate': '創建模板', - 'name': '名稱', - 'templateContentHint': '請輸入模板內容!溫馨提示:點擊上方AI,根據上面填寫的名稱和描述,可以幫助你快速生成模板內容', - 'inputNameHint': '請輸入名稱', - 'inputDescHint': '請輸入描述', - 'custom': '自訂', - 'pleaseEnter': '請輸入', - 'viewAll': '查看全部', - 'recordingLanguage': '錄音語言', - 'chineseSimplified': '中文普通話(簡體)', - 'meetingGenerateNow': '立即生成', - 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', - 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', - - // Meeting模块 - 文件操作和状态 - 'importing': '正在導入...', - 'batchImporting': '正在批量導入...', - 'importingLocalRecordings': '正在導入本地錄音...', - 'importFailed': '導入檔案失敗: {filePath}, error: {error}', - 'importSuccess': '成功導入本地 {count} 條錄音', - 'importError': '導入失敗: {error}', - 'pleaseSelectAudioFile': '請選擇音訊檔案', - 'shareAudio': '分享會議音訊', - 'shareComplete': '分享完成!', - 'shareFailed': '分享失敗: {error}', - 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', + // Meeting模块 - 录音语言 + 'recordLanguage': '錄音語言', + 'cantonese': '粵語', + 'sichuan': '四川話', + 'shanghai': '上海話', - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': '未知語言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '儲存', - 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', - 'meetingStoragePermissionPermanentDenial': - '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': '儲存思維導圖', - 'shareMindMap': '分享思維導圖', - 'shareSuccess': '分享成功', - - // Meeting模块 - AI相关 - 'askAI': '問 AI ...', - 'askAIPrompt': '今天我能幫您做點什麼呢?', - 'continueAsk': '繼續提問', - 'todoList': '待辦事項', - 'extractConclusion': '提取結論', - 'generateKeyIndicators': '生成關鍵指標', - - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新總結', - - // Meeting模块 - 错误提示相关 'analysisFailed': '分析失敗,請稍後重試', 'transcriptionFailed': '轉寫失敗,請稍後重試', 'summaryFailed': '總結失敗,請稍後重試', 'summaryFailedShort': '總結失敗', 'transcriptionFailedShort': '轉寫失敗', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': '音頻播放器未準備好,請稍候', 'playFailed': '播放失敗', 'audioFileNotFound': '音頻文件不存在', + 'fetchingAudio': '正在從雲端獲取音頻...', 'playerLoadFailed': '音頻播放器加載失敗', - // Meeting模块 - 录音语言相关 - 'recordLanguage': '錄音語言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粵語', - 'sichuan': '四川話', - 'shanghai': '上海話', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': '分享連結', - 'copyTranscript': '複製轉寫', - 'copySummary': '複製總結', - 'exportAudio': '導出音訊', - 'exportTranscript': '導出轉寫', - 'shareMeetingAudio': '分享會議音訊', - 'exportSummary': '導出總結', - 'exportAs': '導出為', - 'exportingPDF': '正在導出PDF...', - 'export': '導出', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '應用到這個發言者的所有段落', - 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', - 'nameCurrentSpeaker': '命名當前發言者', - 'recentlyUsedNames': '最近使用過的名稱', - 'applyToCurrentParagraph': '應用到當前段落', - 'totalTime': '總計', - 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': '同步到雲端', - 'syncToCloudTip': - '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', - 'syncToVoitransApp': '同步VOITRANS APP', - 'transcriptionRecord': '轉寫記錄', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期時間', - 'location': '地點', - 'attendees': '與會人員', - 'inputLocation': '輸入地點', - 'inputAttendees': '輸入與會人員', - // 设置页 "systemSettings": "系統設定", "vipRecharge": "高級會員充值", @@ -748,25 +744,14 @@ const Map zhHK = { "bleHeadsetFirmwareUpgrade": "BLE耳機韌體版本升級", "deviceManagement": "設備管理", "manageConnectedDevices": "管理已綁定的藍牙設備", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '當前已是最新版本 {version}', 'checkUpdateFailed': '檢查更新失敗', 'networkErrorRetry': '網絡錯誤,請稍後重試', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "實時語音對話", "realtimeVoiceChatInfo": "體驗智能語音互動功能(功能預覽)", "loading": "載入中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": '未知設備', "deviceTypeClassicBluetoothHeadset": '經典藍牙耳機', "deviceTypeBleBluetoothHeadset": 'BLE藍牙耳機', @@ -781,8 +766,7 @@ const Map zhHK = { "confirmUnbindMessage": '確定要解除綁定設備 "{deviceName}" 嗎?', "confirmUnbindAction": '確認解除綁定', -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天記錄", "online": "在線", @@ -812,8 +796,9 @@ const Map zhHK = { "swipeUpForMore": "向上滑動查看更多", "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "voice_interrupt": "語音打斷", // 语音打断 + 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": '來點音樂', // 来点音乐 "presetNavigation": '導航到', // 导航 "presetWeather": '今日天氣', // 今日天气 @@ -825,7 +810,7 @@ const Map zhHK = { "todayNews": '今天有哪些新聞?', // 今日新闻 "nearbyFood": '附近有哪些美食?', // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能幫你:\n\n' '• 回答問題和提供資訊\n\n' '• 實時語音翻譯\n\n' @@ -841,18 +826,17 @@ const Map zhHK = { 'startVoiceInput': '開始語音輸入', 'startPhoneCallMode': '開始打電話模式,開始語音輸入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在這裡輸入你的訊息...', // 全屏编辑器输入提示 'characterCount': '{count} 字元', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '複製', 'copySuccess': '複製成功', 'report': '舉報', 'submitSuccess': '提交成功', 'submitFailed': '提交失敗', 'reportSubmitted': '舉報已提交,我們會盡快處理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '誤導攻擊', @@ -861,17 +845,21 @@ const Map zhHK = { 'copyrightViolation': '侵犯我的著作權、名譽權等', 'other': '其他', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': '工具調用', + 'noResult': '無結果', + 'noToolCallContentToCopy': '沒有工具調用內容可以複製', + 'toolCallDetails': '工具調用詳情:', + 'toolCallContentCopied': '工具調用內容已複製到剪貼板', + + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推薦的音樂:', 'playList': '播放清單', 'moreMusic': '更多音樂', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小時', // 小时单位 @@ -886,7 +874,29 @@ const Map zhHK = { "bicycling": "騎行", "tsransit": "公共交通", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': '選擇導航軟件', + 'amapMap': '高德地圖', + 'useAmapNavigation': '使用高德地圖導航', + 'baiduMap': '百度地圖', + 'useBaiduNavigation': '使用百度地圖導航', + 'googleMap': 'Google 地圖', + 'useGoogleNavigation': '使用 Google 地圖導航', + 'appleMap': 'Apple 地圖', + 'useAppleNavigation': '使用 Apple 地圖導航', + 'builtInNavigation': '內置導航', + 'useBuiltInNavigation': '使用內置地圖導航', + 'navigationStartFailed': '啟動導航失敗', + 'cannotPlayMusicListRetryLater': '無法播放音樂列表,請稍後重試', + 'cannotPlaySong': '無法播放歌曲', + 'openMapError': '打開地圖時發生錯誤', + 'pleaseInstallAmapApp': '請先安裝高德地圖應用', + 'pleaseInstallBaiduMapApp': '請先安裝百度地圖應用', + 'appleMapStartFailed': 'Apple 地圖啟動失敗', + 'appleMapUnavailable': 'Apple 地圖不可用', + 'openAppleMapError': '打開 Apple 地圖時發生錯誤', + + // Agent模块 - 天气卡片 'weatherQuery': '查詢天氣情況:', 'highest': '最高', 'lowest': '最低', @@ -907,18 +917,8 @@ const Map zhHK = { "friday": "週五", "saturday": "週六", "sunday": "週日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', - "expiryLabel": '到期時間:', - "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', - "ok": 'OK', - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少雲", "partlySunny": "晴間多雲", @@ -939,7 +939,129 @@ const Map zhHK = { "haze": "霾", "strongWind": "大風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": '圖片翻譯', + "textTranslation": '文本翻譯', + + // 翻译模块 - 主页 + "translationHistory": "翻譯歷史", + "enableRecording": "是否開啟錄音", + "viewAudioFiles": "查看錄音檔案", + "headsetUser": "耳機用戶", + "phoneUser": "手機用戶", + "selectSourceLanguage": "選擇來源語言", + "selectTargetLanguage": "選擇目標語言", + "me": '我', + "counterPart": '對方', + "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', + "autoDetect": '自動檢測', // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': '禁用懸浮窗', + 'enableFloatingWindow': '啟用懸浮窗', + 'permissionTip': '權限提示', + 'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能', + 'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": '語言檢測失敗', + "translationFailed": '翻譯失敗', + "translating": "正在翻譯", + "translate": "翻譯", + "pleaseInputText": '請輸入文本', + "inputTextToTranslate": "請輸入待翻譯的文本", + "textTooLong": '文本過長,最多5000字符', + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暫無歷史記錄", + "historyRecords": '歷史記錄', + "clearResults": '清空結果', + "clearHistory": "清除歷史記錄", + "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", + "unknownLanguage": "未知語言", + "deleteSessionRecord": "刪除對話記錄", + "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", + + // 翻译模块 - 图片翻译 + "selectImageSource": '選擇圖片來源', + "imagePreview": '圖片預覽', + "translationResult": '翻譯結果', + "recognitionResult": '識別結果', + "translatedImagePreview": '翻譯後的圖片預覽', + "translatedImageLoadFailed": '翻譯圖片載入失敗', + "pleaseSelectImage": '請選擇圖片', + "imageLoadFailed": '圖片載入失敗', + "imageQuality": '圖片品質', + "maxSize": '最大尺寸', + "close": '關閉', + "setImageQuality": '設定圖片品質', + "currentQuality": '當前品質: @value%', + "setMaxSize": '設定最大尺寸', + "currentMaxSize": '當前: @pxpx', + "waitingForAction": '等待操作', + "pleaseSelectImageToStart": '請選擇圖片開始翻譯', + "chooseImage": '選擇圖片', + "openingCamera": '正在打開相機...', + "openingPhotoAlbum": '正在打開相簿...', + "cancelled": '已取消', + "userCancelledSelection": '用戶取消了選擇', + "translatingImage": '翻譯圖片', + "callingImageTranslateService": '正在調用圖片翻譯服務...', + "savingRecord": '保存記錄', + "savingTranslationResult": '正在保存翻譯結果...', + "translationCompleted": '翻譯完成', + "allStepsCompleted": '所有步驟已完成', + "processingFailed": '處理失敗', + "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', + "imageTooLarge": '圖片大小超過4MB限制', + "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', + "emptyTranslationResult": '圖片翻譯接口返回空結果', + "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或接口限流,請稍後重試', + "imageTranslationApiException": '圖片翻譯接口調用異常,請檢查網路後重試', + "permissionRequired": '權限需求', + "cameraPermissionRequired": '需要相機權限才能拍照', + "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', + "translationDetails": '翻譯詳情', + "originalImage": '原圖片', + "sourceLanguage": '源語言', + "targetLanguage": '目標語言', + "translationTime": '翻譯時間', + "shareInDevelopment": '分享功能開發中', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻譯錄音檔案", + "noAudioFiles": "暫無音訊檔案", + "calculating": "計算中...", + "playing": "播放中...", + "paused": "已暫停", + "clickToPlay": "點擊播放", + "rename": "重新命名", + "smartTranscription": "智能轉寫", + "renameAudioFile": "重新命名音訊檔案", + "enterNewFileName": "請輸入新的檔案名稱", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始記錄", + "recordSummary": "記錄摘要", + "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", + "summaryContent": "摘要內容", + "copied": "已複製", + "summaryCopiledToClipboard": "摘要已複製到剪貼簿", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要請求超時,可能是網絡問題或伺服器繁忙。", + "deleteTranslationRecord": "刪除翻譯記錄", + "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", + "originalText": "原文", + "translatedText": "譯文", + "sessionSummary": "對話摘要", + "cannotShare": "無法分享", + "generateSummaryFirst": "請先生成摘要", + "translationSessionRecord": "翻譯對話記錄", + + // 个人资料模块 "editProfile": "編輯個人資訊", "avatar": "頭像", "nickname": "暱稱", @@ -954,8 +1076,6 @@ const Map zhHK = { 'deleteAccountTips': '確定要永久刪除您的帳號嗎?此操作不可撤銷', 'clean': '清除快取', 'cleanTips': '確定要清除個人快取嗎?', - - // Profile 错误信息 'networkConnectionFailed': '網絡連接失敗,請檢查網絡設定後重試', 'serverTemporarilyUnavailable': '伺服器暫時無法響應,請稍後重試', 'loginExpiredPleaseRelogin': '登入已過期,請重新登入', @@ -967,10 +1087,6 @@ const Map zhHK = { 'serverError': '伺服器錯誤', 'networkConnectionFailedCheckSettings': '網絡連接失敗,請檢查網絡設定', 'serverInternalErrorRetryLater': '伺服器內部錯誤,請稍後重試', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '圖片壓縮失敗', 'avatarUpdateFailed': '頭像更新失敗', 'usernameCannotBeEmpty': '用戶名不能為空', @@ -981,8 +1097,6 @@ const Map zhHK = { 'logoutFailedRetry': '登出失敗,請重試', 'accountPermanentlyDeleted': '帳號已被永久刪除', 'deleteAccountFailedRetry': '刪除帳號失敗,請重試', - - // 账号服务相关 'clearUserDataFailed': '清理用戶數據失敗', // 清理用户数据失败 'deleteUserDataFailed': '刪除用戶數據失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': '第三方登出成功', // 第三方登录退出成功 @@ -993,7 +1107,11 @@ const Map zhHK = { 'allUserDataClearSuccess': '所有用戶數據清理成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': '儲存', + 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', + 'meetingStoragePermissionPermanentDenial': + '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', 'getPermissionStatusFailed': '獲取權限狀態失敗', 'communicationPermissions': '通訊權限', 'bluetoothPermissions': '藍牙權限', @@ -1006,7 +1124,6 @@ const Map zhHK = { 'phone': '電話', 'sms': '短訊', 'contacts': '聯絡人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '鬧鐘', 'calendarWrite': '日曆寫入', @@ -1045,8 +1162,6 @@ const Map zhHK = { 'appNeedsPermissionForFullFunction': '應用需要此權限以提供完整功能', 'permanentDenialText': '您已永久拒絕{permission}權限,請前往應用設定開啟', 'goToSettings': '去設定', - - // 权限申请 'bluetoothScan': '藍牙掃描', 'bluetoothConnect': '藍牙連接', 'bluetoothScanExplanation': '為了掃描附近的藍牙設備,應用需要取得藍牙掃描權限。', @@ -1061,7 +1176,6 @@ const Map zhHK = { 'locationPermissionExplanation': '需要定位權限來取得當前位置。', 'notificationPermissionPermanentDenial': '您已永久拒絕通知權限,請前往設定開啟權限。', 'locationPermissionPermanentDenial': '您已永久拒絕定位權限,請前往設定開啟權限。', -//'microphonePermission': '录音', 'storagePermission': '儲存', 'microphonePermissionExplanation': '我們需要存取麥克風權限,以便您錄製音訊內容。', 'storagePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', @@ -1069,6 +1183,11 @@ const Map zhHK = { '檢測到您已永久拒絕錄音權限。如需繼續使用此功能,請前往應用設定中手動開啟麥克風權限。', 'storagePermissionPermanentDenial': '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '權限', + 'permissionUtilRestricted': '權限受限', + 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', + 'permissionUtilConfirm': '確定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1083,14 +1202,7 @@ const Map zhHK = { 'native.notification.music.pause': '暫停', 'native.notification.qqMusic.playing': '正在播放音樂', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '權限', - 'permissionUtilRestricted': '權限受限', - 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', - 'permissionUtilConfirm': '確定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '發現新版本', // 版本更新对话框标题 'remindLater': '稍後提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1099,242 +1211,7 @@ const Map zhHK = { 'cannotOpenAppStore': '無法打開應用商店,請手動前往應用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新過程中發生錯誤,請稍後重試', // 更新错误重试提示 - //国家列表 - "邮箱": "郵箱", - "中国": "中國", - "美国": "美國", - "加拿大": "加拿大", - "俄罗斯": "俄羅斯", - "英国": "英國", - "德国": "德國", - "意大利": "意大利", - "法国": "法國", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韓國", - "新加坡": "新加坡", - "马来西亚": "馬來西亞", - "泰国": "泰國", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律賓", - "印度尼西亚": "印度尼西亞", - "阿联酋": "阿聯酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亞", - "新西兰": "新西蘭", - "中国香港": "中國香港", - "中国澳门": "中國澳門", - "中国台湾": "中國台灣", - "埃及": "埃及", - "希腊": "希臘", - "荷兰": "荷蘭", - "比利时": "比利時", - "匈牙利": "匈牙利", - "罗马尼亚": "羅馬尼亞", - "瑞士": "瑞士", - "奥地利": "奧地利", - "丹麦": "丹麥", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波蘭", - "秘鲁": "秘魯", - "智利": "智利", - "哥伦比亚": "哥倫比亞", - "委内瑞拉": "委內瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "盧森堡", - "爱尔兰": "愛爾蘭", - "冰岛": "冰島", - "阿尔巴尼亚": "阿爾巴尼亞", - "马耳他": "馬耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬蘭", - "保加利亚": "保加利亞", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脫維亞", - "爱沙尼亚": "愛沙尼亞", - "乌克兰": "烏克蘭", - "塞尔维亚": "塞爾維亞", - "克罗地亚": "克羅地亞", - "斯洛文尼亚": "斯洛文尼亞", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地馬拉", - "萨尔瓦多": "薩爾瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯達黎加", - "巴拿马": "巴拿馬", - "海地": "海地", - "玻利维亚": "玻利維亞", - "厄瓜多尔": "厄瓜多爾", - "巴拉圭": "巴拉圭", - "乌拉圭": "烏拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿爾及利亞", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亞", - "加纳": "加納", - "埃塞俄比亚": "埃塞俄比亞", - "肯尼亚": "肯尼亞", - "坦桑尼亚": "坦桑尼亞", - "乌干达": "烏干達", - "孟加拉国": "孟加拉國", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "約旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔爾", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里蘭卡", - "缅甸": "緬甸", - "尼泊尔": "尼泊爾", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老撾", - "文莱": "文萊", - "东帝汶": "東帝汶", - "斐济": "斐濟", - "所罗门群岛": "所羅門群島", - "刚果民主共和国": '剛果民主共和國', - "安哥拉": '安哥拉', - "苏丹": '蘇丹', - "马尔代夫": '馬爾代夫', - "不丹": '不丹', - "摩纳哥": '摩納哥', - "圣马力诺": '聖馬力諾', - "牙买加": '牙買加', - "巴哈马": '巴哈馬', - "巴布亚新几内亚": '巴布亞新幾內亞', - "萨摩亚": '薩摩亞', - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": '圖片翻譯', - "textTranslation": '文本翻譯', - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻譯歷史", - "enableRecording": "是否開啟錄音", - "viewAudioFiles": "查看錄音檔案", - "headsetUser": "耳機用戶", - "phoneUser": "手機用戶", - "selectSourceLanguage": "選擇來源語言", - "selectTargetLanguage": "選擇目標語言", - "me": '我', - "counterPart": '對方', - "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": '自動檢測', // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": '語言檢測失敗', - "translationFailed": '翻譯失敗', - "pleaseInputText": '請輸入文本', - "textTooLong": '文本過長,最多5000字符', - - // 翻译历史页 - "noTranslationHistory": "暫無歷史記錄", - "historyRecords": '歷史記錄', - "clearResults": '清空結果', - "clearHistory": "清除歷史記錄", - "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", - "unknownLanguage": "未知語言", - "deleteSessionRecord": "刪除對話記錄", - "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": '選擇圖片來源', - "imagePreview": '圖片預覽', - "translationResult": '翻譯結果', - "recognitionResult": '識別結果', - "translatedImagePreview": '翻譯後的圖片預覽', - "translatedImageLoadFailed": '翻譯圖片載入失敗', - "pleaseSelectImage": '請選擇圖片', - "imageLoadFailed": '圖片載入失敗', - "imageQuality": '圖片品質', - "maxSize": '最大尺寸', - "close": '關閉', - "setImageQuality": '設定圖片品質', - "currentQuality": '當前品質: @value%', - "setMaxSize": '設定最大尺寸', - "currentMaxSize": '當前: @pxpx', - "waitingForAction": '等待操作', - "pleaseSelectImageToStart": '請選擇圖片開始翻譯', - "chooseImage": '選擇圖片', - "openingCamera": '正在打開相機...', - "openingPhotoAlbum": '正在打開相簿...', - "cancelled": '已取消', - "userCancelledSelection": '用戶取消了選擇', - "translatingImage": '翻譯圖片', - "callingImageTranslateService": '正在調用圖片翻譯服務...', - "savingRecord": '保存記錄', - "savingTranslationResult": '正在保存翻譯結果...', - "translationCompleted": '翻譯完成', - "allStepsCompleted": '所有步驟已完成', - "processingFailed": '處理失敗', - "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', - "imageTooLarge": '圖片大小超過4MB限制', - "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', - "emptyTranslationResult": '圖片翻譯接口返回空結果', - "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或接口限流,請稍後重試', - "imageTranslationApiException": '圖片翻譯接口調用異常,請檢查網路後重試', - "permissionRequired": '權限需求', - "cameraPermissionRequired": '需要相機權限才能拍照', - "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', - "translationDetails": '翻譯詳情', - "originalImage": '原圖片', - "sourceLanguage": '源語言', - "targetLanguage": '目標語言', - "translationTime": '翻譯時間', - "shareInDevelopment": '分享功能開發中', - - // 翻译录音文件列表页 - "translateAudioFiles": "翻譯錄音檔案", - "noAudioFiles": "暫無音訊檔案", - "calculating": "計算中...", - "playing": "播放中...", - "paused": "已暫停", - "clickToPlay": "點擊播放", - "rename": "重新命名", - "smartTranscription": "智能轉寫", - "renameAudioFile": "重新命名音訊檔案", - "enterNewFileName": "請輸入新的檔案名稱", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始記錄", - "recordSummary": "記錄摘要", - "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", - "summaryContent": "摘要內容", - "copied": "已複製", - "summaryCopiledToClipboard": "摘要已複製到剪貼簿", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要請求超時,可能是網絡問題或伺服器繁忙。", - "deleteTranslationRecord": "刪除翻譯記錄", - "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", - "originalText": "原文", - "translatedText": "譯文", - "sessionSummary": "對話摘要", - "cannotShare": "無法分享", - "generateSummaryFirst": "請先生成摘要", - "translationSessionRecord": "翻譯對話記錄", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "設備配對", "connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機", "bind": "綁定", @@ -1343,14 +1220,11 @@ const Map zhHK = { "autoInputCode": "自動輸入代碼", "skipBinding": "跳過綁定", "rescan": "重新掃描", - "verifyingDevice": "正在驗證設備...", "confirmBinding": "確認綁定", "associatingDevice": "正在關聯設備...", "goToBluetoothSettings": "前往藍牙設定", 'bluetooth': '藍牙', - - // 配对状态文本 "readyToPair": "準備開始配對", "preparingPairingEnvironment": "正在準備配對環境...", "connectDeepSoundViaSystemBluetooth": "請先透過系統藍牙連接Voitrans設備", @@ -1358,8 +1232,6 @@ const Map zhHK = { "establishingDeviceAssociation": "正在建立設備關聯...", "waitingCompletePairing": "請稍候,正在完成配對...", "pairingSuccessRedirecting": "配對成功!即將跳轉到首頁...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "請確保連接的是Voitrans設備", "deviceAlreadyBoundToOtherAccount": "該設備已被其他帳號綁定", "deviceAssociationFailed": "設備關聯失敗,請重試", @@ -1367,18 +1239,11 @@ const Map zhHK = { "networkError": "網絡錯誤", "authorizationFailedCheckCode": "授權失敗,請檢查授權碼是否正確", "pairingFailedRetry": "配對失敗,請重試", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '請開啟藍牙', 'deviceDisconnected': '設備已斷開', 'readyToStartPairing': '準備開始配對', 'checkingEnvironment': '正在檢查環境...', 'ensureHeadsetOnAndPairingMode': '請確保耳機已開啟並進入配對模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全連接...', 'needManualBindingAuthCode': '需要手動綁定授權碼...', 'pairingSuccessful': '配對成功!', @@ -1397,8 +1262,6 @@ const Map zhHK = { 'blePairingStartupFailed': 'BLE配對啟動失敗', 'bleConnectionFailed': 'BLE連接失敗', 'deviceAuthorizationFailedCheckCode': '設備授權失敗,請檢查授權碼', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': '需要手動開啟藍牙', // 需要手动开启蓝牙 'bluetoothGuideSteps': '請按照以下步驟操作:', // 请按照以下步骤操作: 'bluetoothGuideStep1': '開啟藍牙:設定 → 藍牙 → 開啟', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1407,7 +1270,18 @@ const Map zhHK = { 'bluetoothGuideTip': '提示:也可以從控制中心長按藍牙圖標快速進入藍牙設定', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': '我知道了', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": '首次綁定獎勵', + "firstBindRewardDesc": '您已獲得綁定獎勵。', + "vipLevelLabel": 'VIP 等級:', + "expiryLabel": '到期時間:', + "notActivated": '未啟用', + "aiChatCreditsLabel": 'AI 聊天額度:', + "translationCreditsLabel": '翻譯額度:', + "meetingCreditsLabel": '會議額度:', + "ok": 'OK', + + // 用户反馈模块 "feedback": "用戶反饋", 'feedbackInfo': '提供反饋或建議', 'feedbackDescription': '請描述您遇到的問題或建議', @@ -1442,7 +1316,50 @@ const Map zhHK = { "updateContent": "更新內容", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': '發現新版本 @version', + 'otaConfirmUpdateNow': '是否立即更新?', + 'otaUpdate': '更新', + 'otaUpgradeSuccess': '升級成功', + 'otaUpgradeCompleteRepair': '固件升級已完成!\n\n裝置需要重新配對才能正常使用,現在跳轉到配對頁面嗎?', + 'otaPairLater': '稍後配對', + 'otaPairNow': '立即配對', + 'okConfirm': '確定', + // OTA升级模块 - 设备检查 + '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': '本次更新包含性能優化和錯誤修復。', + 'otaGetLatestVersionFailed': '獲取最新版本資訊失敗', + 'otaGetVersionInfoFailed': '獲取版本資訊失敗', + 'otaCheckingDeviceStatus': '正在檢查裝置狀態...', + 'otaDownloadFailedCheckNetwork': '下載失敗,請檢查網絡連接', + 'otaDownloadFailed': '下載失敗', + 'otaPreparingConnection': '準備裝置連接...', + 'otaConnectingDevice': '正在連接裝置...', + 'otaUpgradeStarted': 'OTA升級已開始...', + 'otaUpgradeProgressWithPercent': '升級進度: @percent%', + 'otaUpgradeSuccessComplete': '升級成功完成', + 'otaUpgradeFailedWithCode': '升級失敗,錯誤碼:@code', + 'otaUpgradeFailedTitle': '升級失敗', + 'otaUpgradeFailedDesc': '請檢查裝置連接或升級包,錯誤碼:@code', + 'otaDeviceDisconnected': '裝置連接斷開', + 'otaDeviceConnected': '裝置連接成功', + + // 音乐模块 "noMusic": "暫無音樂", // 暂无音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1490,20 +1407,122 @@ const Map zhHK = { "波斯语": "波斯語", "斯瓦希里语": "斯瓦希里語", - // 时间相关 - "justNow": '剛剛', - "minutesAgo": '@minutes分鐘前', - "yesterday": '昨天', - // 时间扩展(图片翻译模块使用) - "daysAgo": '@days天前', - "hoursAgo": '@hours小時前', - - //补充 - "insufficientIntegral": '積分不足', - - //余额不足弹窗 - "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", - "recharge": "去充值", - // 会员到期提示 - "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + // 国家列表 + "邮箱": "郵箱", + "中国": "中國", + "美国": "美國", + "加拿大": "加拿大", + "俄罗斯": "俄羅斯", + "英国": "英國", + "德国": "德國", + "意大利": '意大利', + "法国": "法國", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": "沙特阿拉伯", + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韓國", + "新加坡": "新加坡", + "马来西亚": "馬來西亞", + "泰国": "泰國", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律賓", + "印度尼西亚": "印度尼西亞", + "阿联酋": "阿聯酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亞", + "新西兰": "新西蘭", + "中国香港": "中國香港", + "中国澳门": "中國澳門", + "中国台湾": "中國台灣", + "埃及": "埃及", + "希腊": "希臘", + "荷兰": "荷蘭", + "比利时": "比利時", + "匈牙利": "匈牙利", + "罗马尼亚": "羅馬尼亞", + "瑞士": "瑞士", + "奥地利": "奧地利", + "丹麦": "丹麥", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波蘭", + "秘鲁": "秘魯", + "智利": "智利", + "哥伦比亚": "哥倫比亞", + "委内瑞拉": "委內瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "盧森堡", + "爱尔兰": "愛爾蘭", + "冰岛": "冰島", + "阿尔巴尼亚": "阿爾巴尼亞", + "马耳他": "馬耳他", + "塞浦路斯": "塞浦路斯", + "芬兰": "芬蘭", + "保加利亚": "保加利亞", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脫維亞", + "爱沙尼亚": "愛沙尼亞", + "乌克兰": "烏克蘭", + "塞尔维亚": "塞爾維亞", + "克罗地亚": "克羅地亞", + "斯洛文尼亚": "斯洛文尼亞", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地馬拉", + "萨尔瓦多": "薩爾瓦多", + "洪都拉斯": "洪都拉斯", + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯達黎加", + "巴拿马": "巴拿馬", + "海地": "海地", + "玻利维亚": "玻利維亞", + "厄瓜多尔": "厄瓜多爾", + "巴拉圭": "巴拉圭", + "乌拉圭": "烏拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿爾及利亞", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亞", + "加纳": "加納", + "埃塞俄比亚": "埃塞俄比亞", + "肯尼亚": "肯尼亞", + "坦桑尼亚": "坦桑尼亞", + "乌干达": "烏干達", + "孟加拉国": "孟加拉國", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "約旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔爾", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里蘭卡", + "缅甸": "緬甸", + "尼泊尔": "尼泊爾", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老撾", + "文莱": "文萊", + "东帝汶": "東帝汶", + "斐济": "斐濟", + "所罗门群岛": "所羅門群島", + "刚果民主共和国": '剛果民主共和國', + "安哥拉": '安哥拉', + "苏丹": '蘇丹', + "马尔代夫": '馬爾代夫', + "不丹": '不丹', + "摩纳哥": '摩納哥', + "圣马力诺": '聖馬力諾', + "牙买加": '牙買加', + "巴哈马": '巴哈馬', + "巴布亚新几内亚": '巴布亞新幾內亞', + "萨摩亚": '薩摩亞', }; diff --git a/lib/core/translations/language/zh_tw.dart b/lib/core/translations/language/zh_tw.dart index 6abf56eaa..454dd4a27 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': '繼續', @@ -17,6 +18,11 @@ const Map zhTW = { "responseTimeout": "回應逾時", "unknownError": "未知錯誤", "asrConnectionFailed": "語音辨識服務連線失敗,請檢查網路或稍後重試", + "justNow": '剛剛', + "minutesAgo": '@minutes分鐘前', + "yesterday": '昨天', + "daysAgo": '@days天前', + "hoursAgo": '@hours小時前', // 启动页 "slogan": "連接世界,豈止聲音", @@ -27,7 +33,7 @@ const Map zhTW = { "explore": "發現", "settings": "設定", - // 语言 + // 语言列表 "followingSystem": "跟隨系統", "chinese": "中文", "english": "英語", @@ -71,7 +77,7 @@ const Map zhTW = { "arabic": "阿拉伯語", "persian": "波斯語", - // 登录页 + // 登录模块 "welcome": "歡迎使用", "loginTips": "請使用手機號或電子郵件登入/註冊", "accountNumber": "手機號碼或電子郵件", @@ -98,12 +104,8 @@ const Map zhTW = { "resendVerificationCode": "重新發送驗證碼", "login": "登入", "usePasswordLogin": "使用密碼登入", - - // 隐私政策弹窗 "loginDeclaration": "Voitrans 聲明", // Voitrans 声明 "welcomeToThisApp": "歡迎使用Voitrans,請充分閱讀", // 欢迎使用Voitrans,请充分阅读 - // "privacyPolicy": "《隐私政策》", // 《隐私政策》 - 已存在,使用现有键 - // "userAgreement": "《用户协议》", // 《用户协议》 - 已存在,使用现有键 "privacyPolicyText": "點擊'同意並進入'表示您已充分閱讀並同意上述協議。點擊'不同意'將退出應用。", // ,点击"同意并进入"表示您已充分阅读并同意上述协议。点击"不同意"将退出应用。 "disagree": "不同意", // 不同意 @@ -158,7 +160,27 @@ const Map zhTW = { 'right': '右', 'checkConnectionStatusFailed': '檢查連接狀態失敗', -// 发现页 + // 蓝牙扫描模块 + 'bleInitFailedWithError': '藍牙初始化失敗: @error', + 'needBluetoothAndLocationPermission': '需要藍牙和位置權限才能掃描裝置', + 'permissionRequestFailedWithError': '權限請求失敗: @error', + 'needPermission': '需要權限', + 'blePermissionDialogContent': '應用程式需要藍牙和位置權限才能掃描裝置。請在設定中手動開啟權限。', + 'needEnableBluetooth': '需要開啟藍牙', + 'enableBluetoothDialogContent': '請開啟藍牙以掃描和連線裝置。', + 'bleScanFailedWithError': '掃描失敗: @error', + 'bleConnectionSuccess': '連線成功', + 'bleConnectedToDevice': '已連線到 @device', + 'bleConnectionFailedWithError': '連線失敗: @error', + 'bleDisconnected': '已中斷連線', + 'bleDeviceDisconnected': '裝置已中斷連線', + 'bleDisconnectFailedWithError': '中斷連線失敗: @error', + 'signalStrong': '訊號強', + 'signalMedium': '訊號中等', + 'signalWeak': '訊號弱', + 'signalVeryWeak': '訊號極弱', + + // 发现页 "searchAi": "搜尋AI功能...", "exploreSlogan": "智能耳機,無限可能", "exploreSlogan1": "智能陪伴,無限可能", @@ -181,6 +203,7 @@ const Map zhTW = { "usageStats": "用量統計", "usageStatsInfo": "查看您的使用統計資料", "scene": "場景", + // 用量统计模块 "aiChat": 'AI聊天', "translationStats": '翻譯統計', @@ -201,7 +224,6 @@ const Map zhTW = { "translationApi": '翻譯API', "asr": '語音識別', "tts": '語音合成', - //"aiSummary": "AI摘要", "dataVolumeStats": '資料量統計', "sourceTextCharacters": '來源文本字元', "ttsTextCharacters": 'TTS文本字元', @@ -218,7 +240,6 @@ const Map zhTW = { "totalAudioDuration": '音訊總時長', "audioFileSize": '音訊檔案大小', "transcriptBytes": '轉寫位元組', - // 通知文案 "loadFailed": '載入失敗', "statsLoadFailedTryLater": '統計資料載入失敗,請稍後重試', "cleanupComplete": '清理完成', @@ -226,7 +247,7 @@ const Map zhTW = { "exportFeature": '導出功能', "exportInDevelopment": '資料匯出功能正在開發中', - // 商品页面(AI/翻译/会议) + // 商品模块 - 通用 'availablePackages': '可購買套餐', 'remainingQuota': '剩餘額度', 'totalQuota': '總額度', @@ -291,50 +312,54 @@ const Map zhTW = { 'alipayPaymentLaunchFailed': '支付寶支付啟動失敗', 'cannotLaunchAlipayPayment': '無法啟動支付寶支付', 'alipayPaymentException': '支付寶支付異常', - // AI 功能卡片 + "insufficientIntegral": '積分不足', + "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", + "recharge": "去充值", + "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + + // 商品模块 - AI商品页 'musicAndRecommendation': '聽歌與推薦', 'navigationAndRoutes': '導航與路線', 'nearbySearch': '附近搜尋', 'newsInformation': '新聞資訊', 'communicationAssistant': '通訊助手', - // 翻译功能卡片 + 'aiHeaderDesc1': '更長對話額度、更多工具呼叫、更強上下文長度支持。', + 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', + 'musicSearchPlaybackControl': '檢索曲庫、播放控制', + 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', + 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', + 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', + 'realTimeWeatherForecast': '實時天氣與預報', + 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', + 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', + 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', + 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', + 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', + 'helpCallAndSMS': '幫忙撥打電話與發短信', + 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', + 'aiDisclaimer': '以上功能受設備權限、服務可用性與網路狀況影響,具體以實際表現為準。', + + // 商品模块 - 翻译商品页 'realtimeTranscription': '實時同傳', - // 'textTranslation' 已存在 'sceneLexicon': '場景詞庫', 'subtitleDisplay': '字幕顯示', - // 会议功能卡片 + 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', + 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', + 'translateZhEn': '中英互譯', + 'lowLatencyVoiceBroadcast': '低延時語音播報', + 'multiLangTextTranslation': '多語種文本翻譯', + 'termOptimizationContextPreserve': '術語優化與語境保持', + 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', + 'personalVocabularyMemory': '專屬詞彙記憶', + 'conversationSubtitleLargeText': '對話字幕/大字模式', + 'colorHighContrast': '顏色高對比度', + 'transDisclaimer': '翻譯效果受麥克風、網路時延與環境噪聲影響,具體以實際表現為準。', + + // 商品模块 - 会议商品页 'meetingRecording': '會議記錄', 'transcriptionAndSummary': '轉寫與總結', 'keywordSearch': '關鍵詞檢索', 'collaborationSharing': '協同分享', - // 商品名称(按ID) - 'ai_001_name': 'AI基礎 100 次', - 'ai_002_name': 'AI基礎 500 次', - 'ai_003_name': 'AI基礎 1000 次', - 'meet_001_name': '會議基礎 100 次', - 'meet_002_name': '會議基礎 500 次', - 'meet_003_name': '會議基礎 1000 次', - 'trans_001_name': '翻譯基礎 100 次', - 'trans_002_name': '翻譯基礎 500 次', - 'trans_003_name': '翻譯基礎 1000 次', - - // 商品描述(按ID) - 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', - 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', - 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', - 'meet_001_desc': '含 100 次會議錄音/轉寫', - 'meet_002_desc': '含 500 次會議錄音/轉寫', - 'meet_003_desc': '含 1000 次會議錄音/轉寫', - 'trans_001_desc': '含 100 次翻譯(語音/文本)', - 'trans_002_desc': '含 500 次翻譯(語音/文本)', - 'trans_003_desc': '含 1000 次翻譯(語音/文本)', - -// 商品页通用页脚 - 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', - 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', - 'copyrightVoitrans': '© 2025 Voitrans Technologies', - - // 会议商品页描述 'meetingHeaderDesc1': '錄音轉寫、關鍵詞檢索與自動總結,提升會議效率。', 'meetingHeaderDesc2': '適用於商務會議、課堂筆記、訪談紀要等場景。', 'meetingAutoRecording': '自動錄音與分段', @@ -347,37 +372,7 @@ const Map zhTW = { 'meetingMultiPlatformShare': '多平台分享', 'meetingDisclaimer': '建議在安靜環境使用,效果受麥克風與網路影響,具體以實際表現為準。', - // 同传/翻译商品页描述 - 'transHeaderDesc1': '多語種實時同傳與文本翻譯,低延時語音播報。', - 'transHeaderDesc2': '適用於出行、商務、演講與教學等場景。', - 'translateZhEn': '中英互譯', - 'lowLatencyVoiceBroadcast': '低延時語音播報', - 'multiLangTextTranslation': '多語種文本翻譯', - 'termOptimizationContextPreserve': '術語優化與語境保持', - 'lexiconTourBusinessLife': '旅遊/商務/生活詞庫', - 'personalVocabularyMemory': '專屬詞彙記憶', - 'conversationSubtitleLargeText': '對話字幕/大字模式', - 'colorHighContrast': '顏色高對比度', - 'transDisclaimer': '翻譯效果受麥克風、網路時延與環境噪聲影響,具體以實際表現為準。', - - // AI 商品页描述 - 'aiHeaderDesc1': '更長對話額度、更多工具呼叫、更強上下文長度支持。', - 'aiHeaderDesc2': '適用於智能體問答、總結分析、任務執行等場景。', - 'musicSearchPlaybackControl': '檢索曲庫、播放控制', - 'smartPlaylistAndSimilarRecommendations': '智能推薦歌單與相似歌曲', - 'routePlanningAndCongestionAvoidance': '路線規劃與擁堵規避', - 'voiceBroadcastAndWaypoints': '語音播報與途徑點設置', - 'realTimeWeatherForecast': '實時天氣與預報', - 'clothingAdviceAndTravelReminders': '穿衣建議與出行提醒', - 'poiSearchFoodGasParking': '餐飲/加油/停車等地點檢索', - 'ratingsHoursAndDirectRoutes': '評分、營業時間與路線直達', - 'hotNewsAndTopicOverview': '熱點快訊與專題速覽', - 'longArticleSummariesAndKeyPoints': '長文總結與要點提煉', - 'helpCallAndSMS': '幫忙撥打電話與發短信', - 'templatedMessagesAndScheduleReminders': '模板消息與日程提醒', - 'aiDisclaimer': '以上功能受設備權限、服務可用性與網路狀況影響,具體以實際表現為準。', - - // 会员商品页 + // 商品模块 - VIP会员页 'benefitsOverview': '權益總覽', 'higherQuota': '更高使用額度', 'lowerUnitPrice': '更低單價', @@ -392,45 +387,68 @@ const Map zhTW = { 'crossDeviceSync': '跨設備同步', 'vipDisclaimer': '具體權益以實際套餐說明為準,可能隨版本迭代調整。', - // 新手引导 / Onboarding + // 商品模块 - 商品名称与描述 + 'ai_001_name': 'AI基礎 100 次', + 'ai_002_name': 'AI基礎 500 次', + 'ai_003_name': 'AI基礎 1000 次', + 'meet_001_name': '會議基礎 100 次', + 'meet_002_name': '會議基礎 500 次', + 'meet_003_name': '會議基礎 1000 次', + 'trans_001_name': '翻譯基礎 100 次', + 'trans_002_name': '翻譯基礎 500 次', + 'trans_003_name': '翻譯基礎 1000 次', + 'ai_001_desc': '含 100 次使用,涵蓋核心 AI 功能', + 'ai_002_desc': '含 500 次使用,涵蓋核心 AI 功能', + 'ai_003_desc': '含 1000 次使用,涵蓋核心 AI 功能', + 'meet_001_desc': '含 100 次會議錄音/轉寫', + 'meet_002_desc': '含 500 次會議錄音/轉寫', + 'meet_003_desc': '含 1000 次會議錄音/轉寫', + 'trans_001_desc': '含 100 次翻譯(語音/文本)', + 'trans_002_desc': '含 500 次翻譯(語音/文本)', + 'trans_003_desc': '含 1000 次翻譯(語音/文本)', + + // 商品模块 - 页脚 + 'appNameProvider': '應用名稱:Voitrans · 服務提供:Voitrans', + 'iapCustomerServiceQQLabel': '內購商品專屬客服QQ:@qq', + 'copyrightVoitrans': '© 2025 Voitrans Technologies', + + // 新手引导 'skip': "跳過", 'next': '下一步', - 'sayLilyHint': "Say \"Lily Lily\" to the mic", - '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, ", - // AI 引导步骤 - '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", - - // 商务会议助手页 + '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": "開始會議", 'edit': '編輯', 'delete': '刪除', @@ -442,8 +460,6 @@ const Map zhTW = { 'recordingDetails': '錄音詳情', 'aiSummary': 'AI總結', 'meetingTranscript': '會議原文', - - // Meeting模块 - 导航和基础功能 'files': '檔案', 'mine': '我的', 'connect': '連接', @@ -496,7 +512,6 @@ const Map zhTW = { 'summarizing': '正在總結...', 'analyzing': '正在分析...', 'summaryComplete': '總結完成', - //'generating': '正在生成...', 'generate': '生成', 'overview': '概覽', 'transcription': '轉寫', @@ -505,11 +520,99 @@ const Map zhTW = { 'editSpeaker': '編輯', 'nameSpeaker': '命名發言者', + // Meeting模块 - 转写与总结 + 'reSummarize': '重新總結', + 'dateAndTime': '日期時間', + 'location': '地點', + 'attendees': '與會人員', + 'inputLocation': '輸入地點', + 'inputAttendees': '輸入與會人員', + + // Meeting模块 - 模版与生成 + 'selectSummaryTemplate': '選擇總結模板', + 'useThisTemplate': '就用這個模板', + 'lastUsed': '上次使用', + 'create': '創建', + 'templateDetails': '模板詳情', + 'tag': '標籤', + 'description': '描述', + 'template': '模板', + 'deleteTemplate': '刪除模板', + 'deleteTemplateConfirm': '確定要刪除當前模板嗎?', + 'editTemplate': '編輯模板', + 'createTemplate': '創建模板', + 'name': '名稱', + 'templateContentHint': '請輸入模板內容!溫馨提示:點擊上方AI,根據上面填寫的名稱和描述,可以幫助你快速生成模板內容', + 'inputNameHint': '請輸入名稱', + 'inputDescHint': '請輸入描述', + 'custom': '自訂', + 'pleaseEnter': '請輸入', + 'viewAll': '查看全部', + 'recordingLanguage': '錄音語言', + 'chineseSimplified': '中文普通話(簡體)', + 'meetingGenerateNow': '立即生成', + 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', + 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', + + // Meeting模块 - 文件操作 + 'importing': '正在導入...', + 'batchImporting': '正在批量導入...', + 'importingLocalRecordings': '正在導入本地錄音...', + 'importFailed': '導入檔案失敗: {filePath}, error: {error}', + 'importSuccess': '成功導入本地 {count} 條錄音', + 'importError': '導入失敗: {error}', + 'pleaseSelectAudioFile': '請選擇音訊檔案', + 'shareAudio': '分享會議音訊', + 'shareComplete': '分享完成!', + 'shareFailed': '分享失敗: {error}', + 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', + + // Meeting模块 - 思维导图 + 'saveMindMap': '儲存思維導圖', + 'shareMindMap': '分享思維導圖', + 'shareSuccess': '分享成功', + + // Meeting模块 - AI问答 + 'askAI': '問 AI ...', + 'askAIPrompt': '今天我能幫您做點什麼呢?', + 'continueAsk': '繼續提問', + 'todoList': '待辦事項', + 'extractConclusion': '提取結論', + 'generateKeyIndicators': '生成關鍵指標', + + // Meeting模块 - 分享与导出 + 'shareLink': '分享連結', + 'copyTranscript': '複製轉寫', + 'copySummary': '複製總結', + 'exportAudio': '導出音訊', + 'exportTranscript': '導出轉寫', + 'shareMeetingAudio': '分享會議音訊', + 'exportSummary': '導出總結', + 'exportAs': '導出為', + 'exportingPDF': '正在導出PDF...', + 'export': '導出', + + // Meeting模块 - 发言者 + 'applyToAllParagraphs': '應用到這個發言者的所有段落', + 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', + 'nameCurrentSpeaker': '命名當前發言者', + 'recentlyUsedNames': '最近使用過的名稱', + 'applyToCurrentParagraph': '應用到當前段落', + 'totalTime': '總計', + 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', + + // Meeting模块 - 云端同步 + 'syncToCloud': '同步到雲端', + 'syncToCloudTip': + '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', + 'syncToVoitransApp': '同步VOITRANS APP', + 'transcriptionRecord': '轉寫記錄', + // Meeting模块 - 我的页面 'transcriptionRecords': '轉寫記錄', 'templateCommunity': '模板社區', 'comingSoon': '敬請期待', - 'integration': '集成', + 'integration': '整合', 'voitransPrivateCloud': 'VOITRANS PRIVATE CLOUD', 'enabled': '開啟', 'disabled': '關閉', @@ -523,7 +626,7 @@ const Map zhTW = { 'bindDeviceToActivate': '綁定 Voitrans 設備可啟用 Starter 會員', 'unlockNow': '立即解鎖', - // Meeting模块 - 会员功能 + // Meeting模块 - 会员与升级 'comparison': '對比', 'detailedInfo': '詳細資訊', 'monthlyTranscriptionTime': '每月轉寫時長', @@ -549,8 +652,6 @@ const Map zhTW = { 'aiVoiceEnhancementDesc': 'AI 人聲增強支援多檔降噪設定,智能消除背景噪音,增強語音清晰度,提升音訊回放效果。', 'audioImportDesc': '可以輕鬆從本地或第三方應用導入音訊檔案,如語音備忘錄、Google雲端硬碟等。', 'multipleExportFormatsDesc': '導出您的音訊錄音、轉寫文本和摘要為各種格式(TXT、PDF、JPEG),以滿足您的需求。', - - // Meeting模块 - 升级会员 'upgradeMembership': '升級您的會員', 'yearlySubscription': '年訂閱', 'monthlySubscription': '月訂閱', @@ -575,132 +676,27 @@ const Map zhTW = { 'validityNote': '購買後立即啟用,啟用後2年內有效。', 'purchase': '購買', - // Meeting模块 - 模版和生成 - 'selectSummaryTemplate': '選擇總結模板', - 'useThisTemplate': '就用這個模板', - 'lastUsed': '上次使用', - 'create': '創建', - 'templateDetails': '模板詳情', - 'tag': '標籤', - 'description': '描述', - 'template': '模板', - 'deleteTemplate': '刪除模板', - 'deleteTemplateConfirm': '確定要刪除當前模板嗎?', - 'editTemplate': '編輯模板', - 'createTemplate': '創建模板', - 'name': '名稱', - 'templateContentHint': '請輸入模板內容!溫馨提示:點擊上方AI,根據上面填寫的名稱和描述,可以幫助你快速生成模板內容', - 'inputNameHint': '請輸入名稱', - 'inputDescHint': '請輸入描述', - 'custom': '自訂', - 'pleaseEnter': '請輸入', - 'viewAll': '查看全部', - 'recordingLanguage': '錄音語言', - 'chineseSimplified': '中文普通話(簡體)', - 'meetingGenerateNow': '立即生成', - 'keyEventsAnalyzed': '分析出{count}個關鍵事件。', - 'aiAnalysisDesc': 'AI分析識別錄音中的關鍵事件,讓你選擇重要事件進行AI生成。', - - // Meeting模块 - 文件操作和状态 - 'importing': '正在導入...', - 'batchImporting': '正在批量導入...', - 'importingLocalRecordings': '正在導入本地錄音...', - 'importFailed': '導入檔案失敗: {filePath}, error: {error}', - 'importSuccess': '成功導入本地 {count} 條錄音', - 'importError': '導入失敗: {error}', - 'pleaseSelectAudioFile': '請選擇音訊檔案', - 'shareAudio': '分享會議音訊', - 'shareComplete': '分享完成!', - 'shareFailed': '分享失敗: {error}', - 'fileProcessingFailed': '檔案處理失敗: {filePath}, 錯誤: {error}', + // Meeting模块 - 录音语言 + 'recordLanguage': '錄音語言', + 'cantonese': '粵語', + 'sichuan': '四川話', + 'shanghai': '上海話', - // 翻译模块 - Meeting相关 + // Meeting模块 - 错误提示 'meetingUnknownLanguage': '未知語言', - - // 权限相关 - Meeting相关 - 'meetingStoragePermission': '儲存', - 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', - 'meetingStoragePermissionPermanentDenial': - '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', - - // Meeting模块 - 思维导图相关 - 'saveMindMap': '儲存思維導圖', - 'shareMindMap': '分享思維導圖', - 'shareSuccess': '分享成功', - - // Meeting模块 - AI相关 - 'askAI': '問 AI ...', - 'askAIPrompt': '今天我能幫您做點什麼呢?', - 'continueAsk': '繼續提問', - 'todoList': '待辦事項', - 'extractConclusion': '提取結論', - 'generateKeyIndicators': '生成關鍵指標', - - // Meeting模块 - 更多操作相关 - 'reSummarize': '重新總結', - - // Meeting模块 - 错误提示相关 'analysisFailed': '分析失敗,請稍後重試', 'transcriptionFailed': '轉寫失敗,請稍後重試', 'summaryFailed': '總結失敗,請稍後重試', 'summaryFailedShort': '總結失敗', 'transcriptionFailedShort': '轉寫失敗', - // Meeting模块 - 播放器相关 + // Meeting模块 - 播放器 'playerNotReady': '音頻播放器未準備好,請稍候', 'playFailed': '播放失敗', 'audioFileNotFound': '音頻文件不存在', + 'fetchingAudio': '正在從雲端獲取音訊...', 'playerLoadFailed': '音頻播放器加載失敗', - // Meeting模块 - 录音语言相关 - 'recordLanguage': '錄音語言', - // 'chinese': '中文普通话(简体)', - 'cantonese': '粵語', - 'sichuan': '四川話', - 'shanghai': '上海話', - // 'english': '英文', - // 'japanese': '日语', - // 'korean': '韩语', - // 'french': '法语', - // 'spanish': '西班牙语', - // 'portuguese': '葡萄牙语', - // 'indonesian': '印尼语', - - // Meeting模块 - 分享相关 - 'shareLink': '分享連結', - 'copyTranscript': '複製轉寫', - 'copySummary': '複製總結', - 'exportAudio': '導出音訊', - 'exportTranscript': '導出轉寫', - 'shareMeetingAudio': '分享會議音訊', - 'exportSummary': '導出總結', - 'exportAs': '導出為', - 'exportingPDF': '正在導出PDF...', - 'export': '導出', - - // Meeting模块 - 发言者相关 - 'applyToAllParagraphs': '應用到這個發言者的所有段落', - 'summaryWillBeUpdatedAutomatically': '總結將根據模版自動更新', - 'nameCurrentSpeaker': '命名當前發言者', - 'recentlyUsedNames': '最近使用過的名稱', - 'applyToCurrentParagraph': '應用到當前段落', - 'totalTime': '總計', - 'summarySpeakerWillBeUpdatedAutomatically': '總結的發言者將自動更新', - - // Meeting模块 - 云端同步相关 - 'syncToCloud': '同步到雲端', - 'syncToCloudTip': - '自動將你的錄音同步到雲端,你可以通過任意VOITRANS APP或VOITRANS Web(web.voitrans.com)播放、管理和分享錄音。', - 'syncToVoitransApp': '同步VOITRANS APP', - 'transcriptionRecord': '轉寫記錄', - - // Meeting模块 - 总结页面相关 - 'dateAndTime': '日期時間', - 'location': '地點', - 'attendees': '與會人員', - 'inputLocation': '輸入地點', - 'inputAttendees': '輸入與會人員', - // 设置页 "systemSettings": "系統設定", "vipRecharge": "高級會員充值", @@ -748,25 +744,14 @@ const Map zhTW = { "bleHeadsetFirmwareUpgrade": "BLE耳機韌體版本升級", "deviceManagement": "設備管理", "manageConnectedDevices": "管理已綁定的藍牙設備", - - //设置setting_controller - // 版本更新相关 'currentLatestVersion': '當前已是最新版本 {version}', 'checkUpdateFailed': '檢查更新失敗', 'networkErrorRetry': '網路錯誤,請稍後重試', - -// 设备管理相关 - // 'clearPairedDevices': '清除配对设备', - // 'clearPairedDevicesConfirm': '确定要清除所有配对设备吗?', - // 'clearPairedDevicesSuccess': '清除配对设备成功', - // 'clearPairedDevicesFailed': '清除配对设备失败', - - // 设置页面 - 实时语音对话 "realtimeVoiceChat": "實時語音對話", "realtimeVoiceChatInfo": "體驗智能語音互動功能(功能預覽)", "loading": "載入中...", - //设备管理页面 + // 设备管理模块 "deviceTypeUnknown": '未知設備', "deviceTypeClassicBluetoothHeadset": '經典藍牙耳機', "deviceTypeBleBluetoothHeadset": 'BLE藍牙耳機', @@ -781,8 +766,7 @@ const Map zhTW = { "confirmUnbindMessage": '確定要解除綁定設備 "{deviceName}" 嗎?', "confirmUnbindAction": '確認解除綁定', -//Agent 模块 - // agent View + // Agent模块 - 主界面 "Lily": "Lily", "clearChatHistory": "清空聊天記錄", "online": "在線", @@ -812,8 +796,9 @@ const Map zhTW = { "swipeUpForMore": "向上滑動查看更多", "callingTool": "正在幫您,請稍等!", // 正在帮您,请稍等! "voice_interrupt": "語音打斷", // 语音打断 + 'voice_interrupt_tip': '開啟後:AI播報時不會被語音打斷,只能進行單輪對話,需要打斷時請說喚醒詞開啟新一輪對話。', - // 预设提示词 + // Agent模块 - 预设提示词 "presetMusic": '來點音樂', // 来点音乐 "presetNavigation": '導航到', // 导航 "presetWeather": '今日天氣', // 今日天气 @@ -825,7 +810,7 @@ const Map zhTW = { "todayNews": '今天有哪些新聞?', // 今日新闻 "nearbyFood": '附近有哪些美食?', // 美食 - // Agent controller + // Agent模块 - 欢迎消息与权限 'welcomeMessage': '你好!我是**Lily**,我能幫你:\n\n' '• 回答問題和提供資訊\n\n' '• 實時語音翻譯\n\n' @@ -841,18 +826,17 @@ const Map zhTW = { 'startVoiceInput': '開始語音輸入', 'startPhoneCallMode': '開始打電話模式,開始語音輸入', - // Agent 全屏编辑器 + // Agent模块 - 全屏编辑器 'fullScreenEditorHint': '在這裡輸入你的訊息...', // 全屏编辑器输入提示 'characterCount': '{count} 字元', // 字符计数显示 - // 消息长按操作 + // Agent模块 - 消息操作 'copy': '複製', 'copySuccess': '複製成功', 'report': '舉報', 'submitSuccess': '提交成功', 'submitFailed': '提交失敗', 'reportSubmitted': '舉報已提交,我們會盡快處理', - //'networkError': '网络错误,请稍后重试', 'harmfulUnsafe': '有害/不安全', 'pornographicVulgar': '色情低俗', 'misleadingAttack': '誤導攻擊', @@ -861,17 +845,21 @@ const Map zhTW = { 'copyrightViolation': '侵犯我的著作權、名譽權等', 'other': '其他', 'reportDescriptionHint': '我們想知道你舉報的原因,你可以描述你遇到的問題。', - //'submit': '提交', - - //Message_bubble 'generatedByAi': '由AI生成', - //音乐卡片 music_card + // Agent模块 - 工具调用 + 'toolCall': '工具呼叫', + 'noResult': '無結果', + 'noToolCallContentToCopy': '沒有工具呼叫內容可以複製', + 'toolCallDetails': '工具呼叫詳情:', + 'toolCallContentCopied': '工具呼叫內容已複製到剪貼簿', + + // Agent模块 - 音乐卡片 'recommendedMusic': '以下是一些推薦的音樂:', 'playList': '播放清單', 'moreMusic': '更多音樂', - //导航卡片 navigation_card + // Agent模块 - 导航卡片 'kilometers': '公里', // 公里单位 'meters': '米', // 米单位 'hours': '小時', // 小时单位 @@ -886,7 +874,29 @@ const Map zhTW = { "bicycling": "騎行", "tsransit": "公共交通", - //天气卡片 weather_card + // Agent模块 - 导航选择 + 'selectNavigationApp': '選擇導航軟體', + 'amapMap': '高德地圖', + 'useAmapNavigation': '使用高德地圖導航', + 'baiduMap': '百度地圖', + 'useBaiduNavigation': '使用百度地圖導航', + 'googleMap': 'Google 地圖', + 'useGoogleNavigation': '使用 Google 地圖導航', + 'appleMap': 'Apple 地圖', + 'useAppleNavigation': '使用 Apple 地圖導航', + 'builtInNavigation': '內建導航', + 'useBuiltInNavigation': '使用內建地圖導航', + 'navigationStartFailed': '啟動導航失敗', + 'cannotPlayMusicListRetryLater': '無法播放音樂清單,請稍後重試', + 'cannotPlaySong': '無法播放歌曲', + 'openMapError': '開啟地圖時發生錯誤', + 'pleaseInstallAmapApp': '請先安裝高德地圖應用程式', + 'pleaseInstallBaiduMapApp': '請先安裝百度地圖應用程式', + 'appleMapStartFailed': 'Apple 地圖啟動失敗', + 'appleMapUnavailable': 'Apple 地圖無法使用', + 'openAppleMapError': '開啟 Apple 地圖時發生錯誤', + + // Agent模块 - 天气卡片 'weatherQuery': '查詢天氣情況:', 'highest': '最高', 'lowest': '最低', @@ -907,18 +917,8 @@ const Map zhTW = { "friday": "週五", "saturday": "週六", "sunday": "週日", - // 首次绑定奖励弹窗(英文文案,保持一致性) - "firstBindRewardTitle": 'Welcome Reward', - "firstBindRewardDesc": 'You\'ve received binding rewards.', - "vipLevelLabel": 'VIP Level:', - "expiryLabel": '到期時間:', - "notActivated": '未啟用', - "aiChatCreditsLabel": 'AI Chat Credits:', - "translationCreditsLabel": 'Translation Credits:', - "meetingCreditsLabel": 'Meeting Credits:', - "ok": 'OK', - // 天气描述 + // Agent模块 - 天气描述 "sunny": "晴", "partlyCloudy": "少雲", "partlySunny": "晴間多雲", @@ -939,7 +939,129 @@ const Map zhTW = { "haze": "霾", "strongWind": "大風", - //编辑个人信息页 + // 翻译模块 - 中间层 + "pictureTranslation": '圖片翻譯', + "textTranslation": '文本翻譯', + + // 翻译模块 - 主页 + "translationHistory": "翻譯歷史", + "enableRecording": "是否開啟錄音", + "viewAudioFiles": "查看錄音檔案", + "headsetUser": "耳機使用者", + "phoneUser": "手機使用者", + "selectSourceLanguage": "選擇來源語言", + "selectTargetLanguage": "選擇目標語言", + "me": '我', + "counterPart": '對方', + "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', + "autoDetect": '自動檢測', // 自动检测 + + // 翻译模块 - 悬浮窗与权限 + 'disableFloatingWindow': '停用懸浮視窗', + 'enableFloatingWindow': '啟用懸浮視窗', + 'permissionTip': '權限提示', + 'micPermissionRequiredForRecording': '需要麥克風權限才能使用錄音功能', + 'deleteTranslationRecordError': '刪除翻譯記錄時發生錯誤: @error', + + // 翻译模块 - 文本翻译 + "languageDetectionFailed": '語言檢測失敗', + "translationFailed": '翻譯失敗', + "translating": "正在翻譯", + "translate": "翻譯", + "pleaseInputText": '請輸入文本', + "inputTextToTranslate": "請輸入待翻譯的文字", + "textTooLong": '文本過長,最多5000字符', + + // 翻译模块 - 历史记录 + "noTranslationHistory": "暫無歷史記錄", + "historyRecords": '歷史記錄', + "clearResults": '清空結果', + "clearHistory": "清除歷史記錄", + "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", + "unknownLanguage": "未知語言", + "deleteSessionRecord": "刪除對話記錄", + "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", + + // 翻译模块 - 图片翻译 + "selectImageSource": '選擇圖片來源', + "imagePreview": '圖片預覽', + "translationResult": '翻譯結果', + "recognitionResult": '識別結果', + "translatedImagePreview": '翻譯後的圖片預覽', + "translatedImageLoadFailed": '翻譯圖片載入失敗', + "pleaseSelectImage": '請選擇圖片', + "imageLoadFailed": '圖片載入失敗', + "imageQuality": '圖片品質', + "maxSize": '最大尺寸', + "close": '關閉', + "setImageQuality": '設定圖片品質', + "currentQuality": '當前品質: @value%', + "setMaxSize": '設定最大尺寸', + "currentMaxSize": '當前: @pxpx', + "waitingForAction": '等待操作', + "pleaseSelectImageToStart": '請選擇圖片開始翻譯', + "chooseImage": '選擇圖片', + "openingCamera": '正在打開相機...', + "openingPhotoAlbum": '正在打開相簿...', + "cancelled": '已取消', + "userCancelledSelection": '使用者取消了選擇', + "translatingImage": '翻譯圖片', + "callingImageTranslateService": '正在呼叫圖片翻譯服務...', + "savingRecord": '保存記錄', + "savingTranslationResult": '正在保存翻譯結果...', + "translationCompleted": '翻譯完成', + "allStepsCompleted": '所有步驟已完成', + "processingFailed": '處理失敗', + "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', + "imageTooLarge": '圖片大小超過4MB限制', + "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', + "emptyTranslationResult": '圖片翻譯介面返回空結果', + "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或介面限流,請稍後重試', + "imageTranslationApiException": '圖片翻譯介面呼叫異常,請檢查網路後重試', + "permissionRequired": '權限需求', + "cameraPermissionRequired": '需要相機權限才能拍照', + "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', + "translationDetails": '翻譯詳情', + "originalImage": '原圖片', + "sourceLanguage": '源語言', + "targetLanguage": '目標語言', + "translationTime": '翻譯時間', + "shareInDevelopment": '分享功能開發中', + + // 翻译模块 - 录音文件 + "translateAudioFiles": "翻譯錄音檔案", + "noAudioFiles": "暫無音訊檔案", + "calculating": "計算中...", + "playing": "播放中...", + "paused": "已暫停", + "clickToPlay": "點擊播放", + "rename": "重新命名", + "smartTranscription": "智能轉寫", + "renameAudioFile": "重新命名音訊檔案", + "enterNewFileName": "請輸入新的檔案名稱", + + // 翻译模块 - 翻译详情 + "originalRecord": "原始記錄", + "recordSummary": "記錄摘要", + "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", + "summaryContent": "摘要內容", + "copied": "已複製", + "summaryCopiledToClipboard": "摘要已複製到剪貼簿", + "extractSummary": "提取摘要", + "summaryGenerated": "已生成摘要", + "generating": "生成中...", + "regenerate": "重新生成", + "summaryTimeoutMessage": "生成摘要請求逾時,可能是網路問題或伺服器繁忙。", + "deleteTranslationRecord": "刪除翻譯記錄", + "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", + "originalText": "原文", + "translatedText": "譯文", + "sessionSummary": "對話摘要", + "cannotShare": "無法分享", + "generateSummaryFirst": "請先生成摘要", + "translationSessionRecord": "翻譯對話記錄", + + // 个人资料模块 "editProfile": "編輯個人資訊", "avatar": "頭像", "nickname": "暱稱", @@ -954,8 +1076,6 @@ const Map zhTW = { 'deleteAccountTips': '確定要永久刪除您的帳號嗎?此操作不可撤銷', 'clean': '清除快取', 'cleanTips': '確定要清除個人快取嗎?', - - // Profile 错误信息 'networkConnectionFailed': '網路連接失敗,請檢查網路設定後重試', 'serverTemporarilyUnavailable': '伺服器暫時無法回應,請稍後重試', 'loginExpiredPleaseRelogin': '登入已過期,請重新登入', @@ -967,10 +1087,6 @@ const Map zhTW = { 'serverError': '伺服器錯誤', 'networkConnectionFailedCheckSettings': '網路連接失敗,請檢查網路設定', 'serverInternalErrorRetryLater': '伺服器內部錯誤,請稍後重試', - -// Profile 用户交互 -//'error': '错误', -//'success': '成功', 'imageCompressionFailed': '圖片壓縮失敗', 'avatarUpdateFailed': '頭像更新失敗', 'usernameCannotBeEmpty': '使用者名稱不能為空', @@ -981,8 +1097,6 @@ const Map zhTW = { 'logoutFailedRetry': '登出失敗,請重試', 'accountPermanentlyDeleted': '帳號已被永久刪除', 'deleteAccountFailedRetry': '刪除帳號失敗,請重試', - - // 账号服务相关 'clearUserDataFailed': '清理使用者資料失敗', // 清理用户数据失败 'deleteUserDataFailed': '刪除使用者資料失敗', // 删除用户数据失败 'thirdPartyLogoutSuccess': '第三方登出成功', // 第三方登录退出成功 @@ -993,7 +1107,11 @@ const Map zhTW = { 'allUserDataClearSuccess': '所有使用者資料清理成功', // 所有用户数据清理成功 'accountServiceInitialized': 'AccountService 已初始化', // AccountService 已初始化 - // 权限管理页面 + // 权限模块 + 'meetingStoragePermission': '儲存', + 'meetingStoragePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', + 'meetingStoragePermissionPermanentDenial': + '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', 'getPermissionStatusFailed': '取得權限狀態失敗', 'communicationPermissions': '通訊權限', 'bluetoothPermissions': '藍牙權限', @@ -1006,7 +1124,6 @@ const Map zhTW = { 'phone': '電話', 'sms': '簡訊', 'contacts': '聯絡人', - //'bluetooth': '蓝牙', 'notification': '通知', 'alarm': '鬧鐘', 'calendarWrite': '日曆寫入', @@ -1045,8 +1162,6 @@ const Map zhTW = { 'appNeedsPermissionForFullFunction': '應用需要此權限以提供完整功能', 'permanentDenialText': '您已永久拒絕{permission}權限,請前往應用設定開啟', 'goToSettings': '去設定', - - // 权限申请 'bluetoothScan': '藍牙掃描', 'bluetoothConnect': '藍牙連接', 'bluetoothScanExplanation': '為了掃描附近的藍牙設備,應用需要取得藍牙掃描權限。', @@ -1061,7 +1176,6 @@ const Map zhTW = { 'locationPermissionExplanation': '需要定位權限來取得當前位置。', 'notificationPermissionPermanentDenial': '您已永久拒絕通知權限,請前往設定開啟權限。', 'locationPermissionPermanentDenial': '您已永久拒絕定位權限,請前往設定開啟權限。', -//'microphonePermission': '录音', 'storagePermission': '儲存', 'microphonePermissionExplanation': '我們需要存取麥克風權限,以便您錄製音訊內容。', 'storagePermissionExplanation': '我們需要存取儲存權限,以便您可以選擇並上傳音訊檔案。', @@ -1069,6 +1183,11 @@ const Map zhTW = { '檢測到您已永久拒絕錄音權限。如需繼續使用此功能,請前往應用設定中手動開啟麥克風權限。', 'storagePermissionPermanentDenial': '檢測到您已永久拒絕儲存權限。如需繼續使用此功能,請前往應用設定中手動開啟儲存權限。', + 'permissionUtilNeed': '需要', + 'permissionUtilPermission': '權限', + 'permissionUtilRestricted': '權限受限', + 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', + 'permissionUtilConfirm': '確定', // 原生前台服务通知(Android) 'native.notification.appName': 'VOITRANS', @@ -1083,14 +1202,7 @@ const Map zhTW = { 'native.notification.music.pause': '暫停', 'native.notification.qqMusic.playing': '正在播放音樂', - //permission_util.dart - 'permissionUtilNeed': '需要', - 'permissionUtilPermission': '權限', - 'permissionUtilRestricted': '權限受限', - 'permissionUtilRestrictedMessage': '此功能在當前設備上不可用或受限,請檢查設備設定或系統限制', - 'permissionUtilConfirm': '確定', - - // 版本更新对话框 + // 版本更新 'newVersionFound': '發現新版本', // 版本更新对话框标题 'remindLater': '稍後提醒', // 稍后提醒按钮 'updateNow': '立即更新', // 立即更新按钮 @@ -1099,242 +1211,7 @@ const Map zhTW = { 'cannotOpenAppStore': '無法打開應用商店,請手動前往應用商店更新', // 无法打开应用商店提示 'updateErrorRetry': '更新過程中發生錯誤,請稍後重試', // 更新错误重试提示 - //国家列表 - "邮箱": "電子郵件", - "中国": "中國", - "美国": "美國", - "加拿大": "加拿大", - "俄罗斯": "俄羅斯", - "英国": "英國", - "德国": "德國", - "意大利": "義大利", - "法国": "法國", - "西班牙": "西班牙", - "南非": "南非", - "沙特阿拉伯": "沙特阿拉伯", - "土耳其": "土耳其", - "日本": "日本", - "韩国": "韓國", - "新加坡": "新加坡", - "马来西亚": "馬來西亞", - "泰国": "泰國", - "越南": "越南", - "印度": "印度", - "巴基斯坦": "巴基斯坦", - "菲律宾": "菲律賓", - "印度尼西亚": "印度尼西亞", - "阿联酋": "阿聯酋", - "墨西哥": "墨西哥", - "巴西": "巴西", - "阿根廷": "阿根廷", - "澳大利亚": "澳大利亞", - "新西兰": "新西蘭", - "中国香港": "中國香港", - "中国澳门": "中國澳門", - "中国台湾": "中國台灣", - "埃及": "埃及", - "希腊": "希臘", - "荷兰": "荷蘭", - "比利时": "比利時", - "匈牙利": "匈牙利", - "罗马尼亚": "羅馬尼亞", - "瑞士": "瑞士", - "奥地利": "奧地利", - "丹麦": "丹麥", - "瑞典": "瑞典", - "挪威": "挪威", - "波兰": "波蘭", - "秘鲁": "秘魯", - "智利": "智利", - "哥伦比亚": "哥倫比亞", - "委内瑞拉": "委內瑞拉", - "葡萄牙": "葡萄牙", - "卢森堡": "盧森堡", - "爱尔兰": "愛爾蘭", - "冰岛": "冰島", - "阿尔巴尼亚": "阿爾巴尼亞", - "马耳他": "馬耳他", - "塞浦路斯": "塞浦路斯", - "芬兰": "芬蘭", - "保加利亚": "保加利亞", - "立陶宛": "立陶宛", - "拉脱维亚": "拉脫維亞", - "爱沙尼亚": "愛沙尼亞", - "乌克兰": "烏克蘭", - "塞尔维亚": "塞爾維亞", - "克罗地亚": "克羅埃西亞", - "斯洛文尼亚": "斯洛文尼亞", - "捷克": "捷克", - "斯洛伐克": "斯洛伐克", - "危地马拉": "危地馬拉", - "萨尔瓦多": "薩爾瓦多", - "洪都拉斯": "洪都拉斯", - "尼加拉瓜": "尼加拉瓜", - "哥斯达黎加": "哥斯達黎加", - "巴拿马": "巴拿馬", - "海地": "海地", - "玻利维亚": "玻利維亞", - "厄瓜多尔": "厄瓜多爾", - "巴拉圭": "巴拉圭", - "乌拉圭": "烏拉圭", - "摩洛哥": "摩洛哥", - "阿尔及利亚": "阿爾及利亞", - "突尼斯": "突尼斯", - "尼日利亚": "尼日利亞", - "加纳": "加納", - "埃塞俄比亚": "埃塞俄比亞", - "肯尼亚": "肯尼亞", - "坦桑尼亚": "坦桑尼亞", - "乌干达": "烏干達", - "孟加拉国": "孟加拉國", - "以色列": "以色列", - "黎巴嫩": "黎巴嫩", - "约旦": "約旦", - "伊拉克": "伊拉克", - "科威特": "科威特", - "巴林": "巴林", - "卡塔尔": "卡塔爾", - "阿曼": "阿曼", - "阿富汗": "阿富汗", - "斯里兰卡": "斯里蘭卡", - "缅甸": "緬甸", - "尼泊尔": "尼泊爾", - "蒙古": "蒙古", - "柬埔寨": "柬埔寨", - "老挝": "老撾", - "文莱": "文萊", - "东帝汶": "東帝汶", - "斐济": "斐濟", - "所罗门群岛": "所羅門群島", - "刚果民主共和国": '剛果民主共和國', - "安哥拉": '安哥拉', - "苏丹": '蘇丹', - "马尔代夫": '馬爾代夫', - "不丹": '不丹', - "摩纳哥": '摩納哥', - "圣马力诺": '聖馬力諾', - "牙买加": '牙買加', - "巴哈马": '巴哈馬', - "巴布亚新几内亚": '巴布亞新幾內亞', - "萨摩亚": '薩摩亞', - - // 翻译模块 - // 翻译中间层 (translation_middleware_view.dart) - "pictureTranslation": '圖片翻譯', - "textTranslation": '文本翻譯', - - // 翻译主页 (translation_view.dart) - "translationHistory": "翻譯歷史", - "enableRecording": "是否開啟錄音", - "viewAudioFiles": "查看錄音檔案", - "headsetUser": "耳機使用者", - "phoneUser": "手機使用者", - "selectSourceLanguage": "選擇來源語言", - "selectTargetLanguage": "選擇目標語言", - "me": '我', - "counterPart": '對方', - "bluetoothCallStateError": '請確保藍牙耳機已連接到手機並處於通話狀態', - - // 通用对话按钮与选项(用于统一语言选择弹窗等) - // 以下翻译键的中文文本内容如注释所示 - "autoDetect": '自動檢測', // 自动检测 - // 文本翻译与语种检测 - "languageDetectionFailed": '語言檢測失敗', - "translationFailed": '翻譯失敗', - "pleaseInputText": '請輸入文本', - "textTooLong": '文本過長,最多5000字符', - - // 翻译历史页 - "noTranslationHistory": "暫無歷史記錄", - "historyRecords": '歷史記錄', - "clearResults": '清空結果', - "clearHistory": "清除歷史記錄", - "clearHistoryConfirm": "確定要清除所有翻譯歷史記錄嗎?此操作無法撤銷。", - "unknownLanguage": "未知語言", - "deleteSessionRecord": "刪除對話記錄", - "deleteSessionConfirm": "確定要刪除該對話的所有翻譯記錄嗎?此操作無法撤銷。", - - // 图片翻译模块(Picture Translation) - "selectImageSource": '選擇圖片來源', - "imagePreview": '圖片預覽', - "translationResult": '翻譯結果', - "recognitionResult": '識別結果', - "translatedImagePreview": '翻譯後的圖片預覽', - "translatedImageLoadFailed": '翻譯圖片載入失敗', - "pleaseSelectImage": '請選擇圖片', - "imageLoadFailed": '圖片載入失敗', - "imageQuality": '圖片品質', - "maxSize": '最大尺寸', - "close": '關閉', - "setImageQuality": '設定圖片品質', - "currentQuality": '當前品質: @value%', - "setMaxSize": '設定最大尺寸', - "currentMaxSize": '當前: @pxpx', - "waitingForAction": '等待操作', - "pleaseSelectImageToStart": '請選擇圖片開始翻譯', - "chooseImage": '選擇圖片', - "openingCamera": '正在打開相機...', - "openingPhotoAlbum": '正在打開相簿...', - "cancelled": '已取消', - "userCancelledSelection": '使用者取消了選擇', - "translatingImage": '翻譯圖片', - "callingImageTranslateService": '正在呼叫圖片翻譯服務...', - "savingRecord": '保存記錄', - "savingTranslationResult": '正在保存翻譯結果...', - "translationCompleted": '翻譯完成', - "allStepsCompleted": '所有步驟已完成', - "processingFailed": '處理失敗', - "imageProcessingOrTranslationFailed": '圖片處理或翻譯失敗,請重試。n錯誤資訊: {error}', - "imageTooLarge": '圖片大小超過4MB限制', - "imageTooLargeHint": '圖片大小超過4MB限制,請降低品質或尺寸後重試', - "emptyTranslationResult": '圖片翻譯介面返回空結果', - "imageTranslationFailedTryLater": '圖片翻譯失敗,可能的原因:網路異常或介面限流,請稍後重試', - "imageTranslationApiException": '圖片翻譯介面呼叫異常,請檢查網路後重試', - "permissionRequired": '權限需求', - "cameraPermissionRequired": '需要相機權限才能拍照', - "photoAlbumPermissionRequired": '需要相簿權限才能選擇圖片', - "translationDetails": '翻譯詳情', - "originalImage": '原圖片', - "sourceLanguage": '源語言', - "targetLanguage": '目標語言', - "translationTime": '翻譯時間', - "shareInDevelopment": '分享功能開發中', - - // 翻译录音文件列表页 - "translateAudioFiles": "翻譯錄音檔案", - "noAudioFiles": "暫無音訊檔案", - "calculating": "計算中...", - "playing": "播放中...", - "paused": "已暫停", - "clickToPlay": "點擊播放", - "rename": "重新命名", - "smartTranscription": "智能轉寫", - "renameAudioFile": "重新命名音訊檔案", - "enterNewFileName": "請輸入新的檔案名稱", - - // 翻译详情页 (translation_detail_view.dart) - "originalRecord": "原始記錄", - "recordSummary": "記錄摘要", - "clickToGenerateSummary": "點擊下方按鈕生成對話摘要", - "summaryContent": "摘要內容", - "copied": "已複製", - "summaryCopiledToClipboard": "摘要已複製到剪貼簿", - "extractSummary": "提取摘要", - "summaryGenerated": "已生成摘要", - "generating": "生成中...", - "regenerate": "重新生成", - "summaryTimeoutMessage": "生成摘要請求逾時,可能是網路問題或伺服器繁忙。", - "deleteTranslationRecord": "刪除翻譯記錄", - "deleteTranslationConfirm": "確定要刪除這條翻譯記錄嗎?此操作無法撤銷。", - "originalText": "原文", - "translatedText": "譯文", - "sessionSummary": "對話摘要", - "cannotShare": "無法分享", - "generateSummaryFirst": "請先生成摘要", - "translationSessionRecord": "翻譯對話記錄", - // 配对模块 - // 配对页面 (pairing_view.dart & pairing_view_new.dart) "devicePairing": "設備配對", "connectYourDeepSoundHeadset": "連接您的 Voitrans 耳機", "bind": "綁定", @@ -1343,14 +1220,11 @@ const Map zhTW = { "autoInputCode": "自動輸入代碼", "skipBinding": "跳過綁定", "rescan": "重新掃描", - "verifyingDevice": "正在驗證設備...", "confirmBinding": "確認綁定", "associatingDevice": "正在關聯設備...", "goToBluetoothSettings": "前往藍牙設定", 'bluetooth': '藍牙', - - // 配对状态文本 "readyToPair": "準備開始配對", "preparingPairingEnvironment": "正在準備配對環境...", "connectDeepSoundViaSystemBluetooth": "請先透過系統藍牙連接Voitrans設備", @@ -1358,8 +1232,6 @@ const Map zhTW = { "establishingDeviceAssociation": "正在建立設備關聯...", "waitingCompletePairing": "請稍候,正在完成配對...", "pairingSuccessRedirecting": "配對成功!即將跳轉到首頁...", - - // 配对错误状态文本 "ensureConnectedDeepSoundDevice": "請確保連接的是Voitrans設備", "deviceAlreadyBoundToOtherAccount": "該設備已被其他帳號綁定", "deviceAssociationFailed": "設備關聯失敗,請重試", @@ -1367,18 +1239,11 @@ const Map zhTW = { "networkError": "網路錯誤", "authorizationFailedCheckCode": "授權失敗,請檢查授權碼是否正確", "pairingFailedRetry": "配對失敗,請重試", - - // 配对控制器相关 - //'connectDevice': '连接设备', 'pleaseEnableBluetooth': '請開啟藍牙', 'deviceDisconnected': '設備已斷開', 'readyToStartPairing': '準備開始配對', 'checkingEnvironment': '正在檢查環境...', 'ensureHeadsetOnAndPairingMode': '請確保耳機已開啟並進入配對模式', - //'goToBluetoothSettings': '前往蓝牙设置', - //'verifyingDevice': '正在验证设备...', - //'confirmBinding': '确认绑定', - //'associatingDevice': '正在关联设备...', 'establishingSecureConnection': '正在建立安全連接...', 'needManualBindingAuthCode': '需要手動綁定授權碼...', 'pairingSuccessful': '配對成功!', @@ -1397,8 +1262,6 @@ const Map zhTW = { 'blePairingStartupFailed': 'BLE配對啟動失敗', 'bleConnectionFailed': 'BLE連接失敗', 'deviceAuthorizationFailedCheckCode': '設備授權失敗,請檢查授權碼', - - ///iOS蓝牙引导窗 'bluetoothGuideTitle': '需要手動開啟藍牙', // 需要手动开启蓝牙 'bluetoothGuideSteps': '請按照以下步驟操作:', // 请按照以下步骤操作: 'bluetoothGuideStep1': '開啟藍牙:設定 → 藍牙 → 開啟', // 开启蓝牙:设置 → 蓝牙 → 开启 @@ -1407,7 +1270,18 @@ const Map zhTW = { 'bluetoothGuideTip': '提示:也可以從控制中心長按藍牙圖標快速進入藍牙設定', // 提示:也可以从控制中心长按蓝牙图标快速进入蓝牙设置 'iKnow': '我知道了', // 我知道了 - //用户反馈页 + // 配对模块 - 绑定奖励 + "firstBindRewardTitle": '首次綁定獎勵', + "firstBindRewardDesc": '您已獲得綁定獎勵。', + "vipLevelLabel": 'VIP 等級:', + "expiryLabel": '到期時間:', + "notActivated": '未啟用', + "aiChatCreditsLabel": 'AI 聊天額度:', + "translationCreditsLabel": '翻譯額度:', + "meetingCreditsLabel": '會議額度:', + "ok": 'OK', + + // 用户反馈模块 "feedback": "使用者回饋", 'feedbackInfo': '提供反饋或建議', 'feedbackDescription': '請描述您遇到的問題或建議', @@ -1442,7 +1316,50 @@ const Map zhTW = { "updateContent": "更新內容", "removeEarbudsEnsureBattery": "取出雙耳機,並保證電量均為20%以上的狀態", - // 音乐列表页面 + // OTA升级模块 - 弹窗与对话框 + 'otaNewVersionFoundWithVersion': '發現新版本 @version', + 'otaConfirmUpdateNow': '是否立即更新?', + 'otaUpdate': '更新', + 'otaUpgradeSuccess': '升級成功', + 'otaUpgradeCompleteRepair': '韌體升級已完成!\n\n裝置需要重新配對才能正常使用,現在跳轉到配對頁面嗎?', + 'otaPairLater': '稍後配對', + 'otaPairNow': '立即配對', + 'okConfirm': '確定', + // OTA升级模块 - 设备检查 + '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': '本次更新包含效能最佳化和錯誤修復。', + 'otaGetLatestVersionFailed': '取得最新版本資訊失敗', + 'otaGetVersionInfoFailed': '取得版本資訊失敗', + 'otaCheckingDeviceStatus': '正在檢查裝置狀態...', + 'otaDownloadFailedCheckNetwork': '下載失敗,請檢查網路連線', + 'otaDownloadFailed': '下載失敗', + 'otaPreparingConnection': '準備裝置連線...', + 'otaConnectingDevice': '正在連線裝置...', + 'otaUpgradeStarted': 'OTA升級已開始...', + 'otaUpgradeProgressWithPercent': '升級進度: @percent%', + 'otaUpgradeSuccessComplete': '升級成功完成', + 'otaUpgradeFailedWithCode': '升級失敗,錯誤碼:@code', + 'otaUpgradeFailedTitle': '升級失敗', + 'otaUpgradeFailedDesc': '請檢查裝置連線或升級套件,錯誤碼:@code', + 'otaDeviceDisconnected': '裝置連線中斷', + 'otaDeviceConnected': '裝置連線成功', + + // 音乐模块 "noMusic": "暫無音樂", // 暂无音乐 "noPlayingMusic": "暫無播放音樂", // 暂无播放音乐 "unknownSong": "未知歌曲", // 未知歌曲 @@ -1490,20 +1407,122 @@ const Map zhTW = { "波斯语": "波斯語", "斯瓦希里语": "斯瓦希里語", - // 时间相关 - "justNow": '剛剛', - "minutesAgo": '@minutes分鐘前', - "yesterday": '昨天', - // 时间扩展(图片翻译模块使用) - "daysAgo": '@days天前', - "hoursAgo": '@hours小時前', - - //补充 - "insufficientIntegral": '積分不足', - - //余额不足弹窗 - "insufficientBalanceDesc": "餘額不足,請前往對應充值界面進行充值", - "recharge": "去充值", - // 会员到期提示 - "aiMemberExpiredDesc": 'AI會員已到期,請前往會員充值續費', + // 国家列表 + "邮箱": "電子郵件", + "中国": "中國", + "美国": "美國", + "加拿大": "加拿大", + "俄罗斯": "俄羅斯", + "英国": "英國", + "德国": "德國", + "意大利": "義大利", + "法国": "法國", + "西班牙": "西班牙", + "南非": "南非", + "沙特阿拉伯": '沙烏地阿拉伯', + "土耳其": "土耳其", + "日本": "日本", + "韩国": "韓國", + "新加坡": "新加坡", + "马来西亚": "馬來西亞", + "泰国": "泰國", + "越南": "越南", + "印度": "印度", + "巴基斯坦": "巴基斯坦", + "菲律宾": "菲律賓", + "印度尼西亚": "印度尼西亞", + "阿联酋": "阿聯酋", + "墨西哥": "墨西哥", + "巴西": "巴西", + "阿根廷": "阿根廷", + "澳大利亚": "澳大利亞", + "新西兰": "新西蘭", + "中国香港": "中國香港", + "中国澳门": "中國澳門", + "中国台湾": "中國台灣", + "埃及": "埃及", + "希腊": "希臘", + "荷兰": "荷蘭", + "比利时": "比利時", + "匈牙利": "匈牙利", + "罗马尼亚": "羅馬尼亞", + "瑞士": "瑞士", + "奥地利": "奧地利", + "丹麦": "丹麥", + "瑞典": "瑞典", + "挪威": "挪威", + "波兰": "波蘭", + "秘鲁": "秘魯", + "智利": "智利", + "哥伦比亚": "哥倫比亞", + "委内瑞拉": "委內瑞拉", + "葡萄牙": "葡萄牙", + "卢森堡": "盧森堡", + "爱尔兰": "愛爾蘭", + "冰岛": "冰島", + "阿尔巴尼亚": "阿爾巴尼亞", + "马耳他": "馬耳他", + "塞浦路斯": '賽普勒斯', + "芬兰": "芬蘭", + "保加利亚": "保加利亞", + "立陶宛": "立陶宛", + "拉脱维亚": "拉脫維亞", + "爱沙尼亚": "愛沙尼亞", + "乌克兰": "烏克蘭", + "塞尔维亚": "塞爾維亞", + "克罗地亚": "克羅埃西亞", + "斯洛文尼亚": "斯洛文尼亞", + "捷克": "捷克", + "斯洛伐克": "斯洛伐克", + "危地马拉": "危地馬拉", + "萨尔瓦多": "薩爾瓦多", + "洪都拉斯": '宏都拉斯', + "尼加拉瓜": "尼加拉瓜", + "哥斯达黎加": "哥斯達黎加", + "巴拿马": "巴拿馬", + "海地": "海地", + "玻利维亚": "玻利維亞", + "厄瓜多尔": "厄瓜多爾", + "巴拉圭": "巴拉圭", + "乌拉圭": "烏拉圭", + "摩洛哥": "摩洛哥", + "阿尔及利亚": "阿爾及利亞", + "突尼斯": "突尼斯", + "尼日利亚": "尼日利亞", + "加纳": "加納", + "埃塞俄比亚": "埃塞俄比亞", + "肯尼亚": "肯尼亞", + "坦桑尼亚": "坦桑尼亞", + "乌干达": "烏干達", + "孟加拉国": "孟加拉國", + "以色列": "以色列", + "黎巴嫩": "黎巴嫩", + "约旦": "約旦", + "伊拉克": "伊拉克", + "科威特": "科威特", + "巴林": "巴林", + "卡塔尔": "卡塔爾", + "阿曼": "阿曼", + "阿富汗": "阿富汗", + "斯里兰卡": "斯里蘭卡", + "缅甸": "緬甸", + "尼泊尔": "尼泊爾", + "蒙古": "蒙古", + "柬埔寨": "柬埔寨", + "老挝": "老撾", + "文莱": "文萊", + "东帝汶": "東帝汶", + "斐济": "斐濟", + "所罗门群岛": "所羅門群島", + "刚果民主共和国": '剛果民主共和國', + "安哥拉": '安哥拉', + "苏丹": '蘇丹', + "马尔代夫": '馬爾代夫', + "不丹": '不丹', + "摩纳哥": '摩納哥', + "圣马力诺": '聖馬力諾', + "牙买加": '牙買加', + "巴哈马": '巴哈馬', + "巴布亚新几内亚": '巴布亞新幾內亞', + "萨摩亚": '薩摩亞', }; diff --git a/lib/core/utils/doc_url_helper.dart b/lib/core/utils/doc_url_helper.dart new file mode 100644 index 000000000..951ac88bf --- /dev/null +++ b/lib/core/utils/doc_url_helper.dart @@ -0,0 +1,27 @@ +import 'package:get/get.dart'; + +/// 根据当前语言返回 doc 目录名,如 "zh_cn"、"en"、"fr" +String docLangPath() { + final lang = Get.locale?.languageCode ?? 'en'; + final country = Get.locale?.countryCode?.toUpperCase() ?? ''; + if (lang == 'zh') { + if (country == 'CN') return 'zh_cn'; + if (country == 'HK') return 'zh_hk'; + return 'zh_tw'; + } + const supported = [ + 'ar', 'bg', 'cs', 'da', 'de', 'el', 'es', 'et', 'fa', 'fi', 'fr', + 'hi', 'hr', 'hu', 'id', 'is', 'it', 'ja', 'ko', 'lt', 'lv', 'ms', + 'nb', 'nl', 'pl', 'pt', 'ro', 'ru', 'sk', 'sl', 'sr', 'sv', 'th', + 'tl', 'tr', 'uk', 'vi', + ]; + return supported.contains(lang) ? lang : 'en'; +} + +/// 构建隐私政策 URL +String privacyPolicyUrl() => + 'https://www.voitrans.net/doc/${docLangPath()}/privacy_policy.html'; + +/// 构建用户协议 URL +String userAgreementUrl() => + 'https://www.voitrans.net/doc/${docLangPath()}/user_agreement.html'; diff --git a/lib/data/services/db/database_helper.dart b/lib/data/services/db/database_helper.dart index 8c3945a7a..e0c176aa1 100644 --- a/lib/data/services/db/database_helper.dart +++ b/lib/data/services/db/database_helper.dart @@ -27,7 +27,7 @@ class DatabaseHelper { } String path = join( await getDatabasesPath(), - _userId.isNotEmpty ? '${_userId}database.db' : 'database.db', + _userId.isNotEmpty ? '${_userId}database1.db' : 'database1.db', ); return await openDatabase(path, version: 1, onCreate: _createDB); } @@ -102,6 +102,7 @@ class DatabaseHelper { batch.execute(''' CREATE TABLE IF NOT EXISTS meetingtemplate ( id INTEGER PRIMARY KEY, + tid TEXT, categoryid INTEGER, name TEXT, icon TEXT, diff --git a/lib/data/services/db/sqflite_api.dart b/lib/data/services/db/sqflite_api.dart index d2cea8855..972245474 100644 --- a/lib/data/services/db/sqflite_api.dart +++ b/lib/data/services/db/sqflite_api.dart @@ -254,6 +254,7 @@ class SqfliteApi { ); Map template = { "id": item['id'], + 'tid': item['tid'], 'name': item['title'], 'icon': item['icon'], 'tag': item['tags'] ?? '', @@ -297,6 +298,7 @@ class SqfliteApi { Map template = item['templates'][j]; await txn.insert('meetingtemplate', { "id": template['id'], + 'tid': template['tid'], 'categoryid': categoryId, 'name': template['name'], 'icon': template['icon'], diff --git a/lib/data/services/meeting/meeting_task_service.dart b/lib/data/services/meeting/meeting_task_service.dart index 13ad8a1e8..971a85c5f 100644 --- a/lib/data/services/meeting/meeting_task_service.dart +++ b/lib/data/services/meeting/meeting_task_service.dart @@ -60,6 +60,7 @@ class MeetingTaskService extends GetxService { String tolanguage, bool isdistinguishspeaker, int templateid, + String tid, ) async { if (audiourl.isEmpty) { Map uploadData = _uploadService.uploadList.firstWhere( @@ -73,6 +74,7 @@ class MeetingTaskService extends GetxService { uploadData['tolanguage'] = tolanguage; uploadData['isdistinguishspeaker'] = isdistinguishspeaker; uploadData['templateid'] = templateid; + uploadData['tid'] = tid; } else { await submitTask( id, @@ -80,6 +82,7 @@ class MeetingTaskService extends GetxService { tolanguage, isdistinguishspeaker, templateid, + tid, ); } } @@ -90,6 +93,7 @@ class MeetingTaskService extends GetxService { tolanguage, isdistinguishspeaker, templateid, + tid, ); } } @@ -100,6 +104,7 @@ class MeetingTaskService extends GetxService { String tolanguage, bool isdistinguishspeaker, int templateid, + String tid, ) async { await Api.startTaskEchomeet({ 'id': id, @@ -107,6 +112,7 @@ class MeetingTaskService extends GetxService { 'tolanguage': tolanguage, 'isdistinguishspeaker': isdistinguishspeaker, 'templateid': templateid, + 'tid': tid, }); final seconds = await _getMeetingSeconds(id); _decrementMeetingIntegral(cost: seconds); @@ -122,11 +128,13 @@ class MeetingTaskService extends GetxService { _executeTask(); } - Future refreshTask(int id, int templateid) async { + Future refreshTask(int id, int templateid, String tid, String tolanguage) async { tasktype.value = 3; await Api.refreshTaskEchomeet({ 'id': id, 'templateid': templateid, + 'tid': tid, + 'tolanguage': tolanguage, }); _taskList.add({ 'id': id, diff --git a/lib/data/services/meeting/meeting_upload_service.dart b/lib/data/services/meeting/meeting_upload_service.dart index 2f8329cdb..b3f3f6f6c 100644 --- a/lib/data/services/meeting/meeting_upload_service.dart +++ b/lib/data/services/meeting/meeting_upload_service.dart @@ -147,6 +147,7 @@ class MeetingUploadService extends GetxService { element['tolanguage'], element['isdistinguishspeaker'], element['templateid'], + element['tid'] ?? '', ); } element['audiourl'] = audiourl; diff --git a/lib/data/services/network/api.dart b/lib/data/services/network/api.dart index 9920fdf89..57293e843 100644 --- a/lib/data/services/network/api.dart +++ b/lib/data/services/network/api.dart @@ -1,7 +1,65 @@ import 'dio_manager.dart'; import 'nw_method.dart'; +import 'package:get/get.dart'; class Api { + static String _normalizeTemplateLanguageTag(String value) { + final normalized = value.trim().replaceAll('_', '-'); + if (normalized.isEmpty) { + return 'en-US'; + } + final parts = normalized.split('-').where((e) => e.isNotEmpty).toList(); + if (parts.isEmpty) { + return 'en-US'; + } + if (parts.length == 1) { + return parts.first.toLowerCase(); + } + return '${parts[0].toLowerCase()}-${parts[1].toUpperCase()}'; + } + + static String _currentTemplateLanguageParam() { + final locale = Get.locale ?? Get.deviceLocale; + final languageCode = locale?.languageCode.toLowerCase(); + if (languageCode == null || languageCode.isEmpty) { + return 'en-US'; + } + + final countryCode = locale?.countryCode?.toUpperCase(); + if (countryCode != null && countryCode.isNotEmpty) { + return '$languageCode-$countryCode'; + } + + switch (languageCode) { + case 'zh': + return 'zh-CN'; + case 'en': + return 'en-US'; + case 'ja': + return 'ja-JP'; + case 'ko': + return 'ko-KR'; + case 'fr': + return 'fr-FR'; + case 'de': + return 'de-DE'; + case 'es': + return 'es-ES'; + case 'it': + return 'it-IT'; + case 'pt': + return 'pt-BR'; + case 'ru': + return 'ru-RU'; + case 'ar': + return 'ar-SA'; + case 'hi': + return 'hi-IN'; + default: + return 'en-US'; + } + } + // 登录 static login([params]) { return DioManager().request( @@ -209,11 +267,18 @@ class Api { } //获取模版数据 - static getEchomeetTemplates([params]) { + static getEchomeetTemplates([dynamic params, String? language]) { + final resolvedLanguage = _normalizeTemplateLanguageTag( + language ?? _currentTemplateLanguageParam()); + final Map data = {}; + if (params is Map) { + data.addAll(Map.from(params)); + } + data['language'] = resolvedLanguage; return DioManager().request( NWMethod.post, '/api/home/echomeet_gettemplates', - params: params, + params: data, ); } diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index f16dd703d..0faf5f592 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -2156,10 +2156,10 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), ), // 标题 - const Padding( - padding: EdgeInsets.all(20), + Padding( + padding: const EdgeInsets.all(20), child: Text( - '选择导航软件', + 'selectNavigationApp'.tr, style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, @@ -2176,8 +2176,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), child: const Icon(Icons.map, color: Colors.blue), ), - title: const Text('高德地图'), - subtitle: const Text('使用高德地图导航'), + title: Text('amapMap'.tr), + subtitle: Text('useAmapNavigation'.tr), onTap: () { Get.back(); openGaodeMap(destination, endlatitude, endlongitude, mode); @@ -2192,8 +2192,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), child: const Icon(Icons.map, color: Colors.green), ), - title: const Text('百度地图'), - subtitle: const Text('使用百度地图导航'), + title: Text('baiduMap'.tr), + subtitle: Text('useBaiduNavigation'.tr), onTap: () { Get.back(); openBaiduMap(destination, endlatitude, endlongitude, mode); @@ -2208,8 +2208,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), child: const Icon(Icons.map, color: Colors.red), ), - title: const Text('谷歌地图'), - subtitle: const Text('使用谷歌地图导航'), + title: Text('googleMap'.tr), + subtitle: Text('useGoogleNavigation'.tr), onTap: () { Get.back(); openGoogleMap(destination, mode); @@ -2226,8 +2226,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), child: const Icon(Icons.map, color: Colors.orange), ), - title: const Text('苹果地图'), - subtitle: const Text('使用苹果地图导航'), + title: Text('appleMap'.tr), + subtitle: Text('useAppleNavigation'.tr), onTap: () { Get.back(); openAppleMap(destination, mode); @@ -2242,8 +2242,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { ), child: const Icon(Icons.navigation, color: Colors.grey), ), - title: const Text('内置导航'), - subtitle: const Text('使用内置地图导航'), + title: Text('builtInNavigation'.tr), + subtitle: Text('useBuiltInNavigation'.tr), onTap: () { Get.back(); openInternalGaodeMap( @@ -2361,7 +2361,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { // Get.snackbar('提示', '未找到可用的导航应用,请安装$availableApps'); } catch (e) { print('自动选择导航失败: $e'); - Get.snackbar('错误', '启动导航失败'); + Get.snackbar('error'.tr, 'navigationStartFailed'.tr); } } @@ -2472,8 +2472,8 @@ class AgentController extends GetxController with WidgetsBindingObserver { // 显示错误提示 Get.snackbar( - '播放失败', - '无法播放音乐列表,请稍后重试', + 'playFailed'.tr, + 'cannotPlayMusicListRetryLater'.tr, snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.red[400], colorText: Colors.white, @@ -2643,7 +2643,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { // Get.snackbar('开始播放', song.name); _qqmusicManager.syncCurrentPlayInfo(); } else { - Get.snackbar('播放失败', result['error'] ?? '无法播放歌曲'); + Get.snackbar('playFailed'.tr, result['error'] ?? 'cannotPlaySong'.tr); } return; } @@ -2665,7 +2665,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { // Get.snackbar('开始播放', song.name); _qqmusicManager.syncCurrentPlayInfo(); } else { - Get.snackbar('播放失败', result['error'] ?? '无法播放歌曲'); + Get.snackbar('playFailed'.tr, result['error'] ?? 'cannotPlaySong'.tr); } } } @@ -2688,7 +2688,7 @@ class AgentController extends GetxController with WidgetsBindingObserver { return true; } catch (e) { print('打开内置高德地图失败: $e'); - Get.snackbar('错误', '打开地图时发生错误'); + Get.snackbar('error'.tr, 'openMapError'.tr); return false; } } @@ -2797,12 +2797,12 @@ class AgentController extends GetxController with WidgetsBindingObserver { return launched; } else { print('高德地图未安装'); - Get.snackbar('提示', '请先安装高德地图应用'); + Get.snackbar('tip'.tr, 'pleaseInstallAmapApp'.tr); return false; } } catch (e) { print('打开高德地图失败: $e'); - Get.snackbar('错误', '打开地图时发生错误'); + Get.snackbar('error'.tr, 'openMapError'.tr); return false; } } @@ -2860,12 +2860,12 @@ class AgentController extends GetxController with WidgetsBindingObserver { return launched; } else { print('百度地图未安装'); - Get.snackbar('提示', '请先安装百度地图应用'); + Get.snackbar('tip'.tr, 'pleaseInstallBaiduMapApp'.tr); return false; } } catch (e) { print('打开百度地图失败: $e'); - Get.snackbar('错误', '打开地图时发生错误'); + Get.snackbar('error'.tr, 'openMapError'.tr); return false; } } @@ -2892,15 +2892,15 @@ class AgentController extends GetxController with WidgetsBindingObserver { ); if (!launched) { print('苹果地图启动失败'); - Get.snackbar('提示', '苹果地图启动失败'); + Get.snackbar('tip'.tr, 'appleMapStartFailed'.tr); } } else { print('苹果地图不可用'); - Get.snackbar('提示', '苹果地图不可用'); + Get.snackbar('tip'.tr, 'appleMapUnavailable'.tr); } } catch (e) { print('打开苹果地图失败: $e'); - Get.snackbar('错误', '打开苹果地图时发生错误'); + Get.snackbar('error'.tr, 'openAppleMapError'.tr); } } diff --git a/lib/modules/agent/views/message_bubble.dart b/lib/modules/agent/views/message_bubble.dart index ae545ae1f..e23024f1e 100644 --- a/lib/modules/agent/views/message_bubble.dart +++ b/lib/modules/agent/views/message_bubble.dart @@ -691,7 +691,7 @@ class MessageBubble extends GetView { child: Text( functionCalls != null && functionCalls!.isNotEmpty ? functionCalls!.keys.last - : '工具调用', + : 'toolCall'.tr, style: TextStyle( fontSize: 16, // 适当增大字体 color: @@ -812,7 +812,7 @@ class MessageBubble extends GetView { // 工具结果 - 剩余空间 Expanded( child: Text( - toolResult?.toString() ?? '无结果', + toolResult?.toString() ?? 'noResult'.tr, style: TextStyle( fontSize: 12, color: Theme.of(context).brightness == @@ -839,8 +839,8 @@ class MessageBubble extends GetView { void _copyFunctionCallsToClipboard() { if (functionCalls == null || functionCalls!.isEmpty) { Get.snackbar( - '提示', - '没有工具调用内容可以拷贝', + 'tip'.tr, + 'noToolCallContentToCopy'.tr, snackPosition: SnackPosition.BOTTOM, duration: const Duration(seconds: 2), ); @@ -848,7 +848,7 @@ class MessageBubble extends GetView { } StringBuffer buffer = StringBuffer(); - buffer.writeln('工具调用详情:'); + buffer.writeln('toolCallDetails'.tr); buffer.writeln('=' * 30); functionCalls!.forEach((toolName, toolData) { @@ -866,8 +866,8 @@ class MessageBubble extends GetView { Clipboard.setData(ClipboardData(text: buffer.toString())); Get.snackbar( - '成功', - '工具调用内容已复制到剪贴板', + 'success'.tr, + 'toolCallContentCopied'.tr, snackPosition: SnackPosition.BOTTOM, duration: const Duration(seconds: 2), ); diff --git a/lib/modules/ble/controllers/ble_controller.dart b/lib/modules/ble/controllers/ble_controller.dart index 91ce3f8dd..cac5eac27 100644 --- a/lib/modules/ble/controllers/ble_controller.dart +++ b/lib/modules/ble/controllers/ble_controller.dart @@ -44,7 +44,7 @@ class BleController extends GetxController { if (state == fbp.BluetoothAdapterState.on) { errorMessage.value = ''; } else { - errorMessage.value = '请开启蓝牙'; + errorMessage.value = 'pleaseEnableBluetooth'.tr; stopScan(); } }); @@ -59,7 +59,7 @@ class BleController extends GetxController { isScanning.value = scanning; }); } catch (e) { - errorMessage.value = '蓝牙初始化失败: $e'; + errorMessage.value = 'bleInitFailedWithError'.trParams({'error': e.toString()}); } } @@ -76,7 +76,7 @@ class BleController extends GetxController { statuses.values.every((status) => status == PermissionStatus.granted); if (!hasPermissions.value) { - errorMessage.value = '需要蓝牙和位置权限才能扫描设备'; + errorMessage.value = 'needBluetoothAndLocationPermission'.tr; } } catch (e) { print('检查权限失败: $e'); @@ -105,14 +105,14 @@ class BleController extends GetxController { if (hasPermanentlyDenied) { _showPermissionDialog(); } else { - errorMessage.value = '需要蓝牙和位置权限才能扫描设备'; + errorMessage.value = 'needBluetoothAndLocationPermission'.tr; } } return allGranted; } catch (e) { print('请求权限失败: $e'); - errorMessage.value = '权限请求失败: $e'; + errorMessage.value = 'permissionRequestFailedWithError'.trParams({'error': e.toString()}); return false; } } @@ -121,19 +121,19 @@ class BleController extends GetxController { void _showPermissionDialog() { Get.dialog( AlertDialog( - title: Text('需要权限'), - content: Text('应用需要蓝牙和位置权限才能扫描设备。请在设置中手动开启权限。'), + title: Text('needPermission'.tr), + content: Text('blePermissionDialogContent'.tr), actions: [ TextButton( onPressed: () => Get.back(), - child: Text('取消'), + child: Text('cancel'.tr), ), TextButton( onPressed: () { Get.back(); AppSettings.openAppSettings(); }, - child: Text('去设置'), + child: Text('goToSettings'.tr), ), ], ), @@ -144,12 +144,12 @@ class BleController extends GetxController { void _showBluetoothDialog() { Get.dialog( AlertDialog( - title: Text('需要开启蓝牙'), - content: Text('请开启蓝牙以扫描和连接设备。'), + title: Text('needEnableBluetooth'.tr), + content: Text('enableBluetoothDialogContent'.tr), actions: [ TextButton( onPressed: () => Get.back(), - child: Text('取消'), + child: Text('cancel'.tr), ), TextButton( onPressed: () { @@ -157,7 +157,7 @@ class BleController extends GetxController { // 尝试开启蓝牙 fbp.FlutterBluePlus.turnOn(); }, - child: Text('开启蓝牙'), + child: Text('enableBluetooth'.tr), ), ], ), @@ -191,7 +191,7 @@ class BleController extends GetxController { androidUsesFineLocation: true, ); } catch (e) { - errorMessage.value = '扫描失败: $e'; + errorMessage.value = 'bleScanFailedWithError'.trParams({'error': e.toString()}); } } @@ -217,15 +217,15 @@ class BleController extends GetxController { connectedDevice.value = device; Get.snackbar( - '连接成功', - '已连接到 ${device.platformName.isNotEmpty ? device.platformName : '未知设备'}', + 'bleConnectionSuccess'.tr, + 'bleConnectedToDevice'.trParams({'device': device.platformName.isNotEmpty ? device.platformName : 'unknownEquipment'.tr}), backgroundColor: Colors.green, colorText: Colors.white, ); } catch (e) { - errorMessage.value = '连接失败: $e'; + errorMessage.value = 'bleConnectionFailedWithError'.trParams({'error': e.toString()}); Get.snackbar( - '连接失败', + 'connectionFailed'.tr, e.toString(), backgroundColor: Colors.red, colorText: Colors.white, @@ -241,14 +241,14 @@ class BleController extends GetxController { connectedDevice.value = null; Get.snackbar( - '已断开连接', - '设备已断开连接', + 'bleDisconnected'.tr, + 'bleDeviceDisconnected'.tr, backgroundColor: Colors.orange, colorText: Colors.white, ); } } catch (e) { - errorMessage.value = '断开连接失败: $e'; + errorMessage.value = 'bleDisconnectFailedWithError'.trParams({'error': e.toString()}); } } @@ -260,15 +260,15 @@ class BleController extends GetxController { if (result.advertisementData.localName.isNotEmpty) { return result.advertisementData.localName; } - return '未知设备'; + return 'unknownEquipment'.tr; } // 获取信号强度描述 String getSignalStrengthText(int rssi) { - if (rssi >= -50) return '信号强'; - if (rssi >= -70) return '信号中等'; - if (rssi >= -90) return '信号弱'; - return '信号很弱'; + if (rssi >= -50) return 'signalStrong'.tr; + if (rssi >= -70) return 'signalMedium'.tr; + if (rssi >= -90) return 'signalWeak'.tr; + return 'signalVeryWeak'.tr; } // 获取信号强度图标 diff --git a/lib/modules/common/widgets/privacy_policy_dialog.dart b/lib/modules/common/widgets/privacy_policy_dialog.dart index b6863e2f3..70d461b32 100644 --- a/lib/modules/common/widgets/privacy_policy_dialog.dart +++ b/lib/modules/common/widgets/privacy_policy_dialog.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import '../webview_page.dart'; +import '../../../core/utils/doc_url_helper.dart'; /// 隐私政策弹窗组件 class PrivacyPolicyDialog extends StatelessWidget { @@ -77,15 +78,8 @@ class PrivacyPolicyDialog extends StatelessWidget { alignment: PlaceholderAlignment.middle, child: GestureDetector( onTap: () { - String url = - 'https://www.voitrans.net/doc/ysxy.html'; // 隐私政策链接 - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = - 'https://www.voitrans.net/doc/ysxy_en.html'; // 隐私政策英文链接 - } Get.to(() => WebViewPage( - url: url, + url: privacyPolicyUrl(), title: 'privacyPolicy'.tr, )); }, @@ -109,15 +103,8 @@ class PrivacyPolicyDialog extends StatelessWidget { alignment: PlaceholderAlignment.middle, child: GestureDetector( onTap: () { - String url = - 'https://www.voitrans.net/doc/yhxy.html'; // 用户协议链接 - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = - 'https://www.voitrans.net/doc/yhxy_en.html'; // 用户协议英文链接 - } Get.to(() => WebViewPage( - url: url, + url: userAgreementUrl(), title: 'userAgreement'.tr, // 用户协议 )); }, @@ -197,4 +184,4 @@ class PrivacyPolicyDialog extends StatelessWidget { ), ); } -} \ No newline at end of file +} diff --git a/lib/modules/login/views/login_view.dart b/lib/modules/login/views/login_view.dart index bfe280e28..a8c05a542 100644 --- a/lib/modules/login/views/login_view.dart +++ b/lib/modules/login/views/login_view.dart @@ -4,6 +4,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import '../controllers/login_controller.dart'; import '../../common/webview_page.dart'; +import '../../../core/utils/doc_url_helper.dart'; class LoginView extends GetView { const LoginView({Key? key}) : super(key: key); @@ -596,13 +597,8 @@ class LoginView extends GetView { children: [ GestureDetector( onTap: () { - String url = 'https://www.voitrans.net/doc/yhxy.html'; // 用户协议链接 - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = 'https://www.voitrans.net/doc/yhxy_en.html'; // 用户协议英文链接 - } Get.to(() => WebViewPage( - url: url, + url: userAgreementUrl(), title: 'userAgreement'.tr, )); }, @@ -623,15 +619,8 @@ class LoginView extends GetView { ), GestureDetector( onTap: () { - String url = 'https://www.voitrans.net/doc/ysxy.html'; // 隐私政策链接 - - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = 'https://www.voitrans.net/doc/ysxy_en.html'; // 隐私政策英文链接 - } - Get.to(() => WebViewPage( - url: url, + url: privacyPolicyUrl(), title: 'privacyPolicy'.tr, )); }, diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index 92be8644e..d6903030b 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -396,6 +396,7 @@ class MeetingDetailsController extends GetxController String tolanguage, bool isdistinguishspeaker, int templateid, + String tid, ) async { EasyLoading.show(); _everType = 2; @@ -407,16 +408,17 @@ class MeetingDetailsController extends GetxController tolanguage, isdistinguishspeaker, templateid, + tid, ); meetingDetails.value.tasktype = 1; meetingDetails.refresh(); EasyLoading.dismiss(); } - void refreshSummary(int templateid) async { + void refreshSummary(int templateid, String tid, String tolanguage) async { EasyLoading.show(); _everType = 4; - await _meetingTaskService.refreshTask(id, templateid); + await _meetingTaskService.refreshTask(id, templateid, tid, tolanguage); meetingDetails.value.tasktype = 3; meetingDetails.refresh(); EasyLoading.dismiss(); diff --git a/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart b/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart index b1af25ce0..38222afc8 100644 --- a/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart +++ b/lib/modules/meeting/views/bottomSheet/generate_bottom_sheet.dart @@ -255,8 +255,7 @@ class _GenerateBottomSheetState extends State { }, ), ), - if (!widget.isSummarizeAgain) - Container( + Container( margin: EdgeInsets.symmetric(horizontal: 12.w), decoration: BoxDecoration( color: isDarkMode ? const Color(0xFF2D2D2D) : Colors.white, @@ -264,47 +263,49 @@ class _GenerateBottomSheetState extends State { ), child: Column( children: [ - _row( - 'speakerIdentification'.tr, // 对应中文:区分说话人 - isDarkMode: isDarkMode, - widget: Transform.scale( - scale: 0.8, - alignment: Alignment.centerRight, - child: Switch( - value: _isSpeaker, - onChanged: (bool value) { - setState(() { - _isSpeaker = value; - }); - }, + if (!widget.isSummarizeAgain) + _row( + 'speakerIdentification'.tr, // 对应中文:区分说话人 + isDarkMode: isDarkMode, + widget: Transform.scale( + scale: 0.8, + alignment: Alignment.centerRight, + child: Switch( + value: _isSpeaker, + onChanged: (bool value) { + setState(() { + _isSpeaker = value; + }); + }, + ), ), ), - ), - _row( - 'recordingLanguage'.tr, // 对应中文:录音语言 - value: _formlanguageText, - isDarkMode: isDarkMode, - onTap: () { - Get.bottomSheet( - RecordLanguageBottomSheet(_formlanguage), - isScrollControlled: true, - backgroundColor: - isDarkMode ? Colors.grey[850] : Colors.grey[100], - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.vertical( - top: Radius.circular(12.r), + if (!widget.isSummarizeAgain) + _row( + 'recordingLanguage'.tr, // 对应中文:录音语言 + value: _formlanguageText, + isDarkMode: isDarkMode, + onTap: () { + Get.bottomSheet( + RecordLanguageBottomSheet(_formlanguage), + isScrollControlled: true, + backgroundColor: + isDarkMode ? Colors.grey[850] : Colors.grey[100], + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.vertical( + top: Radius.circular(12.r), + ), ), - ), - ).then((value) { - if (value != null) { - setState(() { - _formlanguageText = value['name']; - _formlanguage = value['value']; - }); - } - }); - }, - ), + ).then((value) { + if (value != null) { + setState(() { + _formlanguageText = value['name']; + _formlanguage = value['value']; + }); + } + }); + }, + ), _row( 'targetLanguage'.tr, // 对应中文:目标语言 value: _tolanguageText, @@ -354,13 +355,18 @@ class _GenerateBottomSheetState extends State { _storage.write("meeting_template_list", _templateList); Get.back(); if (widget.isSummarizeAgain) { - _controller.refreshSummary(_templateData['id']); + _controller.refreshSummary( + _templateData['id'], + _templateData['tid'] ?? '', + _tolanguage, + ); } else { _controller.summaryCreate( _formlanguage, _tolanguage, _isSpeaker, _templateData['id'], + _templateData['tid'] ?? '', ); } }, @@ -434,16 +440,25 @@ class _GenerateBottomSheetState extends State { ), ), Padding( - padding: EdgeInsets.symmetric(vertical: 10.w), - child: Text( - data['name'], - style: TextStyle( - fontSize: 16.sp, - color: isDarkMode ? Colors.white : Colors.black87, - fontWeight: FontWeight.bold, + padding: EdgeInsets.symmetric(vertical: 8.w), + child: SizedBox( + height: 22.w, + child: FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: Text( + data['name'], + maxLines: 1, + style: TextStyle( + fontSize: 16.sp, + color: isDarkMode ? Colors.white : Colors.black87, + fontWeight: FontWeight.bold, + ), + ), ), ), ), + const Spacer(), data['tag'].isNotEmpty ? Wrap( spacing: 5.w, diff --git a/lib/modules/ota_upgrade/controllers/ota_core_contropller.dart b/lib/modules/ota_upgrade/controllers/ota_core_contropller.dart index 71936672e..f7fae11f9 100644 --- a/lib/modules/ota_upgrade/controllers/ota_core_contropller.dart +++ b/lib/modules/ota_upgrade/controllers/ota_core_contropller.dart @@ -97,7 +97,7 @@ class OtaCoreService { return true; } catch (e) { - _showBleCheckFailedSnackbar('检查BLE连接状态时发生错误:$e'); + _showBleCheckFailedSnackbar('otaBleCheckErrorWithError'.trParams({'error': e.toString()})); return false; } } @@ -107,14 +107,14 @@ class OtaCoreService { Get.dialog( AlertDialog( title: Text( - 'BLE设备未连接', + 'otaBleNotConnected'.tr, style: TextStyle( color: Colors.red[700], fontWeight: FontWeight.w600, ), ), content: Text( - '固件升级需要连接BLE设备\n请确保设备已正确连接后再试', + 'otaBleNeedConnection'.tr, style: TextStyle( color: Colors.red[600], ), @@ -125,7 +125,7 @@ class OtaCoreService { style: TextButton.styleFrom( foregroundColor: Colors.red[700], ), - child: const Text('确定'), + child: Text('okConfirm'.tr), ), ], shape: RoundedRectangleBorder( @@ -145,14 +145,14 @@ class OtaCoreService { Get.dialog( AlertDialog( title: Text( - '设备信息不可用', + 'otaDeviceInfoUnavailableTitle'.tr, style: TextStyle( color: Colors.orange[700], fontWeight: FontWeight.w600, ), ), content: Text( - '无法获取设备信息\n请重新连接设备或稍后再试', + 'otaCannotGetDeviceInfo'.tr, style: TextStyle( color: Colors.orange[600], ), @@ -163,7 +163,7 @@ class OtaCoreService { style: TextButton.styleFrom( foregroundColor: Colors.orange[700], ), - child: const Text('确定'), + child: Text('okConfirm'.tr), ), ], shape: RoundedRectangleBorder( @@ -182,7 +182,7 @@ class OtaCoreService { /// [message] 错误信息 void _showBleCheckFailedSnackbar(String message) { Get.snackbar( - 'BLE连接检查失败', + 'otaBleCheckFailed'.tr, message, snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.red[600], @@ -202,7 +202,7 @@ class OtaCoreService { final deviceInfo = _bleManager.deviceInfo.value; if (deviceInfo == null) { - _showBatteryCheckFailedSnackbar('无法获取设备信息,请检查设备连接'); + _showBatteryCheckFailedSnackbar('otaCannotGetDeviceInfoCheckConnection'.tr); return false; } @@ -213,7 +213,7 @@ class OtaCoreService { // 如果根据设备名称找不到产品,尝试使用默认产品名称 product = AppConfig.getproduct("DeapSound"); if (product == null) { - _showBatteryCheckFailedSnackbar('无法获取产品信息,设备名称: $deviceName'); + _showBatteryCheckFailedSnackbar('otaCannotGetProductInfoWithName'.trParams({'deviceName': deviceName})); return false; } } @@ -236,7 +236,7 @@ class OtaCoreService { return _checkDoubleHeadsetBattery(leftBattery, rightBattery); } } catch (e) { - _showBatteryCheckFailedSnackbar('检查设备电量时发生错误:$e'); + _showBatteryCheckFailedSnackbar('otaBleCheckErrorWithError'.trParams({'error': e.toString()})); return false; } } @@ -253,14 +253,14 @@ class OtaCoreService { if (leftBattery > 0 && leftBattery != 127) { // 左耳有效,使用左耳电量 activeBattery = leftBattery; - activeEar = '左耳'; + activeEar = 'leftEar'.tr; } else if (rightBattery > 0 && rightBattery != 127) { // 左耳无效,使用右耳电量 activeBattery = rightBattery; - activeEar = '右耳'; + activeEar = 'rightEar'.tr; } else { // 两边都无效 - _showBatteryCheckFailedSnackbar('无法获取有效的电量信息'); + _showBatteryCheckFailedSnackbar('otaCannotGetBatteryInfo'.tr); return false; } @@ -285,7 +285,7 @@ class OtaCoreService { bool rightValid = rightBattery > 0 && rightBattery != 127; if (!leftValid || !rightValid) { - _showBatteryCheckFailedSnackbar('无法获取有效的电量信息'); + _showBatteryCheckFailedSnackbar('otaCannotGetBatteryInfo'.tr); return false; } @@ -314,15 +314,15 @@ class OtaCoreService { /// [earSide] 耳机端(左耳/右耳) /// [batteryLevel] 电量百分比 void _showSingleHeadsetLowBatteryDialog(String earSide, int batteryLevel) { - String message = '设备电量不足,无法进行固件升级\n'; - message += '升级要求:设备电量需大于20%\n'; - message += '当前电量:$earSide ${batteryLevel}%\n'; - message += '请充电后再试'; + String message = 'otaSingleBatteryLow'.trParams({ + 'ear': earSide, + 'battery': batteryLevel.toString(), + }); Get.dialog( AlertDialog( title: Text( - '电量不足', + 'otaLowBattery'.tr, style: TextStyle( color: Colors.orange[700], fontWeight: FontWeight.w600, @@ -340,7 +340,7 @@ class OtaCoreService { style: TextButton.styleFrom( foregroundColor: Colors.orange[700], ), - child: const Text('确定'), + child: Text('okConfirm'.tr), ), ], shape: RoundedRectangleBorder( @@ -359,15 +359,15 @@ class OtaCoreService { /// [leftBattery] 左耳电量 /// [rightBattery] 右耳电量 void _showLowBatteryDialog(int leftBattery, int rightBattery) { - String message = '设备电量不足,无法进行固件升级\n'; - message += '升级要求:左右耳电量均需大于20%\n'; - message += '当前电量:左耳 ${leftBattery}%,右耳 ${rightBattery}%\n'; - message += '请充电后再试'; + String message = 'otaDoubleBatteryLow'.trParams({ + 'left': leftBattery.toString(), + 'right': rightBattery.toString(), + }); Get.dialog( AlertDialog( title: Text( - '电量不足', + 'otaLowBattery'.tr, style: TextStyle( color: Colors.orange[700], fontWeight: FontWeight.w600, @@ -385,7 +385,7 @@ class OtaCoreService { style: TextButton.styleFrom( foregroundColor: Colors.orange[700], ), - child: const Text('确定'), + child: Text('okConfirm'.tr), ), ], shape: RoundedRectangleBorder( @@ -404,7 +404,7 @@ class OtaCoreService { /// [message] 错误信息 void _showBatteryCheckFailedSnackbar(String message) { Get.snackbar( - '电量检查失败', + 'otaBatteryCheckFailed'.tr, message, snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.orange[600], diff --git a/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart b/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart index 4fd5b841d..e2906bded 100644 --- a/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart +++ b/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart @@ -104,7 +104,7 @@ class OtaUpgradeController extends GetxController { // 设置更新描述信息 updatedescription.value = - latestInfo['updateDescription'] ?? '本次更新包含性能优化和错误修复。'; + latestInfo['updateDescription'] ?? 'otaDefaultUpdateDesc'.tr; // 检查是否有更新 isUpdateAvailable.value = _coreService.isNewVersionAvailable( @@ -125,11 +125,11 @@ class OtaUpgradeController extends GetxController { if (latestVersion.value.isNotEmpty) { _uiService.showUpdateDialog(latestVersion.value, _startUpdateProcess); } else { - _uiService.showErrorSnackbar('错误', '获取最新版本信息失败', + _uiService.showErrorSnackbar('error'.tr, 'otaGetLatestVersionFailed'.tr, backgroundColor: Colors.orange[800]); } } catch (e) { - _uiService.showErrorSnackbar('错误', '获取版本信息失败', + _uiService.showErrorSnackbar('error'.tr, 'otaGetVersionInfoFailed'.tr, backgroundColor: Colors.orange[800]); } } @@ -139,7 +139,7 @@ class OtaUpgradeController extends GetxController { Future startUpdate() async { //立即给用户状态反馈 showDetailedStatus.value = true; - detailedStatus.value = '正在检查设备状态...'; + detailedStatus.value = 'otaCheckingDeviceStatus'.tr; await _startUpdateProcess(); } @@ -180,9 +180,9 @@ class OtaUpgradeController extends GetxController { await _startUpgrading(filePath); } catch (e) { isDownloading.value = false; - detailedStatus.value = '下载失败,请检查网络连接'; + detailedStatus.value = 'otaDownloadFailedCheckNetwork'.tr; showDetailedStatus.value = false; - _handleError('下载失败', e.toString()); + _handleError('otaDownloadFailed'.tr, e.toString()); Logger.d('OtaUpgradeController', '下载失败: $e'); } } @@ -191,9 +191,9 @@ class OtaUpgradeController extends GetxController { /// [filePath] 固件文件路径 /// 启动OTA升级过程 Future _startUpgrading(String filePath) async { - detailedStatus.value = '准备设备连接...'; + detailedStatus.value = 'otaPreparingConnection'.tr; await Future.delayed(const Duration(milliseconds: 500)); - detailedStatus.value = '正在连接设备...'; + detailedStatus.value = 'otaConnectingDevice'.tr; _jlota.startUpgrading(address: _address, filePath: filePath); } @@ -236,13 +236,13 @@ class OtaUpgradeController extends GetxController { type.value = event.type!; isUpgrade.value = true; detailedStatus.value = - '升级进度: ${(event.progress! * 100).toStringAsFixed(1)}%'; + 'otaUpgradeProgressWithPercent'.trParams({'percent': (event.progress! * 100).toStringAsFixed(1)}); } break; case 'onStartOTA': type.value = OtaCoreService.START_UPGRADING; isUpgrade.value = true; - detailedStatus.value = 'OTA升级已开始...'; + detailedStatus.value = 'otaUpgradeStarted'.tr; break; case 'onStopOTA': _handleUpgradeSuccess(); @@ -264,7 +264,7 @@ class OtaUpgradeController extends GetxController { void _handleUpgradeSuccess() { type.value = OtaCoreService.UPGRADE_SUCCESS; isUpgrade.value = false; - detailedStatus.value = '升级成功完成'; + detailedStatus.value = 'otaUpgradeSuccessComplete'.tr; showDetailedStatus.value = false; // 更新版本信息 @@ -281,11 +281,11 @@ class OtaUpgradeController extends GetxController { void _handleUpgradeError(dynamic errorCode) { type.value = OtaCoreService.UPGRADE_FAILED; isUpgrade.value = false; - detailedStatus.value = '升级失败,错误码:$errorCode'; + detailedStatus.value = 'otaUpgradeFailedWithCode'.trParams({'code': errorCode.toString()}); showDetailedStatus.value = false; _uiService.showErrorSnackbar( - '升级失败', - '请检查设备连接或升级包,错误码:$errorCode', + 'otaUpgradeFailedTitle'.tr, + 'otaUpgradeFailedDesc'.trParams({'code': errorCode.toString()}), ); } @@ -294,7 +294,7 @@ class OtaUpgradeController extends GetxController { void _handleConnectionLost() { type.value = OtaCoreService.CONNECTION_DISCONNECTION; isUpgrade.value = false; - detailedStatus.value = '设备连接断开'; + detailedStatus.value = 'otaDeviceDisconnected'.tr; showDetailedStatus.value = false; } @@ -303,7 +303,7 @@ class OtaUpgradeController extends GetxController { void _handleConnectionSuccess() { type.value = OtaCoreService.CONNECTION_SUCCESS; isUpgrade.value = true; - detailedStatus.value = '设备连接成功'; + detailedStatus.value = 'otaDeviceConnected'.tr; } /// 统一错误处理 diff --git a/lib/modules/ota_upgrade/views/ota_upgrade_popup_view.dart b/lib/modules/ota_upgrade/views/ota_upgrade_popup_view.dart index c117987db..4e58c24e4 100644 --- a/lib/modules/ota_upgrade/views/ota_upgrade_popup_view.dart +++ b/lib/modules/ota_upgrade/views/ota_upgrade_popup_view.dart @@ -14,15 +14,15 @@ class OtaUpgradePopUp { Logger().d('显示更新对话框'); Get.dialog( AlertDialog( - title: Text('发现新版本 $latestVersion'), - content: const Text('是否立即更新?'), + title: Text('otaNewVersionFoundWithVersion'.trParams({'version': latestVersion})), + content: Text('otaConfirmUpdateNow'.tr), actions: [ TextButton( onPressed: () { Logger().d('取消按钮被点击'); Get.back(); }, - child: const Text('取消'), + child: Text('cancel'.tr), ), TextButton( onPressed: () { @@ -31,7 +31,7 @@ class OtaUpgradePopUp { Future.delayed(const Duration(milliseconds: 300)); onConfirm(); }, - child: const Text('更新'), + child: Text('otaUpdate'.tr), ), ], ), @@ -52,7 +52,7 @@ class OtaUpgradePopUp { ), SizedBox(width: 12.w), Text( - '升级成功', + 'otaUpgradeSuccess'.tr, style: TextStyle( color: Colors.green[700], fontWeight: FontWeight.w600, @@ -60,8 +60,8 @@ class OtaUpgradePopUp { ), ], ), - content: const Text( - '固件升级已完成!\n\n设备需要重新配对才能正常使用,现在跳转到配对页面吗?', + content: Text( + 'otaUpgradeCompleteRepair'.tr, style: TextStyle( fontSize: 16, height: 1.4, @@ -73,7 +73,7 @@ class OtaUpgradePopUp { Get.back(); }, child: Text( - '稍后配对', + 'otaPairLater'.tr, style: TextStyle(color: Colors.grey[600]), ), ), @@ -86,7 +86,7 @@ class OtaUpgradePopUp { backgroundColor: Colors.green[600], foregroundColor: Colors.white, ), - child: const Text('立即配对'), + child: Text('otaPairNow'.tr), ), ], shape: RoundedRectangleBorder( diff --git a/lib/modules/profile/views/profile_view.dart b/lib/modules/profile/views/profile_view.dart index 1e9d8a268..1061cb75a 100644 --- a/lib/modules/profile/views/profile_view.dart +++ b/lib/modules/profile/views/profile_view.dart @@ -7,6 +7,7 @@ import '../../../routes/app_routes.dart'; import 'dart:io'; import 'dart:ui'; import '../../common/webview_page.dart'; +import '../../../core/utils/doc_url_helper.dart'; import 'unified_avatar.dart'; // ProfileView: 用户设置页面 @@ -695,15 +696,8 @@ class EditProfileView extends GetView { isDarkMode ? Colors.purple[300]! : Colors.purple[600]!, titleColor: isDarkMode ? Colors.white : Colors.black87, onTap: () { - String url = - 'https://www.voitrans.net/doc/yhxy.html'; // 用户协议链接 - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = - 'https://www.voitrans.net/doc/yhxy_en.html'; // 用户协议英文链接 - } Get.to(() => WebViewPage( - url: url, + url: userAgreementUrl(), title: 'userAgreement'.tr, )); }, @@ -726,15 +720,8 @@ class EditProfileView extends GetView { isDarkMode ? Colors.purple[300]! : Colors.purple[600]!, titleColor: isDarkMode ? Colors.white : Colors.black87, onTap: () { - String url = - 'https://www.voitrans.net/doc/ysxy.html'; // 隐私政策链接 - if (Get.locale?.languageCode != 'zh' || - Get.locale?.countryCode != 'CN') { - url = - 'https://www.voitrans.net/doc/ysxy_en.html'; // 隐私政策英文链接 - } Get.to(() => WebViewPage( - url: url, + url: privacyPolicyUrl(), title: 'privacyPolicy'.tr, )); }, diff --git a/lib/modules/translation/controllers/translation_controller.dart b/lib/modules/translation/controllers/translation_controller.dart index 1e762b789..c8d370848 100644 --- a/lib/modules/translation/controllers/translation_controller.dart +++ b/lib/modules/translation/controllers/translation_controller.dart @@ -110,8 +110,8 @@ class TranslationController extends GetxController with WidgetsBindingObserver { final floatingButtonPosition = Rx(Offset(2.0, 100.0)); // 默认位置 // ==================== 语言相关 ==================== - final sourceLanguage = '中文(简体)'.obs; - final targetLanguage = '英语'.obs; + final sourceLanguage = '中文(简体)'.tr.obs; + final targetLanguage = '英语'.tr.obs; final sourceLanguageCode = 'zh-CN'.obs; final targetLanguageCode = 'en-US'.obs; var detectedLanguageCode = ''; diff --git a/lib/modules/translation/views/translation_view.dart b/lib/modules/translation/views/translation_view.dart index 3f634311f..e9ac3caf9 100644 --- a/lib/modules/translation/views/translation_view.dart +++ b/lib/modules/translation/views/translation_view.dart @@ -256,8 +256,8 @@ class TranslationView extends GetView { ), onPressed: controller.toggleFloatingWindow, tooltip: controller.isFloatingWindowEnabled.value - ? '禁用悬浮窗' - : '启用悬浮窗', + ? 'disableFloatingWindow'.tr + : 'enableFloatingWindow'.tr, ); } return const SizedBox.shrink(); @@ -607,7 +607,7 @@ class TranslationView extends GetView { onPointerDown: (_) async { // 检查权限 if (!controller.hasRecordPermission.value) { - Get.snackbar('权限提示', '需要麦克风权限才能使用录音功能'); + Get.snackbar('permissionTip'.tr, 'micPermissionRequiredForRecording'.tr); return; } @@ -933,8 +933,8 @@ class TranslationView extends GetView { } catch (e) { // 显示删除失败提示 Get.snackbar( - 'error'.tr, // deleteFailed - '删除翻译记录时发生错误: ${e.toString()}', // deleteTranslationError + 'error'.tr, + 'deleteTranslationRecordError'.trParams({'error': e.toString()}), snackPosition: SnackPosition.BOTTOM, backgroundColor: Colors.red[400], colorText: Colors.white, diff --git a/local_plugins/azure_speech/android/build.gradle.kts b/local_plugins/azure_speech/android/build.gradle.kts index c77148988..d4731f14c 100644 --- a/local_plugins/azure_speech/android/build.gradle.kts +++ b/local_plugins/azure_speech/android/build.gradle.kts @@ -52,7 +52,7 @@ tasks.withType { dependencies { // 添加Microsoft语音SDK - implementation("com.microsoft.cognitiveservices.speech:client-sdk:1.43.0") + implementation("com.microsoft.cognitiveservices.speech:client-sdk:1.48.1") implementation(project(":speech")) implementation("com.squareup.okhttp3:okhttp:4.12.0") add("compileOnly", project(":ble_service")) diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt index 05223bd8d..5b0770249 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/AzureTtsHelper.kt @@ -14,6 +14,7 @@ import com.deep_voice.speech.tts.TtsEventType import kotlinx.coroutines.* import java.io.ByteArrayInputStream import java.io.InputStream +import java.util.concurrent.atomic.AtomicInteger import com.yunqiinnovation.azure_speech.tools.SimpleAudioPlayer /** * Azure TTS Helper @@ -51,6 +52,9 @@ class AzureTtsHelper(private val context: Context) : ITtsService { private val streamBuffer = StringBuilder() private var lastSpeakTime = 0L + // 待完成的合成任务计数:只有全部完成才触发 PLAYBACK_COMPLETED + private val pendingSpeakCount = AtomicInteger(0) + private var enableVoiceFlocking = false private var speakerProfileId: String = "" @@ -310,8 +314,11 @@ class AzureTtsHelper(private val context: Context) : ITtsService { ) isSpeaking = false notifyEvent(TtsEventType.SYNTHESIS_COMPLETED) - // Azure TTS 合成完成即播放完成 - notifyEvent(TtsEventType.PLAYBACK_COMPLETED) + // 所有句子都播完后才触发 PLAYBACK_COMPLETED,避免多句流式合成时重复触发 + if (pendingSpeakCount.decrementAndGet() <= 0) { + pendingSpeakCount.set(0) + notifyEvent(TtsEventType.PLAYBACK_COMPLETED) + } } // 合成取消事件 @@ -561,8 +568,9 @@ class AzureTtsHelper(private val context: Context) : ITtsService { val ssml = generateOptimizedSsml(text) isSpeaking = true + pendingSpeakCount.incrementAndGet() - FileLogger.d(TAG, "开始语音合成,文本长度: ${text.length}") + FileLogger.d(TAG, "开始语音合成,文本长度: ${text.length},当前待完成任务: ${pendingSpeakCount.get()}") // 直接调用SpeakSsmlAsync,SDK内部已经是异步的 synthesizer?.SpeakSsmlAsync(ssml) @@ -700,6 +708,7 @@ class AzureTtsHelper(private val context: Context) : ITtsService { synthesizer?.StopSpeakingAsync() streamBuffer.clear() isSpeaking = false + pendingSpeakCount.set(0) recreateSynthesizer() return true } catch (e: Exception) { diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioPlayer.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioPlayer.kt index 65727a25d..92b681ee6 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioPlayer.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioPlayer.kt @@ -3,6 +3,7 @@ package com.yunqiinnovation.azure_speech.tools import android.content.Context import android.media.AudioAttributes import android.media.AudioDeviceInfo +import android.media.AudioFocusRequest import android.media.AudioFormat import android.media.AudioManager import android.media.AudioTrack @@ -49,6 +50,20 @@ class SimpleAudioPlayer(private val context: Context? = null) { // 推送流 private var pushOutputStream: PushAudioOutputStream? = null + + // AudioFocus + private var audioFocusRequest: AudioFocusRequest? = null + private val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange -> + when (focusChange) { + AudioManager.AUDIOFOCUS_LOSS, + AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> { + lock.withLock { audioTrack?.pause() } + } + AudioManager.AUDIOFOCUS_GAIN -> { + lock.withLock { if (isPlaying) audioTrack?.play() } + } + } + } // 自定义推送流回调 private inner class AudioOutputCallback : PushAudioOutputStreamCallback() { @@ -235,10 +250,13 @@ class SimpleAudioPlayer(private val context: Context? = null) { configureAudioRouting(isBluetoothConnected) } + // 请求 AudioFocus,让外部音乐暂停 + requestAudioFocus() + // 开始播放 audioTrack?.play() isPlaying = true - + FileLogger.d(TAG, "AudioTrack开始播放") } } catch (e: Exception) { @@ -257,7 +275,8 @@ class SimpleAudioPlayer(private val context: Context? = null) { audioTrack?.pause() audioTrack?.flush() isPlaying = false - + abandonAudioFocus() + FileLogger.d(TAG, "AudioTrack停止播放") } } catch (e: Exception) { @@ -298,7 +317,10 @@ class SimpleAudioPlayer(private val context: Context? = null) { isPlaying = false isReleased = true - + + // 放弃 AudioFocus,让外部音乐恢复 + abandonAudioFocus() + FileLogger.d(TAG, "AudioTrack释放资源") } } catch (e: Exception) { @@ -310,7 +332,41 @@ class SimpleAudioPlayer(private val context: Context? = null) { * 是否正在播放 */ fun isPlaying(): Boolean = isPlaying - + + private fun requestAudioFocus() { + val am = audioManager ?: return + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val attrs = AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_MEDIA) + .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) + .build() + val req = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK) + .setAudioAttributes(attrs) + .setOnAudioFocusChangeListener(audioFocusChangeListener) + .build() + audioFocusRequest = req + am.requestAudioFocus(req) + } else { + @Suppress("DEPRECATION") + am.requestAudioFocus( + audioFocusChangeListener, + AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK + ) + } + } + + private fun abandonAudioFocus() { + val am = audioManager ?: return + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + audioFocusRequest?.let { am.abandonAudioFocusRequest(it) } + audioFocusRequest = null + } else { + @Suppress("DEPRECATION") + am.abandonAudioFocus(audioFocusChangeListener) + } + } + /** * 写入音频数据 * 内部方法,由PushAudioOutputStreamCallback调用 diff --git a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt index cc72aa389..1c09b84d7 100644 --- a/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt +++ b/local_plugins/azure_speech/android/src/main/kotlin/com/yunqiinnovation/azure_speech/tools/SimpleAudioReceiver.kt @@ -58,6 +58,9 @@ class SimpleAudioReceiver(private val context: Context) { private var audioManager: AudioManager? = null private var originalAudioMode = AudioManager.MODE_NORMAL + // AudioFocus + private var audioFocusRequest: AudioFocusRequest? = null + // 录音文件处理 var recordfile: RecordFile? = null var isRecord =false @@ -251,19 +254,7 @@ fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallba Log.d("AudioMode", "检测到蓝牙设备,使用蓝牙音频") } - // 请求音频焦点 - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - val focusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE) - .setAudioAttributes( - AudioAttributes.Builder() - .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) - .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) - .build() - ) - .build() - - audioManager?.requestAudioFocus(focusRequest) - } + // Honor 专属:请求音频焦点(已移至 requestAudioFocus() 统一处理) Log.d("AudioMode", "通话音频模式已设置: MODE_IN_COMMUNICATION") @@ -296,6 +287,8 @@ fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallba try { Log.d(TAG, "前台服务已启动,开始音频录制") + // 请求 AudioFocus,让外部音乐暂停(所有设备) + requestAudioFocus() // 根据手机品牌决定是否设置通话音频模式 if (isHonorDevice()) { Log.d(TAG, "检测到荣耀设备,启用通话音频模式") @@ -412,10 +405,11 @@ fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallba // 停止录音 audioRecord?.stop() - + abandonAudioFocus() + // 恢复音频模式 这里会导致关闭麦克风卡住待优化 //restoreCommunicationAudioMode() - + } catch (e: Exception) { Log.e(TAG, "停止麦克风捕获失败: ${e.message}") } @@ -497,6 +491,38 @@ fun startAudioRecord(audioSourceType: AudioSourceType, callback: AudioDataCallba return isWriting.get() } + private fun requestAudioFocus() { + val am = audioManager ?: (context.getSystemService(Context.AUDIO_SERVICE) as? AudioManager)?.also { audioManager = it } ?: return + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val req = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE) + .setAudioAttributes( + AudioAttributes.Builder() + .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) + .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) + .build() + ) + .build() + audioFocusRequest = req + am.requestAudioFocus(req) + } else { + @Suppress("DEPRECATION") + am.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE) + } + Log.d(TAG, "AudioFocus 已请求") + } + + private fun abandonAudioFocus() { + val am = audioManager ?: return + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + audioFocusRequest?.let { am.abandonAudioFocusRequest(it) } + audioFocusRequest = null + } else { + @Suppress("DEPRECATION") + am.abandonAudioFocus(null) + } + Log.d(TAG, "AudioFocus 已释放") + } + /** * 连续识别回调接口 */ diff --git a/local_plugins/ble_service/android/build.gradle.kts b/local_plugins/ble_service/android/build.gradle.kts index 66a4892b9..317e5ca2d 100644 --- a/local_plugins/ble_service/android/build.gradle.kts +++ b/local_plugins/ble_service/android/build.gradle.kts @@ -29,6 +29,6 @@ android { dependencies { implementation("androidx.core:core-ktx:1.13.1") // 使用从本地Maven仓库引用的AAR依赖 - implementation("com.jieli.audio:jl_audio_decode:2.0.0") - implementation("com.jieli.jl_bt_ota:jl_bt_ota:1.9.2") + implementation("com.jieli.audio:jl_audio_decode:2.1.0") + implementation("com.jieli.jl_bt_ota:jl_bt_ota:1.11.0") } \ No newline at end of file diff --git a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005.aar b/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005.aar deleted file mode 100644 index 0ec76c882..000000000 Binary files a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005.aar and /dev/null differ diff --git a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005bat.aar b/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005bat.aar deleted file mode 100644 index 0ec76c882..000000000 Binary files a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.0.0_20005bat.aar and /dev/null differ diff --git a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20012-release.aar b/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20012-release.aar new file mode 100644 index 000000000..1a609561d Binary files /dev/null and b/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20012-release.aar differ diff --git a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20013-release.aar b/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20013-release.aar deleted file mode 100644 index 84091918b..000000000 Binary files a/local_plugins/ble_service/android/libs/jl_audio_decode_V2.1.0_20013-release.aar and /dev/null differ diff --git a/local_plugins/ble_service/android/libs/jl_bt_ota_V1.11.0_11015-release.aar b/local_plugins/ble_service/android/libs/jl_bt_ota_V1.11.0_11015-release.aar new file mode 100644 index 000000000..c143f0ace Binary files /dev/null and b/local_plugins/ble_service/android/libs/jl_bt_ota_V1.11.0_11015-release.aar differ diff --git a/local_plugins/ble_service/android/libs/jl_bt_ota_V1.9.2-release.aar b/local_plugins/ble_service/android/libs/jl_bt_ota_V1.9.2-release.aar deleted file mode 100644 index 9ecf85489..000000000 Binary files a/local_plugins/ble_service/android/libs/jl_bt_ota_V1.9.2-release.aar and /dev/null differ diff --git a/local_plugins/jl_opus/android/build.gradle.kts b/local_plugins/jl_opus/android/build.gradle.kts index 9eae80a05..cb74f462d 100644 --- a/local_plugins/jl_opus/android/build.gradle.kts +++ b/local_plugins/jl_opus/android/build.gradle.kts @@ -57,6 +57,6 @@ dependencies { implementation("androidx.annotation:annotation:1.5.0") implementation("androidx.core:core-ktx:1.9.0") // 使用从本地Maven仓库引用的AAR依赖 - implementation("com.jieli.audio:jl_audio_decode:2.0.0") + implementation("com.jieli.audio:jl_audio_decode:2.1.0") } diff --git a/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.0.0_20005.aar b/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.0.0_20005.aar deleted file mode 100644 index 0ec76c882..000000000 Binary files a/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.0.0_20005.aar and /dev/null differ diff --git a/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.1.0_20012-release.aar b/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.1.0_20012-release.aar new file mode 100644 index 000000000..1a609561d Binary files /dev/null and b/local_plugins/jl_opus/android/src/main/libs/jl_audio_decode_V2.1.0_20012-release.aar differ diff --git a/local_plugins/ota/android/build.gradle b/local_plugins/ota/android/build.gradle index b6ead6ba6..4e0f45a3e 100644 --- a/local_plugins/ota/android/build.gradle +++ b/local_plugins/ota/android/build.gradle @@ -48,7 +48,7 @@ android { } dependencies { - implementation("com.jieli.jl_bt_ota:jl_bt_ota:1.9.2") + implementation("com.jieli.jl_bt_ota:jl_bt_ota:1.11.0") testImplementation("org.jetbrains.kotlin:kotlin-test") testImplementation("org.mockito:mockito-core:5.0.0") add("compileOnly", project(":ble_service")) diff --git a/local_plugins/ota/android/libs/jl_bt_ota_V1.11.0_11015-release.aar b/local_plugins/ota/android/libs/jl_bt_ota_V1.11.0_11015-release.aar new file mode 100644 index 000000000..c143f0ace Binary files /dev/null and b/local_plugins/ota/android/libs/jl_bt_ota_V1.11.0_11015-release.aar differ diff --git a/local_plugins/ota/android/libs/jl_bt_ota_V1.9.2-release.aar b/local_plugins/ota/android/libs/jl_bt_ota_V1.9.2-release.aar deleted file mode 100644 index 9ecf85489..000000000 Binary files a/local_plugins/ota/android/libs/jl_bt_ota_V1.9.2-release.aar and /dev/null differ diff --git a/local_plugins/spotify_sdk/lib/spotify_sdk_web.dart b/local_plugins/spotify_sdk/lib/spotify_sdk_web.dart index 44bcb6eb5..75b8a1d6b 100644 --- a/local_plugins/spotify_sdk/lib/spotify_sdk_web.dart +++ b/local_plugins/spotify_sdk/lib/spotify_sdk_web.dart @@ -5,16 +5,15 @@ import 'dart:async'; import 'dart:convert'; import 'dart:core'; import 'dart:developer'; -import 'dart:html'; +import 'dart:js_interop'; import 'dart:math' as math; import 'package:crypto/crypto.dart'; import 'package:dio/dio.dart'; import 'package:flutter/services.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; -import 'package:js/js.dart'; -import 'package:js/js_util.dart'; import 'package:synchronized/synchronized.dart' as synchronized; +import 'package:web/web.dart' as web; import 'enums/repeat_mode_enum.dart'; import 'models/album.dart'; @@ -52,6 +51,9 @@ class SpotifySdkPlugin { /// Current Spotify SDK player instance. Player? _currentPlayer; + /// Current device ID (存储在 Dart 侧,因为 extension type 不支持实例字段) + String? _currentDeviceID; + /// Current Spotify auth token. SpotifyToken? _spotifyToken; @@ -172,18 +174,19 @@ class SpotifySdkPlugin { // create player _currentPlayer = Player(PlayerOptions( name: playerName, - getOAuthToken: allowInterop((Function callback, t) { + getOAuthToken: ((JSAny? callback, JSAny? t) { _getSpotifyAuthToken().then((value) { - callback(value); + (callback as JSFunction).callAsFunction(null, value.toJS); }); - }))); + }).toJS)); _registerPlayerEvents(_currentPlayer!); - var result = await promiseToFuture(_currentPlayer!.connect()); + var result = + (await _currentPlayer!.connect().toDart).toDart; if (result == true) { // wait for the confirmation num time = 0; - while (_currentPlayer!.deviceID == null) { + while (_currentDeviceID == null) { await Future.delayed(const Duration(milliseconds: 200)); time += 200; if (time > 10000) { @@ -242,19 +245,19 @@ class SpotifySdkPlugin { call.arguments[ParamNames.repeatMode] as RepeatMode?); break; case MethodNames.resume: - await promiseToFuture(_currentPlayer?.resume()); + await _currentPlayer!.resume().toDart; break; case MethodNames.pause: - await promiseToFuture(_currentPlayer?.pause()); + await _currentPlayer!.pause().toDart; break; case MethodNames.skipNext: - await promiseToFuture(_currentPlayer?.nextTrack()); + await _currentPlayer!.nextTrack().toDart; break; case MethodNames.skipPrevious: - await promiseToFuture(_currentPlayer?.previousTrack()); + await _currentPlayer!.previousTrack().toDart; break; case MethodNames.getPlayerState: - var stateRaw = await promiseToFuture(_currentPlayer?.getCurrentState()) + var stateRaw = (await _currentPlayer!.getCurrentState().toDart) as WebPlaybackState?; if (stateRaw == null) return null; return jsonEncode(toPlayerState(stateRaw)!.toJson()); @@ -272,10 +275,13 @@ class SpotifySdkPlugin { log('Loading Spotify SDK...'); // link spotify ready function - _onSpotifyWebPlaybackSDKReady = allowInterop(_onSpotifyInitialized); + _onSpotifyWebPlaybackSDKReady = _onSpotifyInitialized.toJS; // load spotify sdk - querySelector('body')!.children.add(ScriptElement()..src = spotifySdkUrl); + final script = + web.document.createElement('script') as web.HTMLScriptElement; + script.src = spotifySdkUrl; + web.document.body!.appendChild(script); // wait for initialization while (_sdkLoaded == false) { @@ -294,33 +300,37 @@ class SpotifySdkPlugin { void _registerPlayerEvents(Player player) { // player state player.addListener('player_state_changed', - allowInterop((WebPlaybackState? state) { - if (state == null) return; + ((JSAny? stateObj) { + if (stateObj == null) return; + var state = stateObj as WebPlaybackState; playerStateEventController .add(jsonEncode(toPlayerState(state)!.toJson())); playerContextEventController .add(jsonEncode(toPlayerContext(state)!.toJson())); - })); + }).toJS); // ready/not ready - player.addListener('ready', allowInterop((WebPlaybackPlayer player) { + player.addListener('ready', ((JSAny? playerObj) { + var p = playerObj as WebPlaybackPlayer; log('Spotify SDK ready!'); - _onSpotifyConnected(player.device_id); - })); - player.addListener('not_ready', allowInterop((event) { + _onSpotifyConnected(p.device_id); + }).toJS); + player.addListener('not_ready', ((JSAny? event) { _onSpotifyDisconnected( errorCode: 'Spotify SDK not ready', errorDetails: 'Spotify SDK is not ready to take requests'); - })); + }).toJS); // errors player.addListener('initialization_error', - allowInterop((WebPlaybackError error) { + ((JSAny? errorObj) { + var error = errorObj as WebPlaybackError; _onSpotifyDisconnected( errorCode: 'Initialization Error', errorDetails: error.message); - })); + }).toJS); player.addListener('authentication_error', - allowInterop((WebPlaybackError error) { + ((JSAny? errorObj) { + var error = errorObj as WebPlaybackError; // If the error is due to browser security, don't disconnect. // The user needs to interact with the SDK to trigger media activation. // https://developer.spotify.com/documentation/web-playback-sdk/quick-start/#mobile-support @@ -330,14 +340,16 @@ class SpotifySdkPlugin { } _onSpotifyDisconnected( errorCode: 'Authentication Error', errorDetails: error.message); - })); - player.addListener('account_error', allowInterop((WebPlaybackError error) { + }).toJS); + player.addListener('account_error', ((JSAny? errorObj) { + var error = errorObj as WebPlaybackError; _onSpotifyDisconnected( errorCode: 'Account Error', errorDetails: error.message); - })); - player.addListener('playback_error', allowInterop((WebPlaybackError error) { + }).toJS); + player.addListener('playback_error', ((JSAny? errorObj) { + var error = errorObj as WebPlaybackError; log('playback_error: ${error.message}'); - })); + }).toJS); } /// Called when the Spotify SDK is first loaded. @@ -347,7 +359,7 @@ class SpotifySdkPlugin { /// Called when the plugin successfully connects to the spotify web sdk. void _onSpotifyConnected(String deviceId) { - _currentPlayer!.deviceID = deviceId; + _currentDeviceID = deviceId; // emit connected event connectionStatusEventController.add(jsonEncode(ConnectionStatus( @@ -362,6 +374,7 @@ class SpotifySdkPlugin { void _onSpotifyDisconnected({String? errorCode, String? errorDetails}) { _unregisterPlayerEvents(_currentPlayer!); _currentPlayer = null; + _currentDeviceID = null; if (errorCode != null) { // disconnected due to error @@ -445,27 +458,32 @@ class SpotifySdkPlugin { ); // opening auth window - var authPopup = window.open( + var authPopup = web.window.open( authorizationUri.toString(), 'Spotify Authorization', ); String? message; - var sub = window.onMessage.listen(allowInterop((event) { - message = event.data.toString(); - // ensure the message contains auth code - if (!message!.startsWith('?code=')) { - message = null; + final messageHandler = ((JSAny? e) { + final event = e as web.MessageEvent; + if (event.data != null && event.data!.isA()) { + final str = (event.data as JSString).toDart; + // ensure the message contains auth code + if (str.startsWith('?code=')) { + message = str; + } } - })); + }).toJS; + web.window.addEventListener('message', messageHandler); // loop and wait for auth - while (authPopup.closed == false && message == null) { + while (authPopup?.closed == false && message == null) { // await response from the window await Future.delayed(const Duration(milliseconds: 250)); } // error if window closed by user if (message == null) { + web.window.removeEventListener('message', messageHandler); throw PlatformException( message: 'User closed authentication window', code: 'Authentication Error'); @@ -476,6 +494,7 @@ class SpotifySdkPlugin { // check if state is the same if (state != parsedMessage.queryParameters['state']) { + web.window.removeEventListener('message', messageHandler); throw PlatformException( message: 'Invalid state', code: 'Authentication Error'); } @@ -483,16 +502,17 @@ class SpotifySdkPlugin { // check for error if (parsedMessage.queryParameters['error'] != null || parsedMessage.queryParameters['code'] == null) { + web.window.removeEventListener('message', messageHandler); throw PlatformException( message: "${parsedMessage.queryParameters['error']}", code: 'Authentication Error'); } // close auth window - if (authPopup.closed == false) { - authPopup.close(); + if (authPopup?.closed == false) { + authPopup?.close(); } - await sub.cancel(); + web.window.removeEventListener('message', messageHandler); // exchange auth code for access and refresh tokens dynamic authResponse; @@ -613,7 +633,7 @@ class SpotifySdkPlugin { /// Starts track playback on the device. Future _play(String? uri) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Playback Error'); } @@ -623,7 +643,7 @@ class SpotifySdkPlugin { data: { 'uris': [uri] }, - queryParameters: {'device_id': _currentPlayer!.deviceID}, + queryParameters: {'device_id': _currentDeviceID}, options: Options( headers: { 'Content-Type': 'application/json', @@ -635,14 +655,14 @@ class SpotifySdkPlugin { /// Adds a given track to the playback queue. Future _queue(String? uri) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Playback Error'); } await _dio.post( '/queue', - queryParameters: {'uri': uri, 'device_id': _currentPlayer!.deviceID}, + queryParameters: {'uri': uri, 'device_id': _currentDeviceID}, options: Options( headers: { 'Content-Type': 'application/json', @@ -654,7 +674,7 @@ class SpotifySdkPlugin { /// Sets whether shuffle should be enabled. Future _setShuffle(bool? shuffleEnabled) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Set Shuffle Error'); } @@ -663,7 +683,7 @@ class SpotifySdkPlugin { '/shuffle', queryParameters: { 'state': shuffleEnabled, - 'device_id': _currentPlayer!.deviceID + 'device_id': _currentDeviceID }, options: Options( headers: { @@ -676,7 +696,7 @@ class SpotifySdkPlugin { /// Sets the repeat mode. Future _setRepeatMode(RepeatMode? repeatMode) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Set Repeat Mode Error'); @@ -686,7 +706,7 @@ class SpotifySdkPlugin { '/repeat', queryParameters: { 'state': repeatMode.toString().substring(11), - 'device_id': _currentPlayer!.deviceID + 'device_id': _currentDeviceID }, options: Options( headers: { @@ -699,14 +719,14 @@ class SpotifySdkPlugin { /// Toggles shuffle on the current player. Future toggleShuffle({bool? state}) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Playback Error'); } await _dio.put( '/shuffle', - queryParameters: {'state': state, 'device_id': _currentPlayer!.deviceID}, + queryParameters: {'state': state, 'device_id': _currentDeviceID}, options: Options( headers: { 'Content-Type': 'application/json', @@ -718,14 +738,14 @@ class SpotifySdkPlugin { /// Toggles repeat on the current player. Future toggleRepeat({bool? state}) async { - if (_currentPlayer?.deviceID == null) { + if (_currentDeviceID == null) { throw PlatformException( message: 'Spotify player not connected!', code: 'Playback Error'); } await _dio.put( '/repeat', - queryParameters: {'state': state, 'device_id': _currentPlayer!.deviceID}, + queryParameters: {'state': state, 'device_id': _currentDeviceID}, options: Options( headers: { 'Content-Type': 'application/json', @@ -744,7 +764,8 @@ class SpotifySdkPlugin { var artists = []; if (trackRaw != null) { - for (var artist in trackRaw.artists) { + for (var i = 0; i < trackRaw.artists.length; i++) { + var artist = trackRaw.artists[i] as WebPlaybackArtist; artists.add(Artist(artist.name, artist.uri)); } } @@ -770,7 +791,7 @@ class SpotifySdkPlugin { artists[0], artists, -1, - ImageUri(albumRaw.images[0].url), + ImageUri((albumRaw.images[0] as WebPlaybackAlbumImage).url), trackRaw.name, trackRaw.uri, trackRaw.linked_from.uri, @@ -806,87 +827,79 @@ class SpotifySdkPlugin { /// Allows assigning the function onSpotifyWebPlaybackSDKReady /// to be callable from `window.onSpotifyWebPlaybackSDKReady()` @JS('onSpotifyWebPlaybackSDKReady') -external set _onSpotifyWebPlaybackSDKReady(void Function()? f); +external set _onSpotifyWebPlaybackSDKReady(JSFunction? f); -/// Allows assigning the function onSpotifyWebPlaybackSDKReady -/// to be callable from `window.onSpotifyWebPlaybackSDKReady()` +/// Allows checking if onSpotifyWebPlaybackSDKReady has been set @JS('onSpotifyWebPlaybackSDKReady') -external void Function()? get _onSpotifyWebPlaybackSDKReady; +external JSFunction? get _onSpotifyWebPlaybackSDKReady; /// Spotify Player Object @JS('Spotify.Player') -class Player { - /// Device id of the player. - String? deviceID; - +extension type Player._(JSObject _) implements JSObject { /// The main constructor for initializing the Web Playback SDK. /// It should contain an object with the player name, volume and access token. external Player(PlayerOptions options); /// Connects Web Playback SDK instance to Spotify /// with the credentials provided during initialization. - external dynamic connect(); + external JSPromise connect(); /// Closes the current session that Web Playback SDK has with Spotify. external void disconnect(); /// Create a new event listener in the Web Playback SDK. - external void addListener(String type, Function callback); + external void addListener(String type, JSFunction callback); /// Remove an event listener in the Web Playback SDK. // ignore: non_constant_identifier_names external void removeListener(String event_name); /// Collect metadata on local playback. - external dynamic getCurrentState(); + external JSPromise getCurrentState(); /// Rename the Spotify Player device. /// This is visible across all Spotify Connect devices. - external dynamic setName(String name); + external JSPromise setName(String name); /// Set the local volume for the Web Playback SDK. - external dynamic setVolume(double volume); + external JSPromise setVolume(double volume); /// Pause the local playback. - external dynamic pause(); + external JSPromise pause(); /// Resume the local playback. - external dynamic resume(); + external JSPromise resume(); /// Resume/pause the local playback. - external dynamic togglePlay(); + external JSPromise togglePlay(); /// Seek to a position in the current track in local playback. // ignore: non_constant_identifier_names - external dynamic seek(int position_ms); + external JSPromise seek(int position_ms); /// Switch to the previous track in local playback. - external dynamic previousTrack(); + external JSPromise previousTrack(); /// Skip to the next track in local playback. - external dynamic nextTrack(); + external JSPromise nextTrack(); } /// Spotify player options object -@JS() -@anonymous -class PlayerOptions { +extension type PlayerOptions._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get name; // ignore: public_member_api_docs - external Function get getOAuthToken; + external JSFunction get getOAuthToken; // ignore: public_member_api_docs external double get volume; // ignore: public_member_api_docs external factory PlayerOptions( - {String? name, Function? getOAuthToken, double? volume}); + {String? name, JSFunction? getOAuthToken, double? volume}); } /// Spotify playback object -@JS() -@anonymous -class WebPlaybackPlayer { +extension type WebPlaybackPlayer._(JSObject _) implements JSObject { // ignore: public_member_api_docs, non_constant_identifier_names external String get device_id; // ignore: public_member_api_docs, non_constant_identifier_names @@ -894,9 +907,7 @@ class WebPlaybackPlayer { } /// Spotify playback state object -@JS() -@anonymous -class WebPlaybackState { +extension type WebPlaybackState._(JSObject _) implements JSObject { // ignore: public_member_api_docs external WebPlayerContext get context; // ignore: public_member_api_docs @@ -916,7 +927,7 @@ class WebPlaybackState { external factory WebPlaybackState( {WebPlayerContext? context, WebPlayerDisallows? disallows, - bool? paysed, + bool? paused, int? position, // ignore: non_constant_identifier_names int? repeat_mode, @@ -926,9 +937,7 @@ class WebPlaybackState { } /// Spotify player context object -@JS() -@anonymous -class WebPlayerContext { +extension type WebPlayerContext._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get uri; // ignore: public_member_api_docs @@ -940,9 +949,7 @@ class WebPlayerContext { } /// Spotify player context metadata object -@JS() -@anonymous -class WebPlayerContextMetadata { +extension type WebPlayerContextMetadata._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get title; // ignore: public_member_api_docs @@ -956,9 +963,7 @@ class WebPlayerContextMetadata { } /// Spotify player disallows object -@JS() -@anonymous -class WebPlayerDisallows { +extension type WebPlayerDisallows._(JSObject _) implements JSObject { // ignore: public_member_api_docs external bool get pausing; // ignore: public_member_api_docs, non_constant_identifier_names @@ -990,30 +995,26 @@ class WebPlayerDisallows { } /// Spotify player track window object -@JS() -@anonymous -class WebPlayerTrackWindow { +extension type WebPlayerTrackWindow._(JSObject _) implements JSObject { // ignore: public_member_api_docs, non_constant_identifier_names external WebPlaybackTrack? get current_track; // ignore: public_member_api_docs, non_constant_identifier_names - external List? get previous_tracks; + external JSArray? get previous_tracks; // ignore: public_member_api_docs, non_constant_identifier_names - external List? get next_tracks; + external JSArray? get next_tracks; // ignore: public_member_api_docs external factory WebPlayerTrackWindow( // ignore: non_constant_identifier_names {WebPlaybackTrack? current_track, // ignore: non_constant_identifier_names - List? previous_tracks, + JSArray? previous_tracks, // ignore: non_constant_identifier_names - List? next_tracks}); + JSArray? next_tracks}); } /// Spotify playback track object -@JS() -@anonymous -class WebPlaybackTrack { +extension type WebPlaybackTrack._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get uri; // ignore: public_member_api_docs @@ -1029,7 +1030,7 @@ class WebPlaybackTrack { // ignore: public_member_api_docs external WebPlaybackAlbum get album; // ignore: public_member_api_docs - external List get artists; + external JSArray get artists; // ignore: public_member_api_docs // ignore: non_constant_identifier_names external WebLinkedFrom get linked_from; @@ -1045,31 +1046,27 @@ class WebPlaybackTrack { // ignore: non_constant_identifier_names bool? is_playable, WebPlaybackAlbum? album, - List? artists, + JSArray? artists, // ignore: non_constant_identifier_names WebLinkedFrom? linked_from}); } /// Spotify playback album object -@JS() -@anonymous -class WebPlaybackAlbum { +extension type WebPlaybackAlbum._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get uri; // ignore: public_member_api_docs external String get name; // ignore: public_member_api_docs - external List get images; + external JSArray get images; // ignore: public_member_api_docs external factory WebPlaybackAlbum( - {String? uri, String? name, List? images}); + {String? uri, String? name, JSArray? images}); } /// Spotify playback album object -@JS() -@anonymous -class WebLinkedFrom { +extension type WebLinkedFrom._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get uri; // ignore: public_member_api_docs @@ -1080,9 +1077,7 @@ class WebLinkedFrom { } /// Spotify artist object -@JS() -@anonymous -class WebPlaybackArtist { +extension type WebPlaybackArtist._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get uri; // ignore: public_member_api_docs @@ -1093,9 +1088,7 @@ class WebPlaybackArtist { } /// Spotify album image object -@JS() -@anonymous -class WebPlaybackAlbumImage { +extension type WebPlaybackAlbumImage._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get url; @@ -1104,9 +1097,7 @@ class WebPlaybackAlbumImage { } /// Spotify playback error object -@JS() -@anonymous -class WebPlaybackError { +extension type WebPlaybackError._(JSObject _) implements JSObject { // ignore: public_member_api_docs external String get message; diff --git a/local_plugins/spotify_sdk/pubspec.yaml b/local_plugins/spotify_sdk/pubspec.yaml index 0a14ec222..46c687adc 100644 --- a/local_plugins/spotify_sdk/pubspec.yaml +++ b/local_plugins/spotify_sdk/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/brim-borium/spotify_sdk issue_tracker: https://github.com/brim-borium/spotify_sdk/issues environment: - sdk: ^3.5.0 + sdk: ^3.7.0 flutter: '>=3.3.0' dependencies: @@ -16,7 +16,7 @@ dependencies: logger: ^2.4.0 dio: ^5.7.0 json_annotation: ^4.9.0 - js: ">=0.6.7 <0.8.0" + web: ^1.1.0 crypto: ^3.0.5 synchronized: ^3.3.0+3 http: ^1.2.2 diff --git a/test/es_es_translations_test.dart b/test/es_es_translations_test.dart new file mode 100644 index 000000000..aab8d47ed --- /dev/null +++ b/test/es_es_translations_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/es_es.dart'; + +void main() { + test('esES can be imported and accessed', () { + expect(esES, isNotEmpty); + expect(esES['continue'], isNotNull); + }); + + test('esES has the same translation keys as enUS', () { + expect(esES.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('esES has no empty values', () { + final emptyKeys = esES.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); +} diff --git a/test/fr_fr_translations_test.dart b/test/fr_fr_translations_test.dart new file mode 100644 index 000000000..245ef6478 --- /dev/null +++ b/test/fr_fr_translations_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/fr_fr.dart'; + +void main() { + test('frFR can be imported and accessed', () { + expect(frFR, isNotEmpty); + expect(frFR['continue'], isNotNull); + }); + + test('frFR has the same translation keys as enUS', () { + expect(frFR.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('frFR has no empty values', () { + final emptyKeys = frFR.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); +} diff --git a/test/is_is_translations_test.dart b/test/is_is_translations_test.dart new file mode 100644 index 000000000..7360b0a5a --- /dev/null +++ b/test/is_is_translations_test.dart @@ -0,0 +1,78 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/is_is.dart'; + +Set _extractPlaceholders(String value) { + final placeholders = {}; + + placeholders.addAll( + RegExp(r'\{[a-zA-Z_][a-zA-Z0-9_]*\}') + .allMatches(value) + .map((m) => m.group(0)!) + .toSet(), + ); + + placeholders.addAll( + RegExp(r'@[a-zA-Z_][a-zA-Z0-9_]*') + .allMatches(value) + .map((m) => m.group(0)!) + .toSet(), + ); + + placeholders.addAll( + RegExp(r'\$\{[a-zA-Z_][a-zA-Z0-9_]*\}') + .allMatches(value) + .map((m) => m.group(0)!) + .toSet(), + ); + + placeholders.addAll( + RegExp(r'%(?:\d+\$)?[sdif]') + .allMatches(value) + .map((m) => m.group(0)!) + .toSet(), + ); + + return placeholders; +} + +void main() { + test('isIS can be imported and accessed', () { + expect(isIS, isNotEmpty); + expect(isIS['continue'], isNotNull); + }); + + test('isIS has the same translation keys as enUS', () { + expect(isIS.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('isIS has no empty values', () { + final emptyKeys = isIS.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); + + test('isIS placeholders match enUS placeholders', () { + final mismatches = []; + + for (final key in enUS.keys) { + final enValue = enUS[key] ?? ''; + final isValue = isIS[key] ?? ''; + + final enPlaceholders = _extractPlaceholders(enValue); + final isPlaceholders = _extractPlaceholders(isValue); + + if (enPlaceholders.length != isPlaceholders.length || + !enPlaceholders.containsAll(isPlaceholders) || + !isPlaceholders.containsAll(enPlaceholders)) { + mismatches.add( + '$key | en=$enPlaceholders | is=$isPlaceholders | enValue=$enValue | isValue=$isValue', + ); + } + } + + expect(mismatches, isEmpty); + }); +} diff --git a/test/ja_jp_translations_test.dart b/test/ja_jp_translations_test.dart new file mode 100644 index 000000000..dac3f2a30 --- /dev/null +++ b/test/ja_jp_translations_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/ja_jp.dart'; + +void main() { + test('jaJP can be imported and accessed', () { + expect(jaJP, isNotEmpty); + expect(jaJP['continue'], isNotNull); + }); + + test('jaJP has the same translation keys as enUS', () { + expect(jaJP.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('jaJP has no empty values', () { + final emptyKeys = jaJP.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); +} diff --git a/test/nb_no_translations_test.dart b/test/nb_no_translations_test.dart new file mode 100644 index 000000000..faeb170b6 --- /dev/null +++ b/test/nb_no_translations_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/nb_no.dart'; + +void main() { + test('nbNO can be imported and accessed', () { + expect(nbNO, isNotEmpty); + expect(nbNO['continue'], isNotNull); + }); + + test('nbNO has the same translation keys as enUS', () { + expect(nbNO.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('nbNO has no empty values', () { + final emptyKeys = nbNO.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); +} diff --git a/test/sv_se_translations_test.dart b/test/sv_se_translations_test.dart new file mode 100644 index 000000000..0efd7fefc --- /dev/null +++ b/test/sv_se_translations_test.dart @@ -0,0 +1,22 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:voitrans/core/translations/language/en_us.dart'; +import 'package:voitrans/core/translations/language/sv_se.dart'; + +void main() { + test('svSE can be imported and accessed', () { + expect(svSE, isNotEmpty); + expect(svSE['continue'], isNotNull); + }); + + test('svSE has the same translation keys as enUS', () { + expect(svSE.keys.toSet(), equals(enUS.keys.toSet())); + }); + + test('svSE has no empty values', () { + final emptyKeys = svSE.entries + .where((entry) => entry.value.trim().isEmpty) + .map((entry) => entry.key) + .toList(growable: false); + expect(emptyKeys, isEmpty); + }); +} diff --git a/tools/i18n_allowlist.json b/tools/i18n_allowlist.json new file mode 100644 index 000000000..c937a7f84 --- /dev/null +++ b/tools/i18n_allowlist.json @@ -0,0 +1,24 @@ +[ + "Lily", + "paypalPay", + "wechatPay", + "alipayPay", + "appleIap", + "googleIap", + "wechatPayWithAmount", + "alipayPayWithAmount", + "amapMap", + "baiduMap", + "googleMap", + "appleMap", + "native.notification.appName", + "copyrightVoitrans", + "voitransPrivateCloud", + "aiChatCreditsLabel", + "translationCreditsLabel", + "meetingCreditsLabel", + "vipLevelLabel", + "error", + "errorInfoWithMessage" +] + diff --git a/tools/i18n_audit.py b/tools/i18n_audit.py new file mode 100644 index 000000000..c308c2030 --- /dev/null +++ b/tools/i18n_audit.py @@ -0,0 +1,242 @@ +import argparse +import glob +import json +import os +from collections import Counter + + +def _unesc(s: str) -> str: + if "\\" in s: + return s.encode("utf-8").decode("unicode_escape") + return s + + +def _skip_ws_and_comments(text: str, i: int) -> int: + n = len(text) + while i < n: + ch = text[i] + if ch.isspace(): + i += 1 + continue + if text.startswith("//", i): + j = text.find("\n", i + 2) + i = n if j == -1 else j + 1 + continue + if text.startswith("/*", i): + j = text.find("*/", i + 2) + i = n if j == -1 else j + 2 + continue + break + return i + + +def _parse_string_literal(text: str, i: int) -> tuple[str, int]: + quote = text[i] + i += 1 + n = len(text) + buf: list[str] = [] + while i < n: + ch = text[i] + if ch == "\\" and i + 1 < n: + buf.append(ch) + buf.append(text[i + 1]) + i += 2 + continue + if ch == quote: + i += 1 + break + buf.append(ch) + i += 1 + raw = "".join(buf) + return _unesc(raw), i + + +def _parse_dart_map(file_path: str) -> dict[str, str]: + with open(file_path, "r", encoding="utf-8") as f: + text = f.read() + start = text.find("{") + end = text.rfind("}") + if start == -1 or end == -1 or end <= start: + return {} + text = text[start + 1 : end] + out: dict[str, str] = {} + i = 0 + n = len(text) + while i < n: + i = _skip_ws_and_comments(text, i) + if i >= n: + break + if text[i] not in ("'", '"'): + i += 1 + continue + key, i = _parse_string_literal(text, i) + i = _skip_ws_and_comments(text, i) + if i >= n or text[i] != ":": + continue + i += 1 + i = _skip_ws_and_comments(text, i) + if i >= n or text[i] not in ("'", '"'): + continue + parts: list[str] = [] + while i < n and text[i] in ("'", '"'): + part, i = _parse_string_literal(text, i) + parts.append(part) + i = _skip_ws_and_comments(text, i) + out[key] = "".join(parts) + return out + + +def _ascii_letter_ratio(s: str) -> float: + if not s: + return 0.0 + letters = sum(1 for ch in s if ("a" <= ch.lower() <= "z")) + return letters / max(1, len(s)) + + +def _looks_english_sentence(s: str) -> bool: + if len(s.strip()) < 4: + return False + ratio = _ascii_letter_ratio(s) + if ratio < 0.35: + return False + s_low = s.lower() + common = [ + "please", + "failed", + "success", + "error", + "connect", + "connection", + "device", + "network", + "download", + "upload", + "translate", + "translation", + "record", + "permission", + "enable", + "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) + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument( + "--dir", + default=os.path.join("lib", "core", "translations", "language"), + help="Directory containing language dart files", + ) + parser.add_argument( + "--baseline", + default="en_us.dart", + help="Baseline dart file to compare values against", + ) + parser.add_argument( + "--allowlist", + default="", + help="Path to JSON array of keys allowed to keep identical baseline values", + ) + parser.add_argument( + "--mode", + choices=["exact", "englishy"], + default="englishy", + help="exact: value equals baseline; englishy: value equals baseline and looks English", + ) + args = parser.parse_args() + + lang_dir = args.dir + dart_files = sorted(glob.glob(os.path.join(lang_dir, "*.dart"))) + if not dart_files: + raise SystemExit(f"No dart files found in {lang_dir}") + + allowlist: set[str] = set() + if args.allowlist: + with open(args.allowlist, "r", encoding="utf-8") as f: + allowlist = set(json.load(f)) + + parsed = {os.path.basename(p): _parse_dart_map(p) for p in dart_files} + if args.baseline not in parsed: + raise SystemExit(f"baseline not found: {args.baseline}") + + baseline = parsed[args.baseline] + + result: dict[str, dict] = {"baseline": args.baseline, "mode": args.mode, "files": {}} + global_counter: Counter[str] = Counter() + + for fn, kv in parsed.items(): + if fn == args.baseline: + continue + issues: list[dict] = [] + for k, v in kv.items(): + if k in allowlist: + continue + bv = baseline.get(k) + if bv is None: + continue + if v != bv: + continue + if args.mode == "englishy" and not _looks_english_sentence(v): + continue + issues.append({"key": k, "value": v}) + global_counter[k] += 1 + result["files"][fn] = {"count": len(issues), "items": issues} + + result["summary"] = { + "file_count": len(dart_files), + "non_baseline_file_count": len(dart_files) - 1, + "files_with_issues": sum(1 for f in result["files"].values() if f["count"] > 0), + "total_issues": sum(f["count"] for f in result["files"].values()), + "most_common_keys": [{"key": k, "count": c} for k, c in global_counter.most_common(50)], + } + + print(json.dumps(result, ensure_ascii=False, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main())