diff --git a/apps/client/android/app/src/main/AndroidManifest.xml b/apps/client/android/app/src/main/AndroidManifest.xml
index b7c37f8b..e73ac9a2 100644
--- a/apps/client/android/app/src/main/AndroidManifest.xml
+++ b/apps/client/android/app/src/main/AndroidManifest.xml
@@ -48,9 +48,8 @@
-
+ tools:node="remove" />
@@ -61,10 +60,17 @@
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+```
+
+| 字节 | 值 | 含义 |
+|---|---|---|
+| PROTO_VER | `0x02` | 本协议版本 |
+| CAP | `0x01` | 只要 G.722 |
+
+App 等 `BB EB` 的上限是 **3 秒**。超时就放弃,并补发 `AA 6C`。
+
+### 4.2 应答 `BB EB`
+
+整帧 10 字节:
+
+```text
+BB EB 07
+```
+
+| 字段 | App 怎么用 |
+|---|---|
+| RESULT | `0x00` 才继续扫 BLE。非 0 按第 8 节提示用户,并退出 |
+| EAR_MASK | bit0 = 左耳可用,bit1 = 右耳可用。**必须是 `0x03`**。缺一只不进入,请直接回 `0x03`,不要拆了一半 |
+| CODEC | `0x01` = G.722 |
+| FRAME_MS | `20` 或 `40`。决定一包里几帧。其它值 App 按 40 处理 |
+| FW_MINOR | 固件小版本,App 记下来,暂不分支 |
+| CLASSIC_KEEP | `0x01` = 拆 TWS 后经典链路还在;`0x00` = 经典链路会断 |
+
+`CLASSIC_KEEP=0` 时,App **不当成用户把耳机断开**。退出命令改走每只耳朵的 `AA 06`。下次经典蓝牙再连上,App 会先补发一次 `AA 6C`。
+
+### 4.3 退出 `AA 6C`
+
+```text
+AA 6C → BB EC 01
+```
+
+`AA 6C` **没有长度字节**。
+
+必须幂等:当前不在面对面模式,也要回 `BB EC 01 00`,不要报错。App 在异常恢复时会无条件补发。
+
+`RESULT=0x00` 表示已重新组对,A2DP / HFP 恢复。
+
+---
+
+## 5. 广播与扫描
+
+收到 `AA 6B` 且 `RESULT=0`、双耳都可用之后,左右耳各自广播。
+
+厂商数据(AD Type `0xFF`)。Company ID 2 字节之后是下面 9 字节:
+
+```text
+F2 F2 | VER | EAR | TOKEN 4 字节 | BATT
+```
+
+| 字段 | 要求 |
+|---|---|
+| MAGIC | 固定 `F2 F2` |
+| VER | `0x02`,和 `AA 6B` 的 PROTO_VER 一致 |
+| EAR | `0x01` 左耳,`0x02` 右耳。两只耳机的名字可以相同 |
+| TOKEN | **原样回显这次 `AA 6B` 的 4 字节**。对不上 App 直接忽略 |
+| BATT | 低 7 位电量 0~100,最高位充电标志 |
+
+App 扫描规则:
+
+1. 只扫上面的 Service UUID。
+2. TOKEN 必须和这次 `AA 6B` 逐字节相同。旁边另一副同型号耳机不能连上。
+3. **必须同时看到 `EAR=1` 和 `EAR=2` 才连接。** 15 秒没集齐就发 `AA 6C` 回滚。
+4. iOS 拿不到 BLE MAC,身份只认 TOKEN + EAR。
+5. 扫描在 App 前台完成。建议建链期广播间隔 30~50ms。
+6. **30 秒内没被连上,该耳自己退出面对面**;两耳都退出后重新组对,并在经典链路上报 `BB EC 01 00`。
+
+连上之后该耳停止广播。
+
+---
+
+## 6. 每只耳朵的握手
+
+GATT 连上后 App 会:请求 MTU 247、连接优先级拉高、优先 2M PHY。
+通知顺序:先 `CTRL_RX`,再 `AUDIO_UP`。两个通知都开了才发 HELLO。
+
+左右耳各走一遍,内容相同,TOKEN 相同。
+
+| 步骤 | App 发出 | 耳机应答 | 说明 |
+|---|---|---|---|
+| 1 | `AA 01 06 02 01` | `BB 81 …` | HELLO。最后一字节 `01` 表示角色是 App。TOKEN 再对一次 |
+| 2 | `AA 02 03 00 50 00` | `BB 82 …` | 配置。见下表 |
+| 3 | `AA 03 00` | `BB 83 …` | 开流。应答成功后开始推 `BB 90` |
+| 4 | `AA 05 01 ` | 可不回 | 两只都 `BB 83` 之后,每 5 秒一次。只做诊断,**不要因为没收到保活就断链** |
+
+`AA 02` 的 3 字节 payload:
+
+| 字节 | 当前固定值 | 含义 |
+|---|---|---|
+| VAD_MODE | `0x00` | 常发。静音也发,不要在耳机上切句 |
+| DOWN_GAIN | `0x50`(80) | 下行播放增益 0~100 |
+| TRIGGER | `0x00` | 免按键,连续拾音 |
+
+HELLO 应答 `BB 81`:App **只看 RESULT 是不是 0**。RESULT 非 0,这只耳朵判失败,整场退出。
+`FRAME_MS` 以 `BB EB` 里那个字节为准,不从 `BB 81` 再改一回。
+
+`BB 82` / `BB 83` 的 RESULT 非 0,同样整场退出。
+
+开流之后如果要暂停而不断开,用 `AA 04 00`(STOP_STREAM)。当前正常结束不发这条,直接走第 7 节退出。
+
+---
+
+## 7. 退出
+
+顺序:
+
+1. 每只还连着的耳朵,`CTRL_TX` 发 `AA 06 00`。耳机停流、断开这条 BLE、准备重新组对。
+2. 经典链路还在,再发 `AA 6C`,等 `BB EC 01 00`。
+3. 经典链路已经断了(`CLASSIC_KEEP=0`):这次只发 `AA 06`。App 记下标记,**下次经典蓝牙一连上就补发 `AA 6C`**。
+
+固件收到 `AA 06`、`AA 6C`,或者下面任一条件,都要自己恢复,不能停在面对面模式:
+
+| 条件 | 谁负责 |
+|---|---|
+| 广播 30 秒没人连 | 固件 |
+| LE 断连(supervision timeout 2~4s,含 App 被杀) | 固件。这是 App 被杀掉时的唯一恢复手段 |
+| App 主动结束 | App 发 `AA 06`,再视情况发 `AA 6C` |
+
+恢复要做完这些:停广播、断这条 GATT、两耳重新组对、A2DP / HFP 能用、按键和降噪回到进入前的状态。`CLASSIC_KEEP=0` 的固件,组对完成后要主动把经典链路连回手机。
+
+单耳 BLE 断开:App 结束整场,不再单耳继续翻。
+来电:耳机在 `CTRL_RX` 上报第 9 节的退出事件,原因 `0x03`。App 结束会话并提示用户。固件恢复 HFP,把电话交给系统。
+
+---
+
+## 8. 音频
+
+编码固定 **G.722**。16 kHz、16 bit、单声道。20ms = 640 字节 PCM = 40 字节码流。
+
+`BB EB` 的 `FRAME_MS=40`:一包 2 帧,payload 80 字节。
+`FRAME_MS=20`:一包 1 帧,payload 40 字节。
+
+### 8.1 上行 `AUDIO_UP`(耳机 → App)
+
+```text
+BB 90
+```
+
+### 8.2 下行 `AUDIO_DOWN`(App → 耳机)
+
+```text
+AA 91
+```
+
+`LEN` = 1(耳位和标志)+ 2(序号)+ G.722 字节数。
+40ms 包:`LEN = 0x53`(83),整帧 86 字节。
+20ms 包:`LEN = 0x2B`(43),整帧 46 字节。
+
+低 4 位是耳位,**必须等于这条链路自己的耳朵**。对不上就丢,并可回 `ERR_EAR_MISMATCH (0x08)`。
+下行的耳位是「播给谁」:左耳麦的译文写到右耳那条链路,帧里 `EAR=2`。
+
+高 4 位:
+
+| 位 | 掩码 | 上行(耳机 → App) | 下行(App → 耳机) |
+|---|---|---|---|
+| bit4 | `0x10` | 本包含人声 | 一句译文开始 |
+| bit5 | `0x20` | 一段开始 | 播放结束 |
+| bit6 | `0x40` | 一段结束 | 打断:丢掉本耳还没播完的缓冲,从本包播 |
+| bit7 | `0x80` | 佩戴者本人在说话 | 不用 |
+
+`SEQ` 每耳独立,从 0 递增,到 `0xFFFF` 回绕。丢包不重传。
+
+`OWN_VOICE`(bit7):没有骨传导 / VPU 时这一位请一直发 0。
+App 只有在这只耳朵**曾经出现过 bit7=1** 之后,才丢掉 bit7=0 的包。一直是 0 的话,整路都会送去识别,不会被静音。
+
+下行节奏:没音频时 App 会先垫几包编码静音再送真声音,一句结束后再补一段静音。耳机用 `BB 88` 告诉 App 缓冲松紧(写在 `CTRL_RX`):
+
+```text
+BB 88
+```
+
+| ADJ | 含义 |
+|---|---|
+| `+1` (`0x01`) | 缓冲少一包,马上再补一包 |
+| `-1` (`0xFF`) | 缓冲多一包,下一拍停发一包 |
+| `0` | 缓冲已经空,App 重新垫静音再起播 |
+
+这是补包 / 扣包,不是把速率改成 1.25 倍。
+
+---
+
+## 9. 事件
+
+写在 `CTRL_RX`:
+
+```text
+BB 87
+```
+
+| EVENT | 含义 | PARAM | App 行为 |
+|---|---|---|---|
+| `0x01` | 按键 | ` ` | ACTION `0x01` 按下、`0x02` 抬起。当前是连续拾音,按键只更新界面上的左右标记 |
+| `0x02` | 佩戴 | ` ` | `0x00` 摘下,`0x01` 戴上,`0x02` 入盒。App 提示确认双耳都戴好 |
+| `0x03` | 电量 | ` ` | 低 7 位电量,最高位充电。App 暂不展示 |
+| `0x06` | 请求退出 | `` | `0x03` 来电:App 结束面对面。`0x01` 用户操作,`0x02` 电量过低,`0x04` 对耳失联 |
+
+---
+
+## 10. 错误码
+
+`BB EB` 的 RESULT,以及握手应答里的 RESULT,用同一张表。
+
+| 值 | 名称 | App 提示 |
+|---|---|---|
+| `0x00` | OK | 继续 |
+| `0x01` | 固件不支持 / 版本过低 | 耳机固件需升级 |
+| `0x02` | 正在通话、AI、录音或 OTA | 请先结束当前功能 |
+| `0x03` | 有一只耳不可用 | 请确认双耳都已取出并佩戴 |
+| `0x04` | TOKEN 不一致 | 耳机未就绪 |
+| `0x05` | BLE 资源不足 | 耳机未就绪 |
+| `0x06` | 编码失败 | 耳机未就绪 |
+| `0x07` | 超时 | 耳机未就绪 |
+| `0x08` | 下行耳位和这条链路不符 | 记日志 |
+| `0x0A` | 固件内部错误 | 耳机未就绪 |
+| `0x0B` | 拆 TWS 失败 | 请把双耳放回盒中再取出重试 |
+
+任一阶段失败,App 都会发 `AA 06`(连上了的耳朵)和 `AA 6C`(经典链路还在时),把耳机退回普通状态。
diff --git a/apps/client/ios/Podfile.lock b/apps/client/ios/Podfile.lock
index a7b6b0fb..c7cddc18 100644
--- a/apps/client/ios/Podfile.lock
+++ b/apps/client/ios/Podfile.lock
@@ -110,6 +110,6 @@ SPEC CHECKSUMS:
WechatOpenSDK-XCFramework: 5df9b250e9839dcc306ad8b00f46822eead1ed47
wifi_iot: b5aafd6f9b52f8a357383a1deabab45f31cd602d
-PODFILE CHECKSUM: 401345823f88247f8534d70ffc8240014a8b14fb
+PODFILE CHECKSUM: 615a00a0854e6c6a2c6db75ecb9a29206ab3e341
COCOAPODS: 1.16.2
diff --git a/apps/client/ios/Runner.xcodeproj/project.pbxproj b/apps/client/ios/Runner.xcodeproj/project.pbxproj
index 8d8cf0e6..0c9877cb 100644
--- a/apps/client/ios/Runner.xcodeproj/project.pbxproj
+++ b/apps/client/ios/Runner.xcodeproj/project.pbxproj
@@ -338,7 +338,7 @@
);
mainGroup = 97C146E51CF9000F007C117D;
packageReferences = (
- 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */,
+ 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */,
);
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
@@ -389,14 +389,10 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- );
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
);
- outputPaths = (
- );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
@@ -441,14 +437,10 @@
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
- inputPaths = (
- );
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
- outputPaths = (
- );
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
@@ -996,7 +988,7 @@
/* End XCConfigurationList section */
/* Begin XCLocalSwiftPackageReference section */
- 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = {
+ 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = {
isa = XCLocalSwiftPackageReference;
relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage;
};
@@ -1005,7 +997,7 @@
/* Begin XCSwiftPackageProductDependency section */
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = {
isa = XCSwiftPackageProductDependency;
- package = 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */;
+ package = 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */;
productName = FlutterGeneratedPluginSwiftPackage;
};
/* End XCSwiftPackageProductDependency section */
diff --git a/apps/client/lib/core/translations/language/ar_sa.dart b/apps/client/lib/core/translations/language/ar_sa.dart
index 003f3cfc..65d23d01 100644
--- a/apps/client/lib/core/translations/language/ar_sa.dart
+++ b/apps/client/lib/core/translations/language/ar_sa.dart
@@ -1603,6 +1603,46 @@ const Map arSA = {
"乌尔都语": "الأردية",
"波斯语": "الفارسية",
"斯瓦希里语": "السواحيلية",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "البريد الإلكتروني",
diff --git a/apps/client/lib/core/translations/language/bg_bg.dart b/apps/client/lib/core/translations/language/bg_bg.dart
index fa9c6fec..473883e5 100644
--- a/apps/client/lib/core/translations/language/bg_bg.dart
+++ b/apps/client/lib/core/translations/language/bg_bg.dart
@@ -1663,6 +1663,46 @@ const Map bgBG = {
"乌尔都语": "Урду",
"波斯语": "Персийски",
"斯瓦希里语": "Суахили",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Имейл",
diff --git a/apps/client/lib/core/translations/language/cs_cz.dart b/apps/client/lib/core/translations/language/cs_cz.dart
index fe4507c4..2941860c 100644
--- a/apps/client/lib/core/translations/language/cs_cz.dart
+++ b/apps/client/lib/core/translations/language/cs_cz.dart
@@ -1632,6 +1632,46 @@ const Map csCZ = {
"乌尔都语": "Urdština",
"波斯语": "Perština",
"斯瓦希里语": "Svahilština",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/da_dk.dart b/apps/client/lib/core/translations/language/da_dk.dart
index 1106b9dd..c078850c 100644
--- a/apps/client/lib/core/translations/language/da_dk.dart
+++ b/apps/client/lib/core/translations/language/da_dk.dart
@@ -1633,6 +1633,46 @@ const Map daDK = {
"乌尔都语": 'Urdu',
"波斯语": "Persisk",
"斯瓦希里语": 'Swahili',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/de_de.dart b/apps/client/lib/core/translations/language/de_de.dart
index 8bdc2015..0147659d 100644
--- a/apps/client/lib/core/translations/language/de_de.dart
+++ b/apps/client/lib/core/translations/language/de_de.dart
@@ -1675,6 +1675,46 @@ const Map deDE = {
"乌尔都语": 'Urdu',
"波斯语": "Persisch",
"斯瓦希里语": 'Suaheli',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-Mail",
diff --git a/apps/client/lib/core/translations/language/el_gr.dart b/apps/client/lib/core/translations/language/el_gr.dart
index df534d57..77b314be 100644
--- a/apps/client/lib/core/translations/language/el_gr.dart
+++ b/apps/client/lib/core/translations/language/el_gr.dart
@@ -1667,6 +1667,46 @@ const Map elGR = {
"乌尔都语": "Ουρντού",
"波斯语": "Περσικά",
"斯瓦希里语": "Σουαχίλι",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/en_us.dart b/apps/client/lib/core/translations/language/en_us.dart
index f9fffae7..5ec866c9 100644
--- a/apps/client/lib/core/translations/language/en_us.dart
+++ b/apps/client/lib/core/translations/language/en_us.dart
@@ -1666,6 +1666,46 @@ const Map enUS = {
"乌尔都语": "Urdu",
"波斯语": "Persian",
"斯瓦希里语": "Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
@@ -1885,14 +1925,14 @@ const Map enUS = {
'holderRetryHint': 'Make sure the device is on and nearby, then retry',
'autoConnectTitle': 'Auto-connect devices',
'autoConnectDesc':
- 'Wake the app to reconnect and receive recordings when your device powers on or comes near',
+ 'While the app is open, reconnect a remembered device and receive recordings. Closing the app will not wake it',
'autoConnectConsentTitle': 'Enable auto-connect',
'autoConnectConsentIntro':
- 'To let your device (AI Earbuds / AI Phone Stand) connect automatically and save recordings when you press its record button, we need your consent:',
+ 'To let your device (AI Earbuds / AI Phone Stand) connect automatically while the app is open, and save recordings when you press its record button, we need your consent:',
'autoConnectConsentB1':
- 'Register a background Bluetooth scan so the app is woken (auto-started) when your bound device is detected, to reconnect and receive recordings',
+ 'While the app is open, automatically connect the device you remembered, then reconnect and receive recordings. After you close the app or swipe it away, the device will not wake it',
'autoConnectConsentB2':
- 'Once woken, it is used only for device connection, recording and upload — nothing else, and no other apps are launched',
+ 'Auto-connect is used only for device connection, recording and upload — nothing else, and no other apps are launched',
'autoConnectConsentB3':
'You can still use the app without it — just connect the device manually each time',
'autoConnectConsentB4':
@@ -2005,6 +2045,13 @@ const Map enUS = {
'recordingSavedDesc': 'Saved to Voice Minutes',
'faceToFaceLeftEar': 'Left',
'faceToFaceRightEar': 'Right',
+ 'f2fEarNotReady': 'Earbuds are not ready',
+ 'f2fWearBothEars': 'Take out and wear both earbuds',
+ 'f2fEndOtherFeature': 'End the current feature first',
+ 'f2fFirmwareUpgrade': 'Earbud firmware needs an update',
+ 'f2fIncomingCallEnded': 'Incoming call ended face-to-face translation',
+ 'f2fPutBackInCase': 'Put both earbuds back in the case and try again',
+ 'f2fEarDisconnected': 'An earbud disconnected',
// EMAI 助手(阿里百炼多模态对话页)
'emaiReady': 'Ready',
diff --git a/apps/client/lib/core/translations/language/es_es.dart b/apps/client/lib/core/translations/language/es_es.dart
index 3e79e8bd..bbe9a30e 100644
--- a/apps/client/lib/core/translations/language/es_es.dart
+++ b/apps/client/lib/core/translations/language/es_es.dart
@@ -1666,6 +1666,46 @@ const Map esES = {
"乌尔都语": "Urdu",
"波斯语": "Persa",
"斯瓦希里语": "Suajili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/et_ee.dart b/apps/client/lib/core/translations/language/et_ee.dart
index b73a9d7a..80ed7d5b 100644
--- a/apps/client/lib/core/translations/language/et_ee.dart
+++ b/apps/client/lib/core/translations/language/et_ee.dart
@@ -1628,6 +1628,46 @@ const Map etEE = {
"乌尔都语": "Urdu",
"波斯语": "Pärsia",
"斯瓦希里语": "Suahiili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/fa_ir.dart b/apps/client/lib/core/translations/language/fa_ir.dart
index 78901bf0..3d904265 100644
--- a/apps/client/lib/core/translations/language/fa_ir.dart
+++ b/apps/client/lib/core/translations/language/fa_ir.dart
@@ -1618,6 +1618,46 @@ const Map faIR = {
"乌尔都语": "اردو",
"波斯语": "فارسی",
"斯瓦希里语": "سواحیلی",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "ایمیل",
diff --git a/apps/client/lib/core/translations/language/fi_fi.dart b/apps/client/lib/core/translations/language/fi_fi.dart
index b83ef828..6d88f89a 100644
--- a/apps/client/lib/core/translations/language/fi_fi.dart
+++ b/apps/client/lib/core/translations/language/fi_fi.dart
@@ -1638,6 +1638,46 @@ const Map fiFI = {
"乌尔都语": "Urdu",
"波斯语": "Persia",
"斯瓦希里语": "Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Sähköposti",
diff --git a/apps/client/lib/core/translations/language/fr_fr.dart b/apps/client/lib/core/translations/language/fr_fr.dart
index ccc9c571..951ba5fd 100644
--- a/apps/client/lib/core/translations/language/fr_fr.dart
+++ b/apps/client/lib/core/translations/language/fr_fr.dart
@@ -1686,6 +1686,46 @@ const Map frFR = {
"乌尔都语": "Ourdou",
"波斯语": "Persan",
"斯瓦希里语": 'Swahili',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/hi_in.dart b/apps/client/lib/core/translations/language/hi_in.dart
index 8e8e2495..926c2803 100644
--- a/apps/client/lib/core/translations/language/hi_in.dart
+++ b/apps/client/lib/core/translations/language/hi_in.dart
@@ -1639,6 +1639,46 @@ const Map hiIN = {
"乌尔都语": "उर्दू",
"波斯语": "फारसी",
"斯瓦希里语": "स्वाहिली",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "ईमेल",
diff --git a/apps/client/lib/core/translations/language/hr_hr.dart b/apps/client/lib/core/translations/language/hr_hr.dart
index c300c351..9a740f89 100644
--- a/apps/client/lib/core/translations/language/hr_hr.dart
+++ b/apps/client/lib/core/translations/language/hr_hr.dart
@@ -1653,6 +1653,46 @@ const Map hrHR = {
"乌尔都语": "Urdu",
"波斯语": "Perzijski",
"斯瓦希里语": "Svahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-pošta",
diff --git a/apps/client/lib/core/translations/language/hu_hu.dart b/apps/client/lib/core/translations/language/hu_hu.dart
index d6d0f1f9..4b121b8d 100644
--- a/apps/client/lib/core/translations/language/hu_hu.dart
+++ b/apps/client/lib/core/translations/language/hu_hu.dart
@@ -1655,6 +1655,46 @@ const Map huHU = {
"乌尔都语": "Urdu",
"波斯语": "Perzsa",
"斯瓦希里语": "Szuahéli",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/id_id.dart b/apps/client/lib/core/translations/language/id_id.dart
index efe8ebf8..6c38e595 100644
--- a/apps/client/lib/core/translations/language/id_id.dart
+++ b/apps/client/lib/core/translations/language/id_id.dart
@@ -1637,6 +1637,46 @@ const Map idID = {
"乌尔都语": "Bahasa Urdu",
"波斯语": "Bahasa Persia",
"斯瓦希里语": "Bahasa Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/is_is.dart b/apps/client/lib/core/translations/language/is_is.dart
index e5a5d665..5d5c79c6 100644
--- a/apps/client/lib/core/translations/language/is_is.dart
+++ b/apps/client/lib/core/translations/language/is_is.dart
@@ -1634,6 +1634,46 @@ const Map isIS = {
"乌尔都语": "Úrdú",
"波斯语": "Persneska",
"斯瓦希里语": "Svahílí",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Tölvupóstur",
diff --git a/apps/client/lib/core/translations/language/it_it.dart b/apps/client/lib/core/translations/language/it_it.dart
index 8466154c..c1eba0dc 100644
--- a/apps/client/lib/core/translations/language/it_it.dart
+++ b/apps/client/lib/core/translations/language/it_it.dart
@@ -1674,6 +1674,46 @@ const Map itIT = {
"乌尔都语": 'Urdu',
"波斯语": "Persiano",
"斯瓦希里语": 'Swahili',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/ja_jp.dart b/apps/client/lib/core/translations/language/ja_jp.dart
index 798c0ccf..e62a6a23 100644
--- a/apps/client/lib/core/translations/language/ja_jp.dart
+++ b/apps/client/lib/core/translations/language/ja_jp.dart
@@ -1492,6 +1492,46 @@ const Map jaJP = {
"乌尔都语": "ウルドゥー語",
"波斯语": "ペルシャ語",
"斯瓦希里语": "スワヒリ語",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "メールアドレス",
diff --git a/apps/client/lib/core/translations/language/ko_kr.dart b/apps/client/lib/core/translations/language/ko_kr.dart
index 4dc2ed08..91606531 100644
--- a/apps/client/lib/core/translations/language/ko_kr.dart
+++ b/apps/client/lib/core/translations/language/ko_kr.dart
@@ -1483,6 +1483,46 @@ const Map koKR = {
"乌尔都语": "우르두어",
"波斯语": "페르시아어",
"斯瓦希里语": "스와힐리어",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "이메일",
diff --git a/apps/client/lib/core/translations/language/lt_lt.dart b/apps/client/lib/core/translations/language/lt_lt.dart
index 8f39f215..d75e1ef6 100644
--- a/apps/client/lib/core/translations/language/lt_lt.dart
+++ b/apps/client/lib/core/translations/language/lt_lt.dart
@@ -1651,6 +1651,46 @@ const Map ltLT = {
"乌尔都语": "Urdu",
"波斯语": "Persų",
"斯瓦希里语": "Svahilių",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "El. paštas",
diff --git a/apps/client/lib/core/translations/language/lv_lv.dart b/apps/client/lib/core/translations/language/lv_lv.dart
index 1f14f813..87cde260 100644
--- a/apps/client/lib/core/translations/language/lv_lv.dart
+++ b/apps/client/lib/core/translations/language/lv_lv.dart
@@ -1656,6 +1656,46 @@ const Map lvLV = {
"乌尔都语": "Urdu",
"波斯语": "Persiešu",
"斯瓦希里语": "Svahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-pasts",
diff --git a/apps/client/lib/core/translations/language/ms_my.dart b/apps/client/lib/core/translations/language/ms_my.dart
index 48ea0c5e..6d420601 100644
--- a/apps/client/lib/core/translations/language/ms_my.dart
+++ b/apps/client/lib/core/translations/language/ms_my.dart
@@ -1642,6 +1642,46 @@ const Map msMY = {
"乌尔都语": "Bahasa Urdu",
"波斯语": "Bahasa Parsi",
"斯瓦希里语": "Bahasa Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mel",
diff --git a/apps/client/lib/core/translations/language/nb_no.dart b/apps/client/lib/core/translations/language/nb_no.dart
index 3e84045d..78d532b5 100644
--- a/apps/client/lib/core/translations/language/nb_no.dart
+++ b/apps/client/lib/core/translations/language/nb_no.dart
@@ -1635,6 +1635,46 @@ const Map nbNO = {
"乌尔都语": 'Urdu',
"波斯语": "Persisk",
"斯瓦希里语": 'Swahili',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-post",
diff --git a/apps/client/lib/core/translations/language/nl_nl.dart b/apps/client/lib/core/translations/language/nl_nl.dart
index 1eb61288..72a71a3f 100644
--- a/apps/client/lib/core/translations/language/nl_nl.dart
+++ b/apps/client/lib/core/translations/language/nl_nl.dart
@@ -1532,6 +1532,46 @@ const Map nlNL = {
"\u4e4c\u5c14\u90fd\u8bed": "Urdu",
"\u6ce2\u65af\u8bed": "Perzisch",
"\u65af\u74e6\u5e0c\u91cc\u8bed": "Swahili",
+ "\u7ca4\u8bed": "Cantonese",
+ "\u5a01\u5c14\u58eb\u8bed": "Welsh",
+ "\u4fdd\u52a0\u5229\u4e9a\u8bed": "Bulgarian",
+ "\u963f\u59c6\u54c8\u62c9\u8bed": "Amharic",
+ "\u963f\u8428\u59c6\u8bed": "Assamese",
+ "\u5357\u975e\u8377\u5170\u8bed": "Afrikaans",
+ "\u963f\u585e\u62dc\u7586\u8bed": "Azerbaijani",
+ "\u6ce2\u65af\u5c3c\u4e9a\u8bed": "Bosnian",
+ "\u5361\u7eb3\u8fbe\u8bed": "Kannada",
+ "\u7231\u6c99\u5c3c\u4e9a\u8bed": "Estonian",
+ "\u5df4\u65af\u514b\u8bed": "Basque",
+ "\u83f2\u5f8b\u5bbe\u8bed": "Filipino",
+ "\u7231\u5c14\u5170\u8bed": "Irish",
+ "\u52a0\u5229\u897f\u4e9a\u8bed": "Galician",
+ "\u53e4\u5409\u62c9\u7279\u8bed": "Gujarati",
+ "\u5e0c\u4f2f\u6765\u8bed": "Hebrew",
+ "\u4e9a\u7f8e\u5c3c\u4e9a\u8bed": "Armenian",
+ "\u51b0\u5c9b\u8bed": "Icelandic",
+ "\u722a\u54c7\u8bed": "Javanese",
+ "\u683c\u9c81\u5409\u4e9a\u8bed": "Georgian",
+ "\u54c8\u8428\u514b\u8bed": "Kazakh",
+ "\u9ad8\u68c9\u8bed": "Khmer",
+ "\u8001\u631d\u8bed": "Lao",
+ "\u7acb\u9676\u5b9b\u8bed": "Lithuanian",
+ "\u62c9\u8131\u7ef4\u4e9a\u8bed": "Latvian",
+ "\u9a6c\u5176\u987f\u8bed": "Macedonian",
+ "\u9a6c\u62c9\u96c5\u62c9\u59c6\u8bed": "Malayalam",
+ "\u8499\u53e4\u8bed": "Mongolian",
+ "\u9a6c\u8033\u4ed6\u8bed": "Maltese",
+ "\u7f05\u7538\u8bed": "Burmese",
+ "\u5c3c\u6cca\u5c14\u8bed": "Nepali",
+ "\u666e\u4ec0\u56fe\u8bed": "Pashto",
+ "\u50e7\u4f3d\u7f57\u8bed": "Sinhala",
+ "\u65af\u6d1b\u4f10\u514b\u8bed": "Slovak",
+ "\u65af\u6d1b\u6587\u5c3c\u4e9a\u8bed": "Slovenian",
+ "\u7d22\u9a6c\u91cc\u8bed": "Somali",
+ "\u963f\u5c14\u5df4\u5c3c\u4e9a\u8bed": "Albanian",
+ "\u585e\u5c14\u7ef4\u4e9a\u8bed": "Serbian",
+ "\u4e4c\u5179\u522b\u514b\u8bed": "Uzbek",
+ "\u7956\u9c81\u8bed": "Zulu",
// 国家列表
"\u90ae\u7bb1": "E-mail",
diff --git a/apps/client/lib/core/translations/language/pl_pl.dart b/apps/client/lib/core/translations/language/pl_pl.dart
index 55a542f1..1343e9de 100644
--- a/apps/client/lib/core/translations/language/pl_pl.dart
+++ b/apps/client/lib/core/translations/language/pl_pl.dart
@@ -1663,6 +1663,46 @@ const Map plPL = {
"乌尔都语": "Urdu",
"波斯语": "Perski",
"斯瓦希里语": "Suahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/pt_pt.dart b/apps/client/lib/core/translations/language/pt_pt.dart
index d50bdac3..7ab92973 100644
--- a/apps/client/lib/core/translations/language/pt_pt.dart
+++ b/apps/client/lib/core/translations/language/pt_pt.dart
@@ -1673,6 +1673,46 @@ const Map ptPT = {
"乌尔都语": 'Urdu',
"波斯语": "Persa",
"斯瓦希里语": "Suaíli",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/ro_ro.dart b/apps/client/lib/core/translations/language/ro_ro.dart
index 7f2321fd..331172f5 100644
--- a/apps/client/lib/core/translations/language/ro_ro.dart
+++ b/apps/client/lib/core/translations/language/ro_ro.dart
@@ -1664,6 +1664,46 @@ const Map roRO = {
"乌尔都语": 'Urdu',
"波斯语": "Persană",
"斯瓦希里语": 'Swahili',
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/ru_ru.dart b/apps/client/lib/core/translations/language/ru_ru.dart
index 1ba0181d..bdf3b517 100644
--- a/apps/client/lib/core/translations/language/ru_ru.dart
+++ b/apps/client/lib/core/translations/language/ru_ru.dart
@@ -1651,6 +1651,46 @@ const Map ruRU = {
"乌尔都语": "Урду",
"波斯语": "Персидский",
"斯瓦希里语": "Суахили",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/sk_sk.dart b/apps/client/lib/core/translations/language/sk_sk.dart
index 506c29a9..09ec2730 100644
--- a/apps/client/lib/core/translations/language/sk_sk.dart
+++ b/apps/client/lib/core/translations/language/sk_sk.dart
@@ -1645,6 +1645,46 @@ const Map skSK = {
"乌尔都语": "Urdčina",
"波斯语": "Perzština",
"斯瓦希里语": "Svahilčina",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-mail",
diff --git a/apps/client/lib/core/translations/language/sl_si.dart b/apps/client/lib/core/translations/language/sl_si.dart
index 98be2ba9..60460ec9 100644
--- a/apps/client/lib/core/translations/language/sl_si.dart
+++ b/apps/client/lib/core/translations/language/sl_si.dart
@@ -1648,6 +1648,46 @@ const Map slSI = {
"乌尔都语": "Urdujščina",
"波斯语": "Perzijščina",
"斯瓦希里语": "Svahilščina",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-pošta",
diff --git a/apps/client/lib/core/translations/language/sr_rs.dart b/apps/client/lib/core/translations/language/sr_rs.dart
index 9e352192..67be81b8 100644
--- a/apps/client/lib/core/translations/language/sr_rs.dart
+++ b/apps/client/lib/core/translations/language/sr_rs.dart
@@ -1644,6 +1644,46 @@ const Map srRS = {
"乌尔都语": "Urdu",
"波斯语": "Persijski",
"斯瓦希里语": "Svahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-pošta",
diff --git a/apps/client/lib/core/translations/language/sv_se.dart b/apps/client/lib/core/translations/language/sv_se.dart
index 79e24064..06f0a3ef 100644
--- a/apps/client/lib/core/translations/language/sv_se.dart
+++ b/apps/client/lib/core/translations/language/sv_se.dart
@@ -1640,6 +1640,46 @@ const Map svSE = {
"乌尔都语": "Urdu",
"波斯语": "Persiska",
"斯瓦希里语": "Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-post",
diff --git a/apps/client/lib/core/translations/language/th_th.dart b/apps/client/lib/core/translations/language/th_th.dart
index 5d97acb2..7af6fca2 100644
--- a/apps/client/lib/core/translations/language/th_th.dart
+++ b/apps/client/lib/core/translations/language/th_th.dart
@@ -1597,6 +1597,46 @@ const Map thTH = {
"乌尔都语": "ภาษาอูรดู",
"波斯语": "ภาษาเปอร์เซีย",
"斯瓦希里语": "ภาษาสวาฮีลี",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "อีเมล",
diff --git a/apps/client/lib/core/translations/language/tl_ph.dart b/apps/client/lib/core/translations/language/tl_ph.dart
index 6ee4fbde..8afd8041 100644
--- a/apps/client/lib/core/translations/language/tl_ph.dart
+++ b/apps/client/lib/core/translations/language/tl_ph.dart
@@ -1678,6 +1678,46 @@ const Map tlPH = {
"乌尔都语": "Urdu",
"波斯语": "Persian",
"斯瓦希里语": "Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/tr_tr.dart b/apps/client/lib/core/translations/language/tr_tr.dart
index ba5e2dca..079b7977 100644
--- a/apps/client/lib/core/translations/language/tr_tr.dart
+++ b/apps/client/lib/core/translations/language/tr_tr.dart
@@ -1634,6 +1634,46 @@ const Map trTR = {
"乌尔都语": "Urduca",
"波斯语": "Farsça",
"斯瓦希里语": "Svahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "E-posta",
diff --git a/apps/client/lib/core/translations/language/uk_ua.dart b/apps/client/lib/core/translations/language/uk_ua.dart
index 83828b43..4a8be740 100644
--- a/apps/client/lib/core/translations/language/uk_ua.dart
+++ b/apps/client/lib/core/translations/language/uk_ua.dart
@@ -1651,6 +1651,46 @@ const Map ukUA = {
"乌尔都语": "Урду",
"波斯语": "Перська",
"斯瓦希里语": "Свахілі",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/vi_vn.dart b/apps/client/lib/core/translations/language/vi_vn.dart
index 7d38d9e9..66a75142 100644
--- a/apps/client/lib/core/translations/language/vi_vn.dart
+++ b/apps/client/lib/core/translations/language/vi_vn.dart
@@ -1616,6 +1616,46 @@ const Map viVN = {
"乌尔都语": "Tiếng Urdu",
"波斯语": "Tiếng Ba Tư",
"斯瓦希里语": "Tiếng Swahili",
+ "粤语": "Cantonese",
+ "威尔士语": "Welsh",
+ "保加利亚语": "Bulgarian",
+ "阿姆哈拉语": "Amharic",
+ "阿萨姆语": "Assamese",
+ "南非荷兰语": "Afrikaans",
+ "阿塞拜疆语": "Azerbaijani",
+ "波斯尼亚语": "Bosnian",
+ "卡纳达语": "Kannada",
+ "爱沙尼亚语": "Estonian",
+ "巴斯克语": "Basque",
+ "菲律宾语": "Filipino",
+ "爱尔兰语": "Irish",
+ "加利西亚语": "Galician",
+ "古吉拉特语": "Gujarati",
+ "希伯来语": "Hebrew",
+ "亚美尼亚语": "Armenian",
+ "冰岛语": "Icelandic",
+ "爪哇语": "Javanese",
+ "格鲁吉亚语": "Georgian",
+ "哈萨克语": "Kazakh",
+ "高棉语": "Khmer",
+ "老挝语": "Lao",
+ "立陶宛语": "Lithuanian",
+ "拉脱维亚语": "Latvian",
+ "马其顿语": "Macedonian",
+ "马拉雅拉姆语": "Malayalam",
+ "蒙古语": "Mongolian",
+ "马耳他语": "Maltese",
+ "缅甸语": "Burmese",
+ "尼泊尔语": "Nepali",
+ "普什图语": "Pashto",
+ "僧伽罗语": "Sinhala",
+ "斯洛伐克语": "Slovak",
+ "斯洛文尼亚语": "Slovenian",
+ "索马里语": "Somali",
+ "阿尔巴尼亚语": "Albanian",
+ "塞尔维亚语": "Serbian",
+ "乌兹别克语": "Uzbek",
+ "祖鲁语": "Zulu",
// 国家列表
"邮箱": "Email",
diff --git a/apps/client/lib/core/translations/language/zh_cn.dart b/apps/client/lib/core/translations/language/zh_cn.dart
index ce16990a..22be5902 100644
--- a/apps/client/lib/core/translations/language/zh_cn.dart
+++ b/apps/client/lib/core/translations/language/zh_cn.dart
@@ -1496,6 +1496,46 @@ const Map zhCN = {
"乌尔都语": "乌尔都语",
"波斯语": "波斯语",
"斯瓦希里语": "斯瓦希里语",
+ "粤语": "粤语",
+ "威尔士语": "威尔士语",
+ "保加利亚语": "保加利亚语",
+ "阿姆哈拉语": "阿姆哈拉语",
+ "阿萨姆语": "阿萨姆语",
+ "南非荷兰语": "南非荷兰语",
+ "阿塞拜疆语": "阿塞拜疆语",
+ "波斯尼亚语": "波斯尼亚语",
+ "卡纳达语": "卡纳达语",
+ "爱沙尼亚语": "爱沙尼亚语",
+ "巴斯克语": "巴斯克语",
+ "菲律宾语": "菲律宾语",
+ "爱尔兰语": "爱尔兰语",
+ "加利西亚语": "加利西亚语",
+ "古吉拉特语": "古吉拉特语",
+ "希伯来语": "希伯来语",
+ "亚美尼亚语": "亚美尼亚语",
+ "冰岛语": "冰岛语",
+ "爪哇语": "爪哇语",
+ "格鲁吉亚语": "格鲁吉亚语",
+ "哈萨克语": "哈萨克语",
+ "高棉语": "高棉语",
+ "老挝语": "老挝语",
+ "立陶宛语": "立陶宛语",
+ "拉脱维亚语": "拉脱维亚语",
+ "马其顿语": "马其顿语",
+ "马拉雅拉姆语": "马拉雅拉姆语",
+ "蒙古语": "蒙古语",
+ "马耳他语": "马耳他语",
+ "缅甸语": "缅甸语",
+ "尼泊尔语": "尼泊尔语",
+ "普什图语": "普什图语",
+ "僧伽罗语": "僧伽罗语",
+ "斯洛伐克语": "斯洛伐克语",
+ "斯洛文尼亚语": "斯洛文尼亚语",
+ "索马里语": "索马里语",
+ "阿尔巴尼亚语": "阿尔巴尼亚语",
+ "塞尔维亚语": "塞尔维亚语",
+ "乌兹别克语": "乌兹别克语",
+ "祖鲁语": "祖鲁语",
// 国家列表
"邮箱": "邮箱",
@@ -1708,12 +1748,12 @@ const Map zhCN = {
'holderPairHint': '请确保支架已开机并处于配对模式',
'holderRetryHint': '请确认设备已开机并靠近手机,稍后重试',
'autoConnectTitle': '设备自动连接',
- 'autoConnectDesc': '设备开机或靠近时自动唤醒应用回连并接收录音',
+ 'autoConnectDesc': '应用打开时自动连接已记住的设备并接收录音。关掉应用后不会被设备唤醒',
'autoConnectConsentTitle': '开启设备自动连接',
'autoConnectConsentIntro':
- '为了让你的设备(AI耳机 / AI手机支架)开机或靠近手机时能自动连上,并在你按设备上的录音键时把录音完整保存下来,需要你同意:',
- 'autoConnectConsentB1': '向系统注册蓝牙后台扫描,扫到你已绑定的这台设备时唤醒本应用(即自启动),完成回连与录音接收',
- 'autoConnectConsentB2': '唤醒后仅用于设备连接、录音采集与上传,不做其他用途,也不会拉起其他应用',
+ '为了让你的设备(AI耳机 / AI手机支架)在应用打开期间能自动连上,并在你按设备上的录音键时把录音完整保存下来,需要你同意:',
+ 'autoConnectConsentB1': '应用处于打开状态时,自动连接你已记住的这台设备,完成回连与录音接收。应用被关掉或从最近任务划掉后,不会再被设备唤醒',
+ 'autoConnectConsentB2': '自动连接只用于设备连接、录音采集与上传,不做其他用途,也不会拉起其他应用',
'autoConnectConsentB3': '不同意也可以正常使用:需要你每次打开应用手动连接设备',
'autoConnectConsentB4': '同意后可随时在「设置 → 设备自动连接」里关闭',
'autoConnectAgree': '同意并开启',
@@ -1820,6 +1860,13 @@ const Map zhCN = {
'recordingSavedDesc': '已存入语音纪要',
'faceToFaceLeftEar': '左耳',
'faceToFaceRightEar': '右耳',
+ 'f2fEarNotReady': '耳机未就绪',
+ 'f2fWearBothEars': '请确认双耳都已取出并佩戴',
+ 'f2fEndOtherFeature': '请先结束当前功能',
+ 'f2fFirmwareUpgrade': '耳机固件需升级',
+ 'f2fIncomingCallEnded': '有来电,面对面翻译已结束',
+ 'f2fPutBackInCase': '请把双耳放回盒中再取出重试',
+ 'f2fEarDisconnected': '耳机已断开',
// EMAI 助手(阿里百炼多模态对话页)
'emaiReady': '已就绪',
diff --git a/apps/client/lib/core/translations/language/zh_hk.dart b/apps/client/lib/core/translations/language/zh_hk.dart
index 6178ebac..8d25980e 100644
--- a/apps/client/lib/core/translations/language/zh_hk.dart
+++ b/apps/client/lib/core/translations/language/zh_hk.dart
@@ -1471,6 +1471,46 @@ const Map zhHK = {
"乌尔都语": "烏爾都語",
"波斯语": "波斯語",
"斯瓦希里语": "斯瓦希里語",
+ "粤语": "粵語",
+ "威尔士语": "威爾士語",
+ "保加利亚语": "保加利亞語",
+ "阿姆哈拉语": "阿姆哈拉語",
+ "阿萨姆语": "阿薩姆語",
+ "南非荷兰语": "南非荷蘭語",
+ "阿塞拜疆语": "阿塞拜疆語",
+ "波斯尼亚语": "波士尼亞語",
+ "卡纳达语": "卡納達語",
+ "爱沙尼亚语": "愛沙尼亞語",
+ "巴斯克语": "巴斯克語",
+ "菲律宾语": "菲律賓語",
+ "爱尔兰语": "愛爾蘭語",
+ "加利西亚语": "加利西亞語",
+ "古吉拉特语": "古吉拉特語",
+ "希伯来语": "希伯來語",
+ "亚美尼亚语": "亞美尼亞語",
+ "冰岛语": "冰島語",
+ "爪哇语": "爪哇語",
+ "格鲁吉亚语": "格魯吉亞語",
+ "哈萨克语": "哈薩克語",
+ "高棉语": "高棉語",
+ "老挝语": "老撾語",
+ "立陶宛语": "立陶宛語",
+ "拉脱维亚语": "拉脫維亞語",
+ "马其顿语": "馬其頓語",
+ "马拉雅拉姆语": "馬拉雅拉姆語",
+ "蒙古语": "蒙古語",
+ "马耳他语": "馬耳他語",
+ "缅甸语": "緬甸語",
+ "尼泊尔语": "尼泊爾語",
+ "普什图语": "普什圖語",
+ "僧伽罗语": "僧伽羅語",
+ "斯洛伐克语": "斯洛伐克語",
+ "斯洛文尼亚语": "斯洛維尼亞語",
+ "索马里语": "索馬利亞語",
+ "阿尔巴尼亚语": "阿爾巴尼亞語",
+ "塞尔维亚语": "塞爾維亞語",
+ "乌兹别克语": "烏茲別克語",
+ "祖鲁语": "祖魯語",
// 国家列表
"邮箱": "郵箱",
@@ -1683,12 +1723,12 @@ const Map zhHK = {
'holderPairHint': '請確認支架已開機並喺配對模式',
'holderRetryHint': '請確認裝置已開機並喺手機附近,遲啲再試',
'autoConnectTitle': '裝置自動連接',
- 'autoConnectDesc': '裝置開機或者行埋嚟時自動喚醒應用回連並接收錄音',
+ 'autoConnectDesc': '應用開住嗰陣自動連接已記住嘅裝置並接收錄音。閂咗應用之後唔會被裝置喚醒',
'autoConnectConsentTitle': '開啟裝置自動連接',
'autoConnectConsentIntro':
- '為咗令你嘅裝置(AI 耳機/AI 手機支架)開機或者埋身時自動連上,並喺你撳裝置錄音掣時完整保存錄音,需要你同意:',
- 'autoConnectConsentB1': '向系統註冊藍牙背景掃描,掃到你已綁定嘅裝置時喚醒本應用(即自啟動),完成回連同錄音接收',
- 'autoConnectConsentB2': '喚醒後淨係用嚟連接裝置、錄音同上傳,唔會做其他嘢,亦唔會拉起其他應用',
+ '為咗令你嘅裝置(AI 耳機/AI 手機支架)喺應用開住嗰陣自動連上,並喺你撳裝置錄音掣時完整保存錄音,需要你同意:',
+ 'autoConnectConsentB1': '應用開住嗰陣,自動連接你已記住嘅呢部裝置,完成回連同錄音接收。應用被閂咗或者從最近任務劃走之後,唔會再被裝置喚醒',
+ 'autoConnectConsentB2': '自動連接淨係用嚟連接裝置、錄音同上傳,唔會做其他嘢,亦唔會拉起其他應用',
'autoConnectConsentB3': '唔同意都用得:不過每次都要開應用手動連接',
'autoConnectConsentB4': '同意後可以隨時喺「設定 → 裝置自動連接」閂咗佢',
'autoConnectAgree': '同意並開啟',
diff --git a/apps/client/lib/core/translations/language/zh_tw.dart b/apps/client/lib/core/translations/language/zh_tw.dart
index 3b4271ee..38bf8308 100644
--- a/apps/client/lib/core/translations/language/zh_tw.dart
+++ b/apps/client/lib/core/translations/language/zh_tw.dart
@@ -1471,6 +1471,46 @@ const Map zhTW = {
"乌尔都语": "烏爾都語",
"波斯语": "波斯語",
"斯瓦希里语": "斯瓦希里語",
+ "粤语": "粵語",
+ "威尔士语": "威爾士語",
+ "保加利亚语": "保加利亞語",
+ "阿姆哈拉语": "阿姆哈拉語",
+ "阿萨姆语": "阿薩姆語",
+ "南非荷兰语": "南非荷蘭語",
+ "阿塞拜疆语": "阿塞拜疆語",
+ "波斯尼亚语": "波士尼亞語",
+ "卡纳达语": "卡納達語",
+ "爱沙尼亚语": "愛沙尼亞語",
+ "巴斯克语": "巴斯克語",
+ "菲律宾语": "菲律賓語",
+ "爱尔兰语": "愛爾蘭語",
+ "加利西亚语": "加利西亞語",
+ "古吉拉特语": "古吉拉特語",
+ "希伯来语": "希伯來語",
+ "亚美尼亚语": "亞美尼亞語",
+ "冰岛语": "冰島語",
+ "爪哇语": "爪哇語",
+ "格鲁吉亚语": "格魯吉亞語",
+ "哈萨克语": "哈薩克語",
+ "高棉语": "高棉語",
+ "老挝语": "老撾語",
+ "立陶宛语": "立陶宛語",
+ "拉脱维亚语": "拉脫維亞語",
+ "马其顿语": "馬其頓語",
+ "马拉雅拉姆语": "馬拉雅拉姆語",
+ "蒙古语": "蒙古語",
+ "马耳他语": "馬耳他語",
+ "缅甸语": "緬甸語",
+ "尼泊尔语": "尼泊爾語",
+ "普什图语": "普什圖語",
+ "僧伽罗语": "僧伽羅語",
+ "斯洛伐克语": "斯洛伐克語",
+ "斯洛文尼亚语": "斯洛維尼亞語",
+ "索马里语": "索馬利亞語",
+ "阿尔巴尼亚语": "阿爾巴尼亞語",
+ "塞尔维亚语": "塞爾維亞語",
+ "乌兹别克语": "烏茲別克語",
+ "祖鲁语": "祖魯語",
// 国家列表
"邮箱": "電子郵件",
@@ -1683,12 +1723,12 @@ const Map zhTW = {
'holderPairHint': '請確認支架已開機並處於配對模式',
'holderRetryHint': '請確認裝置已開機並靠近手機,稍後重試',
'autoConnectTitle': '裝置自動連線',
- 'autoConnectDesc': '裝置開機或靠近時自動喚醒應用回連並接收錄音',
+ 'autoConnectDesc': '應用開啟時自動連線已記住的裝置並接收錄音。關掉應用後不會被裝置喚醒',
'autoConnectConsentTitle': '開啟裝置自動連線',
'autoConnectConsentIntro':
- '為了讓你的裝置(AI 耳機/AI 手機支架)開機或靠近手機時自動連上,並在你按下裝置錄音鍵時完整保存錄音,需要你同意:',
- 'autoConnectConsentB1': '向系統註冊藍牙背景掃描,掃到你已綁定的裝置時喚醒本應用(即自啟動),完成回連與錄音接收',
- 'autoConnectConsentB2': '喚醒後僅用於裝置連線、錄音擷取與上傳,不作其他用途,也不會喚起其他應用',
+ '為了讓你的裝置(AI 耳機/AI 手機支架)在應用開啟期間自動連上,並在你按下裝置錄音鍵時完整保存錄音,需要你同意:',
+ 'autoConnectConsentB1': '應用處於開啟狀態時,自動連線你已記住的這台裝置,完成回連與錄音接收。應用被關掉或從最近任務劃掉後,不會再被裝置喚醒',
+ 'autoConnectConsentB2': '自動連線只用於裝置連線、錄音擷取與上傳,不作其他用途,也不會喚起其他應用',
'autoConnectConsentB3': '不同意也能正常使用:只是每次都要打開應用手動連線',
'autoConnectConsentB4': '同意後可隨時在「設定 → 裝置自動連線」關閉',
'autoConnectAgree': '同意並開啟',
diff --git a/apps/client/lib/data/models/device_category.dart b/apps/client/lib/data/models/device_category.dart
index 9d493df3..df985294 100644
--- a/apps/client/lib/data/models/device_category.dart
+++ b/apps/client/lib/data/models/device_category.dart
@@ -84,7 +84,17 @@ class DeviceCategories {
gradient: [Color(0xFFAB47BC), Color(0xFF7B1FA2)],
imageAsset: '${DeviceImages.dir}Echo-one.png',
// deviceTypes 已失效(见上),耳机改由名字圈定
- nameKeywords: ['echo-one', 'deepvoice', 'deepsound', 'buds', 'ai80', 'a80'],
+ // echo-translation 与 echo-one 是同一套恒玄协议,后台各配一个产品。
+ // 两个名字互不包含,品类关键字要分别写上,否则新名字进不了耳机这一类。
+ nameKeywords: [
+ 'echo-translation',
+ 'echo-one',
+ 'deepvoice',
+ 'deepsound',
+ 'buds',
+ 'ai80',
+ 'a80',
+ ],
),
// AI车载香薰 = EaiCar(广播名,旧名 Smartcar 已于 2026-09-15 停止接纳)。
DeviceCategory(
diff --git a/apps/client/lib/data/services/ast_service.dart b/apps/client/lib/data/services/ast_service.dart
index 28b182d1..22f91c20 100644
--- a/apps/client/lib/data/services/ast_service.dart
+++ b/apps/client/lib/data/services/ast_service.dart
@@ -62,6 +62,10 @@ abstract class AstService {
/// 原生不支持返回 false,调用方退回 Dart 路径。
Future setNativeCallBridge(bool enabled);
+ /// Echo-one 面对面 BLE 的 PCM 直连桥。只有恒玄双耳会话会开。
+ /// 原生不支持返回 false。
+ Future setNativeF2fBridge(bool enabled);
+
/// 桥的计数(两路帧数 / 丢帧 / 门限状态),会话结束时打进日志用。
Future