6

{{forloop.counter}} をペルシャ語またはヒンディー語のエンコーディングで印刷したいのは、「1 2 3 4 ...」ではなく「۱ ۲ ۳ ۴ ..」を意味します。いろいろ検索しましたが、関連する機能が見つかりませんでした。手伝ってくれませんか?

よろしく

4

7 に答える 7

6

カスタム テンプレート フィルターを使用できます。私は、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 表現を使用してください)。

于 2012-08-24T06:27:56.403 に答える
2

数値を適切なエンコーディングに変換するtemplatefilterを作成できます。その後、次のように使用できます。

{{ forloop.counter|convert_to_hindi }}
于 2012-08-23T12:31:24.133 に答える
1

独自のカスタム テンプレート タグを作成できます。

そのためには、アプリの名前が「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時間など) に対しても機能します。

于 2019-02-18T18:31:11.573 に答える
1

django国際化を使用できますライブラリl10nがdjangoで定義されています

于 2012-08-23T12:48:35.267 に答える
0

これは私が英語の数字をペルシャの数字に変えるのに役立ちました

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
于 2020-11-22T12:35:28.990 に答える