2013-07-15 5 views
0

내 목표는 로컬 사용자의 브라우저를 인식하고 자동으로 언어를 설정하는 것입니다.자동으로 사용자의 로케일을 감지하십시오.

그런 다음 사용자가 언어를 변경하고 다른 페이지에 유지하도록 허용하십시오. 나는이 방법으로 경로를 설정 한 시간에서

:

사용자가 기본적으로 설정되는 로컬 경로에서 언어를 지정하지 않고 페이지 example.com를 입력
# homepage not localized: load the homepage with default language 
index_not_localized: 
    path: /
    defaults: { _controller: "AcmeSiteBundle:Default:index", _locale: %locale% } 


acme_site: 
    resource: "@AcmeSiteBundle/Controller/" 
    type:  annotation 
    prefix: /{_locale} 
    defaults: { _locale: %locale% } 
    requirements: 
     _locale: %route_locale_requirements% 

, 페이지가있다 언어를 변경할 수있는 스위처 :

<ul class="dropdown-menu"> 
    {% for locale in ['en', 'it'] %} 
     <li> 
      <a href="{{ path('homepage', {'_locale': locale}) }}"> 
     </li> 
    {% endfor %} 
</ul> 

내가 원하는 것을 어떻게 할 수 있습니까?

리스너를 만들어야합니까? 로컬 세션을 시작 했습니까?

혼란 스럽지만 여러 답변을 읽었지만 분명한 답변을 찾지 못했습니다!

+0

) http://symfony.com/doc/current/cookbook/session/locale_sticky_session.html –

+0

예, 감사합니다. 문제. 사용자의 로켈을 자동으로 검색하려면 어떻게합니까? –

+0

영어로 말하는 사람이 러시아에서 사이트를 열 수 있으므로 IP로 검색을 구현 ​​한 경우에도이 작업을 수행하지 마십시오. 언어 전환기를 만드십시오. –

답변

0

두 가지 방법이 있지만 두 가지 모두 로캘을 감지하고 올바르게 감지하는 데 100 % 보장되지 않습니다.

첫 번째 변수는 $_SERVER['HTTP_ACCEPT_LANGUAGE']입니다. 그것은 HTTP Headers를 통해 얻어지며 존재하지도 않습니다.

두 번째는 세 번째 측면 서비스를 사용하여 IP 주소로 국가를 검색 한 다음 국가 이름과 해당 국가의 일부 로컬 테이블과 해당 로캘을 비교하는 것입니다. 예를 들어 : Simplest way to detect client locale in PHP

을 그리고 마지막 포인트는 symfony2 프로젝트에 로케일 감지 기능을 통합하는 것입니다 : 더 많은 정보와 의견을

http://api.hostip.info/get_html.php?ip=127.0.0.1

이 질문에 봐. 이것은 가장 간단한 부분입니다. kernel.request 이벤트 목록 수신자 만 사용하면됩니다. 모든 것은 여기에 완벽하게 설명되어 있습니다 (예 : Symfony 2.1 set locale

관련 문제