以下示例适用于使用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等效于该区域设置,请使用,“sv_SE.UTF-8”);
所有人都应该现在工作
原文地址:https://www.jb51.cc/ubuntu/349107.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。