pth*_*lin 15 php ubuntu gettext php-gettext
以下示例适用于使用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");
?>
Run Code Online (Sandbox Code Playgroud)
有人有主意吗?
Ser*_*ano 35
我遇到了同样的问题.我将描述我在Ubuntu 10.10上修复它所做的事情.
1)确保你安装了'gettext',
sudo apt-get install gettext
Run Code Online (Sandbox Code Playgroud)
或者,如果无法安装'gettext',则可以安装'php-gettext'.如果您已安装'gettext',则不需要包'php-gettext'.
2)然后为您的语言生成语言环境.在这个例子中,我将使用'sv_SE'.在'/ usr/share/i18n/SUPPORTED'中查找支持的语言环境,
less /usr/share/i18n/SUPPORTED
Run Code Online (Sandbox Code Playgroud)
你会发现多行以'sv_SE'开头,
sv_SE.UTF-8 UTF-8
sv_SE ISO-8859-1
sv_SE.ISO-8859-15 ISO-8859-15
Run Code Online (Sandbox Code Playgroud)
这意味着您有多个选项可用于生成sv_SE的语言环境.其中一个选项的名称中没有句点(.)(即sv_SE ISO-8859-1); 这是该语言环境的默认字符集.要为默认字符集生成语言环境,请运行以下命令:
sudo locale-gen sv_SE
Run Code Online (Sandbox Code Playgroud)
如果要为UTF-8字符集生成该语言环境,请运行此命令,
sudo locale-gen sv_SE.UTF-8
Run Code Online (Sandbox Code Playgroud)
生成语言环境后重新启动Apache(否则将找不到新生成的语言环境),
sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)
3)最后,更新PHP脚本以匹配您生成的语言环境.如果您为'sv_SE'生成了区域设置,
setlocale(LC_ALL,"sv_SE");
但是,如果您生成了与该语言环境等效的UTF-8,请使用,
setlocale(LC_ALL,"sv_SE.UTF-8");
一切都应该现在奏效.
| 归档时间: |
|
| 查看次数: |
23602 次 |
| 最近记录: |