我在谷歌上搜索了很多,以找到与 Django 的 en-IN
的 L10N 设置相关的问题的解决方案,但没有找到令人满意的方法。所以,终于回到这里找 friend 了。
我正在努力将货币格式化为印度数字格式化标准。 NUMBER_GROUPING = (3, 2, 0)
和 LANGUAGE_CODE = 'en-IN'
之后。
我当前的 settings.py
文件配置是:
LANGUAGE_CODE = 'en-IN'
USE_I18N = False
USE_L10N = True
USE_THOUSAND_SEPARATOR = True
NUMBER_GROUPING = (3, 2, 0)
也试过设置:
USE_I18N = True
在我使用的模板文件中:
{% load humanize %}
{# where object.price value is 524300 #}
<p>
{{ object.price }}
<!-- and -->
{{ object.price|intcomma }}
</p>
然而这输出:
524,300 而不是 5,24,300
What am I doing wrong, which is stopping Django for follow settings of
LANGUAGE_CODE
,USE_L10N
andNUMBER_GROUPING
适用于hi-IN
If I changes
LANGUAGE_CODE = 'hi-IN'
, I get expected output of formatted currency as 5,24,300. But the problem is our site is not in Hindi language but in Indian English with Hindi localization. What a mess :(
Django Docs甚至显示语言 en_IN
的示例。清楚地告诉它会按照我的预期格式化数字。但这对我不起作用。
设置 LANGUAGE_CODE = 'en_IN'
会引发错误。不接受下划线,但接受连字符。
我当前的系统区域设置如下:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_IN.UTF-8
LC_TIME=en_IN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_IN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_IN.UTF-8
LC_NAME=en_IN.UTF-8
LC_ADDRESS=en_IN.UTF-8
LC_TELEPHONE=en_IN.UTF-8
LC_MEASUREMENT=en_IN.UTF-8
LC_IDENTIFICATION=en_IN.UTF-8
LC_ALL=
任何想法或建议将不胜感激!
最佳答案
当“格式”由模板控制时,结果不仅取决于 Django 设置,还取决于系统和浏览器设置
最好的办法是将它作为预先格式化的字符串发送到 html 模板:
pip install Babel
from babel.numbers import format_currency
format_currency(524300, 'INR', locale='en_IN')
结果是 Django 和系统以及浏览器设置:
₹5,24,300.00
关于python - Django:L10N 和 en-IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62160912/