无法在Ubuntu上运行gettext(php)
以下示例适用于使用Apache的Mac OS X,即我将已翻译的字符串回显。但是在使用lighttpd的Ubuntu上,我得到原始文本“非活动帐户”。我已经尝试了各种各样的环境varialbes组合而没有任何运气。它不是文件权限,因为我可以回显.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");
?>
有人有主意吗?
没有找到相关结果
已邀请:
2 个回复
阀傻
或者,如果无法安装'gettext',则可以安装'php-gettext'。如果您已安装'gettext',则不需要包'php-gettext'。 2)然后为您的语言生成语言环境。在这个例子中,我将使用'sv_SE'。在'/ usr / share / i18n / SUPPORTED'中查找支持的语言环境,
你会发现多行以'sv_SE'开头,
这意味着您有多个选项可用于生成sv_SE的语言环境。其中一个选项的名称中没有句号(。)(即
);这是该语言环境的默认字符集。要为默认字符集生成语言环境,请运行以下命令:
如果要为UTF-8字符集生成该语言环境,请运行此命令,
生成语言环境后重新启动Apache(否则将找不到新生成的语言环境),
3)最后,更新PHP脚本以匹配您生成的语言环境。如果您为'sv_SE'生成了区域设置, setlocale(LC_ALL,“sv_SE”); 但是,如果您生成了与该语言环境等效的UTF-8,请使用, setlocale(LC_ALL,“sv_SE.UTF-8”); 一切都应该现在奏效。
坝硷操
(2)我必须保持与安装的语言环境相同的文件夹名称。例如,我通过运行
安装了卡纳达语。这产生了
。注意UTF-8中的大写字母和连字符。我在php脚本中设置locale时使用了相同的名称,并在我放置messages.mo文件的文件夹名称中使用了相同的名称: PHP脚本:
文件夹名称:
Ubuntu对文件夹和文件名区分大小写。因此,请确保如上所示维护大写字母。