Using resourcestrings/id

From Lazarus wiki
Revision as of 07:47, 20 December 2010 by Chronos (talk | contribs) (added language template)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

English (en) español (es) Bahasa Indonesia (id) русский (ru)

File .rst dibuat guna menyediakan mekanisme untuk melokalisasi aplikasi anda. Saat ini, hanya satu mekanisme lokalisasi yang disediakan: gettext.

Langkahnya adalah sebagai berikut:

  1. kompilator membuat file .rst.
  2. piranti rstconv mengubah ke .po (input untuk gettext) File ini dapat diterjemahkan ke banyak bahasa. Semua gettext standar dapat dipakai.
  3. gettext membuat file .mo.
  4. file .mo dibaca oleh unit gettext dan semua resourcestring diterjemahkan.

Pemanggilan diperlukan untuk menterjemahkan semua resourcestring dalam unit objpas. Ini didokumentasikan.

Tidak ada yang menghetikan orang dari pembuatan mekanisme yang tidak tergantung pada gettext. Seseorang dapat mengimplementasikan mekanisme untuk membuat resource DLL (seperti yang dilakukan delphi) yang berisi teks yang diterjemahkan. Kenyataannya, output ke file .rc, misalnya teks sumber untuk kompilator resource, sudah tersedia dalam rstconv - akan tetapi, fungsi portabel untuk pengambilan teks dari DLL seperti itu tidak ada (lihat poin 3 di bawah). Hal yang sama berlaku untuk format output ketiga yang didukung oleh rstconv saat ini, file MSG IBM OS/2.

Alsan mengapa gettext dipilih adalah bahwa ia lebih atau kurang standar pada Unix. Tapi Gettext sangat tidak efisien, maka jika seseorang mempunyai ide yang lebih baik, silahkan lakukan. Plus, GetText adalah tidak sensitif konteks (ia beroperasi pada string sendiri), yang merupakan kendala: kadang-kadang kata/kalimat yang sama harus diterjemahkan secara berbeda tergantung pada konteks, dan ini tidak mungkin.

Untuk mengimplementasi mekanisme lain, 3 hal diperlukan:

  1. Mutakhirkan rstconv agar ia dapat memberi output ke format lain.
  2. Piranti untuk memanipulasi format lain.
  3. Implementasi sebuah unit yang mengambil format lain saat runtime.

Ini juga menjadi alasan kami membuat format file menengah: ini yang diperlukan kompilator karena tidak mengetahui piranti terjemahan. Diperlukan hanya untuk membuat file .rst.

Cara alternatif dari melakukanitu adalah misalnya membuat file ini per bahasa, dengan seksi untuk setiap unit dipakai, dan kunci untuk setiap string.

english.ini:

[sysutils]
SErrInvalidDateTime="%S" is not a valid date/time indication.

dutch.ini:

[sysutils]
SErrInvalidDateTime="%S" is geen geldige datum/tijd aanduiding.

Ini akan membolehkan pemakaian kembali berbagai file.