多语言

FAQ1 Solution是否支持多语言?

Solution 支持内置外置两种多语言实现方式,具体可参考多语言实现方式文档。

注意事项:

  1. 增删词条可能会改变原有语言词条的排序,因此多语言文件通常需要与主代码同步升级;

  2. 外置多语言以独立 bin 文件的形式进行 OTA 升级或推送,需严格保证与主代码的版本一致性,避免因版本不匹配引发各类异常。

    经验参考:采用外置多语言方案的客户,需建立完善的多语言文件与主代码的版本管理机制。


FAQ2 如果是第一个项目,多语言怎么实现?

若客户是首次基于 Solution 开发项目,建议按以下步骤配置多语言:

  1. 打开 Butterfli 工具 → 左侧栏「参数设置」→ 多语言 → 多语言编辑文件 → 右键「打开文件」(文件名为 multi_language_table.xlsx);

  2. 保留表格第一行表头,删除其余所有行;

  3. 在第一行中按需删减语言列,仅保留需要支持的语言。

    • 列名规则:生成语言名字(显示语言的名字)括号为英文半角 ()),例如 en_us(English_US)

    • 规则说明:

      • 内置多语言:会生成 en_us.c 文件,包含 const lang_translation_t en_us_lang_translation 结构体变量;

      • 外置多语言:会生成 en_us.bin 二进制文件。

  4. 回到 Butterfli 工具 → 顶部「编译下载」标签栏 → 点击「刷新」,加载修改后的 multi_language_table.xlsx 文件;

  5. 进入 Butterfli 工具 → 左侧栏「参数设置」→ 多语言 → 多语言选择,配置本工程需启用的语言,及各语言的「内置/外置」类型;

  6. 编写主代码,词条使用需遵循《代码中多语言使用规范》(参考链接:代码中多语言使用规范);

  7. 在 Butterfli 工具 → 顶部「编译下载」标签栏 → 勾选「语言」选项,编译后工具会自动扫描工程代码并完成以下生成操作:

    • 扫描代码中 app_get_str / app_get_strid 接口的默认英文词条,填充至 multi_language_table.xlsx 中所有语言列;

    • 内置多语言生成 .c 文件,外置多语言生成 .bin 文件。

  8. 重新打开 multi_language_table.xlsx,将默认英文词条替换为对应语言的翻译内容;

  9. 若代码需迭代修改,返回步骤 6 重复执行。


FAQ3 词条实现多语言需要遵循哪些步骤?

实现词条的多语言适配,需按以下步骤操作:

  1. 代码规范编写:词条使用需严格遵循《代码中多语言使用规范》(参考链接:代码中多语言使用规范);

  2. 自动扫描更新表格:使用 Butterfli 工具编译工程,工具会自动扫描代码中的词条,更新 multi_language_table.xlsx 文件;

  3. 编辑多语言表格:打开 multi_language_table.xlsx 完成以下配置:

    • 语言列管理:增删第一行的语言列,保留需要支持的语言(若代码适配多个产品,建议保留多语言最大集,通过 Butterfli 工具的「多语言选择」功能实现不同产品的差异化配置);

    • 词条翻译:对新增/修改的词条完成对应语言的翻译编辑。

  4. 配置语言部署方式:在 Butterfli 工具中,选择本工程需启用的语言,并指定各语言的「内置/外置」部署类型;

  5. 重新编译生效:使用 Butterfli 工具重新编译工程,使多语言配置生效。


FAQ4 如何增加一个语言?

新增多语言支持需按以下步骤操作:

  1. 打开多语言配置表格: 打开 Butterfli 工具 → 左侧栏「参数设置」→ 多语言 → 多语言编辑文件 → 右键「打开文件」(文件名为 multi_language_table.xlsx);

  2. 新增语言列: 在表格第一行新增一列,按规则填写语言名称:生成语言名字(显示语言的名字)括号为英文半角 ()),示例:en_us(English_US)

  3. 刷新表格配置: 回到 Butterfli 工具 → 顶部「编译下载」标签栏 → 点击「刷新」,加载新增的语言列配置;

  4. 配置语言部署类型: 进入 Butterfli 工具 → 左侧栏「参数设置」→ 多语言 → 多语言选择,将新增语言设置为「内置」或「外置」类型;

  5. 自动填充默认词条: 在 Butterfli 工具 → 顶部「编译下载」标签栏 → 勾选「语言」选项,点击右侧「生成」图标;

    说明:工具会自动扫描工程代码中的多语言词条,并在新增语言列中填充默认英文词条;

  6. 完成词条翻译: 按步骤 1 的路径重新打开 multi_language_table.xlsx,将新增列的默认英文词条替换为对应语言的翻译内容。


FAQ5 如何删除一个语言?

移除不需要的多语言支持,需按以下步骤操作:

  1. 打开多语言配置表格: 打开 Butterfli 工具 → 左侧栏「参数设置」→ 多语言 → 多语言编辑文件 → 右键「打开文件」(文件名为 multi_language_table.xlsx);

  2. 删除目标语言列: 在表格第一行中,删除需移除支持的语言对应的整列;

  3. 刷新配置生效: 回到 Butterfli 工具 → 顶部「编译下载」标签栏 → 点击「刷新」,使语言列删除操作生效。

注意事项

  • 删除语言列后,工具会自动清理该语言对应的内置 .c 文件/外置 .bin 文件,无需手动删除。


FAQ6 Solution支持哪些多语言?

Solution 对多语言的支持依赖对应字库的适配,根据语言文字是否需要变形处理,分为以下两类情况:

  1. 无需变形的多语言 只要提供对应的 ttfbitmap 字库,即可直接支持。

  2. 需要变形的多语言 目前 Solution 提供的原生支持及适配方案如下:

    • 印地语:提供内置变形支持;

    • 阿拉伯语、波斯语:沿用 LVGL 原生方案,需客户根据实际需求自行调整;

    • 其他需要变形(shape)的语言:需客户自行寻找适配的变形算法及对应的 ttfbitmap 字库。


FAQ7 动态应用如何修改多语言

动态应用的多语言表是独立的,位于动态应用目录下resource\lang\multi_language_table.xlsx,其修改方式和主代码中修改多语言表方式一致,(参考链接:FAQ3 词条实现多语言需要遵循哪些步骤);


FAQ8 动态应用如何获取主代码中的多语言

动态应用中app_get_str,app_get_str_from_id,app_get_strid等接口只能获取动态应用本身的多语言词条,如需获取主代码的多语言。

  1. 主代码中封装获取指定多语言的接口并RTM_EXPORT导出

  2. 在动态应用中使用封装的接口间接获取主代码多语言。