我有一个非 Symfony PHP 项目,我想在其中使用带有 MoFileLoader 的 Symfony Translate 组件。我已经设置了 PoEdit,以便在解析文件以查找翻译时识别 trans("string") 函数。这部分代码<?php echo $translator->trans("Welcome"); ?>
按应有的方式解析。
问题是我无法让 PoEdit 将其识别为复数字符串<?php echo $translator->trans('Found {result} search result', ['{result}' => 1]); ?>
1 显然是结果的数量,并且我希望能够使用正确的复数字符串。
大问题是我的主要语言是克罗地亚语,它的复数形式nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);
比英语复杂得多nplurals=2; plural=(n!=1)
我在 PoEdit 中添加了这个 Sources 关键字
trans
trans:1,2
我已经尝试使用 PHP 和 gettext 来完成此任务,但由于服务器限制和 gettex、Apache 和 PHP 的其他问题,它对我不起作用。
这是我使用 Symfony Translate 组件的方式:
<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\MessageSelector;
use Symfony\Component\Translation\Loader\MoFileLoader;
$lang = "hr";
$translator = new Translator($lang, new MessageSelector());
$translator->setFallbackLocales(['en']);
$translator->addLoader('mo', new MoFileLoader());
$translator->addResource('mo', "locale/$lang/LC_MESSAGES/messages.mo", $lang);
echo $translator->trans("Welcome");
echo $translator->trans('Found {result} search result', ['{result}' => 1]);
?>
有没有办法让 PoEdit 将其识别为复数字符串:
<?php echo $translator->trans('Found {result} search result', ['{result}' => 1]); ?>