Loading

GUN-gettext 无效

场景

根据网上的教程使用GNU-gettext实现多语言, po, mo文件都准备好了, 代码也一毛一样, 但就是无法翻译, 甚是难受啊.

解决

最终发现, 无法翻译是因为系统没有进行语言的支持.

通过命令: locale -a 查看当前系统已经开启的语言支持:

image-20211122220119533

如果发现没有你使用的语言, 那么本篇文章就可以帮到你了.

此时需要安装需要的语言, 通过命令: locale-gen.

若提示没有locale-gen命令, 先进行安装: apt install locales

修改文件: /etc/locale.gen 将你需要的语言前面的注释打开, 然后执行命令: locale-gen进行安装, 安装完后在查看一下: locale -a 就会发现已经有了:

image-20211122220959195

此时, 网上的例子就能正确翻译了(我使用的 PHP, 其他也是一样的):

<?php              

// 注意, 这里的语言后面拼接了编码. 不拼也不能翻译. 
// 不知道网上的教程是怎么成功的, 可能是我环境还有问题
setlocale(LC_ALL, 'zh_CN.UTF-8');            
bindtextdomain('test', './locale');            
textdomain('test');            
echo gettext('Hello World!');  
posted @ 2021-11-22 22:15  烟草的香味  阅读(124)  评论(0编辑  收藏  举报