İnsanileştirmek web sitesi İngilizce olarak ise çözüm gayet iyi. Diğer diller için başka bir çözüme ihtiyacınız var: Babel kullanmanızı tavsiye ederim . Bir çözüm, sayıları düzgün bir şekilde görüntülemek için özel bir şablon etiketi oluşturmaktır. Bunu nasıl yapacağınız aşağıda açıklanmıştır 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)
Ardından bu şablon etiketini şablonlarınızda şu şekilde kullanabilirsiniz:
{% load sexy_number from sexify %}
{% sexy_number 1234.56 %}
- Amerikalı bir kullanıcı için (locale en_US) bu 1.234.56 değerini görüntüler.
- Fransız bir kullanıcı için (yerel ayar fr_FR), bu 1 234,56 görüntüler.
- ...
Elbette bunun yerine değişkenleri kullanabilirsiniz:
{% sexy_number some_variable %}
Not:context
Parametre anda benim örnekte kullanılan, ama bunu kolaylıkla şablon bağlamında olan her şeyi kullanmak için bu şablon etiketini çimdik orada göstermek koymak değildir.