【shell脚本实现国际化】

利用gettext实现shell脚本国际化

创建shell脚本

~$ vim test01

#!/bin/bash
alias GETTEXT='gettext "test01"'

HELLO_WORLD=$(GETTEXT "Hello word")
echo "$HELLO_WORLD"

echo "$(GETTEXT "Press any key to continue")"

注意:其中alias GETTEXT=’gettext “test01”’为最终.mo文件的名字
GETTEXT为标记

生成.pot文件

~$ xgettext -o test01.pot -L Shell --keyword=GETTEXT test01

注意:若需要对多个脚本进行国际化,可在test01后继续写上需要进行国际化翻译的脚本名,例如~$ xgettext -o test01.pot -L Shell --keyword=GETTEXT test01 test02;需要注意的是,这里test02中alias GETTEXT='gettext “test01”'这句话的”test01”要与test01保持一致,即将多个脚本文件的国际化翻译文件集成至同一个.mo文件中。

-L:表示进行国际化翻译的文件为shell文件
–keyword:表示仅翻译文件中被关键字GETTEXT标记的文字
-o:表示生成的.pot文件名字(可以取任意名字)

得到的.pot文件大概形式如下:
.pot文件
然后在对应的msgstr字段进行翻译
翻译

生成.po文件

~$: msginit -i test01.pot -l zh_CN.UTF-8 -o test01.po

注意:.po文件的名字可以随意定。
-i:用来指定所需翻译的 po 文件的原始档
-l:用来指定生成的 po 文件所用的语言区域 locale
-o:用来指定所生成的 po 文件翻译档的名称

生成.mo文件,即二进制文件

~$: msgfmt -o test01.mo test01.po

注意:这里的test01.mo的文件名要与shell脚本的alias字段保持一致,不然会无法调用test01.mo。

将.mo拷贝(安装)至/usr/share/locale/zh_CN/LC_MESSAGES/目录下

~$:sudo cp test03.mo /usr/share/locale/zh_CN/LC_MESSAGES/

此时运行shell脚本则能翻译成功:
实现!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值