麒麟V10系统统一认证子系统国际化

news2024/9/17 9:00:03

    在适配麒麟V10系统统一认证子系统国际化过程中, 遇到了很多的问题,关键是麒麟官方的文档对这部分也是粗略带过,遇到的问题有:

(1)xgettext无法提取C源文件中目标待翻译的字符串。

(2)使用msgfmt从pot文件生成mo文件后,在运行/usr/lib/biometric-authentication/biometric-authenticationd后,指纹驱动成功无法识别到mo文件。

在查看xgettext官方文档以及百度各位先行者的文章,找到了解决办法。

(1)xgettext无法生成.pot文件,于我当时的情况是在标记待翻译的字符串的时候标记错了,比如:我项目中标记待翻译的字符串为"_(please press your finger!)",  并且我在头文件中定义标记规则如下 :

根据此规则, 正确的标记应该为_("please press your finger!"),如果xgettext在待检测的文件中没有找到符合标记的字符串,那么xgettext指令不会生成pot文件,除非在xgettext命令中增加特定的标记,这样会生成pot文件,不过该文件中是空的, 不会记录任何待翻译的字符串,但是这样做没有必要。生成pot文件的简单指令形如:xgettext --default-domain=yanshenFinger -j  --directory=./  --add-comments --keyword=_ --keyword=N_ --files-from=./src/po/yanshenFinger.ini --from-code=UTF-8 --language=C  -p ./src/po  -o yanshenFinger.pot。 

yanshenFinger.ini: 此文件每行都是项目中某一个文件相对于上述指令执行目录下的相对路径。

-language: 因为我项目中的源文件基本上都是C/C++,所以此处填写值为“C”

./src/po: 为 pot文件的生成路径。

-j: 如果./src/po/文件夹下不存在yanshenFinger.pot 文件,那么就不要加此标记(如果加了,我使用的xgettext的版本将不会生成pot文件,即使在源文件中都正确标记了待), 如果./src/po/yanshenFinger.pot已经存在,那么添加 -j标记将会更新最新的字符串记录到pot文件中,不会修改pot文件已经编辑的内容,总之一句话,加-j就是在已有yanshenFinger.pot的基础上更新yanshenFinger.pot文件。

        正常的pot文件中的内容形如 :

每条记录记录了待翻译字符串所在的文件名及其所在文件中的行数, 文件类型, msgid后面的字符串代表待翻译的字符串, 在xgettext生成pot文件后msgstr默认是空的,,msgstr即是我们需要修改的对应msgid字符串的翻译后的内容。编辑完pot文件后, 就可以使用msgfmt指令生成mo文件了,简单的指令形如:msgfmt  ./src/po/yanshenFinger.pot  -o  ./src/po/yanshenFinger.mo 。

(2)因为我的项目只是编译出指纹仪驱动供/usr/lib/biometric-authentication/biometric-authenticationd调用,所以在项目中不需要像在二进制可执行文件项目中那样设置:

setlocale (LC_ALL, "");

bindtextdomain(BIOMETRIC_DRIVER_DOMAIN_NAME, LOCALEDIR_EX); textdomain(BIOMETRIC_DRIVER_DOMAIN_NAME);

只需要执行bindtextdomain(BIOMETRIC_DRIVER_DOMAIN_NAME, LOCALEDIR_EX)即可,BIOMETRIC_DRIVER_DOMAIN_NAME为当前驱动库使用的mo文件中的domain值,即是前面部分中xgettext中的--default-domain字段的值, LOCALEDIR_EX为“/usr/share/locale”, 至于LOCALEDIR_EX为啥被定义为“/usr/share/locale”,因为我麒麟统一认证biometric-authenticationd中设置的LOCALEDIR就是此值,我编写的指纹仪驱动只是biometric-authenticationd中的驱动模块,之前我一直设置LOCALEDIR_EX为某一我保存mo文件的目录, 执行biometric-authenticationd服务后, 该服务一直找不着我指定的mo文件,无法满足我的既定期望,在设置LOCALEDIR_EX为“/usr/share/locale”后, 我将yanshenFinger.mo文件复制到/usr/share/locale/zh_CN/LC_MESSAGES/中后, 运行biometric-authenticationd就能识别到yanshenFinger.mo, 并且在麒麟统一认证指纹仪操作过程中英文被翻译成了我指定的中文了。

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

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

相关文章

【Python正则-驯化】一文学会通过Python中的正则表达式提取文本中的网址

【Python正则-驯化】一文学会通过Python中的正则表达式提取文本中的网址 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容…

Redis 与 Scrapy:无缝集成的分布式爬虫技术

1. 分布式爬虫的概念 分布式爬虫系统通过将任务分配给多个爬虫节点,利用集群的计算能力来提高数据抓取的效率。这种方式不仅可以提高爬取速度,还可以在单个节点发生故障时,通过其他节点继续完成任务,从而提高系统的稳定性和可靠性…

Gooxi荣获2024年深圳市计算机行业协会最具成长奖

近日,由深圳市计算机行业协会举办的2024年度深圳市计算机行业协会年中工作会议圆满落幕。本次会议邀请了多位行业专家以及深圳地区的理事会成员、企业家参会。会议的重点是总结上半年的经验,分析行业热点与痛点,探讨以新质生产力促进高质量发…

网络安全等级保护:上下文中的API安全性

网络安全等级保护:什么是API安全? 上下文中的API安全性 应用程序编程接口安全性位于多个安全学科的交叉点,如图所示。其中最重要的是以下三个领域: 1.信息安全(InfoSec)涉及在信息的整个生命周期中保护信…

Kettle下载安装

环境说明 虚拟机:Win7;MySql8.0 主机:Win11;JDK1.8;Kettle 9.4(Pentaho Data Integration 9.4)(下载方式见文末) 安装说明 【1】解压后运行Spoon.bat 【2】将jar包 复…

vue2学习 -- 核心语法

文章目录 前置简介1. 模板语法2. 数据2.1 数据绑定2.2 el与data的两种写法2.3 MVVM模型2.4 Object.defineProperty2.5 Vue中的数据代理 3. 事件3.1 事件处理3.2 事件修饰符3.3 键盘事件 4. 计算属性5. 监视(侦听)属性5.1 书写形式5.2 深度监视5.3 简写形式5.4 计算属性和监听属…

一「骑」就LUCKY!凯迪拉氪强劲动力,带你一路顺畅,幸运随行!

好运,其实就是毫不费劲的完成心里所想的事情。简单来说,是不需要太多努力,就能得到比较大的回报。每个人都希望自己拥有好运气,但这就跟抽盲盒一样,可能穷极一生都享受不到。 所以,与其期待虚无缥缈的好运…

Java线程阻塞:原因

Java线程阻塞:原因 1. sleep()2. suspend() 和 resume()(不推荐)3. yield()4. wait() 和 notify()/notifyAll() 💖The Begin💖点点关注,收藏不迷路💖 线程阻塞是一个重要的概念,它决…

移动光猫(UNG853H)获取超级帐号和密码

1.查看光猫背部的登录地址及帐密码;比如我的光猫: http://192.168.1.1 User: user password: ****** 2.启动telnet服务,使用以下命令: http://192.168.1.1/webcmcc/telnet.html 3.使用telnet登录光猫,在CMD下执行&…

【WRF安装第二期(Ubuntu)】搭建WRF编译所需系统-系统环境检验

WRF安装第二期:搭建WRF编译所需系统-系统环境检验 0 升级和安装基础环境1 系统环境检验(System Environment Tests)1.1 检验和安装基础包1.1.1 安装指令1.1.2 检验指令 1.2 WRF安装的目录结构1.2.1 WRF系统环境测试 1.3 测试编译器&#xff0…

(40)温度传感器

文章目录 前言 1 设置 2 记录 3 参数说明 前言 ArduPilot 已经有许多可能的温度报告来源:电调,智能电池,电机 EFI,这些独立的传感器可以用来取代 ArduPilot 中已经存在的那些设备温度报告。它们也可以只是被记录下来。 ArduP…

智慧环卫可视化:科技赋能城市清洁管理

图扑智慧环卫可视化通过实时监控、数据分析和智能调度,提高环卫作业效率,优化资源配置,提升城市清洁水平,实现城市管理的精细化和现代化。

【p-export-excel】一个轻松实现Excel文件导出的JavaScript插件

p-export-excel(github:https://github.com/pbstar/p-export-excel)是一个功能强大的JavaScript插件,专门用于导出Excel文件。它支持xlsx和csv两种格式,且提供了丰富的配置选项,允许开发者根据实际需求进行…

SuperMap iDesktopXiClient3D for WebGL 基于确定性空间插值生成水体流场

目录 摘要1 原始数据解析2 数据空间插值2.1流场UVW0.dat文件转xlsx2.2生成流场点数据2.3生成U、V栅格数据2.4裁剪U、V栅格数据2.5生成零值棋盘网格2.6生成U、V棋盘栅格 3 棋盘栅格转棋盘点3.1U、V棋盘栅格矢量化3.2U、V字段追加3.3流场数据JSON标准解析3.3.1流场数据JSON范例3.…

Nacos配置到springboot快速入门(笔记)

本人学习中的简单笔记,本文写的极其不详细,慎看!!! Nacos 简介 Nacos 致力于帮助开发者发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及…

【RL】强化学习入门:从基础到应用

本篇文章是博主强化学习RL领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章强化学习: 强化学习…

ECRS标准工时分析软件:中小企业数字化转型的工时管理利器

在当今全球化竞争日益激烈的背景下,中小企业面临着前所未有的挑战与机遇。为了在市场中脱颖而出,实现可持续发展,数字化转型已成为不可逆转的趋势。然而,对于资源相对有限的中小企业而言,如何高效、精准地管理工时&…

昇思25天学习打卡营第9天|RNN实现情感分类

第十天的不小心把第九天的覆盖了。现在重新补上。 情感分类是自然语言处理中的经典任务,是典型的分类问题。输入一句话,然后去语义理解这句话是褒义贬义还是中性的。不同的情感语境下理解的大基调是不同的。 RRN情感分类也是一个分类模型,是…

【提问募集】向世界级软件开发大师“Bob 大叔”Robert C. Martin 提出你的疑虑!

函数式编程作为一种编程范式,其根源可以追溯到 20 世纪 30 年代,当时数学家们正在探索计算理论的基础。1936 年,阿隆佐丘奇提出了 λ 演算(Lambda Calculus),这是一种形式系统,用于表达函数抽象…

【EI会议征稿通知】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)

重要信息 会议官网:www.icbase.org(查看详情) 中文主页:【往届会后3个月检索】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)_艾思科蓝_学术一站式服务平台 会议时间:2024年9月2…