场景
根据网上的教程使用GNU-gettext
实现多语言, po
, mo
文件都准备好了, 代码也一毛一样, 但就是无法翻译, 甚是难受啊.
解决
最终发现, 无法翻译是因为系统没有进行语言的支持.
通过命令: locale -a
查看当前系统已经开启的语言支持:
如果发现没有你使用的语言, 那么本篇文章就可以帮到你了.
此时需要安装需要的语言, 通过命令: locale-gen
.
若提示没有locale-gen
命令, 先进行安装: apt install locales
修改文件: /etc/locale.gen
将你需要的语言前面的注释打开, 然后执行命令: locale-gen
进行安装, 安装完后在查看一下: locale -a
就会发现已经有了:
此时, 网上的例子就能正确翻译了(我使用的 PHP, 其他也是一样的):
<?php
// 注意, 这里的语言后面拼接了编码. 不拼也不能翻译.
// 不知道网上的教程是怎么成功的, 可能是我环境还有问题
setlocale(LC_ALL, 'zh_CN.UTF-8');
bindtextdomain('test', './locale');
textdomain('test');
echo gettext('Hello World!');