Apa kasus penggunaan yang valid untuk menginternasionalkan log? Terutama, apakah ada kegunaan yang masuk akal untuk aplikasi web.
Saya sedang mengerjakan konversi log logging yang digunakan oleh aplikasi web dari log4j
ke slf4j
, dan memperhatikan bahwa antarmuka yang digunakan untuk abstrak atas log4j
implementasi mendukung internasionalisasi; Saya juga melihat bahwa kedua log4j
dan slf4j
dukungan internasionalisasi, yang berarti harus berguna untuk seseorang.
Sekarang, internasionalisasi mungkin berguna ketika memprogram aplikasi desktop, di mana log dapat dilihat oleh pengguna akhir, tetapi fasad logging ini hanya digunakan di sisi server untuk beberapa aplikasi web, oleh pengembang yang diharuskan menggunakan bahasa Inggris secara umum. .
Jawaban:
Jawaban yang diberikan di sini terlalu terikat pada sudut pandang pengembang. Namun, perangkat lunak dibuat untuk digunakan (dan dibaca) oleh manusia (pengguna) yang sebagian besar dari mereka tidak tahu tentang debugging, pola log, standar, dll ...
Katakanlah kita memiliki produk yang mencatat aktivitasnya pada level yang berbeda. Diperlukan produk untuk memiliki dasbor atau panel kontrol di mana pengguna dapat memantau aktivitas. Karena itu, jejak log harus dapat dibaca oleh pengguna, bukan pengembang atau teknisi .
Apalagi, pengguna bisa dari lokasi yang berbeda. Apa artinya, bahwa format tanggal log, simbol numerik dan mata uang, dll harus sesuai dengan lokasi pengguna.
Dalam situasi seperti itu, mengapa log tidak boleh dilokalisasi?
Meskipun benar bahwa log harus dapat dibaca mesin, tidak ada yang mencegah kita dari menerapkan proses pencatatan paralel yang sedikit lebih ramah pengguna.
Saya setuju dengan bahasa Inggris sebagai bahasa standar untuk log. Tetapi semua "standar" semacam ini adalah Standar De Facto . Jadi pada titik ini, kita harus fleksibel.
Yang sedang berkata, jika Anda menemukan alasan yang baik untuk menggunakan fitur pelokalan slog4j, silakan. Itu dibuat untuk alasan yang bagus.
Salah satu alasan ini mungkin karena aplikasi hari ini berjalan pada konteks dunia, dan tidak semua orang berbicara / membaca / menulis bahasa Anda (atau bahasa Inggris). Mungkin, bahkan helpdesk produk Anda tidak.
sumber
Ketika pengembang berbicara tentang "log", mereka paling sering merujuk pada file teks biasa yang berisi informasi yang tidak berarti di luar konteks kode tertentu yang mencatatnya dan tidak memiliki tujuan selain memecahkan masalah kode itu ketika terjadi kesalahan.
Ketika pengembang berbicara tentang "internasionalisasi", mereka paling sering berarti "ketika pengguna adalah penutur bahasa X menggunakan string yang diterjemahkan ke bahasa X alih-alih string default".
Dengan definisi-definisi spesifik itu, log-log yang diinternasionalkan hampir selalu merupakan ide yang buruk , karena:
Biasanya, rangkaian bahasa yang dapat digunakan oleh semua pengembang Anda dengan lancar jauh lebih kecil daripada serangkaian bahasa yang mungkin digunakan oleh pengguna mana pun yang menggunakan bahasa asli. Oleh karena itu, jika Anda menginternasionalkan log, kemungkinan besar pengembang Anda tidak akan tidak bisa memahaminya.
Biasanya, sebagian besar pengguna Anda bukan pengelola perangkat lunak aktif yang mereka gunakan. Dengan demikian, pelanggan non-Inggris-spekaing Anda tidak akan dapat memahami log bahkan jika mereka diinternasionalkan, karena sebagian besar pesan log akan tentang potongan kode tertentu dan berbagai detail implementasi yang mereka tidak dan tidak seharusnya lakukan. pernah tahu tentang.
Internasionalisasi pesan benar-benar mengalahkan kemampuan untuk melakukan pencarian teks untuk pesan itu, baik itu pengembang yang mencari kode mereka atau pengguna yang mencari di internet untuk mencari solusinya.
Internasionalisasi memperkenalkan kemungkinan kesalahan terjemahan atau ambiguitas halus, yang sepenuhnya tidak dapat diterima dalam konteks pemecahan masalah perangkat lunak. Ini masalah yang sama dengan mencatat cap waktu tanpa zona waktu yang jelas; Anda terus-menerus harus membuang waktu untuk mencari tahu apa artinya sebenarnya.
Tentu saja, jika kita mengendurkan definisi dan asumsi yang saya mulai dengan, maka ada beberapa kasus penggunaan yang valid.
Secara umum, "internasionalisasi log" berpotensi berguna ketika ada subset mudah-diidentifikasi pesan log yang adalah berarti untuk rata-rata pengguna, dan ketika "internasionalisasi" sarana terpisah log dalam bahasa pengguna samping log bahasa default untuk para pengembang.
Dalam praktiknya, jika sesuatu yang bisa Anda sebut "log internasionalisasi" sebenarnya berguna, maka itu mungkin akan menjadi fitur aplikasi.
Beberapa jenis video game melakukan ini, terutama yang berperilaku seperti permainan papan:
Sumber: Blood Bowl, tangkapan layar diambil dari https://www.youtube.com/watch?v=UyQB4kDMZzE
Jika "log" dianggap sangat berguna atau fitur penting, mereka lebih cenderung berakhir di database yang tepat daripada hanya file teks. Perangkat lunak pelacakan penjualan adalah contoh khas dari ini:
Sumber: http://www.everlogic.com/i-want-to/see-screenshots/
Apakah Anda akan memanggil atau tidak "log" ini, teks yang Anda lihat dalam gambar-gambar ini jelas merupakan sesuatu yang ingin kami internasionalkan jika kami mempertahankan masalah ini.
sumber