Các nhân đạo giải pháp là tốt nếu trang web của bạn bằng tiếng Anh. Đối với các ngôn ngữ khác, bạn cần một giải pháp khác: Tôi khuyên bạn nên sử dụng Babel . Một giải pháp là tạo một thẻ mẫu tùy chỉnh để hiển thị số chính xác. Dưới đây là cách thực hiện: chỉ cần tạo tệp sau trong your_project/your_app/templatetags/sexify.py
:
# -*- coding: utf-8 -*-
from django import template
from django.utils.translation import to_locale, get_language
from babel.numbers import format_number
register = template.Library()
def sexy_number(context, number, locale = None):
if locale is None:
locale = to_locale(get_language())
return format_number(number, locale = locale)
register.simple_tag(takes_context=True)(sexy_number)
Sau đó, bạn có thể sử dụng thẻ mẫu này trong các mẫu của bạn như thế này:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Đối với người dùng người Mỹ (locale en_US), điều này sẽ hiển thị 1,234,56.
- Đối với người dùng tiếng Pháp (locale fr_FR), điều này sẽ hiển thị 1 234,56.
- ...
Tất nhiên bạn có thể sử dụng các biến thay thế:
{% sexy_number some_variable %}
Lưu ý: các context
thông số hiện chưa được sử dụng trong ví dụ của tôi, nhưng tôi đặt nó ở đó để chứng minh rằng bạn có thể dễ dàng tinh chỉnh mẫu thẻ này để làm cho nó sử dụng bất cứ điều gì đó là trong các mẫu ngữ cảnh.