我最近花了一些时间翻译一个 PHP 应用程序,该应用程序在使用 Apache2 的 Linux 上运行。为了让 gettext 工作,我需要为我想要支持的每种语言访问系统目录,所以我想知道是否有更简单的方法来支持从 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 代码是完全相同的代码,但有一些 header 。
如果我不使用这个丑陋的技巧“启用”玻利维亚西类牙语系统,将已经存在的 sv_SE 语言环境链接到 es_BO,此代码将不会输出我的西类牙语翻译:
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/