加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP gettext无法正常工作,如何调试?

发布时间:2020-12-13 16:09:54 所属栏目:PHP教程 来源:网络整理
导读:我一直在努力建立一个 PHP网站国际化.无论我尝试多少,我都无法获得工作. 我在一个流浪盒上运行一个ubuntu apache服务器,我需要的所有语言环境都可用并生成(使用locales -a来检查). 安装并启用了Gettext(使用phpinfo()检查) 这是我的PHP: $locale = 'en_US'p
我一直在努力建立一个 PHP网站国际化.无论我尝试多少,我都无法获得工作.

我在一个流浪盒上运行一个ubuntu apache服务器,我需要的所有语言环境都可用并生成(使用locales -a来检查).

安装并启用了Gettext(使用phpinfo()检查)

这是我的PHP:

$locale = 'en_US'

putenv('LANGUAGE=' . $locale); //found it somewhere,doesn't make a difference though
putenv('LC_ALL=' . $locale);
echo setlocale(LC_ALL,$locale); //seems to work fine

echo bindtextdomain($locale,"/vagrant/build/locale"); //folder exists and corresponds with return string
textdomain($locale);

echo gettext("Not working!");

这是我的/vagrant/build/locale/en_US/LC_MESSAGES/en_US.po文件:

msgid ""
msgstr ""
"Language: en_USn"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: 8bitn"

msgid "Not working!"
msgstr "ITS WORKIN OMFG!"

一切似乎都要检查,除了翻译不起作用.

我尝试将.utf-8(以及诸如.UTF-8和.utf8之类的变体)添加到putenv(),setlocale()和文件夹名称中的语言环境中,但没有任何改变.

如何调试这种东西?输出变量只带我到目前为止,因为一切似乎都在起作用.

这里有什么我想念的吗?我在这个问题上浪费了太多时间,我只是希望我已经使用了关联数组.

解决方法

我在Windows上遇到了同样的问题,原因是操作系统不知道我在gettext中使用的特定语言.我解决了在系统设置中安装所有所需语言的问题.

请阅读php手册中的这个注释:

Note: On Windows,setlocale(LC_ALL,”) sets the locale names from
the system’s regional/language settings
(accessible via Control
Panel).

http://php.net/manual/en/function.setlocale.php

我希望这能解决你的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读