2012-10-18 4 views
10

में Django में नई भाषाओं को जोड़ने के लिए समर्थित नहीं है? Django में मेरी भाषा "उइघुर" या "उइघुर" समर्थित नहीं है।Django में नई भाषाएं कैसे जोड़ें? मेरी भाषा "उइघुर" या "उइघुर" Django

क्या मैं अपनी परियोजना में नई भाषा लोकेल फ़ाइल जोड़ सकता हूं और इसका उपयोग कर सकता हूं? उदाहरण के लिए : zh_UG

यह भाषा Django में समर्थित नहीं है।

+1

मुझे लगता है कि आप इसके भंडार में योगदान दे सकते हैं। अब कनवर्ट करना। – Amareswar

+0

धन्यवाद। मुझे लगता है कि यह सही जवाब है – Rehmetjan

उत्तर

14

अपने Django एप्लिकेशन

आईएसओ भाषा के लिए एक गैर उपलब्ध भाषा जोड़े बनाने के लिए उइघुर का कोड ئۇيغۇر تىل ى 'ug' है।

अपने settings.py में:

from django.conf import global_settings 

gettext_noop = lambda s: s 

LANGUAGES = (
     ('ug', gettext_noop('Uighur')), 
) 

EXTRA_LANG_INFO = { 
    'ug': { 
     'bidi': True, # right-to-left 
     'code': 'ug', 
     'name': 'Uighur', 
     'name_local': u'\u0626\u06C7\u064A\u063A\u06C7\u0631 \u062A\u0649\u0644\u0649', #unicode codepoints here 
    }, 
} 

# Add custom languages not provided by Django 
import django.conf.locale 
LANG_INFO = dict(django.conf.locale.LANG_INFO.items() + EXTRA_LANG_INFO.items()) 
django.conf.locale.LANG_INFO = LANG_INFO 

# Languages using BiDi (right-to-left) layout 
LANGUAGES_BIDI = global_settings.LANGUAGES_BIDI + ("ug",) 

और:

manage.py makemessages -l ug 
manage.py compilemessages 
+0

मैंने उपरोक्त उत्तर का पालन किया। अब यह नई लांग (उदाहरण के लिए 'लो') की शिकायत करना बंद कर देता है जिसे मैंने जोड़ा लेकिन किसी भी तरह से यह गलत लिंक देता है स्थानीयहोस्ट: स्थानीयहोस्ट के बजाय 8000/एन/लो: 8000/लो भले ही माउस को भाषा बटन पर रखा गया हो , यह लोकहोस्ट दिखाता है: 8000/लो/लिंक। जबकि अन्य भाषा बटन (Django द्वारा समर्थित भाषाओं) ठीक काम कर रहे हैं। कोई सुझाव pls। धन्यवाद – green

+0

अब यह काम कर रहा है। ऑटो बदलते लोकहोस्ट से इसे रोकने के लिए: 8000/lo/localhost: 8000/en/lo /, मुझे अपने स्वयं के ऐप के अलावा django.conf.locale पर कस्टम भाषा जोड़नी होगी। – green

2
अपने settings.py में

जोड़ने

 
gettext = lambda s: s 


LANGUAGES = (
    ('zh_UG', gettext('Uyghur')), 
    ('en', gettext('English')), 
) 
USE_I18N = True 

रन

 

manage.py makemessages -l zh_UG 

भाषा फ़ाइलों

+3

जब मैं अपनी भाषा को Django संचालित वेबसाइट पर जोड़ रहा था, तो मुझे इसे django.conf.locale में भी जोड़ना पड़ा, अन्यथा "अज्ञात भाषा कोड" त्रुटि प्राप्त हो रही थी। –

+0

क्या यह एक उपन्यास के रूप में भी काम करेगा? यानी zh_UG zh के एक उपन्यास के रूप में देखा जाएगा? –

4

laffuste के जवाब के आधार पर। ,

import os 

PACKAGE_ROOT = os.path.abspath(os.path.dirname(__file__)) 
LOCALE_PATHS = (
    os.path.join(PACKAGE_ROOT, 'locale'), 
) 

तीसरा कदम स्थान जोड़े लोकेल निर्देशिका में परिभाषित करता है: प्रथम चरण, जोड़ने भाषा settings.py में परिभाषित:

EXTRA_LANG_INFO = { 
    'ms': { 
     'bidi': False, # right-to-left 
     'code': 'ms', 
     'name': 'Bahasa Melayu', 
     'name_local': u'Bahasa Melayu', #unicode codepoints here 
    }, 
} 

# Add custom languages not provided by Django 
import django.conf.locale 
from django.conf import global_settings 
LANG_INFO = dict(django.conf.locale.LANG_INFO.items() + EXTRA_LANG_INFO.items()) 
django.conf.locale.LANG_INFO = LANG_INFO 

# Languages using BiDi (right-to-left) layout 
global_settings.LANGUAGES = global_settings.LANGUAGES + (("ms",'Bahasa Melayu'),) 

दूसरा कदम है, settings.py में स्थान जोड़ें।

2

अगर कोई इसका सामना करता है, और स्वीकृत उत्तर का उपयोग करेगा (इसके बारे में टिप्पणियां भी देखें) और फिर भी अतिरिक्त भाषा के बजाय/en/के लिए रीडायरेक्ट होगा - आपको उस लोकेल के लिए .mo फ़ाइल बनाने की आवश्यकता है। कम से कम एक डमी एक।

Django जांचता है कि यह भाषा जांच कर वैध है कि यह .mo फ़ाइल लोड कर सकता है या नहीं। मानक भाषाओं के लिए कोई मुद्दा नहीं है क्योंकि Django को उनमें से एक समूह के साथ भेज दिया जाता है, लेकिन आपकी कस्टम भाषा के लिए यह अस्तित्व में नहीं है।

मुझे आशा है कि आपका समय बचाएगा।

+1

धन्यवाद !!! मैं पागल हो रहा था! –

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