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.pswp.cn/bicheng/80062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80062.shtml
英文地址,請注明出處:http://en.pswp.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編…