Lokalisasi game dan aplikasi di Unity. Cepat dan mudah

Hai Dalam artikel ini saya akan berbagi pengalaman saya tentang melokalkan game dan aplikasi di Unity, serta berbicara tentang plugin Simple Localization saya, yang tersedia di Asse Store. Level artikelnya Mudah. Tidak akan ada kode sama sekali, itu tidak akan berguna bagi Anda.



Dari sudut pandang konsep umum, semuanya sederhana. Kami harus memiliki daftar kamus untuk setiap bahasa dengan kunci yang sama, dari mana kami akan menerima nilai yang dilokalkan. Dari sisi teknis, Anda perlu menentukan:

  • Apa yang akan menjadi kamus kita?
  • Di mana mereka akan disimpan?
  • Bagaimana kita mengedit dan mengembangkannya?
  • Bagaimana cara mengimplementasikan bundel dengan antarmuka aplikasi?

Dalam implementasinya, saya dibimbing oleh dua prinsip: kesederhanaan dan kenyamanan. Jadi, format terstruktur paling sederhana yang cocok untuk kamus adalah CSV (Comma Separated Values). Ini adalah file teks di mana semua sel dipisahkan oleh pemisah - baik koma (",") atau tanda titik koma (";"), tergantung pada pengaturan regional. CSV dapat dibuka dan diedit dalam editor teks apa pun, tetapi Excel yang terbaik untuk ini. CSV tentu saja akan disimpan di folder Resources sehingga aplikasi dapat membacanya kapan saja.

Formatnya adalah sebagai berikut: kolom pertama adalah kunci, semua kolom berikutnya adalah kamus. Baris pertama adalah judul. Anda dapat memiliki satu CSV umum, jika ada beberapa teks dalam aplikasi, tetapi Anda dapat membaginya menjadi beberapa CSV berdasarkan beberapa prinsip, misalnya: menu, pengaturan, pencapaian, dll.

Silakan. Mengedit lokalisasi di Excel memang bagus, tentu saja, tetapi saya sarankan mengunggahnya ke Google Sheets. Kemudian Anda dapat mengeditnya dari mana saja, kapan saja dan dari perangkat apa pun. Tetapi yang paling penting adalah bahwa lokalisasi dapat dibagi di antara para penerjemah, dan mereka tidak akan mengalami kesulitan dengan terjemahan. Anda dapat melihat kamus di sini .


Dan poin terakhir adalah integrasi dengan Unity, dengan uGUI. Di sini juga, semuanya sederhana - untuk setiap teks komponen Teks kami menambahkan komponen LocalizedText kami, di mana kami menunjukkan kuncinya. Ketika diluncurkan, komponen ini akan menerima nilai yang dilokalkan dan mengaturnya menjadi Teks .



Kemudian muncul beberapa pertanyaan:

  • Bagaimana dan kapan menginisialisasi kamus? Sudah cukup untuk membuat panggilan ke LocalizationManager.Read dari skrip kontrol. Ini dapat dilakukan di Sedar atau Mulai, jika Anda puas dengan deteksi otomatis bahasa ( Application.systemLanguage ), atau setelah memuat profil ketika pengaturan pengguna sudah diketahui.
  • Bagaimana jika kita tidak tahu sebelumnya berapa nilai yang akan dimiliki komponen Teks ? Kami tidak menambahkan komponen LocalizedText , dan kemudian menetapkan nilai dari kode, mengakses kamus melalui LocalizationManager.Localize (string localizationKey) .
  • Apa yang harus saya lakukan jika saya perlu memasukkan parameter ke nilai yang dilokalkan? Kami hanya menggunakan pemformatan di string yang dilokalkan, misalnya, "Level {0}", dan kemudian melalui string.Format kami melakukan substitusi. Untuk ini ada kelebihan dari LocalizationManager.Localize (string localizationKey, params object [] args) .
  • Bagaimana cara mengubah lokalisasi di runtime? Cukup ubah bahasa melalui LocalizationManager.Language. Ini akan memunculkan peristiwa di mana semua komponen LocalizedText berlangganan. Namun, komponen teks yang dilokalkan dari kode (yang tidak memiliki komponen LocalizedText ) perlu diperbarui secara manual.
  • Apa yang harus dilakukan dengan elemen lain, misalnya, dengan daftar drop-down Dropdown ? Jelas menggunakan komponen LocalizedDropdown =)

Nah, roti terakhir di aset saya - dia dapat secara otomatis mengunduh semua sheet dari Google Sheets dan menyimpannya di sumber daya game. Ada komponen LocalizationSync untuk ini, yang memiliki tombol Sinkron (di inspektur).

Anda dapat mengunduhnya di Asset Store: Simple Localization .

Source: https://habr.com/ru/post/id417675/


All Articles