เมตตาแก้ปัญหาคือดีถ้าเว็บไซต์ของคุณในภาษาอังกฤษ สำหรับภาษาอื่น ๆ ที่คุณต้องแก้ไขปัญหาอื่น: ผมขอแนะนำให้ใช้Babel ทางออกหนึ่งคือการสร้างแท็กแม่แบบกำหนดเองเพื่อแสดงหมายเลขอย่างถูกต้อง นี่คือวิธี: เพียงสร้างไฟล์ต่อไปนี้ใน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)
จากนั้นคุณสามารถใช้เทมเพลตแท็กนี้ในเทมเพลตของคุณดังนี้:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- สำหรับผู้ใช้ชาวอเมริกัน (locale en_US) แสดงเป็น 1,234.56
- สำหรับผู้ใช้ภาษาฝรั่งเศส (locale fr_FR) จะแสดง 1 234,56
- ...
แน่นอนคุณสามารถใช้ตัวแปรแทน:
{% sexy_number some_variable %}
หมายเหตุ:context
พารามิเตอร์ในปัจจุบันไม่ได้ใช้ในตัวอย่างของฉัน แต่ฉันทำให้มันมีการแสดงให้เห็นว่าคุณสามารถปรับแต่งแท็กแม่แบบนี้จะทำให้มันใช้อะไรว่าในบริบทแม่แบบ