Переводы обычно выполняются с помощью Django среды перевода . Для активных переводов используется gettext
, для ленивых переводов (переводы, которые должны быть рассчитаны при визуализации) используется gettext_lazy
. Например, вы можете перевести ваше приложение с помощью:
from django import forms
from django.db.models import Max, Min
from .models import Application, FlowRate, WaterFilterSubType, Fineness, Dirt
from .models import DirtProperties, Flange
from django.utils.translation <b>import gettext_lazy as _</b>
class InputDataWaterForm(forms.Form):
'''Application'''
choices = list(Application.objects.values_list('id','application'))
application = forms.ChoiceField(choices = choices, initial="1", label=<b>_("Specify application:")</b>)
# …
def clean(self):
cleaned_data = super(InputDataWaterForm, self).clean()
application = cleaned_data.get('application')
# …
'''OTHER CONDITIONS if not flowrate …'''
if not (flowrate or pressure or dirt or dirtproperties or
application or fineness or temperature or
flange or atex or aufstellung or ventil):
raise forms.ValidationError(<b>_('PLEASE ENTER THE REQUIRED INFO')</b>)
Для значений выбора в моделях, как указано в документации :
from django.utils.translation <b>import gettext_lazy as _</b>
class Student(models.Model):
class YearInSchool(models.TextChoices):
FRESHMAN = 'FR', <b>_('Freshman')</b>
SOPHOMORE = 'SO', <b>_('Sophomore')</b>
JUNIOR = 'JR', <b>_('Junior')</b>
SENIOR = 'SR', <b>_('Senior')</b>
GRADUATE = 'GR', <b>_('Graduate')</b>
year_in_school = models.CharField(
max_length=2,
choices=YearInSchool.choices,
default=YearInSchool.FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in {
self.YearInSchool.JUNIOR,
self.YearInSchool.SENIOR,
}
Затем вы можете выполнить команду makemessages
[Django -doc] для создания файлов перевода:
django-admin <b>makemessages</b> --locale=<i>de_DE</i>
Django сделает *.po
файлы, в которых вы можете определить переводы для определенных вами строк.
Затем вы можете использовать команду compilemessages
[Django -doc] чтобы скомпилировать эти файлы перевода в *.mo
файлы:
django-admin <b>compilemessages</b> --locale=<i>de_DE</i>