2012-09-04 6 views
2

브라우저에서 기본 언어 세트를 결정하는 방법이 필요합니다. 나는 PHP를위한 훌륭한 솔루션을 찾았지만 불행히도 장고/파이썬을 사용하고 있습니다.파이썬 - HTTP/브라우저에서 주요 언어 코드 추출

정보가 HTTP 요청의 HTTP_ACCEPT_LANGUAGE 속성 내에 있다고 생각합니다.

나를위한 아이디어 나 기성 기능이 있습니까?

답변

1

당신은 request.META dictionary을 찾고 다음 WebOb를 설치하는 것을

from webob.acceptparse import Accept 

language_accept = Accept(request.META['HTTP_ACCEPT_LANGUAGE']) 
print language_accept.best_match(('en', 'de', 'fr')) 
print 'en' in language_accept 

참고 :

print request.META['HTTP_ACCEPT_LANGUAGE'] 

WebOb project, 경량 웹 프레임 워크는 당신이이 경우에 다시 사용할 수있는 편리한 accept parser을 포함 패키지가 Django의 기능을 방해하지 않을 것입니다. 우리는 여기서 아주 유용한 패키지 클래스를 다시 사용하고 있습니다.

짧은 데모는 항상 더 많은 예시 :

>>> header = 'en-us,en;q=0.5' 
>>> from webob.acceptparse import Accept 
>>> lang = Accept(header) 
>>> 'en' in lang 
True 
>>> 'fr' in lang 
False 
>>> lang.best_match(('en', 'de', 'fr')) 
'en' 
+0

나는 이것을 알고 있지만 기본 언어를 감지 할 방법이 필요합니다. 주로 'HTTP_ACCEPT_LANGUAGE'는 다른 언어를 포함하는 문자열입니다. – Ron

+1

클라이언트가 항상 HTTP_ACCEPT_LANGUAGE를 전달하지 않을 수도 있으며, 실제로 그것이 맞지 않을 수도 있습니다. 가장 바보 같은 방법은 항상 사용자가 명시 적으로 언어를 선택하도록하는 것입니다. –

+0

내 웹 사이트에있는 사소한 기능입니다. 내가 코드를 얻으면, 그 좋은. 그렇지 않으면, 나는 단지 독일어 또는 영어를 사용합니다 ... – Ron

0

이 내가 사용하는 기능이며, 그 내 생성 자체입니다.

DEF 언어 (자기)의 self._request.META 이 'HTTP_ACCEPT_LANGUAGE' LANG = self._request.META [ 'HTTP_ACCEPT_LANGUAGE'] 복귀 STR (LANG [2]) 다른 : 리턴 'en'

그냥 부르세요.

관련 문제