PHPではpgettext(= particular gettext)が標準関数として存在しないため、ユーザー定義関数として独自に定義します。
if (!function_exists('pgettext')) {
function pgettext($context, $msgid)
{
$contextString = "{$context}\004{$msgid}";
$translation = gettext($contextString);
return ($translation === $contextString) ? $msgid : $translation;
}
}
- 訳し分けが必要な文ではgettextの代わりにpgettextを使用します。
- $contextはpoファイル内で「msgctxt」として保存されます。
- 「\004」= EOT(End Of Transmission)
- gettextでは以前の翻訳結果がキャッシュされるため、新しい翻訳を取得するにはApacheを再起動します。