Saya adalah anggota tim dengan lebih dari 20 pengembang. Setiap pengembang bekerja pada modul terpisah (mendekati 10 modul). Dalam setiap modul kami mungkin memiliki setidaknya 50 formulir CRUD, yang berarti saat ini kami memiliki hampir 500 tombol tambah , tombol simpan , tombol edit , dll.
Namun, karena kami ingin mengglobalisasikan aplikasi kami, kami harus dapat menerjemahkan teks dalam aplikasi kami. Misalnya, di mana-mana, kata add harus menjadi ajouter untuk pengguna bahasa Prancis.
Apa yang kami lakukan sampai sekarang, adalah untuk setiap tampilan di UI atau Lapisan Presentasi, kami memiliki kamus pasangan kunci / nilai terjemahan. Kemudian saat merender tampilan, kami menerjemahkan teks dan string yang diperlukan menggunakan kamus ini. Namun, pendekatan ini, kami telah menemukan sekitar 500 menambahkan dalam 500 kamus. Ini berarti kami telah melanggar prinsip KERING.
Di sisi lain, jika kita memusatkan string umum, seperti meletakkan add di satu tempat, dan meminta pengembang untuk menggunakannya di mana-mana, kita menghadapi masalah tidak yakin apakah string sudah didefinisikan dalam kamus terpusat atau belum.
Satu opsi lain mungkin tidak memiliki kamus terjemahan dan menggunakan layanan terjemahan online seperti Google Translate, Bing Translator, dll.
Masalah lain yang kami temui adalah bahwa beberapa pengembang di bawah tekanan untuk menyelesaikan proyek tepat waktu tidak dapat mengingat kunci terjemahan . Misalnya, untuk teks tombol tambah, pengembang menggunakan tambah sementara pengembang lain menggunakan baru , dll.
Apa praktik terbaik, atau metode paling terkenal untuk globalisasi dan pelokalan sumber daya string aplikasi?
Jawaban:
Sejauh yang saya tahu, ada perpustakaan bagus yang disebut
localeplanet
Pelokalan dan Internasionalisasi dalam JavaScript. Selain itu, saya pikir ini asli dan tidak memiliki ketergantungan ke perpustakaan lain (misalnya jQuery)Berikut situs perpustakaannya: http://www.localeplanet.com/
Lihat juga artikel oleh Mozilla ini, Anda dapat menemukan metode dan algoritme yang sangat bagus untuk terjemahan sisi klien: http://blog.mozilla.org/webdev/2011/10/06/i18njs-internationalize-your-javascript-with- a-little-help-from-json-and-the-server /
Bagian umum dari semua artikel / pustaka itu adalah bahwa mereka menggunakan
i18n
kelas danget
metode (dalam beberapa hal juga mendefinisikan nama fungsi yang lebih kecil seperti_
) untuk mengambil / mengonversikey
kevalue
. Dalam penjelasan sayakey
berarti string yang ingin Anda terjemahkan danvalue
makna string yang diterjemahkan.Kemudian, Anda hanya perlu dokumen JSON untuk menyimpan
key
danvalue
.Sebagai contoh:
Dan di sini JSON:
Saya percaya menggunakan solusi perpustakaan populer saat ini adalah pendekatan yang baik.
sumber
Saya yakin sudah banyak solusi untuk masalah ini dalam bahasa sisi server seperti ASP.Net/C#.
Saya telah menjelaskan beberapa aspek utama dari masalah tersebut
Masalah : Kami hanya perlu memuat data untuk bahasa yang diinginkan
Solusi : Untuk tujuan ini kami menyimpan data ke file terpisah untuk setiap bahasa
ex. res.de.js, res.fr.js, res.en.js, res.js (untuk bahasa default)
Masalah: File sumber daya untuk setiap halaman harus dipisahkan sehingga kami hanya mendapatkan data yang kami butuhkan
Solusi : Kita bisa menggunakan beberapa alat yang sudah ada seperti https://github.com/rgrove/lazyload
Masalah: Kami membutuhkan struktur pasangan kunci / nilai untuk menyimpan data kami
Solusi : Saya menyarankan objek javascript, bukan string / string air. Kita bisa mendapatkan keuntungan dari Intellisense dari IDE
Masalah: Anggota umum harus disimpan dalam file publik dan semua halaman harus mengaksesnya
Solusi : Untuk tujuan ini saya membuat folder di root aplikasi web bernama Global_Resources dan folder untuk menyimpan file global untuk setiap sub folder yang kami beri nama 'Local_Resources'
Masalah: Setiap anggota subsistem / subfolder / modul harus mengganti anggota Global_Resources pada cakupan mereka
Solusi : Saya mempertimbangkan satu file untuk masing-masing
Struktur Aplikasi
Kode yang sesuai untuk file:
Global_Resources / default.js
Global_Resources / default.fr.js
File sumber daya untuk bahasa yang diinginkan harus dimuat di halaman yang dipilih dari Global_Resource - Ini harus menjadi file pertama yang dimuat di semua halaman.
UserManagementSystem / Local_Resources / default.js
UserManagementSystem / Local_Resources / default.fr.js
UserManagementSystem / Local_Resources / createUser.js
UserManagementSystem / Local_Resources / createUser.fr.js
file manager.js ( file ini harus dimuat terakhir)
Semoga membantu :)
sumber
"Create" : {"message": "Create", "description": "text on the button that opens the editor with a blank Foo"}
mereka lakukan untuk melokalkan ekstensi Chrome misalnya. Atau buat file terpisah yang menyimpan komentar ini.jQuery.i18n adalah plugin jQuery ringan untuk mengaktifkan internasionalisasi di halaman web Anda. Ini memungkinkan Anda untuk mengemas string sumber daya khusus dalam file '.properties', seperti di Paket Sumber Daya Java. Ini memuat dan mengurai paket sumber daya (.properties) berdasarkan bahasa atau bahasa yang disediakan yang dilaporkan oleh browser.
untuk mengetahui lebih banyak tentang ini, lihat Bagaimana menginternasionalkan halaman Anda menggunakan JQuery?
sumber