php - 无法在 Ubuntu 上运行 gettext (php)

标签 php ubuntu gettext php-gettext

以下示例适用于带有 Apache 的 Mac OS X,即我得到回显的已翻译字符串。但是在带有 lighttpd 的 Ubuntu 上,我得到了原始文本“非事件帐户”。我已经尝试了各种环境变量的组合,但没有任何运气。这也不是文件权限,因为我可以回显 .mo 文件的内容。

<?php

//$locale = 'sv_SE.UTF-8';
$locale = 'sv_SE';

$dir = dirname(__FILE__);

// File permission is apparantly not a problem as this works...
//echo file_get_contents($dir . '/sv_SE/LC_MESSAGES/flattr.mo');

putenv("LANG=$locale");
putenv("LANGUAGE=$locale");
putenv("LC_ALL=$locale");
putenv("LC_MESSAGES=$locale");
setlocale(LC_ALL, $locale);
setlocale(LC_MESSAGES, $locale);
//setlocale(LANG, $locale);
//setlocale(LANGUAGE, $locale);

bindtextdomain('flattr', $dir);
//bind_textdomain_codeset("flattr", 'UTF-8');
textdomain('flattr');

echo _("Inactive account");

?>

有人有什么想法吗?

最佳答案

我遇到了同样的问题。我将描述我在 Ubuntu 10.10 上修复它所做的事情。

1) 确保你安装了'gettext',

sudo apt-get install gettext

或者,如果无法安装“gettext”,您可以安装“php-gettext”。如果您已经安装了“gettext”,则不需要“php-gettext”包。

2) 然后为您的语言生成语言环境。在此示例中,我将使用“sv_SE”。在“/usr/share/i18n/SUPPORTED”中查找支持的语言环境,

less /usr/share/i18n/SUPPORTED

您会发现多行以“sv_SE”开头,

sv_SE.UTF-8 UTF-8
sv_SE ISO-8859-1
sv_SE.ISO-8859-15 ISO-8859-15

这意味着您有多个选项来为 sv_SE 生成语言环境。其中一个选项的名称中没有句点 (.)(即 sv_SE ISO-8859-1);这是该语言环境的默认字符集。要为默认字符集生成语言环境,请运行以下命令,

sudo locale-gen sv_SE

如果要为 UTF-8 字符集生成该语言环境,请运行此命令,

sudo locale-gen sv_SE.UTF-8

生成语言环境后重启Apache(否则找不到新生成的语言环境),

sudo service apache2 restart

3) 最后,更新您的 PHP 脚本以匹配您生成的语言环境。如果您为“sv_SE”生成了语言环境,

setlocale(LC_ALL, "sv_SE");

但是如果您生成了该语言环境的 UTF-8 等价物,请使用,

setlocale(LC_ALL, "sv_SE.UTF-8");

现在一切正常。

关于php - 无法在 Ubuntu 上运行 gettext (php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5257519/

相关文章:

php - 使用 gettext 在 PHP 中添加对 i18n 的支持?

php - 带有批量插入的 MySQL 准备语句

php - 两个表之间的联接不返回表之间没有链接的行

c++ - 如何在不在命令行 g++ 中运行 .so 文件的情况下使用它

linux - 使用 'rm' 命令删除文件/文件夹时如何启用确认警报?

javascript - 创建一个像 JavaScript I18n 国际化的 Lua

php - 我应该放置 wp_reset_postdata();结束后;或结尾; ?

php - 当字符串已经包含 PHP 中的可分割字符时,如何从 preg_split 中排除字符串?

c - SQLite3 连接到 C 程序并使用内部循环迭代结果 - 做什么?

php - 有没有解析gettext PO POT文件的PHP库?