2017-09-04 69 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