2011-09-30 73 views
1

我已经在PHP5中设置了gettext。经过一些与人物和类似的苦苦挣扎后,我设法翻译了一些基本的字符串。现在我遇到了一个问题。当翻译一个空字符串时,我希望得到未翻译(空)的字符串(纠正我,如果我错了))。的为什么gettext会将空字符串转换为.po标题文本?

然而,而不是返回输入字符串,我得到的.po文件,作为翻译的标题:

Project-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2011-09-22 15:03+0200 PO-Revision-Date: 2011-09-22 15:37+0200 Last-Translator: timo Language-Team: English Language: en MIME-Version: 1.0 Content-Type: text/plain; charset=ASCII Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); 

当我看着一个文本编辑器中的.mo文件,我看到标题似乎放在文件中的随机位置。我想告诉你,但我不能粘贴文件。它看起来像是我的msgid的列表,然后是标题,然后是我的msgstr的列表

我已经使用以下命令生成的.mo文件:

msgfmt -c -v -o en/LC_MESSAGES/messages.mo messages_en.po 

这个命令我重新启动我的网络服务器(lighttpd的)之后。

我做错了什么,我该如何解决?

回答

0

只有当消息与空白或空字符串(“”)不同时,才可以尝试创建另一个函数来调用gettext。像这样的事情在PHP中:

function _tl($msg) 
{ 
    $ret = ""; 
    if($msg != "") 
    { 
     $ret = _($msg); 
    }  

    return $ret; 

} 

然后在poEdit的,在你的目录偏好,关键字标签上使用新的功能_TL的设置。这是poedit会在您的代码中识别它的方式。