Я формально построил функцию в моем models.py
файле:
from datetime import datetime
from django.template.defaultfilters import date as datefilter
from django.utils import translation
def date_customerprofile(language):
now_ = datetime.today()
if language == 'English':
translation.activate('en')
return datefilter(now_, 'l, F j, Y')
else:
translation.activate('fr')
return datefilter(now_, 'l, j F Y')
Я знаю, что язык шаблонов Django НЕ Python, поэтому мы не можем написать {{ customer.date_customerprofile('French') }}
.
Решение здесь состоит в том, чтобы создать собственный тег шаблона. Также обратите внимание, что translation.activate
изменит активный язык для оставшейся части цикла запроса/ответа — использование диспетчера контекста translation.override
, безусловно, является лучшей идеей. Поскольку я не эксперт по тегам шаблонов, может ли кто-нибудь показать мне, как я могу создать его с учетом вышеуказанной функции?
Я думаю, что мы могли бы использовать следующий вопрос, чтобы сделать такую вещь Как форматировать дату в разных языки?
Могу ли я использовать менеджер контекста: Переключение Django, для блока кода, переключить язык, чтобы переводы выполнялись на одном языке?
Спасибо!
На самом деле, я хотел бы вернуть в шаблоне текущую дату на французском языке «Jeudi, 30 mars 2017» или текущую дату на английском языке Thursday, March 30, 2017
.
P.S. Пожалуйста, сообщите мне, если вопрос не ясен.
Это пример шаблона Джанго:
{% load i18n %}
{% load date %}
{{ customer.civil_title }}{{ user.get_full_name }}
{{ customer.civic_number }}, {{ customer.street }}
{{ customer.rough_location }}
{# customer. date_customerprofile('English') #}
7 DAYS NOTICE
Subject: Overdue account with ...
Client id : {{ customer.id }}
Hello {{ customer.civil_title }}{{ user.get_full_name }},
This notice serves to inform you that your payments with Gestion Multi Finance Inc. are pending. Your file has been transferred to our collection service. The balance of your loan is now: {{ customer.current_balance }}.
We are asking you to communicate with us without delay, by phone at: 1-855-... ext. 324 or by email at: ... to find a payment solution in order to regulate your situation. If this does not happen, we will be forced to send you a notice of acceleration of the process and transfer your file to our judiciary collection service, with authority to take the necessary steps in the collection process. These steps can include the seizure of salary, but we prefer to avoid these measures.
Also, it is important to remember that at the time of the loan, you signed a contract in which you agreed to respect the payments. Unfortunately, you have no respected this agreement.
Ignore this notice if an agreement has already been reached.
Cordially,
{{ email.footer.txt }}