我最近花了一些时间翻译了一个PHP应用程序,运行在带有Apache2的Linux上。为了让get text工作,我需要为我想要支持的每一种语言触摸系统目录,所以我想知道是否有一种更简单的方法来支持在所有语言中从gettext获取文本。
我的区域设置文件位于我的项目的子目录中:

./locale/sv_SE/LC_MESSAGES/default.po
./locale/es_BO/LC_MESSAGES/default.po

代码:在./gettext.php中,如下所示:
<?php
setlocale(LC_ALL, "es_BO.utf8");
bindtextdomain("default", "locale/"); # usually works
textdomain("default");
echo echo _("test");
?>

C代码是完全相同的代码,但有一些头。
这个代码不会输出我的西班牙语翻译,如果我不“启用”玻利维亚西班牙语全系统与这个丑陋黑客,链接已经存在的SvSE SE地区到EsSbO:
sudo ln -s /usr/lib/locale/sv_SE.utf8 /usr/lib/locale/es_BO.utf8

更新
我想我的问题是错的“那么我该如何避免做出ln-s的命令,或者只是告诉我,如果我用错误的方式来做这件事?”基本上,我想知道的是,gettext为什么需要/usr/lib/locale中的那些文件,或者我如何简单地使用gettext来只翻译消息。
更新2
我试过使用setlocal(LC_MESSAGES, "es_BO.utf8")但它仍然需要/usr/lib/locale中的消息。

最佳答案

为了检查某个翻译是否正常工作,您应该正确地调用语言环境

#!/bin/bash
export LANG=es_BO
./yourprog

我认为你当前的语言攻击是有效的,因为LANG=sv_SE在你当前的系统中。否则,我建议阅读更多关于gettext的内容。

关于php - gettext如何找出可用的语言,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8092156/

10-13 07:10