Saya telah mencari cara membuat aplikasi yang cocok untuk banyak bahasa di C # karena saya perlu mengerjakan proyek kecil di mana ini masalahnya. Pada dasarnya saya telah menemukan dua cara untuk melakukan ini:
Setel properti Formulir yang Dapat Dilokalkan ke true, setel properti Bahasa, isi semua label dan semacamnya, dan Anda 'selesai'. Kelemahan utama yang saya lihat dalam hal ini adalah: bagaimana membuat hal-hal lain yang bukan merupakan bagian dari formulir yang siap untuk berbagai bahasa (misalnya jendela pop-up, file log atau jendela, dll).
Buat file sumber daya, misalnya 'Lang.en-us.resx' dan satu untuk setiap bahasa, misalnya 'Lang.nl-nl.resx' dan isi dengan Strings. IDE tampaknya menghasilkan kelas untuk saya secara otomatis, jadi dalam kode saya hanya dapat menggunakan Lang.SomeText. Kelemahan terbesar yang saya lihat dalam hal ini adalah: untuk setiap formulir saya perlu menyetel sendiri semua label dan keterangan lain dalam kode (dan tampaknya pengikatan data tidak berfungsi dengan sumber daya ini).
Saya yakin, bagaimanapun, bahwa ada metode lain untuk melakukan ini juga.
Jadi, apa praktik terbaiknya? Apa yang paling mudah untuk aplikasi kecil (beberapa formulir, koneksi database, dll) dan skala apa yang terbaik untuk aplikasi yang lebih besar?
sumber
Jawaban:
Saya selalu menggunakan file sumber daya untuk aplikasi multi-bahasa.
Ada banyak artikel di web yang menjelaskan cara menggunakannya.
Saya telah menggunakan dua cara berbeda:
File / formulir sumber daya, lebih mudah diimplementasikan, Anda hanya perlu memasukkan nilai-nilai dalam file sumber daya, tetapi saya merasa pendekatan ini lebih sulit dipertahankan, karena labelnya tersebar di seluruh aplikasi.
File sumber daya global memungkinkan Anda untuk memusatkan semua label (gambar, dll.) Dalam satu file (per bahasa), tetapi itu berarti mengatur label secara manual dalam pemuatan formulir. File ini juga dapat digunakan untuk pesan kesalahan dll.
Pertanyaan tentang rasa ...
Satu poin terakhir, saya menulis program dalam bahasa Inggris dan Prancis, saya menggunakan "en" dan "fr" dan bukan "en-US" dan "fr-FR". Jangan mempersulit, perbedaan bahasa Inggris (Amerika, Inggris, Australia dll) memiliki sedikit perbedaan yang cukup untuk digunakan hanya satu (hal yang sama berlaku untuk Prancis).
sumber
Saya baru-baru ini menulis program dengan dukungan bahasa Jerman dan Inggris. Saya terkejut saat mengetahui bahwa jika saya hanya menamai sumber bahasa Inggris saya LanguageResources.resx dan sumber daya bahasa Jerman saya LanguageResources.de.resx, secara otomatis memilih bahasa yang benar. ResXFileCodeGenerator menangani semuanya untuk saya.
Perhatikan bahwa kolom di dua file adalah sama dan kolom bahasa Jerman yang belum dimasukkan akan muncul di aplikasi sebagai bahasa Inggris karena bahasa file yang paling tidak spesifik adalah file default. Saat mencari string, ia berubah dari yang paling spesifik (mis. De-DE.resx) ke paling tidak spesifik (mis. .Resx).
Untuk mendapatkan string Anda, gunakan panggilan ResourceManager.GetString atau ResourceManager.GetObject. Aplikasi ini akan memberi Anda ResourceManager secara gratis.
sumber
Untuk kepentingan orang lain yang mungkin menemukan ini (1+ tahun setelah posting terakhir), saya penulis produk pelokalan profesional yang membuat seluruh proses terjemahan menjadi sangat mudah. Ini adalah add-in Visual Studio yang akan mengekstrak semua string ".resx" dari sembarang solusi dan memuatnya ke dalam satu file yang dapat diterjemahkan menggunakan aplikasi mandiri gratis (penerjemah dapat mendownload ini dari situs saya). Add-in yang sama kemudian akan mengimpor string yang diterjemahkan kembali ke solusi Anda. Sangat mudah digunakan dengan banyak perlindungan bawaan, banyak fitur tambahan, dan bantuan online (Anda tidak akan membutuhkannya terlalu banyak). Lihat http://www.hexadigm.com
sumber