2012-11-09 97 views
1

前段時間,我開始翻譯我正在處理的Symfony 2.1網站,在URL中使用/ {_locale}中的「正確方法」。現在,大多數路由的翻譯工作正常,但其中一些(/ login,/ register,...)保持採用默認語言(本例中爲fr),因爲它們中沒有{_locale}部分網址。Symfony2翻譯:語言環境被忽略

通過調試面板,我意識到該區域設置實際上沒有通過網址導航進行更改(不像this讓我相信)。

所以我去了there,在那裏我找到了信息和鏈接來建立一個監聽器,以便改變被調用路徑的會話區域設置。 所有默認的語言環境聲明(config.yml和listener本身)都是「fr」。

當我切換語言時,實際上可以在調試面板上看到會話區域設置發生更改。然而,翻譯似乎已被打破:儘管默認語言是法語,並且儘管會話區域設置爲「fr」,但每個翻譯位都是用英語製作的。

從哪裏來?我該如何解決它?

在此先感謝。

的更多技術信息:

的routing.yml:

AuraeLCUserBundle: 
    resource: "@AuraeLCUserBundle/Resources/config/routing.yml" 
    prefix: /{_locale}/ 
    defaults: { _locale: fr } 
    requirements: 
     _locale: en|fr 

樹枝例如:這裏

<p>{{ 'layout.greeting.welcome'|trans({}, 'AuraeLCUserBundle') }}</p> 

回答

0

三件事是至關重要的。 默認郎(在config設置好的),如果您使用翻譯理論的擴展:當默認的語言環境不會去

# app/config/config.yml 
framework: 
    session:   { default_locale: 'fr_FR' } 
    translator:  { fallback: 'en' } 
..... 

stof_doctrine_extensions: 
    default_locale: 'fr_FR' 

他們必須因爲循環引用例外的是不同的出現。

翻譯正在尋找文件yaml|xml|gettext與sufix fr_FR例如:

messages.fr_FR.yml 
messages.en.yml 
yourcatalogue.fr_FR.yml 
yourcatalogue.en.yml 

閱讀此瞭解更多詳情:

Change default locale in Symfony2

http://symfony.com/doc/2.0/book/translation.html

http://0hlsson.se/2011/07/27/symfony2-and-translatable-example/

+0

我我沒有在這裏使用Doctrine翻譯,大部分翻譯都是通過枝條完成的。 我檢查了默認值(使用Symfony 2.1,session:{default_locale:'fr_FR'}替換爲default_locale:%locale%),它們都是正確的(fr)。 我也注意到,在諸如/ register或/ login這樣的頁面上,語言環境現在被考慮在內。 我不明白的是,爲什麼在語言環境和網址中都使用了英語。 –

相關問題