2017-09-04 68 views
0

我得到这样翻译:得到一些翻译的Symfony2

$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

? – Mcsky

回答

1

From the doc:

$translated = $this->get('translator')->trans('Symfony is great'); 

编辑:

看你更新的问题,如果你看看MessageCatalogueInterface,我觉得你可以做类似目录 - >所有( 'YOURDOMAIN'),如果你会将你的转换组织到域中。

看一看这里:

/** 
* 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); 
+0

不是我需要的 –

+0

没有在你更新你的问题没有。正如他们现在已经回复你的,你想做的事情是不可能的,因为翻译并不是真正的'嵌套'。 – Strnm

+0

谢谢你的回答,我在这个问题上加了我的决定,是不是有类似的东西? –

0

你想要做什么的,而阅读翻译文件的Symfony正常化嵌套在你的YAML文件中的密钥是不可能的。因此,该目录将仅包含消息密钥symfony.is.greatsymfony.is.amazingsymfony.has.bundlesuser.login

能够嵌套键只是翻译组件的YamlFileLoader类提供的语法糖。

+0

事实证明,我只能得到所有的翻译,不能只是部分? –

+0

是的,因为在生成的消息目录中没有任何东西像翻译的一部分。 – xabbuh

0

如果你想获得一定的翻译,他们用正确的域名转移到另一个文件(在我的例子,这将是前端):

enter image description here

现在我可以得到翻译如下:

$messages = $this->container->get('translator') 
    ->getCatalogue($language) 
    ->all('frontend'); 

谢谢你的提示从哪些标准,你想某些翻译strnm

+0

很高兴听到它的工作!考虑接受我的答案是有效的,如果解决你的问题:) – Strnm