我得到了翻译:
$translated = $this->container->get('translator')
->getCatalogue($language)
->all();
但我有所有的翻译。
例如,有一个文件包含以下内容:
symfony:
is:
great: Symfony is great
amazing: Symfony is amazing
has:
bundles: Symfony has bundles
user:
login: Login
我怎样才能获得某些(仅限用户或仅限symfony)?提前谢谢。
更新: 这样做了:
$messages = [];
foreach ($translated['messages'] as $key => $message) {
if (stripos($key, 'frontend')) {
$messages[$key] = $message;
}
}
但内置没有这样的功能吗?
答案 0 :(得分:1)
/**
* Gets the messages within a given domain.
*
* If $domain is null, it returns all messages.
*
* @param string $domain The domain name
*
* @return array An array of messages
*/
public function all($domain = null);
编辑:
查看更新后的问题,如果您查看MessageCatalogueInterface,我认为您可以执行类似catalogue-&gt; all(&#39; yourdomain&#39;)的操作,如果您要将您的转换组织到域中。< / p>
看看这里:
{{1}}
答案 1 :(得分:1)
如果您想接收某些翻译,请将它们转移到具有正确域名的另一个文件(在我的示例中,这将是前端):
现在我可以获得如下翻译:
$messages = $this->container->get('translator')
->getCatalogue($language)
->all('frontend');
感谢您提示strnm
答案 2 :(得分:0)
在阅读翻译文件时,您无法做什么,Symfony会将嵌套在YAML文件中的键标准化。因此,目录只包含消息密钥symfony.is.great
,symfony.is.amazing
,symfony.has.bundles
和user.login
。
能够嵌套键只是翻译组件YamlFileLoader
类提供的语法糖。