做高仿包的网站有哪些,百度指数大数据,dw可以做有后台的网站么,最常用的规划网站在适配麒麟V10系统统一认证子系统国际化过程中#xff0c; 遇到了很多的问题#xff0c;关键是麒麟官方的文档对这部分也是粗略带过#xff0c;遇到的问题有:
#xff08;1#xff09;xgettext无法提取C源文件中目标待翻译的字符串。
#xff08;2#xff09;使用msgf… 在适配麒麟V10系统统一认证子系统国际化过程中 遇到了很多的问题关键是麒麟官方的文档对这部分也是粗略带过遇到的问题有:
1xgettext无法提取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-domainyanshenFinger -j --directory./ --add-comments --keyword_ --keywordN_ --files-from./src/po/yanshenFinger.ini --from-codeUTF-8 --languageC -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, 并且在麒麟统一认证指纹仪操作过程中英文被翻译成了我指定的中文了。