2014-01-21 91 views
3

我想用Symfony翻譯我的網站。我在我的配置中激活了翻譯器。Symfony2:默認語言環境不適用於翻譯

# app/config/config.yml 
imports: 
    - { resource: parameters.yml } 
    - { resource: security.yml } 

framework: 
    #esi:    ~ 
    translator:  { fallback: "%locale%" } 
    secret:   "%secret%" 
    router: 
     resource: "%kernel.root_dir%/config/routing.yml" 
     strict_requirements: ~ 
    form:   ~ 
    csrf_protection: ~ 
    validation:  { enable_annotations: true } 
    templating: 
     engines: ['twig'] 
     #assets_version: SomeVersionScheme 
    default_locale: %locale% 
    trusted_hosts: ~ 
    trusted_proxies: ~ 
    session: 
     # handler_id set to null will use default session handler from php.ini 
     handler_id: ~ 
    fragments:  ~ 
    http_method_override: true 


# app/config/parameters.yml 
# This file is auto-generated during the composer install 
parameters: 
    ... 
    locale: fr 
    secret: MySecretToken 

我的翻譯文件位於應用程序/配置/資源/ messages.en.yml和應用程序/配置/資源/ messages.fr.yml。

但我這樣做是在我的控制器時:

$translator = $this->get('translator'); 
var_dump($translator->trans('hello')); 
exit(); 

它仍然顯示「你好」,而不是「卓悅」。我用\ Locale :: getDefault()檢查了我的PHP語言環境,它是「en」,我的Symfony語言環境是「fr」(通過翻譯器對象上的getLocale()獲得)。

它的工作原理是在我的動作開始時手動設置區域設置,但我有很多操作,我想爲整個網站設置默認區域設置。我認爲config.yml可以爲我做到這一點,但似乎並非如此......您是否看到我的問題來自哪裏?謝謝 !

回答

6

嘗試清除應用程序緩存app/cache dir。這是第一次非常重要。

此外,您必須在您的路由器中添加區域設置

+0

好吧,它適用於「en」,但不適用於「fr」!爲什麼? oO – maxime

+0

將您的語言環境變量添加到'routing.yml'中 –

+1

我清除了緩存,並且它工作正常!非常感謝,我覺得自己像一個新手,但沒關係,因爲它的工作原理! – maxime