Symfony 4翻译资源最佳实践

Symfony 4翻译资源最佳实践,symfony,translation,Symfony,Translation,根据symfony文档,为了使翻译服务正常工作,您需要创建一个具有已知有效扩展名的资源,从而生成类似于:domain.locale.extension的格式。Symfony代码将“messages”域作为默认域,如果希望更好地组织这些翻译,可以在函数trans()的第三个参数中指定新域。 这是我有点困惑的地方。我在某个地方(不记得在哪里)读到过这样一篇文章:将翻译目录分成多个文件是一种更好的做法,比如 标签.en.xlf labels.ro.xlf options.en.xlf options

根据symfony文档,为了使翻译服务正常工作,您需要创建一个具有已知有效扩展名的资源,从而生成类似于:domain.locale.extension的格式。Symfony代码将“messages”域作为默认域,如果希望更好地组织这些翻译,可以在函数trans()的第三个参数中指定新域。 这是我有点困惑的地方。我在某个地方(不记得在哪里)读到过这样一篇文章:将翻译目录分成多个文件是一种更好的做法,比如

  • 标签.en.xlf
  • labels.ro.xlf
  • options.en.xlf
  • options.ro.xlf
  • messages.en.xlf
  • messages.ro.xlf
我正在为每种目的创建一个文件,以便对其进行组织,但问题是。。。现在我只有2种语言,而且我还计划添加所有语言。而且,现在我只有3个域名,但再进一步,我肯定会添加更多。 这将导致大量的文件,但这对性能来说不是有点糟糕吗? 我的意思是,将其组织在多个文件中可能是一种更好的做法,但symfony必须加载所有这些文件,这肯定会影响性能,但如果我只保留“消息”域,并在其中添加每个翻译,这不是更好吗? 另一件事是trans()函数的语法。最好这样调用它:

$translator->trans('translation.id');
除此之外:

$translator->trans('translation.id', array(), 'theNewDomain');

您对此有何想法?

文件仅通过缓存加载一次:warmup请参阅var/cache/{env}/translations/


然后,每个区域设置只有一个目录。

因此,从性能角度来看,多文件方法没有任何不利因素。。。虽然每次我想翻译一些东西时,我必须指定3个参数,而不是一个参数,这让我很烦恼,这取决于你在哪里使用翻译。例如,如果您使用twig,您可以在表单中为整个模板定义一次翻译域
{%trans\u default\u domain'whatever%}
,您可以在默认值
'translation\u domain'=>'whatever'
-在服务/控制器中,您可以使用自动设置域的包装器。。。