Saya baru-baru ini mengembangkan Flash Game yang saya terjemahkan ke Jerman dan Inggris. Anda dapat melihatnya di sini: http://www.bioaschi.ch/?lang=en#/game . Anda dapat mengubah bahasa dengan cepat di menu pengaturan .
Untuk menerjemahkan permainan, saya menggunakan pendekatan berikut: Saya memiliki kelas Config tertulis khusus yang pada dasarnya hanya merupakan pendaftar kunci => pasangan nilai . Kelas config dapat membaca dari file XML dan juga mengirimkan peristiwa ketika suatu nilai berubah.
Untuk permainan saya membuat 2 file konfigurasi yang berbeda. Satu adalah main
konfigurasi, dan kemudian satu file yang berisi terjemahan (disebut lang
). main
Konfigurasi mereka berisi kunci yang menentukan bahasa, mis. lang = id . Dalam game saya mendengarkan perubahan acara pada tombol itu. Setiap kali itu terjadi, saya membaca / menerapkan nilai-nilai dari bahasa yang sesuai.
Berikut cuplikan kecil kode yang menunjukkan bagaimana bahasa tersebut diaktifkan di game:
Di suatu tempat dalam kode panel "Pengaturan":
Config.getConfig('main').setValue('lang', 'de'); // or 'en'
Kemudian di tempat lain di mana teks harus dilokalisasi:
// this is in the construtor or some init method
...
var cfg:Config = Config.getConfig('main');
cfg.addEventListener(ConfigEvent.CONFIG_CHANGE, onConfigChange);
updateText(cfg.getValue('lang', 'en') + '.');
}
private function updateText(langns:String) : void {
var langCfg:Config = Config.getConfig('lang');
this.title.htmlText = langCfg.getValue(langns + "credits.TITLE", "<title>");
this.text.htmlText = langCfg.getValue(langns + "credits.TEXT", "<text>");
_btnClose.label = langCfg.getValue(langns + 'highscore.CLOSE', 'X');
}
private function onConfigChange(evt:ConfigEvent) : void {
if(evt.key == 'lang'){
updateText(evt.value + ".");
}
}
Anda dapat melihat file yang sedang dimuat oleh permainan di sini: http://www.bioaschi.ch/game/language.xml
Untuk mengganti bagian teks dengan variabel (mis. Mentransformasikannyayour score is %d
menjadi your score is 10000
), saya sarankan Anda menggunakan Perpustakaan Datastruktur Poligonal yang sangat baik . Ini berisi implementasi AS3 dari Sprintf .
Alih-alih memiliki semua terjemahan dalam satu file, Anda juga dapat dengan mudah memiliki satu file tunggal per bahasa.
Demi kelengkapan, berikut adalah beberapa daftar kode:
Wow, ini agaknya menjadi posting yang panjang, maaf. Pendekatan yang saya ambil agak sederhana dan tidak mencakup topik-topik internasionalisasi yang lebih rumit, seperti format tanggal , format angka atau mata uang dll. Namun untuk terjemahan sederhana ini berfungsi dengan baik.