2012-10-18 15 views
10

jak dodać nowe języki do Django? Mój język "Uyghur" lub "Uighur" nie jest obsługiwany w Django.jak dodać nowe języki do Django? Mój język "Uyghur" lub "Uighur" nie jest obsługiwany w Django

Czy mogę dodać plik locale nowego języka do mojego projektu i używać go? Na przykład: zh_UG

ten język nie jest obsługiwany w Django.

+1

Myślę, że możesz przyczynić się do jego repozytorium. Srart nawraca teraz. – Amareswar

+0

Dzięki. Myślę, że to właściwa odpowiedź. – Rehmetjan

Odpowiedz

14

dodać non available język aplikacji Django

języka ISO kod Uighur ئۇيغۇر تىل ى to "ug".

W swojej 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",) 

I:

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

Poszłam za odpowiedzią powyżej. Teraz przestaje narzekać na nowy język (np. "Lo"), który dodałem, ale w jakiś sposób podaje niepoprawny link localhost: 8000/en/lo zamiast localhost: 8000/lo mimo że mysz jest zawieszona nad przyciskiem języka , pokazuje localhost: 8000/lo/link. Podczas gdy inne przyciski językowe (języki obsługiwane przez Django) działają poprawnie. Wszelkie sugestie pls. Dziękujemy – green

+0

Teraz działa. Aby zatrzymać go przed automatyczną zmianą localhost: 8000/lo/na localhost: 8000/en/lo /, muszę dodać niestandardowy język do django.conf.locale również poza moją własną aplikacją. – green

2

w settings.py dodać

 
gettext = lambda s: s 


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

run

 

manage.py makemessages -l zh_UG 

do tworzenia plików językowych

+3

Kiedy dodawałem swój język do strony z Django, musiałem dodać ją do django.conf.locale, w przeciwnym razie pojawił się błąd "Nieznany kod języka". –

+0

Czy to również będzie działało jako podjęzyk? np. czy zh_UG będzie postrzegany jako podhangaż zh? –

4

podstawie odpowiedzi laffuste użytkownika. Pierwszy krok, dodać język określić w 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'),) 

drugim etapie Dodaj locale w settings.py:

import os 

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

trzecim etapie Dodaj locale określa w katalogu locale.

2

Jeśli ktoś napotka na to i użyje zaakceptowanej odpowiedzi (również sprawdź komentarze na niej) i nadal będzie przekierowywał do/en/zamiast dodatkowego języka - musisz utworzyć plik .mo dla tego ustawienia narodowego. Przynajmniej fikcyjny.

Django sprawdza, czy język jest poprawny, sprawdzając, czy może załadować plik .mo. Nie ma problemu ze standardowymi językami, ponieważ Django jest dostarczany z wieloma wersjami, ale dla twojego niestandardowego języka nie istnieje.

Mam nadzieję, że zaoszczędzi to Twój czas.

+1

Dzięki! Szaleję! –