gettext如何确定可用的语言

时间:2011-11-11 09:46:19

标签: php c ubuntu internationalization gettext

我最近花了一些时间翻译一个PHP应用程序,在Linux上运行Apache2。为了让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代码完全相同,但带有一些标题。

如果我没有使用这个丑陋的黑客“启用”玻利维亚西班牙语系统,将现有的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来翻译消息。

UPDATE2 我尝试使用setlocal(LC_MESSAGES, "es_BO.utf8"),但它仍然需要/ usr / lib / locale中的消息。

2 个答案:

答案 0 :(得分:1)

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

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

我认为您当前的语言破解是有效的,因为当前系统中的LANG = sv_SE。否则,我建议您详细了解gettext

答案 1 :(得分:1)

使用locale -a获取系统生成的区域设置列表。要添加到此列表,请修改/etc/locale.gen并重新运行locale-gen

(另外,gettext根本没有任何结果,它尝试使用当前的语言环境,如果失败,它只能回退到C