2010-04-09 8 views

उत्तर

28

आप अपने उपयोगकर्ताओं भाषा निर्दिष्ट करने के लिए, सुनिश्चित करें कि LocaleMiddleware सक्षम किया गया है में सक्षम होना चाहते हैं:

MIDDLEWARE_CLASSES = (
    ... 
    'django.middleware.locale.LocaleMiddleware', 
    ... 
) 

तो Django में उपयोगकर्ताओं की भाषा प्राथमिकता के लिए दिखेगा इसी क्रम (trans_real.py में get_language_from_request देखें):

    request.path_info में
  1. , अगर i18n_patterns किया जाता है;
  2. request.session[settings.LANGUAGE_SESSION_KEY];
  3. request.COOKIES[settings.LANGUAGE_COOKIE_NAME];
  4. request.META['HTTP_ACCEPT_LANGUAGE'] में प्रत्येक भाषा, स्वीकृत होने तक;
  5. settings.LANGUAGE_CODE

तो Django सत्र में स्पष्ट रूप से भाषा सेट करने के लिए सबसे सरल तरीके request.session[settings.LANGUAGE_SESSION_KEY] के पुनर्लेखन के लिए है:

def someview (request): 
    ... 
    request.session[settings.LANGUAGE_SESSION_KEY] = 'en' 
    ... 
+0

धन्यवाद, मैं पहले इस तरह वास्तव में किया था, लेकिन यह काम नहीं किया, यह पता चला मैं डिफ़ॉल्ट रूप भाषाएं सूची में नहीं एक भाषा टैग का उपयोग किया है, यह अच्छा है अभी व। धन्यवाद – icn

+4

आसान नहीं है ['django.views.i18n.set_language()'] (https://docs.djangoproject.com/en/1.2/topics/i18n/internationalization/#the-set-language- रीडायरेक्ट-व्यू) बिल्टिन व्यू –

+0

यह बहुत अच्छा काम करता है – suhailvs

14

और अगर आप एक संस्करण >= Django 1.8 का प्रयोग करेंगे।

from django.utils.translation import LANGUAGE_SESSION_KEY 

def someview (request): 
    ... 
    request.session[LANGUAGE_SESSION_KEY] = 'en' 
+1

यह अधिक लगातार काम करता है क्योंकि सेटिंग्स में 'LANGUAGE_SESSION_KEY' संपत्ति नहीं हो सकती है –

0

django.views.i18n.set_language() उपयोग पर विचार करें: यहाँ यह हम कैसे इस्तेमाल कर सकते हैं कि है। अपने URLconf को निम्न पंक्ति जोड़कर इस दृश्य को सक्रिय करें:

# This example makes the view available at /i18n/setlang/ 
url(r'^i18n/', include('django.conf.urls.i18n')), 

सुविधा के लिए, Django एक दृश्य, django.views.i18n.set_language(), जो उपयोगकर्ता की भाषा प्राथमिकता सेट करता है और किसी दिए गए URL पर रीडायरेक्ट या, द्वारा के साथ आता है डिफ़ॉल्ट, पिछले पृष्ठ पर वापस।

दृश्य में पैरामीटर सेट के साथ, POST विधि के माध्यम से दृश्य को कॉल करने की अपेक्षा की जाती है। यदि सत्र समर्थन सक्षम है, तो दृश्य उपयोगकर्ता के सत्र में भाषा पसंद सहेजता है। अन्यथा, यह को उस कुकी में भाषा पसंद को सहेजता है जो डिफ़ॉल्ट रूप से django_language नाम से है। (नाम LANGUAGE_COOKIE_NAME सेटिंग के माध्यम से बदला जा सकता है।)

संबंधित मुद्दे