Python Django Формат Локализация
Я создал пользовательские файлы формата в моем проекте django. см: https://docs.djangoproject.com/en/4.0/topics/i18n/formatting/#creating-custom-format-files
Я создал свои файлы формата для моего проекта, как указано в ссылке. И у меня есть форматный файл для всех языков, которые будут использоваться в моем проекте. В зависимости от языка пользователя, соответствующий файл формата автоматически вызывается django.
Могу ли я вызвать здесь определения на основе языка пользователя? Если я смогу вызвать мои определения, мои методы автоматического преобразования будут готовы.
Ваше мнение очень ценно для меня, спасибо.
formats/tr/formats.py:
DATE_FORMAT = 'd F Y'
TIME_FORMAT = 'H:i:s'
STR_DATE_FORMAT = "%d.%m.%Y"
STR_DATE_SQL_FORMAT = "%Y-%m-%d"
STR_DATETIME_FORMAT = "%d.%m.%Y %H:%M:%S"
STR_TIME_FORMAT = "%H:%M:%S"
DATE_INPUT_FORMATS = (
'%d.%m.%Y', # '25.10.2022', '25.10.06'
'%d/%m/%Y', # '25/10/2022'
# '%d %B %Y', '%d %b. %Y', # '25 Ekim 2022', '25 Eki. 2022'
)
DATETIME_INPUT_FORMATS = (
'%d.%m.%Y %H:%M:%S', # '25.10.2022 14:30:59'
'%d.%m.%Y %H:%M:%S.%f', # '25.10.2022 14:30:59.000200'
'%d.%m.%Y %H:%M', # '25.10.2022 14:30'
'%d.%m.%Y', # '25.10.2022'
)
converts/datetime.py:
class DateTime:
from formats.tr import formats as ff
def __init__(self):
from formats.en import formats as ff
if a == "tr":
from formats.tr import formats as ff
else:
from formats.en import formats as ff
@classmethod
def to_string(cls, tarih, date_format=ff.STR_DATE_FORMAT, time_format=ff.STR_TIME_FORMAT):
"""
:param tarih:
:return:
"""
if isinstance(tarih, datetime.datetime):
return tarih.strftime("%s %s" % (date_format, time_format))
elif isinstance(tarih, datetime.date):
return tarih.strftime(date_format)
elif isinstance(tarih, datetime.time):
return tarih.strftime(time_format)
@classmethod
def to_datetime(cls, tarih, dtformat=ff.STR_DATETIME_FORMAT):
"""
:param tarih:
:return:
"""
try:
from dateutil.parser import parse
# print "%s == %s" % (tarih, parse(tarih))
# return parse(tarih)
return datetime.datetime.strptime(tarih, dtformat)
except ValueError:
zaman = "%s %s" % (tarih, "00:00:00")
return datetime.datetime.strptime(zaman, dtformat)
Для меня было бы нелепо вызывать подобное в методе datetime.py init. Должен быть более логичный способ сделать это. Но как?