我正在尝试使用PHP的gettext扩展来翻译一些字符串。所有函数似乎都返回了正确的值,但调用
首先,请查看
我已经创建了以下文件结构:
gettext()
/_()
仅返回原始字符串。PO/MO文件看起来是正确的,而且我相信我已经正确设置了目录。我在Windows上运行着带有PHP 5.3.10的WAMP服务器(也尝试过运行5.3.4和5.3.8,因为我有这些安装包)。首先,请查看
/new2/www/index.php
:$locale = 'esn'; # returns Spanish_Spain.1252 in var dump
putenv("LC_ALL={$locale}"); // Returns TRUE
setlocale(LC_ALL, $locale); // Returns 'Spanish_Spain.1252'
$domain = 'messages';
bindtextdomain($domain, './locale'); // Returns C:\wamp\www\new2\www\locale
bind_textdomain_codeset($domain, 'UTF-8'); // Returns UTF-8
textdomain($domain); // Returns'messages'
print gettext("In the dashboard"); // Prints the original text, not the translation.
exit;
我已经创建了以下文件结构:
www/new2/www/locale/Spanish_Spain.1252/LC_MESSAGES/messages.mo
我还尝试使用以下内容替换Spanish_Spain.1252
:es_ES
、esn
、esp
、Spanish
和Spanish_Spain
。
用于生成MO文件的PO文件如下(仅提供相关条目):
#: C:\wamp\www\new2/www/index.php:76
msgid "In the dashboard"
msgstr "TRANSLATED es_ES DASHBOARD"
这是使用PoEdit生成的。在添加任何新的.MO文件后,我已经重新启动了Apache。还要注意的是,我以前使用Zend_Translate和Gettext进行翻译,翻译得很准确。但我希望部分依赖本地gettext扩展,因为我正在尝试创建自己的轻量级框架。
任何帮助都将不胜感激。
编辑:修正了目录结构。请注意-将能够在24小时内尝试最近的答案。
es_ES.UTF-8
吗? - mariosetlocale()
返回了 false。 - pb149