msgfmt/翻译汉化
使用该组件实现了zabbix web界面文字汉化修改
说明
- 目前大部分自由软件实现国际化使用的是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
作者: duchaoqun
出处:https://www.cnblogs.com/duchaoqun/p/11982804.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可。
分类:
04系统运维 / 监控
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统