Как добавить новые языки в Django? Мой язык "Уйгур" или "Уйгур" не поддерживается в Django

Как добавить новые языки в Django? Мой язык "Уйгур" или "Уйгур" не поддерживается в Django.

Можно ли добавить новый языковой файл в моем проекте и использовать его? например: zh_UG

этот язык не поддерживается в Django.

Ответ 1

Добавьте недоступный язык в ваше приложение Django

Код языка ISO для уйгурского языка ىيغۇر تىلى - "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, **EXTRA_LANG_INFO)
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

Ответ 2

На основании ответа laffuste. Первый шаг: добавьте язык в 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:

import os

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

Третий шаг. Добавьте locale в каталог locale.

Ответ 3

в файле settings.py add

gettext = lambda s: s


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

run

manage.py makemessages -l zh_UG

для создания языковых файлов

Ответ 4

Если кто-то встретит это и будет использовать принятый ответ (также проверьте комментарии на нем) и все еще будет перенаправлять на/en/вместо дополнительного языка - вам нужно создать файл .mo для этой локали. По крайней мере, фиктивный.

Django проверяет правильность языка, проверяя, может ли он загружать файл .mo. Для стандартных языков нет проблем, потому что Django поставляется с кучей из них, но для вашего пользовательского языка он не существует.

Я надеюсь, что это сэкономит ваше время.