Mods/Internationalization Lib for Minetest/ms: Difference between revisions
>Voxel No edit summary |
>Voxel No edit summary |
(No difference)
|
Revision as of 12:09, 8 April 2021
Internationalization Lib for Minetest | |
---|---|
Sebuah mods | |
Mod Type | Pelbagai |
Author | Diego Martínez (kaeza) |
Forum topic | 4929 |
Source code | GitHub |
Technical name | intllib |
Pustaka Pengantarabangsaan untuk Minetest (BI: Internationalization Lib for Minetest) atau juga dikenali sebagai Internationalization Library ialah sebuah mods yang dicipta oleh Diego Martínez (kaeza) dan diterbitkan di bawah Unlicense (bahasa Inggeris). Mods ini ialah suatu usaha untuk menyediakan sokongan pengantarabangsaan kepada mods. Sebarang komen atau cadangan dialu-alukan dekat topik forum dalam bahasa Inggeris. Pepijat boleh dilaporkan menggunakan penjejak pepijat Github.
Menggunakan pustaka sebagai pemain biasa
Jika anda pemain biasa yang mencari teks terjemahan, hanya pasangkan mods ini seperti mods lain, kemudian bolehkannya melalui GUI.
Mods ini cuba untuk mengesan bahasa anda, tetapi oleh kerana tiada cara mudah alih untuk melakukannya, ia cuba beberapa cara yang lain:
- Tetapan
language
di dalam fail minetest.conf. - Pembolehubah sekitaran
LANGUAGE
. - Pembolehubah sekitaran
LANG
. - Jika semua di atas gagal, ia gunakan
en
.
Dalam apa jua keadaan, hasil akhirnya sepatutnya menjadi Kod Bahasa ISO 639-1 untuk bahasa yang dikehendaki.
Menggunakan pustaka sebagai penterjemah
Jika anda seorang penterjemah, anda perlu menentukan jenis antaramuka mods yang menyokong intllib tersebut, dan ikut langkah untuk antaramuka yang berkenaan.
Untuk menentukan antaramuka yang manakah mods tersebut gunakan, carilah subdirektori locale
mods tersebut. Jika anda jumpa fail berbentuk fail teks kosong dalam format .txt
, maka ianya menggunakan antaramuka yang lama. Kalau tidak, kemungkinan besar ianya menggunakan antaramuka baru, terutamanya jika failnya berupa fail gettext dalam format .po
.
Antaramuka baru
Antaramuka baru menggunakan fail .po
dari gettext (bahasa Inggeris). Lihat Format Fail PO (bahasa Inggeris) untuk maklumat lanjut.
Oleh itu, jika anda menterjemah mods yang menggunakan antaramuka baru ke dalam bahasa anda, gunakan alatan kegemaran anda untuk menyunting fail .po
tersebut. Fail tersebut juga boleh disunting dengan penyunting teks kosong.
Antaramuka lama
Untuk menterjemah mods ke dalam bahasa anda, salin fail locale/template.txt
kepada locale/BAHASA.txt
(di mana BAHASA
ialah Kod Bahasa ISO 639-1 untuk bahasa anda).
Buka fail baru tersebut dalam penyunting kegemaran anda, dan terjemahkan setiap barus dengan meletakkan teks terjemahan selepas tanda sama dengan.
Di sini contoh untuk fail terjemahan bahasa Melayu (ms.txt
):
# A comment. # Another comment. This line is ignored since it has no equals sign. Hello, World! = Hello, Dunia! String with\nnewlines = Rentetan dengan\nbaris baru String with an \= equals sign = Rentetan dengan \= tanda sama dengan
Fail terjemahan (atau penempatan) ialah fail teks biasa yang mempunyai baris-baris dalam bentuk teks asal = teks terjemahan
. Fail tersebut mestilah berada di dalam subdirektori locale
di dalam direktori mods, dan mesti dinamakan sebagai Kod Bahasa ISO 639-1 dua huruf untuk bahasa yang anda ingin terjemahkan.
Fail terjemahan mestilah menggunakan pengekodan UTF-8.
Baris yang bermula dengan tanda nombor/tanda pagar (#) ialah komen dan diabaikan oleh pemprosesan pembaca terjemahan. Ambil perhatian bahawa komen hanyalah sah sehingga penghujung baris; tidak ada sokongan untuk komen pelbagai baris. Baris-baris tanpa tanda sama dengan juga akan diabaikan.
Aksara yang dianggap "istimewa" boleh "dilepaskan" supaya ianya diambil bulat-bulat. Terdapat beberapa jujukan lepasan (escape sequence) yang boleh digunakan:
- Mana-mana tanda nombor/tanda pagar (
#
), tanda sama dengan (=
) boleh dilepaskan untuk diambil bulat-bulat. Jujukan\#
sangat berguna sekiranya teks asal bermula dengan tanda nombor/tanda pagar (#
). - Jujukan lepasan biasa
\n
dan\t
setiap satunya membawa maksud baris baru dan tab mendatar. - Jujukan lepasan istimewa
\s
melambangkan aksara ruang (selang). Ianya berguna untuk memasukkan ruang hadapan atau ruang belakang ke dalam teks sumber atau terjemahan, kerana ruang-ruang ini akan dibuang jika tidak berbuat sedemikian. Contohnya, jika teks tersebut ialah perenggan dan perlu bermula dengan beberapa ruang, perlulah menggunakan jujukan lepasan ini.
Menggunakan pustaka sebagai pembangun
Sekiranya anda pembangun mods yang ingin menambah sokongan pengantarabangsaan kepada mods anda, anda perlu melalukan perkara berikut.
Membolehkan pengantarabangsaan
Untuk membolehkan pengantarabangsaan untuk mods anda, anda perlu salin fail lib/intllib.lua
ke dalam direktori akar mods anda, kemudian masukkan kod plat dandang (boilerplate) ini ke dalam fail yang memerlukan pengantarabangsaan:
-- Load support for intllib. local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua")
Anda juga perlu bergantung secara pilihan kepada intllib, untuk menambah kebergantungan pilihan, masukkan intllib?
ke dalam baris kosong di dalam fail depends.txt
mods anda. Ambil perhatian bahawa jika intllib tidak dipasang, fungsi pengambil telah ditakrifkan untuk memulangkan rentetan tanpa perubahan. Perkara ini dibuat supaya anda tidak perlu merenjiskan beratus-ratus penyemak if
(atau pembina lain yang serupa) untuk memeriksa sama ada pustaka tersebut memang telah dipasang.
Apabila kod tersebut telah dimasukkan, anda perlu menanda rentetan yang memerlukan terjemahan. Untuk setiap rentetan boleh terjemah dalam teks sumber anda, gunakan fungsi S
(lihat atas) untuk memulangkan rentetan yang telah diterjemah. Contohnya:
minetest.register_node("mymod:mynode", { -- Rentetan biasa: description = S("My Fabulous Node"), -- Rentetan dengan penyisipan: description = S("@1 Car", "Blue"), -- ... })
Fungsi NS
pula serupa dengan ngettext
. Ia patut digunakan apabila rentetan untuk diterjemah mempunyai bentuk mufrad dan bentuk jamak. Contohnya:
-- `count` pertama untuk `ngettext` menentukan bentuk mana untuk digunakan. -- `count` kedua pula penggantian sebenar. print(NS("You have one item.", "You have @1 items.", count, count))
Menjana dan mengemaskini katalog
Ini alir kerja asas untuk bekerja dengan gettext
Setiap kali anda mempunyai rentetan baru untuk diterjemah, anda patut buat seperti berikut:
cd /laluan/kepada/mods /laluan/kepada/mods/intllib/tools/xgettext.sh file1.lua file2.lua ...
Skrip tersebut akan mencipta direktori bernama locale
jika ia belum wujud, dan ia akan menjana fail template.pot
(sebuah templat dengan semua rentetan boleh terjemah). Jika anda sudah ada terjemahan, skrip tersebut akan mengemaskini kesemuanya dengan rentetan yang baru.
Skrip tersebut menghantar beberapa pilihan kepada xgettext
sebenar yang sepatutnya cukup untuk kebanyakan waktunya. Anda boleh meletakkan pilihan lain jika mahu:
xgettext.sh -o file.pot --keyword=blargh:4,5 a.lua b.lua ...
Ambil perhatian bahawa terdapat juga fail kelompok Windows xgettext.bat
untuk pengguna Windows, tetapi anda perlu memasang alatan baris perintah secara berasingan. Lihat pengepala fail untuk konfigurasi.