ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

msgfmt - 翻译汉化

2019-12-04 14:57:05  阅读:286  来源: 互联网

标签:文件 翻译 mo string msgfmt gettext 汉化 po


说明

  • 目前大部分自由软件实现国际化使用的是gettext。
  • 国际化就是让程序可以使用多国语言来显示程序里的字符串。
  • 程序里一般都有很多字符串,菜单名也好,错误信息也好,都是字符串。假设字符串为string,非国际化的程序里都是直接写"string"。如果用了 gettext 来实现国际化的话,就要写成 gettext("string")。有时也会看到_("string"),那实际上也是 gettext,只不过通过宏的定义把 gettext 改头换面了。
  • 这个string就是msgid。然后使用xgettext来从程序源代码文件产生po文件。
  • 然后交给专门的翻译人员来翻译 po。
  • 翻译完毕后,使用 msgfmt 来把po转化成 mo 文件,并安装到系统里合适的位置。
  • 程序运行时,到底显示什么字符串就是 由 gettext 函数来决定的了。
  • 主要有两个决定因素,一个是系统的locale及相关环境变量(LANGUAGE,LC_ALL,LC_MESSAGES和LANG), 一个是相关的mo文件。

安装使用

# 安装软件
yum install gettext -y

# 编码 po 文件为 mo 文件:
msgfmt -o test.mo test.po

# mo 文件反编码成 po 文件:
msgunfmt test.mo -o test.po

Q & A

  • 如果有重复内容提示,删掉重复内容即可:
# msgfmt -o messages.mo messages.po
messages.po: 4622: duplicate message definition...
messages.po: 4590: ...this is the location of the first definition

标签:文件,翻译,mo,string,msgfmt,gettext,汉化,po
来源: https://www.cnblogs.com/duchaoqun/p/11982804.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有