{{forloop.counter}} をペルシャ語またはヒンディー語のエンコーディングで印刷したいのは、「1 2 3 4 ...」ではなく「۱ ۲ ۳ ۴ ..」を意味します。いろいろ検索しましたが、関連する機能が見つかりませんでした。手伝ってくれませんか?
よろしく
{{forloop.counter}} をペルシャ語またはヒンディー語のエンコーディングで印刷したいのは、「1 2 3 4 ...」ではなく「۱ ۲ ۳ ۴ ..」を意味します。いろいろ検索しましたが、関連する機能が見つかりませんでした。手伝ってくれませんか?
よろしく
カスタム テンプレート フィルターを使用できます。私は、Django の l10n ライブラリがあなたのためにこれを行っているかどうかを知るのに十分ではありません。
def devanagari_int(arabic_int):
""" Converts an arabic numeral (ex. 5817) to Devanagari (ex. ५८१७) """
devanagari_nums = ('०','१','२','३','४','५','६','७','८','९')
# arabic_nums = ('۰','١','۲'....)
# farsi_nums = (...)
number = str(arabic_int)
return ''.join(devanagari_nums[int(digit)] for digit in number)
# register your filter, and then:
{{forloop.counter|devanagari_int}}
フィルター ファイルを必ず UTF-8 として保存してください (または、代わりに適切な Unicode 表現を使用してください)。
数値を適切なエンコーディングに変換するtemplatefilterを作成できます。その後、次のように使用できます。
{{ forloop.counter|convert_to_hindi }}
独自のカスタム テンプレート タグを作成できます。
そのためには、アプリの名前が「myapp」であると仮定して、次のファイルを作成する必要があります。
myapp/
__init__.py
models.py
templatetags/
__init__.py
extra_tags.py
views.py
次に、ファイルに次のコードを追加しますextra_tags.py
from django import template
register = template.Library()
@register.filter(name='persianize_digits')
def persian_int(string):
persianize = dict(zip("0123456789",'۰۱۲۳۴۵۶۷۸۹'))
return ''.join(persianize[digit] if digit in persianize else digit for digit in str(string))
{{ value|persianize_digits }}
これで、テンプレートで簡単に行うことができ、数字がペルシア語になります. このメソッドは、全体としては数字ではなく、数字が含まれる文字列 (10:27:33
時間など) に対しても機能します。
django国際化を使用できますライブラリl10nがdjangoで定義されています
これは私が英語の数字をペルシャの数字に変えるのに役立ちました
from django import template
register = template.Library()
@register.filter(name='persian_int')
def persian_int(english_int):
persian_nums = {'0':'۰', '1':'۱', '2':'۲', '3':'۳', '4':'۴', '5':'۵', '6':'۶', '7':'۷', '8':'۸', '9':'۹'}
number = str(english_int)
persian_dict = number.maketrans(persian_nums)
result = number.translate(persian_dict)
return result