2012-11-09 4 views
1

얼마 전, URL에서/{_locale}을 통해 "올바른 방법"을 사용하여 작업중인 Symfony 2.1 웹 사이트를 번역하기 시작했습니다. 이제 대부분의 경로에서 번역이 잘 수행되었지만 일부 (/ login,/register ...)는 {_locale} 부분이 없으므로이 언어의 기본 언어 (이 경우 fr) url.Symfony2 번역 : locale이 무시됩니다.

디버그 패널을 통해 나는 로캘이 실제로 URL 탐색을 통해 변경되지 않았다는 것을 깨달았습니다 (this과는 달리).

그래서 나는 there을 방문하여 호출 된 경로의 기능으로 세션 로케일을 변경하기 위해 리스너를 설정하는 정보와 링크를 발견했습니다. 모든 기본 로켈 선언 (config.yml과 리스너 자체에서 모두)은 "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

3 가지가 중요하다. 기본 (config에 걸렸고) LANG 당신이 번역 교리 확장자를 사용하는 경우 : 기본 로케일이 가지 않을 때

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

stof_doctrine_extensions: 
    default_locale: 'fr_FR' 

그들은 때문에 순환 참조 예외 달라야이 나타납니다.

번역기 sufix fr_FR 전을 가진 파일 yaml|xml|gettext를 찾고 있습니다 :

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

I 여기서 교리 번역을 사용하지 않고 있습니다. 대부분의 번역은 나뭇 가지를 통해 이루어집니다. 기본값 (symfony 2.1, 세션 : {default_locale : 'fr_FR'}이 default_locale : % locale %로 바뀜)을 모두 확인했습니다. 모두 정확합니다. /register 또는/login과 같은 페이지에서 로켈이 고려되었음을 알았습니다. 내가 이해할 수없는 것은 fr이 로케일과 url 모두에있을 때 영어가 사용되는 이유입니다. –