Format localization

Ikhtisar

Django's formatting system is capable of displaying dates, times and numbers in templates using the format specified for the current locale. It also handles localized input in forms.

Ketika itu diadakan, dua pengguna mengakses isi sama mungkin melihat tanggal, waktu dan ang berbentuk dalam cara berbeda, tergantung pada bentuk untuk lokal saat ini.

Sistem pembentukan ditiadakan secara awalan. Untuk mengadakan itu, itu diperlukan untuk mengatur USE_L10N = True 1 dalam berkas pengaturan anda.

Catatan

Berkas settings.py awalan dibuat oleh django-admin startproject 1 menyertakan USE_L10N = True 2 untuk kenyamanan. Catat, bagaimanapun, bahwa untuk mengadakan sejumlah pembentukan dengan pemisah ribuan itu diperlukan menyetel USE_THOUSAND_SEPARATOR = True 3 dalam berkas pengaturan anda. Cara lain, anda dapat menggunakan intcomma untuk membentuk sejumlah dalam cetakan anda.

Catatan

Ada juga berdiri sendiri tetapi terkait pengaturan USE_I18N yang mengendalikan jika Django harus aktif terjemahan. Lihat Terjemahan untuk rincian lebih.

Locale aware input in forms

Ketika pembentukan diadakan, Django menggunakan bentuk lokalisasi ketika mengurai tanggal, waktu dan sejumlah dalam formulir. Itu berarti itu mencoba bentuk berbeda untuk lokal-lokal berbeda ketika menebak bentuk digunakan oleh pengguna ketika memasukkan data pada formulir.

Catatan

Django menggunakan bentuk-bentuk berbeda untuk menampilkan data pada itu digunakan untuk mengurai data. Kebanyakan terutama, bentuk-bentuk untuk mengurai tanggal tidak dapat menggunakan %a (nama hari kerja disingkat), %A (nama hari kerja penuh), %b (nama bulan disingkat), %B (nama bulan penuh), atau %p (AM/PM).

Untuk mengadakan bidang formulir untuk melokalkan data masukan dan keluaran cukup gunakan argumen localize:

class CashRegisterForm(forms.Form):
   product = forms.CharField()
   revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)

Mengendalikan lokalisasi dalam cetakan-cetakan

Ketika anda mengadakan pembentukan dengan USE_L10N, Django akan mencoba menggunakan bentuk khusus lokal kapanpun itu mengeluarkan sebuah nilai dalam sebuah cetakan.

Bagaimanapun, itu mungkin tidak selalu sesuai untuk menggunakan nilai-nilai lokal -- sebagai contoh, jika anda sedang mengeluarkan JavaScript atau XML yang dirancang untuk menjadi dapat-dibaca-mesin, anda akan selalu ingin nilai-nilai tidak terlokalisasi. Anda mungkin ingin juga menggunakan lokalisasi dalam cetakan-cetakan terpilih, daripada menggunakan lokalisasi dimanapun,

Untuk mengizinkan pengendalian baik terhadap penggunaan lokalisasi, Django menyediakan pustaka cetakan l10n yang mengandung etiket-etiket dan penyaring-penyaring berikut

Etiket cetakan

localize

Mengadakan atau meniadakan lokalisasi dari variabel-variabel cetakan dalam blok terkandung.

Etiket ini mengizinkan pengendalian berkurai baik dari lokalisasi daripada USE_L10N.

Untuk mengaktifkan atau menonaktifkan lokalisasi untuk sebuah blok cetakan, gunakan:

{% load l10n %}

{% localize on %}
    {{ value }}
{% endlocalize %}

{% localize off %}
    {{ value }}
{% endlocalize %}

Catatan

Nilai dari USE_L10N tidak dihormati dalam dari blok {% localize %}.

Lihat localize dan unlocalize untuk penyaring cetakan yang akan melakukan pekerjaan sama pada dasar per-variabel.

Filter templat

localize

memaksa lokalisasi pada sebuah nilai tunggal.

Sebagai contoh:

{% load l10n %}

{{ value|localize }}

Untuk meniadakan lokalisasi pada sebuah nilai tunggal, gunakan unlocalize. Untuk mengendalikan lokalisasi terhadap bagian besar dari sebuah cetakan, gunakan etiket cetakan localize.

unlocalize

Memaksa sebuah nilai tunggal untuk dicetak tanpa lokalisasi.

Sebagai contoh:

{% load l10n %}

{{ value|unlocalize }}

Untuk memaksa lokalisasi pada sebuah nilai tunggal, gunakan localize. Untuk mengendalikan lokalisasi terhadap bagian besar dari sebuah cetakan, gunakan etiket cetakan localize.

Membuat berkas bentuk disesuaikan

Django menyediakan pengertian bentuk untuk banyak lokal-lokal, tetapi terkadang anda mungkin ingin membuat anda sendiri, karena berkas-berkas bentuk tidak ada untuk lokal anda, atau karena anda ingin menimpa beberapa dari nilai-nilai.

Untuk menggunakan bentuk penyesuaian, tentukan jalur dimana anda akan menempatkan berkas-berkas bentuk dahulu. Untuk melakukan itu, cukup setel pengaturan FORMAT_MODULE_PATH anda pada paket dimana berkas-berkas bentuk akan ada, sebagai contoh:

FORMAT_MODULE_PATH = [
    'mysite.formats',
    'some_app.formats',
]

Berkas-berkas tidak ditempatkan langsung dalam direktori ini, tetapi dalam sebuah direktori bernama seperti lokal, dan harus dinamai formats.py. Waspadalah tidak menaruh informasi sensitif dalam berkas-berkas ini didalam dapat dikeluarkan jika anda melewatkan string django.utils.formats.get_format() (digunakan oleh penyaring cetakan date).

Untuk menyesuaikan bentuk Inggris, sebuah struktur seperti ini akan diperlukan:

mysite/
    formats/
        __init__.py
        en/
            __init__.py
            formats.py

Selagi formats.py mengandung pengertian bentuk penyesuaian. Sebagai contoh:

THOUSAND_SEPARATOR = '\xa0'

to use a non-breaking space (Unicode 00A0) as a thousand separator, instead of the default for English, a comma.

Batasan-batasan dari bentuk lokal disediakan.

Some locales use context-sensitive formats for numbers, which Django's localization system cannot handle automatically.

Swis (Jerman)

The Swiss number formatting depends on the type of number that is being formatted. For monetary values, a comma is used as the thousand separator and a decimal point for the decimal separator. For all other numbers, a comma is used as decimal separator and a space as thousand separator. The locale format provided by Django uses the generic separators, a comma for decimal and a space for thousand separators.

Back to Top