lvgl使用lv_i18n库

 lv_i18n官方示例:lvgl/lv_i18n: Internationalization (i18n) for LVGL

它的国内镜像:项目首页 - lv_i18n:Internationalization (i18n) for LVGL - GitCode


目录

1、安装 node.js 以及 Iv_i18n

2、示例

3.创建.yml文件

4、根据用户代码填充.yml文件

5、下边对两个文件,en.yml 和zh-cn.yml手动添加翻译。

6、将.yml编译到lv_i18n文件中

7、将lv_i18n.c和lv_i18n.h加入到工程中

​​​8、使用lv_i18n库

另:lv_i18n在SquareLine Studio( 1.5.0)中的用法

Nodejs问题:


1、安装 node.js 以及 Iv_i18n

 Node.js 安装:

 Node.js — Download Node.js®

Lv_i18n 安装:

安装过node.js后,win+r ,输入cmd

打开cmd命令行,输入 npm i lv_i18n -g

2、示例

在要用到多语言展示的LVGL的代码中,这样编写代码_("xxx")或_p("%d xxx",item_cnt)

,即_()或_p()是使用lv_i18n的基本格式,部分例程代码如下:

#include "lv_i18n/lv_i18n.h"

......

......

lv_i18n_init(lv_i18n_language_pack); //lv_i18n 的语言初始化

lv_i18n_set_locale("en");  //lv_i18n 设置当前语言

......

//设置文本内容

lv_label_set_text(label, _("test"));

char buf[64];

sprintf(buf, _p("%d user_logged_in ", user_cnt)), user_cnt);

lv_label_set_text(label2, buf);

3.创建.yml文件

新建目录 translations,在其中创建.yml文件,其命名格式: “locale codes”.yml,想要多少个语言就创建多少个。每种语言对应的locale codes在

ISO language codes | Andiamo! The Language Professionals中查看。

例如:

之后,打开.yml文件,按照对应的名称,写下如下内容

4、根据用户代码填充.yml文件

在工程目录下,使用git bash here

执行以下命令,lv_i18n会根据工程中的 .(c|cpp|h|hpp) 文件中出现的     _ ("xx") 和p_(“xxx”),填充到yml文件。

lv_i18n extract -s './**/*.+(c|cpp|h|hpp)' -t 'translations/*.yml'

.c文件:

en.yml文件:

左边的test相当于变量名,右边则是它在”en”语言下的值(翻译)。当前未设置,则为 ~

5、下边对两个文件,en.yml 和zh-cn.yml手动添加翻译。

6、将.yml编译到lv_i18n文件中

当前目录下,使用git bash here,

执行以下命令会将所有.yml编译到.c代码中(lv_i18n.c和lv_i18n.h):

lv_i18n compile -t './*.yml' -o ./

指定语言:只需加入限定 -l <language-code>      

lv_i18n compile -l <language-code> -t './*.yml' -o ./
          例如:

lv_i18n compile -l zh-cn -t './*.yml' -o ./
 

优化编译:在yml中的变量很多时,可使用 -optimize优化编译

lv_i18n compile -t './*.yml' -optimize -o ./

注意:单个yml编译时,可能会出现错误,

这个不知道原因,只有一些language-code单独编译时,才会成功,

不过,在多个yml编译时,只要包含了,这些language-code,所有的yml都可编译到lv_i18n.c和lv_i18n.h文件中

编译后将生成lv_i18n.c和lv_i18n.h两个文件

lv_i18n.c种,包含了你所定义的词条。

7、将lv_i18n.c和lv_i18n.h加入到工程中

  1. 将文件加入工程
  2. 工程文件添加lv_i18n.h

        #include "./translatinos/lv_i18n.h"

      3. lv_i18n.h 中加入lvgl.h

    

​​​8、使用lv_i18n库

lv_i18n_init(lv_i18n_language_pack); //lv_i18n 的语言初始化

lv_i18n_set_locale("zh-cn");  //lv_i18n 设置当前语言

lv_label_set_text(label, _("test")); //设置文本内容

效果如下

若是想在程序运行中切换语言,则可通过按键事件,切换当前所使用的语言,然后刷新页面

另:lv_i18n在SquareLine Studio( 1.5.0)中的用法

导出文件,则会看到

这只是做了一个示例。

在你完成了所有界面设计时,导出文件,然后再从第四步开始,到最后。你就可以完成利用lv_i18n实现多国语言的功能。

Nodejs问题:

若是在第四步中,Git Bash Here后,再使用命令,发现报错,找不到node,则可能是nodejs没有实现全局可调用,则可按以下步骤操作。

lvgldm

将第一步的下载的nodejs的路径加入进去,然后重启电脑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值