pip install django-modeltranslation
- Add
'modeltranslation'
toINSTALLED_APPS
- In settings file we have to set
USE_I18N = True
- Add these codes to
settings.py
MODELTRANSLATION_DEFAULT_LANGUAGE = "en-us"
MODELTRANSLATION_LANGUAGES = ("en-us", "uz", "ru")
MODELTRANSLATION_FALLBACK_LANGUAGES = ("en-us", "uz", "ru")
def gettext(s):
return s
LANGUAGES = (
("en-us", gettext("English")),
("ru", gettext("Русский")),
("uz", gettext("O'zbekcha")),
)
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)
- Create
translation.py
in the app in which we are storing themodels.py
- Add these codes to
translation.py
from modeltranslation.translator import translator, TranslationOptions
from .models import Person
# for Person model
class PersonTranslationOptions(TranslationOptions):
fields = ('name', 'surname', 'profession')
translator.register(Person, PersonTranslationOptions)
- Make migrations and migrate
python manage.py makemigrations
python manage.py migrate
- Add to Middleware in
settings.py
'django.middleware.locale.LocaleMiddleware',
- Add to
urls.py
from django.conf.urls.i18n import i18n_patterns
urlpatterns = [
path("i18n/", include("django.conf.urls.i18n")),
]
urlpatterns += i18n_patterns(path("admin/", admin.site.urls))
- Create makemesages and compilemessages
python manage.py makemessages -l uz --ignore=venv
python manage.py makemessages -l ru --ignore=venv
python manage.py compilemessages