lvgl多语言设置

搭建开发环境

安装node.js

安装node.js,点击进入官网地址
![[Pasted image 20250423155031.png]]

安装lv_i18n

  • lv_i18n项目地址:Github:https://github.com/lvgl/lv_i18n
  • git运行命令安装lv_i18n:npm i lv_i18n -g。测试命令:lv_i18n -h
    在这里插入图片描述

搭建过程报错

在这里插入图片描述

npm error code CERT_HAS_EXPIRED
npm error errno CERT_HAS_EXPIRED
npm error request to https://registry.npm.taobao.org/lv_i18n failed, reason: certificate has expired
npm error Log files were not written due to an error writing to the directory: C:\Program Files\nodejs\node_cache\_logs
npm error You can rerun the command with `--loglevel=verbose` to see the logs in your terminal

原因:你配置的 npm registry 镜像(https://registry.npm.taobao.org)证书已经过期,npm 拒绝访问不安全的 HTTPS 资源。
更换为官方镜像

npm config set registry https://registry.npmjs.org/

然后再执行安装命令:

npm install lv_i18n -g

![[Pasted image 20250422184512.png]]

这是 权限不足 导致的错误,Windows 拒绝了 npmC:\Program Files\nodejs\ 目录下写入缓存文件,因为这个目录通常需要管理员权限。
![[Pasted image 20250422184628.png]]

以管理员身份运行后成功。采用lv_i18n -h验证是否安装成功。
![[Pasted image 20250423091418.png]]

生成lv_i18n文件

lv_i18n.c中保存着lvgl多语言的初始化以及文本之间的映射等函数接口,想要使用多语言,必须具备lv_i18n.c/.h

操作步骤

  1. 安装上述开发环境说明的node.jslv_i18n
  2. 用到多语言展示的LVGL的代码中,采用_("hello")的方式编写代码
  3. 在ui文件夹下新建⽬录translations ,在其中创建yml⽂件其命名格式:locale codes.yml ,有多少个语⾔就创建多少个,每个yml⽂件都要统⼀格式的开头 locale codes:,点击获取locale codes,内容如下所示。如简体中文就创建zh-cn.yml,文件开头输入zh-cn:
    ![[Pasted image 20250423152801.png]]

![[Pasted image 20250423153110.png]]

  1. 在 translations ⽬录下执⾏该命令会根据第⼆步中编写的代码,填充yml⽂件: lv_i18n extract -s '../**/*.c' -t './*.yml'
  2. 此时所有的yml⽂件的翻译都是~,这个意思是我们要⾃⼰添加翻译,打开每个yml⽂件添加翻译。注意,⼀般将英⽂作为默认语⾔,默认语⾔保持~即可,不需要翻译。
  3. 执⾏该命令会将翻译集成到c代码中(lv_i18n.c/h):
    一般先采用优化编译即可,如果优化编译失败,则采用一般用法。
    • ⼀般⽤法:lv_i18n compile -t "./*.yml" -o .
    • 指 定 默 认 语 ⾔:lv_i18n compile -l <language-code> -t "./*.yml" -o .,比如lv_i18n compile -l zh-cn -t "./*.yml" -o .
    • 优化编译:lv_i18n compile -t "./*.yml" -optimize -o .
  4. 最后,要确保我们使⽤的LVGL字体已经包含了所有翻译使⽤到的⽂字。

使用过程遇到的问题

![[Pasted image 20250423155259.png]]

这个问题目前还不太明白是什么原因导致的,可能是lv_i18n这个库的问题。遇到这个问题后,需要将所有的yml语言文件清空,只剩下首行的language:(如zh-cn:),然后按下列步骤执行。
目前测试下列所展示的步骤不会出现问题:

  1. 将screens文件删剩一个文件,这个时候执行lv_i18n extract -s '../**/*.c' -t './*.yml',这时候一般能够抓取成功。
  2. 然后撤回之前删除的文件,再次执行lv_i18n extract -s '../**/*.c' -t './*.yml',一般也能够抓取成功。
  3. 全部抓取成功之后,再次执行lv_i18n extract -s '../**/*.c' -t './*.yml',一般就会报上图所显示的错误,目前不知如何解决,只能按照第1、2步骤再次操作一遍。

重命名关键字

如何重命名翻译关键字:lv_i18n rename -t "./*.yml" --from 'test3' --to 'test2'
这个重名名关键字的意思是重命名yml中的关键字名称。
为什么重命名?原因是如果不重命名的话:在代码中改文本信息后,采用lv_i18n extract -s '../**/*.c' -t './*.yml'重新抓取后,未使用的关键字不会删除,会导致翻译文件比较冗余。

未重命名

原本yml所拥有的关键字如下图所示:
![[Pasted image 20250423154006.png]]

修改文件中的text文本,然后重新拉取。
![[Pasted image 20250423154026.png]]
可以发现原本的关于设备并不会被删除,虽然没有使用,但是还是存在在该文件中。
![[Pasted image 20250423154401.png]]

重命名

![[Pasted image 20250423154632.png]]

首先采用lv_i18n rename -t "./*.yml" --from '关于设备' --to '关于设备2'
![[Pasted image 20250423154651.png]]

然后修改文件中想要修改的文本为关于设备2。
![[Pasted image 20250423154737.png]]

最后重新拉取,结果如下所示,原本的关于设备被删除了。
![[Pasted image 20250423154845.png]]

lv_i18n的使用

  1. 初始化:lv_i18n_init(lv_i18n_language_pack);
  2. 设置默认语言:lv_i18n_set_locale("zh-cn");
  3. 需要用到多语言这样写即可:lv_label_set_text(ui_MainInter_CastScrLab, _("投屏"));
    注意:在代码中如果需要动态切换语言的话,必须在lv_i18n_set_locale设置切换后的语言后,在重新执行一下lv_label_set_text,否则不生效,原因是lv_label_set_text内部会使用lv_realloc分配一个空间存储文本,因此需要重新设置文本才会生效。
    ![[Pasted image 20250423162741.png]]

其中第2步也可以不设置,代码中默认设置lv_i18n_language_pack中的第一个成员为默认语言。
![[Pasted image 20250423161545.png]]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程池技术

线程池基本概念 线程池就是在任务还没有到来前&#xff0c;预先创建一定数量的线程放入空闲列表。这些线程都是处于阻塞状态&#xff0c;不消耗CPU&#xff0c;但占用较小的内存空间。 当新任务到来时&#xff0c;缓冲池选择一个空线程&#xff0c;把任务传入此线程中运行&…

Go语言中的并发编程--详细讲解

文章目录 Go语言并发编程**简单介绍**goroutine channel 实现并发和并行for循环开启多个协程Channel管道goroutine 结合 channel 管道**goroutine 结合 channel打印素数**单向管道Select多路复用Goroutine Recover解决协程中出现的PanicGo中的并发安全和互斥锁 Go语言并发编程 …

C# NX二次开发:投影曲线和偏置曲线UFUN函数详解

大家好&#xff0c;今天要讲的是关于投影曲线和偏置曲线相关的函数。 &#xff08;1&#xff09;UF_CURVE_create_proj_curves1&#xff1a;这个函数的定义为创建投影曲线。 Defined in: uf_curve.h Overview Creates projection curves. Objects to project may be poi…

用R语言+随机森林玩转遥感空间预测-基于R语言机器学习遥感数据处理与模型空间预测技术及实际项目案例分析

遥感数据具有高维度、非线性及空间异质性等特点&#xff0c;传统分析方法往往难以充分挖掘其信息价值。机器学习技术的引入为遥感数据处理与模型预测提供了新的解决方案&#xff0c;其中随机森林&#xff08;Random Forest&#xff09;以其优异的性能和灵活性成为研究者的首选工…

unity 导入图片后,可选择精灵表自动切片,并可以导出为png

脚本源代码&#xff1a; #if UNITY_EDITOR using UnityEditor; using UnityEngine; using System.IO; using UnityEditorInternal; using System.Collections.Generic; using System;public class TextureImporterWindow : EditorWindow {private string folderPath "D:…

使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台

引言 金融科技行业有一个显著特点&#xff1a;客户期望能够随时随地即时访问其财务数据&#xff0c;并且对宕机零容忍。即使是短暂的中断也会损害用户的信心和忠诚度。与此同时&#xff0c;对数据泄露的担忧已将安全提升到整个行业的首要地位。 在本文中&#xff0c;我们将探…

基于Django框架开发的B2C天天生鲜电商平台

天天生鲜 介绍 天天生鲜是一个基于Django框架开发的B2C(Business-to-Customer)电商平台&#xff0c;专注于生鲜食品的在线销售。该项目采用了主流的Python Web开发框架Django&#xff0c;结合MySQL数据库、Redis缓存等技术&#xff0c;实现了一个功能完整、界面友好的电商网站…

ASP.NET MVC4 技术单选及多选题目汇编

一、单选题&#xff08;共50题&#xff0c;每题2分&#xff09; 1、ASP.NET MVC4 的核心架构模式是什么&#xff1f; A. MVP B. MVVM C. MVC D.三层架构 答案&#xff1a;C 2、在 MVC4 中&#xff0c;默认的路由配置文件名是&#xff1f; A. Global.asax B. RouteConfig.cs C.…

26届秋招收割offer指南

26届暑期实习已经陆续启动&#xff0c;这也意味着对于26届的同学们来说&#xff0c;“找工作”已经提上了日程。为了帮助大家更好地准备暑期实习和秋招&#xff0c;本期主要从时间线、学习路线、核心知识点及投递几方面给大家介绍&#xff0c;希望能为大家提供一些实用的建议和…

数据中心机电建设

电气系统 供配电系统 设计要求&#xff1a;数据中心通常需要双路市电供电&#xff0c;以提高供电的可靠性。同时&#xff0c;配备柴油发电机组作为备用电源&#xff0c;确保在市电停电时能及时为关键设备供电。根据数据中心的规模和设备功耗&#xff0c;精确计算电力负荷&…

每日一题洛谷P1025 [NOIP 2001 提高组] 数的划分c++

P1025 [NOIP 2001 提高组] 数的划分 - 洛谷 (luogu.com.cn) #include<iostream> using namespace std; int n, k; int res 0; void dfs(int num,int step,int sum) {//判断if (sum n) {if (step k) {res;return;}}if (sum > n || step k)return;//搜索for (int i …

大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置

自从大模型火了之后就一直想自己组装一台机器去深入研究一下大模型&#xff0c;奈何囊中羞涩&#xff0c;迟迟也没有行动。在下了很大的勇气之后&#xff0c;终于花了接近4万块钱组装了一台台式机&#xff0c;下面给大家详细介绍一下我的装机过程。 1.硬件配置 研究了一周&am…

第35周Zookkeeper+Dubbo Dubbo

Dubbo 详解 一、Dubbo 是什么 官网与定义 Dubbo 是一款高性能、轻量级的开源服务框架&#xff0c;其官网为 double.apache.org&#xff0c;提供中文版本&#xff08;网址含 “zh”&#xff09;。 核心能力 Dubbo 具备六大核心能力&#xff1a; 面向接口代理的高性能 RPC …

NX二次开发——BlockUI 弹出另一个BlockUI对话框

最近在研究&#xff0c;装配体下自动导出BOM表格中需要用到BlockUI 弹出另一个BlockUI对话框。通过对网上资料进行整理总结&#xff0c;具体如下&#xff1a; 1、明确主对话框、子对话框1和子对话框2 使用BlockUI创建.cpp和.hpp文件&#xff0c;dlx文件内容如下所示 主对话框…

PostgreSQL 系统管理函数详解

PostgreSQL 系统管理函数详解 PostgreSQL 提供了一系列强大的系统管理函数&#xff0c;用于数据库维护、监控和配置。这些函数可分为多个类别&#xff0c;以下是主要功能的详细说明&#xff1a; 一、数据库配置函数 1. 参数管理函数 -- 查看所有配置参数 SELECT name, sett…

【2025软考高级架构师】——计算机网络(9)

摘要 全文主要围绕计算机网络相关知识展开&#xff0c;包括域名服务器查询方式、网络规划与设计的关键技术、双协议栈与隧道技术、层次化网络设计、网络冗余设计以及高可靠和高可用性等方面&#xff0c;旨在为软考高级架构师的备考提供知识参考。 1. 通信网络架构图 2. 通信架…

yolov8n-obb训练rknn模型

必备&#xff1a; 准备一台ubuntu22的服务器或者虚拟机&#xff08;x86_64&#xff09; 1、数据集标注&#xff1a; 1&#xff09;推荐使用X-AnyLabeling标注工具 2&#xff09;标注选【旋转框】 3&#xff09;可选AI标注&#xff0c;再手动补充&#xff0c;提高标注速度 …

前端-HTML+CSS+JavaScript+Vue+Ajax概述

HTML&#xff08;超文本标记语言&#xff09;常见标签 <html><head> <title>这是标题的内容&#xff0c;显示在浏览器的头部</title></head><body><!-- 这里面的内容在浏览器显示给用户看 --><!-- h1 -> h6 : 标题从大到小 …

嵌入式软件--stm32 DAY 5 USART串口通讯(上)

前边我们学的都是通用的功能&#xff0c;例如GPIO、中断&#xff0c;现在我们要学习的是某一个特定的功能。典型的就是通讯功能。其中&#xff0c;最简单的通讯协议就是串口了。 一、串口_通讯基础知识 1.1 串行与并行 按数据传送的方式分类的。 串行通信一位一位传输&…

c++混淆工具Hikari-LLVM15-llvm-18.1.8rel编译安装

目录 1. windows 编译1. 2 编译工具安装1.2.1 下载w64devkit1.2.2 添加环境变量1.2.3 验证一下 1.3 下载llvm-18.1.8rel1.4 编译 2. Android studio增加混淆编译2.1 替换NDK中clang2.2 配置混淆编译项 3. Linux编译安装4. Linux下增加混淆编译4.1 在CMakeLists.txt中设置clang编…