gettext msgfmt安装及po/mo文件编译转换
最近在研究 Typecho 的多语言切换(自动翻译)问题,官方也有提供翻译语言包。
但是有个问题,官方提供的翻译文件都是 .po 文件,我试了一下 Typecho 并不支持 .po 文件,放入指定文件夹后不显示,没有任何效果。
有人说是正式版 Typecho 不支持 .po 文件,开发版支持,但我用的就是开发版。
那只能把 .po 文件编译一下,整成 .mo 文件就行了。
这里需要 gettext 的 msgfmt 。
安装 gettext :
这里以 CentOS 为例,其他平台安装命令放在最后面。
sudo yum install -y gettext
如果您的系统不支持 sudo 命令,需要安装 sudo:
yum install sudo
文件转换:
然后执行转换命令,将 .po 文件转换成 .mo 文件:
msgfmt -o /langs/languages-master/en_US.mo /langs/languages-master/en_US.po
#msgfmt -o 新文件 源文件
注意顺序,不然会报错:
msgfmt: error while opening "/langs/languages-master/ja_JP_.mo" for reading: No such file or directory
更多 msgfmt 命令可以参考:
msgfmt --help
通过包管理器安装GNU gettext:
操作系统 |
包管理器 |
安装命令 |
---|---|---|
Windows |
scoop |
scoop install gettext |
macOS |
HomeBrew |
brew install gettext |
GNU/Linux |
LinuxBrew |
brew install gettext |
Debian GNU/LinuxUbuntuUbuntu KylinTails LinuxKali LinuxMX LinuxLinux MintDeepinantiXKDE neonPop!_OSZorin OSelementaryOSPCLinuxOS |
apt |
sudo apt-get install -y gettext |
CentOS |
yum |
sudo yum install -y gettext |
FedoraMageia |
dnf |
sudo dnf install -y gettext |
openSUSE |
zypper |
sudo zypper install -y gettext-tools gettext-runtime |
Alpine Linux |
apk |
sudo apk add gettext |
Arch LinuxArcoLinuxManjaro Linux |
pacman |
sudo pacman -Syyu --noconfirmsudo pacman -S --noconfirm gettext |
Gentoo Linux |
Portage |
sudo emerge gettext |
未经允许不得转载:w3h5 » gettext msgfmt安装及po/mo文件编译转换
- IntelliJ IDEA 中的版本控制介绍(上)
- EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
- Android 进程回收之LowMemoryKiller原理篇
- 邮件发送功能开发
- Vuejs和其他前端框架的对比
- 详述 IntelliJ IDEA 中恢复代码的方法
- C# 通过IEnumberable接口和IEnumerator接口实现自定义集合类型foreach功能
- 微信小程序之picker组件
- 详述 IntelliJ IDEA 中恢复代码的方法「进阶篇」
- mac环境下mongodb的安装和使用
- C# 终极基类Object介绍
- EF基础知识小记五(一对多、多对多处理)
- 字符串的方法汇总
- Kotlin和anko融合进行Android开发
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 开源数据闪回工具—binlog2sql介绍
- 盘点前端面试常见的15个TS问题,你能答对吗?
- 『深度思考』对CenterNet的一些思考与质疑·测试对比CenterNet与U版YoloV3速度与精度
- 优秀员工应该具备的11个特质
- 腾讯位置服务教你快速实现距离测量小工具
- 一张PDF了解JDK11 GC调优秘籍-附PDF下载
- 如何用函数框架快速开发大型 Web 应用 | 实战
- 划重点 | Android Jetpack 三大重要更新!
- JVM系列之:详解java object对象在heap中的结构
- 微信会话语音文件的一句话识别
- 看动画学算法之:排序-归并排序
- 看动画学算法之:排序-选择排序
- 你可能不知道的9条Webpack优化策略
- SPI
- Webpack前世今生