多语言支持¶
本文说明多语言资源的组织、切换和应用接入方式。
1. 参考代码¶
文件 |
作用 |
|---|---|
|
管理系统语言切换和多语言资源加载 |
2. 应用例程¶
场景 |
文件 |
调用接口 |
|---|---|---|
语言设置页面 |
|
|
语言设置页面 |
|
|
3. 多语言实现方式¶
支持内置与外置两种语言包管理模式:
内置语言包 与代码一同编译,生成对应的二进制文件(bin)。多语言资源(multi_lang)可配置在主程序(code.bin)中,或作为独立分区存储,具体取决于工程目录下
.sct文件的分区配置。外置语言包 单独编译为独立的bin文件,存储于文件系统中,支持通过手机APP等方式推送更新,无需重新编译主程序。
4. 代码中多语言使用规范¶
所有常量字符串必须通过
app_get_str或app_get_strid接口获取。在
BUILTIN_APP_EXPORT宏定义及数组初始化中涉及常量字符串时,需使用app_get_strid(关键字, 字符串)格式。其他场景下的常量字符串,需使用
app_get_str(关键字, 字符串)格式。关键字命名需遵循
key_xxx格式(与C语言变量命名规则一致),字符串参数为该关键字对应的英文默认值。Butterfli工具会自动扫描工程代码,更新
multi_language_table.xlsx,并将所有语言的默认字符串初始化为代码中的英文字符串。
5. 多语言翻译管理¶
语言翻译通过具体产品工程的 resource\langs\multi_language_table.xlsx 维护,例如 watch 工程为 solution\examples\watch\resource\langs\multi_language_table.xlsx,操作规则如下:
新增语言 参照已有语言列的格式新增一列,按行填写对应翻译。需确保目标语言有对应字体支持(否则可能显示为方框),且列标题需遵循指定格式。
删除语言 直接删除对应语言的列即可。
修改翻译 在对应关键字行与语言列的交叉单元格中修改内容。
扩展说明 如需支持更多语言,在字体支持的前提下,可直接在表格中新增列(注意列标题格式)。
6. 特殊排版支持¶
参考lvgl的排版,提供阿拉伯语从右到左(RTL)排版及右对齐显示机制,适配阿拉伯语等特殊书写习惯的语言。
7. 注意事项¶
UI排版适配 不同语言的字符串长度可能存在差异,需在UI设计时预留足够空间;翻译时也应控制字符串长度,避免排版错乱。
版本一致性 外置语言包或独立分区的内置语言包,其升级与主程序(code.bin)升级相互独立,OTA时需确保两者版本匹配,避免出现字符串不兼容问题。
字体依赖 新增语言需有对应字库支持,详见 Solution支持的字体。
变形语言支持 对于需字形变形的语言(如印地语),需确保有对应的变形算法及专用字库,详见 Solution支持的变形字体。