如何在php中隐藏gettext信息

问题描述 投票:5回答:1

我正在使用gettext PHP函数编写简单的脚本。一切都运作良好,但我试图monitore什么改变了什么。

例如,当用户更改2个字段时

Type: (old) Agreement (new) Anex
Notes: (old) #empty field# (new) Agreement ID: 123

我的editinfo生成器看起来像那样

foreach($checkArray as $row => $value)
{
    if ($addData[$row] != $checkArray[$row])
    {
        $editInfo .= ' <b>' . _("FILED") . '</b> ' . _("$row") . ' <b>' . _("CHANGED FROM") . '</b> ' . _($checkArray[$row]) . ' <b>' . _("FOR") . '</b> ' . _($addData[$row]) . '<br />';
    }
}

但我收到了这样的信息

<b>POLE</b> Type <b>ZMIENIONE Z</b> Umowa <b>NA</b> Aneks <br />
<b>POLE</b> Notes <b>ZMIENIONE Z</b> Project-Id-Version: 
POT-Creation-Date: 
PO-Revision-Date: 
Language-Team: 
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Generator: Poedit 2.0.9
Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
Last-Translator: 
Language: pl
 <b>NA</b> Agreement ID: 123<br />

正如你可以看到所有翻译都运行良好,但当字段为空时,gettext函数返回一些疯狂的东西,但我想有

<b>Pole</b> Type <b>ZMIENIONE Z</b> Umowa <b>NA</b> Aneks<br>
<b>Pole</b> Notes <b>ZMIENIONE Z</b> <b>NA</b> Agreement ID: 123<br>

所以我的问题是我应该在我的服务器中的PHP或PHP设置中更改以隐藏该gettext信息。我想设置“如果gettext找不到翻译只写纯文本”,在这种情况下没什么。

问候

php gettext php-gettext
1个回答
1
投票

我们可以在gettext manual中读到:

这也有另一个优点,因为PO文件GNU gettext中的空字符串通常被翻译成附加到该特定MO文件的一些系统信息,并且空字符串必然成为原始表和翻译表中的第一个,从而使系统信息很容易找到。

可能你的.po文件包含msgid,这是一个空字符串,它的值只是系统信息。

因此,当你打电话给_("")时,你会得到它。如果找不到,可以尝试传递一些默认字段:

_($checkArray[$row] ?: "default")
© www.soinside.com 2019 - 2024. All rights reserved.