Функция activate
Функция activate применяется для установки текущего языка
в рамках выполнения запроса или в консольных скриптах. Она принимает
код языка в виде строки и активирует его для всех последующих операций
интернационализации, включая переводы и форматирование дат. Функция
использует механизмы потокобезопасности, что делает её пригодной для
использования в многопоточных средах.
Синтаксис
from django.utils.translation import activate
activate(language_code)
Пример
Установим русский язык для текущего запроса с помощью функции activate:
from django.utils.translation import activate
from django.utils.translation import gettext as _
# Activate Russian language
activate('ru')
# Get translated string
message = _("Hello, world!")
print(message)
Результат выполнения кода:
"Привет, мир!"
Пример
Установим язык на основе предпочтений пользователя, хранящихся в сессии:
from django.utils.translation import activate
from django.utils.translation import gettext as _
# Get user language from session
user_language = request.session.get('language', 'en')
# Activate user's language
activate(user_language)
# Get translated content
welcome = _("Welcome to our website!")
print(welcome)
Результат выполнения кода при user_language = 'fr':
"Bienvenue sur notre site Web!"
Пример
Использование функции activate в консольном скрипте для генерации
отчётов на разных языках:
from django.utils.translation import activate
from django.utils.translation import gettext as _
def generate_report(lang_code):
# Activate specific language
activate(lang_code)
# Generate report content
header = _("Sales Report")
total_label = _("Total Sales")
date_label = _("Date")
return {
'header': header,
'total_label': total_label,
'date_label': date_label
}
# Generate reports for different languages
report_en = generate_report('en')
report_ru = generate_report('ru')
print(f"English: {report_en['header']}")
print(f"Russian: {report_ru['header']}")
Результат выполнения кода:
"English: Sales Report"
"Russian: Отчёт о продажах"
Пример
Восстановление языка после его изменения с помощью функции activate:
from django.utils.translation import activate, get_language
from django.utils.translation import gettext as _
# Store current language
original_lang = get_language()
try:
# Activate new language for specific operation
activate('es')
# Do some work in Spanish
greeting = _("Hello!")
print(f"Spanish greeting: {greeting}")
finally:
# Restore original language
activate(original_lang)
# Back to original language
current_lang = get_language()
print(f"Current language after restore: {current_lang}")
Результат выполнения кода:
"Spanish greeting: ¡Hola!"
"Current language after restore: en"
Смотрите также
-
функция
deactivate,
которая деактивирует текущий язык -
функция
get_language,
которая возвращает текущий активный язык -
функция
gettext,
которая выполняет перевод строки -
функция
override,
которая временно переопределяет язык в контекстном менеджере