ブラウザに設定されている主要言語を判別する方法が必要です。PHPの本当に素晴らしいソリューションを見つけましたが、残念ながらDjango/Pythonを使用しています。
情報はHTTPリクエストのHTTP_ACCEPT_LANGUAGE属性内にあると思います。
私のためのアイデアや既製の機能はありますか?
ブラウザに設定されている主要言語を判別する方法が必要です。PHPの本当に素晴らしいソリューションを見つけましたが、残念ながらDjango/Pythonを使用しています。
情報はHTTPリクエストのHTTP_ACCEPT_LANGUAGE属性内にあると思います。
私のためのアイデアや既製の機能はありますか?
request.META
あなたは辞書を探しています:
print request.META['HTTP_ACCEPT_LANGUAGE']
軽量のWebフレームワークである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
WebObパッケージをインストールしても、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'
これは私が使った機能であり、それが私の創造物です。
def language(self):
if 'HTTP_ACCEPT_LANGUAGE' in self._request.META:
lang = self._request.META['HTTP_ACCEPT_LANGUAGE']
return str(lang[:2])
else:
return 'en'
ただそれを呼んでください。