मेरे पास एक django प्रोजेक्ट है जो एक कार्यकर्ता प्रक्रिया का उपयोग करता है जो उपयोगकर्ताओं को ईमेल भेजता है। कार्यकर्ता प्रक्रियाएं एक खरगोश सर्वर को सुनती हैं और ईमेल भेजने के लिए सभी विवरण प्राप्त करती हैं, टेम्पलेट चर, ईमेल पते को भेजने के लिए आदि। ईमेल निकाय django टेम्पलेट्स और render_to_string के साथ बनाया गया है।डीजेगो स्विचिंग, भाषा स्विच करें ताकि अनुवाद एक भाषा में किया जा सके
हालांकि मैं इसे अंतर्राष्ट्रीय बनाना चाहता हूं। हमारे कुछ उपयोगकर्ता अंग्रेजी में वेबसाइट का उपयोग करने जा रहे हैं, कुछ अन्य भाषाओं में। उन्हें अपनी भाषा में ईमेल प्राप्त करना चाहिए। मैंने ईमेल कार्यकर्ता प्रक्रिया i18n करने की कोशिश की है (django.utils.translations.ugettext/ugettext_lazy का उपयोग करके), ताकि ईमेल विषय और ईमेल निकाय में _(...) या {% blocktrans%} resp।
हालांकि चूंकि ईमेल को एक अलग पृष्ठभूमि कार्यकर्ता प्रक्रिया में प्रस्तुत किया जाता है और भेजा जाता है, तो सामान्य django language detection process लागू नहीं होता है। इसके लिए कोई उपयोगकर्ता सत्र नहीं है, कोई कुकी या कोई http शीर्षलेख नहीं है। Rabbitmq सर्वर पर संदेश भेजते समय, मैं भाषा कोड
लेकिन मैं उस भाषा का उपयोग करने के लिए django/gettext को कैसे बता सकता हूं।
उदा मेरे समारोह ईमेल भेजता है कि इस प्रकार दिखाई देंगे:
def send_email(details):
lang = details['lang']
name = details['name']
email_address = details['email_address']
switch_gettext_to_this_language_what_goes_here(lang):
# ?????
email_subject = _("Welcome to $SITE")
क्या मैं में डाल एक विशिष्ट भाषा कोड के लिए Django अनुवाद/gettext स्विच करने के लिए इतना है कि _()
कि भाषा कोड का उपयोग करेगा करते हैं?
ध्यान दें कि 'django.utils.translation' में अब' ओवरराइड (लैंग) 'संदर्भ प्रबंधक है जो बाहर निकलने पर मूल लोकेल को स्वचालित रूप से रीसेट कर देगा। –