如何在 php 中隐藏 gettext 信息
How to hide gettext infos in php
我正在使用 gettext PHP 函数编写简单的脚本。一切正常,但我尝试监视更改的内容。
例如当用户更改 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 函数 return 一些疯狂的东西,但我想要
<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 信息。在这种情况下,我什么都不设置 "If gettext can't find translation just write pure text"。
此致
我们可以在 gettext manual 中读到:
This also has another advantage, as the empty string in a PO file GNU gettext is usually translated into some system information attached to that particular MO file, and the empty string necessarily becomes the first in both the original and translated tables, making the system information very easy to find.
可能你的.po
文件包含msgid
,这是一个空字符串,它的值只是系统信息。
因此,当您调用 _("")
时,您就会明白这一点。如果找不到,您可以尝试传递一些默认字段:
_($checkArray[$row] ?: "default")
我正在使用 gettext PHP 函数编写简单的脚本。一切正常,但我尝试监视更改的内容。
例如当用户更改 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 函数 return 一些疯狂的东西,但我想要
<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 信息。在这种情况下,我什么都不设置 "If gettext can't find translation just write pure text"。
此致
我们可以在 gettext manual 中读到:
This also has another advantage, as the empty string in a PO file GNU gettext is usually translated into some system information attached to that particular MO file, and the empty string necessarily becomes the first in both the original and translated tables, making the system information very easy to find.
可能你的.po
文件包含msgid
,这是一个空字符串,它的值只是系统信息。
因此,当您调用 _("")
时,您就会明白这一点。如果找不到,您可以尝试传递一些默认字段:
_($checkArray[$row] ?: "default")