2015-12-17 40 views
0

我想在Controller使用translator.default服務,但我想通過trans方法來翻譯的任何消息返回翻譯的關鍵。翻譯::的getMessages返回一個空數組

/** 
* @Route("/testT") 
*/ 
public function testTAction(Request $req) 
{ 
    $translator = $this->get('translator.default'); 
    $translated = $translator->trans('Hello from the other side'); 
    die(dump($translated)); 
} 

爲了確保我的鑰匙被正確地加載我已經做了以下檢查:

php app/console translation:update it --dump-messages 

其輸出以下:

Translation Messages Extractor and Dumper 
========================================= 

// Generating "it" translation files for "app folder" 
// Parsing templates... 
// Loading translation files... 

Messages extracted for domain "messages" (1 messages) 
----------------------------------------------------- 

* Hello from the other side 


[OK] 1 messages were successfully extracted  

我的密鑰<root>/app/resources/translations/messages.it.yml下保存 和我的語言環境,當請求翻譯密鑰設置良好時:

$translator = $this->get('translator.default'); 
    die(dump($translator->getLocale())); 

如果在我的控制器中調用,這將生成以下輸出:「it」,我想這是正確的。那麼,我錯在哪裏?

編輯

這裏是我的<root>/app/Resources/translations/messages.it.yml

Hello from the other side: Ciao dall'altra parte 

,這裏是我的<root>/app/config/config.yml

framework: 
    translator: { fallbacks: it } 

我使用的開發配置相關的翻譯服務塊,但沒有任何關係到那裏的翻譯。

+0

是你config.yml配置的翻譯,你可以發表你的messages.it.yml? –

+0

我剛剛編輯我的帖子與您請求的信息 – Bertuz

回答

0

您是否在創建新的messages.it.yml文件後清除了緩存?

即使我確定它在那裏,翻譯似乎仍然顯示爲「未找到」,這已經發生在我身上了。清除緩存後,它通常可以正常工作。

而且對於未來,你可以在app_dev運行,並檢查探查見被發現的消息和失蹤的消息,像這樣:

Profiler toolbar with translations

當點擊翻譯圖標,你應該看到一個屏幕,像這樣的列表:

enter image description here

+0

是的,我已經調用了'php應用程序/控制檯緩存:清除「,但沒有任何更改。有趣的是,我的app_dev.php沒有顯示任何關於消息的信息。另外,日誌文件中沒有關於翻譯服務的信息! – Bertuz

+0

我應該自己添加一個裝載機嗎? – Bertuz

+0

只是一個問題,你的文件是' /app/Resource/translations/messages.it.yml'here? 還是隻是一個錯字?它應該是'資源'(複數) –