Функция activate

Функция activate применяется для установки текущего языка в рамках выполнения запроса или в консольных скриптах. Она принимает код языка в виде строки и активирует его для всех последующих операций интернационализации, включая переводы и форматирование дат. Функция использует механизмы потокобезопасности, что делает её пригодной для использования в многопоточных средах.

Синтаксис

pythonfrom django.utils.translation import activate

activate(language_code)

Пример

Установим русский язык для текущего запроса с помощью функции activate:

pythonfrom 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)

Результат выполнения кода:

python"Привет, мир!"

Пример

Установим язык на основе предпочтений пользователя, хранящихся в сессии:

pythonfrom 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':

python"Bienvenue sur notre site Web!"

Пример

Использование функции activate в консольном скрипте для генерации отчётов на разных языках:

pythonfrom 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']}")

Результат выполнения кода:

python"English: Sales Report"
"Russian: Отчёт о продажах"

Пример

Восстановление языка после его изменения с помощью функции activate:

pythonfrom 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}")

Результат выполнения кода:

python"Spanish greeting: ¡Hola!"
"Current language after restore: en"

Смотрите также

  • функция deactivate,
    которая деактивирует текущий язык
  • функция get_language,
    которая возвращает текущий активный язык
  • функция gettext,
    которая выполняет перевод строки
  • функция override,
    которая временно переопределяет язык в контекстном менеджере