使用Silex中翻译提供程序中的Po文件加载器获取gettext行为

时间:2014-04-17 19:49:43

标签: symfony translation silex

我在Silex使用翻译提供程序和PoFileLoader,一切都很棒。

$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {

    $translator->addLoader('po', new PoFileLoader());
    $translator->addResource('po', __DIR__.'/resources/translations/de.po', 'de');
}

我唯一的问题是它如何处理尚未翻译的字符串。我希望它们被忽略并使用源而不是空字符串。就像gettext函数处理po文件一样。

是否有任何选项可以覆盖PoFileLoader类?

1 个答案:

答案 0 :(得分:0)

  

我唯一的问题是它如何处理尚未翻译的字符串。我希望它们被忽略并使用源而不是空字符串。就像gettext函数处理po文件一样。

这是翻译者所做的事情,而不是文件加载器。如果在消息目录中找不到翻译,则翻译器将仅替换参数并返回源。

另请参阅source

public function get($id, $domain = 'messages')
{
    // ... all the loading logic

    // if everything failed, just return the source
    return $id;
}

此方法在Translator#trans方法中调用。