首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Gettext不工作,出什么问题了?

Gettext不工作,出什么问题了?
EN

Stack Overflow用户
提问于 2014-03-22 22:28:17
回答 3查看 6.9K关注 0票数 1

我使用gettext将不同的翻译添加到我的网页中。我刚刚安装了它,我认为它工作得很好。对于.po文件,我也使用Poedit。

这是我的gettext测试代码:

代码语言:javascript
复制
<?php
// I18N support information here
$language = "en_US";
putenv("LANG=" . $language);
setlocale(LC_ALL, $language);

// Set the text domain as "messages"
$domain = "messages";
bindtextdomain($domain, "Locale");
bind_textdomain_codeset($domain, 'UTF-8');

textdomain($domain);
//
// test if gettext extension is installed with php
//

if (!function_exists("gettext"))
{
    echo "gettext is not installed\n";
}
else
{
    echo "gettext is supported\n";
}
echo '<br>';
echo _("HELLO WORLD");
echo _("TEST TRANSLATION");
?>

这段代码返回给我'gettext is supported',但它并没有显示翻译结果,而是显示了'HELLO WORLD‘和’测试翻译‘。

这是我的messages.po文件:

代码语言:javascript
复制
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: 2014-03-22 14:45+0100\n"
"PO-Revision-Date: 2014-03-22 15:23+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-KeywordsList: _;gettext;gettext_noop\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\n"
"X-Poedit-SourceCharset: utf-8\n"

# Test token 1
msgid "HELLO WORLD"
msgstr "Hello World!"

# Test token 2
msgid "TEST TRANSLATION"
msgstr "Testing translation..."

它在我的'Locale/en_US/LC_MESSAGES‘文件夹中,还有一个成功转换的messages.mo文件。(我已经隐藏了文件的信息、名称、项目等)

我做错了什么?

谢谢!

编辑:我还可以补充说,我使用的是安装了PHP、Apache和所有这些东西的Ubuntu。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-23 00:44:25

我也一直对这个问题感到头疼。我添加了这个,它起作用了:

putenv('LANGUAGE=en_US');

紧接着,我使用下面的代码:

代码语言:javascript
复制
$domain = 'woohoo';
setlocale(LC_ALL, 'en_US.utf8');
putenv('LANGUAGE=en_US');

if( ENV != 'live' ){
    // reset caching nocache is a simlink to "."
    bindtextdomain($domain, dirname(__FILE__) . '/../locale/nocache');
}

bindtextdomain($domain, dirname(__FILE__) . '/../locale');
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);

此外,在我的设置中,只有当我将iso代码添加到.po文件中时,它才开始工作:

代码语言:javascript
复制
msgid ""
msgstr ""
"Language: en_US\n"
票数 6
EN

Stack Overflow用户

发布于 2019-05-23 06:27:34

对我来说,解决方案是使用"en“作为目录名称,而不是"en-US”。

PHP5.2,gettext 0.19.8.1,Ubuntu 18.04,apache2

票数 1
EN

Stack Overflow用户

发布于 2018-08-08 17:43:00

只需添加以下行

代码语言:javascript
复制
putenv("LANGUAGE=en_US");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22578859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档