मैं अपनी परियोजना के लिए अलग-अलग भाषाओं को सक्रिय करने की कोशिश कर रहा हूं। अभी अंग्रेजी और स्पेनिश।Django i18n काम नहीं करता
मैं सभी कदम मैं पालन व्याख्या करेंगे:
सबसे पहले, मैं निर्देशिका मैं अनुवाद करना चाहते हैं में अपने आप को जगह। या बेहतर कहा है, जहां सभी {% ट्रांस%} टैग हैं:
$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
अंतिम आदेश निर्देशिका/फ़ाइल /locale/en/LC_MESSAGES/django.po
मैं django.po खोल सकते हैं और मैं आगे बढ़ना बनाता है अंग्रेजी भाषा में सभी msgstr खेतों को पूरा करने के लिए। msgstr लेबल स्पेनिश में है। मैं लंबे संदेशों के मामले के बारे में सुझावों का सम्मान करता हूं। इस फ़ाइल में भरने के बाद, मैं बनाने:
$ django-admin.py compilemessages
इस प्रक्रिया django.po और django.mo पैदा करता है।
तो मैं settings.py को संशोधित करता हूं। महत्वपूर्ण लाइनों:
TEMPLATE_CONTEXT_PROCESSORS = (
'ism.context_processor.user_vars',
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pipeline.middleware.MinifyHTMLMiddleware',
}
TIME_ZONE = 'Atlantic/Canary'
LANGUAGE_CODE = 'es'
USE_I18N = True
_ = lambda s: s
LANGUAGES = (
('es', _('Espanol')),
('en', _('English')),
)
USE_L10N = True
USE_TZ = True
अंत में, मैं URLS.py को यह पंक्ति जोड़ें:
(r'^i18n/', include('django.conf.urls.i18n')),
मैं अपने विकास सर्वर को पुनः आरंभ, मैं पहले प्राथमिक भाषा के रूप में अंग्रेजी का चयन करने के लिए अपने फ़ायरफ़ॉक्स ब्राउज़र तथा यह नहीं है काम। सभी ग्रंथ अभी भी स्पैनिश में अंग्रेजी में दिख रहे हैं।
मुझे यकीन है कि फ़ायरफ़ॉक्स अंग्रेजी में कॉन्फ़िगर किया गया है क्योंकि Django व्यू फ़ंक्शन (जो .html प्रस्तुत करता है) में मैं अनुरोध के साथ एक प्रिंट करता हूं। LANGUAGE_CODE, जो "en" प्रिंट करता है।
मैं क्या गलत कर रहा हूं?
आप django-admin.py makemessages --locale था = es? – Efazati
उपयोगकर्ता और एन के बीच कैसे स्विच करते हैं? – Efazati
@Efazati मेरी परियोजना की मुख्य भाषा ES है, एन नहीं। तो मैं समझता हूं कि मुझे 'django-admin.py makemessages --locale = en' बनाना होगा, है ना? इस तरह, django.po फ़ाइल बनाई गई है फ़ील्ड में फ़ील्ड और मुझे अंग्रेजी में msgstr फ़ील्ड को पूरा करना होगा। –