首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django: L10N和en-IN

Django: L10N和en-IN
EN

Stack Overflow用户
提问于 2020-06-02 20:30:54
回答 3查看 946关注 0票数 3

我在谷歌上搜索了很多解决方案,以解决与Django的L10N en-IN设置相关的问题,但没有找到令人满意的解决方案。所以,终于回来找朋友了。

我正在努力将货币格式化为印度数字格式标准。然后是NUMBER_GROUPING = (3, 2, 0)LANGUAGE_CODE = 'en-IN'

我当前的settings.py文件配置是:

代码语言:javascript
复制
LANGUAGE_CODE = 'en-IN'
USE_I18N = False
USE_L10N = True
USE_THOUSAND_SEPARATOR = True
NUMBER_GROUPING = (3, 2, 0)

也尝试过设置:

代码语言:javascript
复制
USE_I18N = True

在模板文件中,我使用:

代码语言:javascript
复制
{% load humanize %}
{# where object.price value is 524300 #}
<p>
{{ object.price }}
<!-- and -->
{{ object.price|intcomma }}
</p>

然而,这一产出是:

524,300代替5,24,300

我做错了什么,它阻止Django跟踪LANGUAGE_CODEUSE_L10NNUMBER_GROUPING的设置

它适用于hi-IN

如果我更改LANGUAGE_CODE = 'hi-IN',就会得到预期的格式化货币输出为5,24,300。但问题是,我们的网站不是印地语,语言,而是,印第安英语,印地语,本地化。真乱:(

Django Docs甚至显示了语言en_IN的示例。这清楚地告诉它会像我预料的那样格式化数字。但这对我不起作用。

设置LANGUAGE_CODE = 'en_IN'抛出错误。不要接受下划线,而是连字符。

我的当前系统区域设置如下:

代码语言:javascript
复制
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=

任何想法或建议都会得到真正的感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-13 19:36:20

我使用Django为L10N定制的格式文件解决了这个问题。

我深入研究文档,找到了,解决了我的问题。

因此,我的新版本在这里解决了我的查询,即使不更改LANGUAGE_CODE

我目前的mysite/settings.py是:

代码语言:javascript
复制
USE_I18N = False
USE_L10N = True

FORMAT_MODULE_PATH = [
    'mysite.formats'
]

而树状结构的格式是:

代码语言:javascript
复制
./mysite/formats/
|- __init__.py
|- en/
   |- __init__.py
   |- formats.py
代码语言:javascript
复制
# formats.py
USE_THOUSAND_SEPARATOR = True
NUMBER_GROUPING = (3, 2, 0)

而且起作用了!

票数 2
EN

Stack Overflow用户

发布于 2020-06-12 18:09:20

当“格式”由模板控制时,结果不仅取决于Django设置,还取决于系统和浏览器设置。

最好的方法是将它作为预先格式化的字符串发送到html模板:

代码语言:javascript
复制
pip install Babel

from babel.numbers import format_currency
format_currency(524300, 'INR', locale='en_IN')

结果什么是Django以及系统和浏览器设置:

代码语言:javascript
复制
₹5,24,300.00
票数 2
EN

Stack Overflow用户

发布于 2022-09-17 13:09:02

在你的settings.py

代码语言:javascript
复制
USE_L10N = True # or False

FORMAT_MODULE_PATH = [
    'my_project.formats'
]

USE_THOUSAND_SEPARATOR = True #this line must be present in settings

创建formats.py,如

代码语言:javascript
复制
› my_project/
  › formats/
    › en/
       __init__.py
       formats.py
    __init__.py

formats.py中,

代码语言:javascript
复制
NUMBER_GROUPING = (3, 2, 0)

参考文献,https://docs.djangoproject.com/en/4.1/topics/i18n/formatting/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62160912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档