多语言支持

一、多语言实现方式

支持内置与外置两种语言包管理模式:

  1. 内置语言包
    与代码一同编译,生成对应的二进制文件(bin)。多语言资源(multi_lang)可配置在主程序(code.bin)中,或作为独立分区存储,具体取决于工程目录下 .sct 文件的分区配置。

  2. 外置语言包
    单独编译为独立的bin文件,存储于文件系统中,支持通过手机APP等方式推送更新,无需重新编译主程序。

二、代码中多语言使用规范

  1. 所有常量字符串必须通过 app_get_strapp_get_strid 接口获取。

  2. BUILTIN_APP_EXPORT 宏定义及数组初始化中涉及常量字符串时,需使用 app_get_strid(关键字, 字符串) 格式。

  3. 其他场景下的常量字符串,需使用 app_get_str(关键字, 字符串) 格式。

  4. 关键字命名需遵循 key_xxx 格式(与C语言变量命名规则一致),字符串参数为该关键字对应的英文默认值。

  5. Butterfli工具会自动扫描工程代码,更新 multi_language_table.xlsx,并将所有语言的默认字符串初始化为代码中的英文字符串。

三、多语言翻译管理

语言翻译通过 solution\examples\xxx\resource\langs\multi_language_table.xlsx 维护,操作规则如下:

  1. 新增语言
    参照已有语言列的格式新增一列,按行填写对应翻译。需确保目标语言有对应字体支持(否则可能显示为方框),且列标题需遵循指定格式。

  2. 删除语言
    直接删除对应语言的列即可。

  3. 修改翻译
    在对应关键字行与语言列的交叉单元格中修改内容。

  4. 扩展说明
    如需支持更多语言,在字体支持的前提下,可直接在表格中新增列(注意列标题格式)。

四、特殊排版支持

参考lvgl的排版,提供阿拉伯语从右到左(RTL)排版及右对齐显示机制,适配阿拉伯语等特殊书写习惯的语言。

五、注意事项

  1. UI排版适配
    不同语言的字符串长度可能存在差异,需在UI设计时预留足够空间;翻译时也应控制字符串长度,避免排版错乱。

  2. 版本一致性
    外置语言包或独立分区的内置语言包,其升级与主程序(code.bin)升级相互独立,OTA时需确保两者版本匹配,避免出现字符串不兼容问题。

  3. 字体依赖
    新增语言需有对应字库支持,详见 Solution支持的字体

  4. 变形语言支持
    对于需字形变形的语言(如印地语),需确保有对应的变形算法及专用字库,详见 Solution支持的变形字体