Peringatan apa yang harus saya perhatikan saat mencari nomor di aplikasi front-end saya?
Contoh: Dalam bahasa Portugis Brasil (pt-BR) kami membagi ribuan dengan titik dan desimal dengan koma. Dalam US English (en-US) itu yang sebaliknya. Di pt-BR kami menyajikan angka yang dipisahkan oleh ribuan, sama dengan en-AS. Tetapi membaca tentang Bahasa Inggris India (id-IN) hari ini saya menemukan permata ini:
Sistem penomoran India lebih disukai untuk pengelompokan digit. Ketika ditulis dalam kata-kata, atau ketika diucapkan, angka kurang dari 100.000 / 100.000 diekspresikan sama seperti mereka dalam Bahasa Inggris Standar. Angka-angka termasuk dan melampaui 100.000 / 100.000 diekspresikan dalam subset dari sistem penomoran India.
https://en.wikipedia.org/wiki/Indian_English#Numbering_system
Yang berarti:
1000000 units in pt-BR are formatted 1.000.000
1000000 units in en-US are formatted 1,000,000
1000000 units in en-IN are formatted 10,00,000
Selain koma dan titik dan pemisah khusus lainnya, tampaknya masking juga menjadi perhatian yang valid.
Peringatan apa lagi yang harus saya perhatikan saat mencari nomor di aplikasi front-end saya? Khususnya jika saya menunjukkan angka ke rangkaian karakter non-latin?
Jawaban:
Sebagian besar bahasa dan kerangka kerja pemrograman sudah memiliki mekanisme kerja yang masuk akal yang dapat Anda gunakan untuk ini.
Sebagai contoh, ekosistem C # memiliki namespace System.Globalization , yang memungkinkan Anda menentukan yang
Culture
Anda inginkan:Ini bukan sesuatu yang ingin Anda ciptakan kembali. Gunakan fitur internasionalisasi yang disediakan oleh bahasa atau kerangka kerja favorit Anda.
sumber
,
dalam format string sebagian besar tidak relevan dan "#, 0,00" akan memiliki efek yang sama.,
hanya berarti "menggunakan pemisah grup angka dengan cara yang ditentukan oleh lokal".Beberapa jawaban yang bagus sudah ada di sini, tetapi mereka tidak menyebutkan satu hal yang saya pikir penting untuk tidak dilupakan: pastikan di mana pun terjadi pemformatan angka, jelas (atau dapat dikontrol) untuk apa output digunakan:
ketika itu untuk antarmuka pengguna, pemformatan lokal harus diterapkan
ketika nomor akan ditulis ke file, atau dikirim melalui jaringan, atau bentuk lain di mana nomor tersebut diperlukan dalam bentuk yang dapat dibaca mesin , pastikan itu tidak diformat sesuai dengan budaya saat ini, tetapi sesuai dengan pengaturan tetap (misalnya, di lingkungan .NET, gunakan
InvariantCulture
).Kalau tidak, Anda mendapatkan masalah ketika angka ditulis atau dikirim menggunakan budaya A, dan membaca atau diterima menggunakan budaya B.
Menurut pengalaman saya, ini adalah salah satu rintangan terbesar dalam melakukan pelokalan angka yang tepat: dalam upaya memusatkan pemformatan dan konversi angka, orang-orang mulai membuat fungsi umum yang dapat digunakan kembali untuk pemformatan, dan kemudian mulai menggunakannya di seluruh tempat. Namun, segera setelah seseorang membutuhkan angka-angka juga dalam format string yang dapat dibaca mesin di tempat lain dalam program ini, diperlukan dua varian: format lokal dan non-lokal. Ini menimbulkan risiko tinggi untuk menggabungkan dua bentuk konversi (terutama ketika pengembang dan mesin pengujian memiliki pengaturan lokal default yang mirip dengan pengaturan "tetap" yang digunakan untuk pemformatan non-UI, tetapi sebagian basis pengguna belum).
Tambahan: masalah ini dapat menjadi benar-benar buruk dalam situasi di mana tidak jelas sebelumnya apakah nomor tersebut akan diproses oleh mesin, atau oleh manusia (atau keduanya) nanti. Misalnya, sebagai bagian dari output file log. Dalam kasus seperti itu, mungkin yang terbaik adalah tetap menggunakan standar "netral" untuk tidak menggunakan pemisah kecuali titik sebagai pemisah desimal.
sumber
Pelokalan yang tepat cukup sulit. Sebagian besar ekosistem pemrograman mencoba mencari solusi untuk pelokalan, tetapi menurut pengalaman saya, semuanya kurang lebih rusak. Karena itu saya akan menyarankan:
Jangan mencoba mengotomatiskan pelokalan. Itu tidak akan selalu berhasil. Sulit bagi Anda untuk menemukan masalah, dan membuat frustrasi bagi pengguna Anda.
Konsisten: jangan mencampur bahasa yang berbeda dan konvensi pemformatan, misalnya pemisah desimal gaya Brasil dalam teks bahasa Inggris.
Secara eksplisit mendukung serangkaian lokal yang diberikan. Bekerja sama dengan penerjemah Anda untuk mengetahui pemformatan yang tepat untuk tanggal dan angka. Anda mungkin akan akhirnya membuat perangkat lokalisasi Anda sendiri, meskipun sebagian besar (tetapi tidak semua) masalah dapat didelegasikan ke perpustakaan yang ada.
Buat pilihan pemformatan sederhana yang dapat dikonfigurasi oleh setiap pengguna: format untuk tanggal dan waktu, pemisah desimal, mata uang pilihan,…. Ini sangat berguna untuk pelancong, ekspatriat, atau orang lain yang perlu mencampur beberapa lokal atau budaya secara terpisah dari bahasa.
sumber
Pertimbangan penting: Anda harus memutuskan berapa banyak yang cukup. Karena jika Anda turun ke lubang kelinci untuk mencoba melokalisasi dengan sempurna, itu akan menjadi semakin kompleks.
Ambil label khas seperti "Anda telah memilih n item." Ini terbaca salah jika hanya ada satu item yang dipilih. Solusi jelek tapi pragmatis adalah menulis "Anda telah memilih n item." Tetapi jika Anda ingin melakukannya dengan benar, Anda memerlukan dua teks berbeda tergantung pada n. Jika Anda mencoba melakukan ini di banyak lokal, itu akan menjadi sangat rumit, karena berbagai bahasa memiliki tata bahasa yang berbeda. Beberapa bahasa memiliki konjugasi berbeda untuk satu, dua, dan banyak item dan sebagainya. Untuk alasan ini orang yang tahu akan selalu mengeluh bahwa kerangka kerja lokalisasi yang ada tidak cukup.
Tetapi Anda harus memilih pertempuran Anda, dan memutuskan tingkat kecanggihan apa yang cukup. Untuk banyak tujuan, perpustakaan pelokalan standar untuk memformat angka dan tanggal harus memadai.
sumber
Anda tidak dapat menyadari semua peringatan bahasa. Anda berbicara tentang angka, tetapi ada bentuk jamak, jenis kelamin, susunan. Anda perlu tahu bahwa mereka ada dan bergantung pada pekerjaan ekstensif yang dilakukan oleh orang lain, terutama proyek ICU dan CLDR.
Sebagian besar bahasa modern menerapkan beberapa atau semua fitur dari proyek ini, tetapi meskipun tidak, membaca tentang proyek ini akan memberi Anda ide yang baik tentang apa yang harus dicari.
http://site.icu-project.org
http://cldr.unicode.org
Memperbarui
Alat survei CLDR menyediakan akses ke semua pola. Itu akan menunjukkan kepada Anda bagaimana memformat angka dalam bahasa dan wilayah tertentu. Misalnya, bahasa Portugis (Portugal):
http://st.unicode.org/cldr-apps/v#/pt_PT/Number_Formatting_Patterns/
Dan jika Anda benar-benar ingin memeriksa semua data (dan mungkin menggunakannya), Anda dapat mengunduh CLDR dalam format JSON dari GitHub:
https://github.com/unicode-cldr/cldr-json#cldr-json
Info lebih lanjut tentang unduhan di sini:
http://cldr.unicode.org/index/downloads
sumber
Yah, sementara saya senang dengan semua jawaban di sini, saya tidak benar-benar puas dengan masing-masing secara terpisah untuk menandai satu sebagai jawaban yang benar.
Sejauh ini yang harus kita waspadai saat melokalkan angka:
Untuk manusia :
Untuk komputer :
Untuk pengembang :
sumber