Subversion-Projekte lars-tiefland.prado

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<com:TContent ID="body" >
2
 
3
<h1 id="6201">Internasionalisasi (I18N) dan Lokalisasi (L10N)</h1>
4
<p id="790625" class="block-content">Banyak aplikasi web dibangun dengan PHP tidak memikirkan internasionlisasi saat ia pertama kali ditulis. Itu mungkin dikarenakan tidak dimaksudkan untuk digunakan dalam bahasa dan kultur. Internasionalisasi adalah aspek penting karena meningkatkan adopsi Internet dalam banyak negara yang berbicara non-Ingris. Proses internasionalisasi dan lokalisasi akan menghadapi kesulitan. Di bawah adalah beberapa petunjuk umum untuk menginternasionalisasi aplikasi yang sudah ada.</p>
5
 
6
<h2 id="6203">Pisahkan data sensitif kultur/lokal</h2>
7
 
8
<p id="790626" class="block-content">Identifikasi dan pisahkan data yang beragam dengan kultur. Yang paling jelas adalah teks/string/pesan. Tipe lain dari data juga harus dipertimbangkan. Daftar berikut mengkategorikan beberapa contoh data sensitif kultur
9
</p>
10
 
11
<ul id="u1" class="block-content">
12
    <li> String, Pesan, Teks, dalam unit relatif kecil (misalnya prasa, kalimat, paragraf, tapi tidak teks lengkap dari buku).</li>
13
    <li> Label pada tombol.</li>
14
    <li> File bantuan, unit besar teks, teks statis.</li>
15
    <li> Suara.</li>
16
    <li> Warna.</li>
17
    <li> Grafik,Ikon.</li>
18
    <li> Tanggal, Jam.</li>
19
    <li> Angka, Kurs, Pengukuran.</li>
20
    <li> Nomor Telepon.</li>
21
    <li> Penghargaan dan titel personal.</li>
22
    <li> Alamat pos.</li>
23
    <li> Tata letak halaman.</li>
24
</ul>
25
 
26
<p id="790627" class="block-content">Bila memungkinkan semua ragam teks harus diisolasi dan disimpan dalam format persisten. Teks ini termasuk, pesan kesalahan aplikasi, string ditulis tangan dalam file PHP, email, teks statis HTML, dan teks pada elemen formulir (misalnya tombol).</p>
27
 
28
<h2 id="6204">Konfigurasi</h2>
29
<p id="790628" class="block-content">Untuk menghidupkan fitur lokalisasi dalam PRADO, Anda perlu menambahkan beberapa opsi konfigurasi dalam <a href="?page=Configurations.AppConfig">konfigurasi aplikasi</a> Anda.
30
Pertama Anda perlu menyertakan namespace <tt>System.I18N.*</tt> ke path Anda.
31
</p>
32
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_790203">
33
<paths>
34
    <using namespace="System.I18N.*" />
35
</paths>
36
</com:TTextHighlighter>
37
 
38
<p id="790629" class="block-content">Kemudian, jika Anda ingin menerjemahkan beberapa teks dalam aplikasi Anda, perlu ditambahkan sumber data pesan terjemahan.</p>
39
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_790204">
40
<module id="globalization" class="TGlobalization">
41
    <translation type="XLIFF"
42
        source="MyApp.messages"
43
        marker="@@"
44
        autosave="true" cache="true" />
45
</module>
46
</com:TTextHighlighter>
47
 
48
<p id="790630" class="block-content">Di mana <tt>source</tt> dalam <tt>translation</tt> adalah path titik ke direktori di mana Anda akan menyimpan katalog pesan terjemahan. Atribut <tt>autosave</tt> jika dihidupkan, menyimpan pesan tidak diterjemahkan kembali ke dalam katalog pesasn.
49
Dengan menghidupkan <tt>cache</tt>, pesan yang diterjemahkan disimpan dalam direktori aplikasi <tt>runtime/i18n</tt>.
50
Nilai <tt>marker</tt> dipakai untuk mengelilingi teks yang tidak diterjemahkan.
51
</p>
52
 
53
<p id="790631" class="block-content">Dengan konfigurasi lengkap, sekarang kita dapat mulai melokalisasi aplikasi Anda. Jika Anda menghidupkan <tt>autosave</tt>, setelah menjalankan aplikasi Anda dengan beberapa aktivitas lokalisasi (misalnya menterjemahkan beberapa teks), Anda akan melihat sebuah direktori dan <tt>messages.xml</tt> dibuat di dalam direktori <tt>source</tt>.</p>
54
 
55
<h2 id="6205">Apa yang harus dilakukan dengan <tt>messages.xml</tt>?</h2>
56
<p id="790632" class="block-content">File katalog pesan terjemahan, jika menggunakan <tt>type="XLIFF"</tt>, adalah format intechange XML pesan terjemahan distandarisasi. Anda bisa mengedit file XML menggunakan editor yang mampu menangani UTF-8. Format dari XML adalah sesuatu mirip seperti berikut ini.</p>
57
 
58
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_790205">
59
<?xml version="1.0"?>
60
<xliff version="1.0">
61
    <file original="I18N Example IndexPage"
62
          source-language="EN"
63
          datatype="plaintext"
64
          date="2005-01-24T11:07:53Z">
65
        <body>
66
 
67
<trans-unit id="1">
68
<source>Hello world.</source>
69
<target>Hi World!!!</target>
70
</trans-unit>
71
 
72
        </body>
73
    </file>
74
</xliff>
75
</com:TTextHighlighter>
76
 
77
Setiap pesan terjemahan dilapisi dengan tag <tt>trans-unit</tt>, di mana <tt>source</tt> adalah pesan asli, dan <tt>target</tt> adalah pesan yang diterjemahkan. Editor seperti <a href="http://www.heartsome.net/EN/xlfedit.html">Heartsome XLIFF Translation Editor</a> dapat membantu mengedit file XML ini.
78
 
79
 
80
<h2 id="6206">Menyetel dan Mengubah Kultur</h2>
81
<p id="790633" class="block-content">Sekali globalisasi dihidupkan, Anda dapat mengakses setelan globalisasi, seperti <tt>Culture</tt>, <tt>Charset</tt>, dll, menggunakan </p>
82
<com:TTextHighlighter CssClass="source block-content" id="code_790206">
83
$globalization = $this->getApplication()->getGlobalization();
84
echo $globalization->Culture;
85
$globalization->Charset= "GB-2312"; //ubah charset
86
</com:TTextHighlighter>
87
 
88
<p id="790634" class="block-content">Anda juga mengubah cara kultur ditentukan dengan mengubah atribut <tt>class</tt> dalam konfigurasi modul. Sebagai contoh, untuk menyetel kultur yang tergantung pada setelan browser, Anda bisa menggunakan kelas <tt>TGlobalizationAutoDetect</tt>.
89
<com:TTextHighlighter Language="xml" CssClass="source block-content" id="code_790207">
90
<module id="globalization" class="TGlobalizationAutoDetect">
91
   ...
92
</module>
93
</com:TTextHighlighter>
94
 
95
<p id="790635" class="block-content">Anda juga bisa menyediakan kelas globalisasi sendiri untuk mengubah bagaimana kultur aplikasi ditetapkan.
96
Terakhir, Anda dapat mengubah setelan globalisasi dengan basis halaman demi halaman menggunakan <a href="?page=Configurations.Templates1#tct">tag kontrol template</a>. Sebagai contoh, mengubah <tt>Culture</tt> ke "zh".</p>
97
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790208">
98
&lt;%@ Application.Globalization.Culture="zh" %&gt;
99
</com:TTextHighlighter>
100
 
101
<h2 id="6207">Melokalisir aplikasi PRADO Anda</h2>
102
Ada dua area dalam aplikasi Anda yang mungkin membutuhkan lokalisasi pesan atau string, dalam kode PHP dan dalam template. Untuk melokalisasi string di dalam PHP, gunakan fungsi <tt>localize</tt> yang dijelaskan di bawah. Untuk melokalisasi teks dalam template, gunakan komponen <a href="#ttranslate">TTranslate</a>.
103
<h2 id="6208">Menggunakan fungsi <tt>localize</tt> untuk mennerjemahkan teks dalam PHP</h2>
104
 
105
<p id="790636" class="block-content">Fungsi <tt>localize</tt> mencari string yang diterjemahkan yang sama dengan aslinya dari sumber terjemahan Anda. Pertama, Anda perlu mencari semua teks dikode langsung dalam PHP yang ditampilkan atau dikirimkan ke pengguna akhir. Contoh berikut melokalisasi teks <tt>$sender</tt> (menganggap, katakanlah, sender adalah sebuah tombol). Kode asli sebelum lokalisasi adalah sebagai berikut.
106
<com:TTextHighlighter CssClass="source block-content" id="code_790209">
107
function clickMe($sender,$param)
108
{
109
  $sender->Text="Hello, world!";
110
}
111
</com:TTextHighlighter>
112
 
113
<p id="790637" class="block-content">Pesan dikodekan langsung "Hello, world!" dilokalisasi menggunakan fungsi <tt>localize</tt>. </p>
114
<com:TTextHighlighter CssClass="source block-content" id="code_790210">
115
function clickMe($sender,$param)
116
{
117
  $sender->Text=Prado::localize("Hello, world!");
118
}
119
</com:TTextHighlighter>
120
 
121
<h2 id="6209">Pesan Gabungan</h2>
122
 
123
<p id="790638" class="block-content">Pesan gabungan dapat berisi data variabel. Sebagai contoh, dalam pesan "There are 12 users online.", integer 12 dapat berubah tergantung pada beberapa data dalam aplikasi Anda. Ini sulit diterjemahkan karena posisi dari data variabel mungkin berbeda untuk bahasa yang berbeda. Seabgai tambahan, bahasa yang berbeda memiliki aturannya sendiri untuk bentuk jamak (jika ada) dan/atau pembilang. Contoh berikut tidak mudah untuk diterjemahkan, karena struktur kalimat sudah tetap dengan dikodekan langsung data variabel dengan pesan.</p>
124
<com:TTextHighlighter CssClass="source block-content" id="code_790211">
125
$num_users = 12;
126
$message = "There are " . $num_users . " users online.";
127
</com:TTextHighlighter>
128
 
129
Masalah ini bisa dipecahkan menggunakan fungsi <tt>localize</tt> dengan penempatan string. Sebagai contoh, string <tt>$message</tt> di atas dapat dibentuk seperti berikut.
130
<com:TTextHighlighter CssClass="source block-content" id="code_790212">
131
$num_users = 12;
132
$message = Prado::localize("There are {num_users} users online.", array('num_users'=>$num_users));
133
</com:TTextHighlighter>
134
<p id="790639" class="block-content">Di mana parameter kedua dalam <tt>localize</tt> mengambil array asosiatif dengan kunci sebagai penempatan yang dicari dalam teks dan menggantinya dengan nilai terkait.
135
Fungsi <tt>localize</tt> tidak memecahkan masalah lokalisasi bahasa yang memiliki bentuk jamak, solusinya adalah menggunakan <a href="#choice-format">TChoiceFormat</a>.</p>
136
 
137
<p id="790640" class="block-content">The following sample demonstrates the basics of localization in PRADO.</p>
138
<com:RunBar PagePath="Advanced.Samples.I18N.Home" />
139
 
140
<h1 id="6202">Komponen I18N</h1>
141
<a name="ttranslate"></a>
142
<h2 id="6210">TTranslate</h2>
143
<p id="790641" class="block-content">Pesan dan string bisa dilokalisasi dalam PHP atau dalam template.
144
Untuk menerjemahkan pesan atau string dalam template, gunakan <tt>TTranslate</tt>.</p>
145
 
146
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790213">
147
&lt;com:TTranslate&gt;Hello World&lt;/com:TTranslate&gt;
148
&lt;com:TTranslate Text="Goodbye" /&gt;
149
</com:TTextHighlighter>
150
 
151
<p id="790642" class="block-content"><tt>TTranslate</tt> juga dapat melakukan penempatan string. Properti <tt>Parameters</tt> bisa digunakan untuk menambah pasangan nama nilai untuk penempatan. Substring dalam terjemahan dikurung dengan "{" dan "}" yang dianggap sebagai nama parameter selama pencarian penempatan. Contoh berikut akan menempatkan substring "{time}" dengan nilai atribut parameter "<tt>Parameters.time=&lt;%= time() %&gt;</tt>".
152
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790214">
153
&lt;com:TTranslate Parameters.time=&lt;%= time() %&gt; &gt;
154
The time is {time}.
155
&lt;/com:TTranslate&gt;
156
</com:TTextHighlighter>
157
 
158
<p id="790643" class="block-content">Kependekan dari <tt>TTranslate</tt> juga disediakan menggunakan sintaks berikut.</p>
159
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790215">
160
&lt;%[string]%&gt;
161
</com:TTextHighlighter>
162
<p id="790644" class="block-content">di mana string akan diterjemahkan ke bahasa berbeda berdasarkan preferensi bahasa pengguna akhir. Sintaks ini bisa dipakai dengan nilai atribut juga.</p>
163
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790216">
164
&lt;com:TLabel Text="&lt;%[ Hello World! ]%&gt;" /&gt;
165
</com:TTextHighlighter>
166
 
167
<h2 id="6211">TDateFormat</h2>
168
<p id="790645" class="block-content">Memformat tanggal dan jam dilokalisasi adalah pekerjaan langsung.</p>
169
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790217">
170
&lt;com:TDateFormat Value="12/01/2005" /&gt;
171
</com:TTextHighlighter>
172
 
173
<p id="790646" class="block-content">Properti <tt>Pattern</tt> menerima 4 predefininisi pola tanggal dilokalisasi dan 4 predefininisi pola jam dilokalisasi.</p>
174
<ul id="u2" class="block-content">
175
	<li><tt>fulldate</tt></li>
176
	<li><tt>longdate</tt></li>
177
	<li><tt>mediumdate</tt></li>
178
	<li><tt>shortdate</tt></li>
179
	<li><tt>fulltime</tt></li>
180
	<li><tt>longtime</tt></li>
181
	<li><tt>mediumtime</tt></li>
182
	<li><tt>shorttime</tt></li>
183
</ul>
184
<p id="p1" class="block-content">
185
Predefinisi bisa dipakai dalam setiap kombinasi. Jika menggunakan pola predefinisi gabungan, pola pertama harus tanggal, diikuti oleh spasi, dan terakhir pola jam. Sebagai contoh, pola tanggal lengkap dengan pola jam pendek. Aktual uruta dari tanggal-jam dan pola aktual akan ditentukan secara otomatis dari data lokal yang ditetapkan oleh properti <tt>Culture</tt>.</p>
186
 
187
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790218">
188
&lt;com:TDateFormat Pattern="fulldate shorttime" /&gt;
189
</com:TTextHighlighter>
190
 
191
<p id="790647" class="block-content">Anda dapat menetapkan pola kustom menggunakan sub-pola berikut.
192
Format tanggal/jam ditetapkan dalam arti pola waktu string. Dalam pola ini, semua huruf ASCII disimpan sebagai huruf pola, yang ditetapkan sebagai berikut:
193
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code_790219">
194
 Simbol   Arti                    Penyajian           Contoh
195
------   ----                    ---------           ------
196
 G        tanda abad              (Teks)              AD
197
 y        tahun                   (Angka)             1996
198
 M        bulan dalam tahun       (Teks &amp; Angka)      July &amp; 07
199
 d        hari dalam bulan        (Angka)             10
200
 h        jam dalam am/pm (1~12)  (Angka)             12
201
 H        jam dalam hari (0~23)   (Angka)             0
202
 m        menit dalam jam         (Angka)             30
203
 s        detik dalam menit       (Angka)             55
204
 E        hari dalam minggu       (Teks)              Tuesday
205
 D        hari dalam tahun        (Angka)             189
206
 F        hari minggu dalam bulan (Angka)             2 (2nd Wed in July)
207
 w        minggu dalam tahun      (Angka)             27
208
 W        minggu dalam bulan      (Angka)             2
209
 a        tanda am/pm             (Teks)              PM
210
 k        jam dalam hari (1~24)   (Angka)             24
211
 K        jam dalam am/pm (0~11)  (Angka)             0
212
 z        zona waktu              (Jam)               Pacific Standard Time
213
 '        tanda kutip teks        (Delimiter)         'Date='
214
 ''       tanda kutip tunggal     (Literal)           'o''clock'
215
</com:TTextHighlighter>
216
</p>
217
 
218
<p id="790648" class="block-content">Jumlah pola huruf menentukan format.</p>
219
 
220
<p id="790649" class="block-content">(Teks): 4 huruf menggunakan bentuk lengkap, kurang dari 4 menggunakan bentuk pendek atau singkatan
221
jika ada. (misalnya "EEEE" menghasilkan "Monday", "EEE" menghasilkan "Mon")</p>
222
 
223
<p id="790650" class="block-content">(Angka): jumlah digit minimum. Angka lebih pendek adalah diisi-nol ke jumlah ini (misalnya jika "m" menghasilkan "6", "mm" menghasilkan "06"). Tahun ditangani secara khusus; yakni jika jumlah 'y' adalah 2, Tahun akan dipotong 2 digit. (misalnya jika "yyyy" menghasilkan "1997", "yy" menghasilkan "97".)
224
 Tidak seperti field lain, pecahan detik dipadatkan pada sisi kanan dengan nol.</p>
225
 
226
<p id="790651" class="block-content">(Teks dan Angka): 3 atau lebih, pakai teks, sebaliknya pakai angka. (misalnya
227
"M" menghasilkan "1", "MM" menghasilkan "01", "MMM" menghasilkan "Jan", and "MMMM"
228
menghasilkan "January".)</p>
229
 
230
<p id="790652" class="block-content">Setiap karakter dalam pola yang tidak dalam jangkauan ['a'..'z']
231
dan ['A'..'Z'] akan diperlakukan sebagai teks bertanda kutip. Contohnya, karakter seperti
232
':', '.', ' ', dan '@' akan muncul dalam hasil teks waktu
233
meskipun tidak dikurung dalam tanda kutip tunggal.</p>
234
 
235
<p id="790653" class="block-content">Contoh menggunakan lokal US:
236
 
237
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code_790220">
238
Pola Formasi                           Hasil
239
------------                           -----
240
"yyyy.MM.dd G 'at' HH:mm:ss"      -&gt;&gt;  1996.07.10 AD at 15:08:56
241
"EEE, MMM d, ''yy"                -&gt;&gt;  Wed, Jul 10, '96
242
"h:mm a"                          -&gt;&gt;  12:08 PM
243
"hh 'o''clock' a, z"              -&gt;&gt;  12 o'clock PM, Pacific Daylight Time
244
"K:mm a"                          -&gt;&gt;  0:00 PM
245
"yyyy.MMMM.dd G hh:mm a"          -&gt;&gt;  1996.July.10 AD 12:08 PM
246
</com:TTextHighlighter>
247
</p>
248
 
249
<p id="790654" class="block-content">Jika properti <tt>Value</tt> tidak ditetapkan, tanggal dan jam saat ini yang dipakai.</p>
250
 
251
<h2 id="6212">TNumberFormat</h2>
252
<p id="790655" class="block-content">Kerangka kerja Internasionalisasi PRADO menyediakan pembentukan kurs lokal dan pembentukan angka. Harap dicatat bahwa komponen <tt>TNumberFormat</tt> hanya menyediakan pembentukan, saat ini ia tidak melakukan konversi atau pertukaran.</p>
253
 
254
<p id="790656" class="block-content">Numbers can be formatted as currency, percentage, decimal or scientific
255
numbers by specifying the <tt>Type</tt> attribute. The valid types are:</p>
256
<ul id="u3" class="block-content">
257
	<li><tt>currency</tt></li>
258
	<li><tt>percentage</tt></li>
259
	<li><tt>decimal</tt></li>
260
	<li><tt>scientific</tt></li>
261
</ul>
262
 
263
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790221">
264
&lt;com:TNumberFormat Type="currency" Value="100" /&gt;
265
</com:TTextHighlighter>
266
 
267
<p id="790657" class="block-content">Properti <tt>Culture</tt> dan <tt>Currency</tt> dapat ditetapkan untuk membentuk angka spesifik lokal. </p>
268
 
269
<p id="790658" class="block-content">Jika seseorang dari US ingin melihat gambar penjualan dari sebuah toko dalam bahasa Jerman (katakanlah menggunakan kurs EURO), diformat menggunakan kurs jerman, Anda perlu untuk menggunakan atribut <tt>Culture="de_DE"</tt> guna memperoleh kurs yang benar, misalnya 100,00$. Pemisah desimal dan pengelompokan kemudian juga dari lokal <tt>de_DE</tt>. Ini dapat menimbulkan beberapa kebingungan karena orang dari US memakai "," (koma) sebagai pemisah ribuan. Oleh karena itu, atribut <tt>Currency</tt> tersedia agar output dari hasil contoh berikut menghasilkan $100.00
270
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790222">
271
&lt;com:TNumberFormat Type="currency"
272
          Culture="en_US" Currency="EUR" Value="100" /&gt;
273
</com:TTextHighlighter>
274
</p>
275
 
276
<p id="790659" class="block-content">Properti <tt>Pattern</tt> menetapkan jumlah digit, posisi pengelompokan ribuan, jumlah titik desimal dan posisi desimal. Karakter aktual yang dipakai untuk menyajikan titik desimal dan titik ribuan adalah spesifik kultur dan akan berubah secara otomatis berdasarkan properti <tt>Culture</tt>. Karakter <tt>Pattern</tt> yang benar adalah:</p>
277
<ul id="u6" class="block-content">
278
	<li><tt># (kris)</tt> - mewakili digit opsional</li>
279
	<li><tt>0 (nol)</tt> - mewakili digit mandatori, nol di kiri terisi</li>
280
	<li><tt>. (berhenti)</tt> - posisi titik desimal (hanya 1 titik desimal dibolehkan)</li>
281
	<li><tt>, (koma)</tt> - pemisahan titik ribuan (sampai 2 koma dibolehkan)</li>
282
</ul>
283
<p id="p2" class="block-content">
284
Sebagai contoh, anggap <tt>Value="1234567.12345"</tt> dan dengan
285
<tt>Culture="en_US"</tt> (yang menggunakan "," untuk titik pemisah ribuan dan "." untuk pemisah desimal).
286
</p>
287
<com:TTextHighlighter Language="text" CssClass="source block-content" id="code_790223">
288
Pola                      Output
289
----                      ------
290
##,###.00               -&gt;&gt;  1,234,567.12
291
##,###.##               -&gt;&gt;  1,234,567.12345
292
##,##.0000              -&gt;&gt;  1,23,45,67.1235
293
##,###,##.0             -&gt;&gt;  12,345,67.1
294
000,000,000.0           -&gt;&gt;  001,234,567.1
295
</com:TTextHighlighter>
296
</p>
297
 
298
<h2 id="6213">TTranslateParameter</h2>
299
<p id="790660" class="block-content">Pesan gabungan, misalnya penempatan string, bisa dilakukan dengan <tt>TTranslateParameter</tt>.
300
Dalam contoh berikut, string "{greeting}" dan "{name}" masing-masing akan diganti dengan nilai "Hello" dan "World". Penempatan string harus dikurung dengan "{" dan "}". Parameter selanjutnya diterjemahkan dengan menggunakans <tt>TTranslate</tt>.
301
 
302
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790224">
303
&lt;com:TTranslate&gt;
304
  {greeting} {name}!
305
  &lt;com:TTranslateParameter Key="name">World&lt;/com:TTranslateParameter&gt;
306
  &lt;com:TTranslateParameter Key="greeting">Hello&lt;/com:TTranslateParameter&gt;
307
&lt;/com:TTranslate&gt;
308
</com:TTextHighlighter>
309
 
310
 
311
<a name="choice-format"></a>
312
<h2 id="6214">TChoiceFormat</h2>
313
 
314
<p id="790661" class="block-content">Menggunakan fungsi <tt>localize</tt> atau komponen <tt>TTranslate</tt> untuk menerjemahkan pesan tidak memberitahu penerjemah kardinalitas dari data yang diminta untuk menentukan struktur jamak yang benar yang dipakai. Ia hanya memberitahunya bahwa ada data tersedia, data dapat berupa apa saja. Selanjutnya, penerjemah tidak akan bisa menentukan dengan memperhatikan penempatan data plural yang benar, struktur bahasa atau prasa yang dipakai. Misalnya dalam bahasa Inggris, untuk menerjemahkan kalimat, "There are {number} of apples.", hasil terjemahan akan berbeda tergantung pada <tt>jumlah</tt> apel.</p>
315
 
316
<p id="790662" class="block-content">Komponen <tt>TChoiceFormat</tt> melakukan pilihan terjemahan pesan/string. Contoh berikut mendemonstrasikan terjemahan pesan 2 pilihan sederhana.</p>
317
 
318
<com:TTextHighlighter Language="prado" CssClass="source block-content" id="code_790225">
319
&lt;com:TChoiceFormat Value="1"/&gt;[1] One Apple. |[2] Two Apples&lt;/com:TChoiceFormat&gt;
320
</com:TTextHighlighter>
321
 
322
<p id="790663" class="block-content">Dalam contoh di atas, <tt>Value</tt> "1" (satu), kemudian string yang diterjemahkan adalah "One Apple". Jika <tt>Value</tt> adalah "2", maka ia akan menampilkan "Two Apples".</p>
323
 
324
<p id="790664" class="block-content">Pilihan pesan/string dipisashkan oleh pipa "|" diikuti oleh set notasi dari formulir.</p>
325
<ul id="u7" class="block-content">
326
    <li><tt>[1,2]</tt> -- menerima nilai antara 1 dan 2, inklusif.</li>
327
    <li><tt>(1,2)</tt> -- menerima nilai antara 1 dan 2, kecuali 1 dan 2.</li>
328
    <li><tt>{1,2,3,4}</tt> -- hanya nilai yang didefinisikan dalam set yang diterima.</li>
329
    <li><tt>[-Inf,0)</tt> -- menerima nilai lebih besar dari atau sama dengan infinitif negatif dan kurang dari 0</li>
330
</ul>
331
 
332
<p id="790665" class="block-content">Setiap kombinasi tidak-kosong dari kurung kotak dan bulat dapat diterima.
333
String yang dipilih untuk tampilan tergantung pada properti <tt>Value</tt>. <tt>Value</tt> dievaluiasi untuk setiap set-nya sampai <tt>Value</tt> ditemukan milik set tertentu.</p>
334
 
335
 
336
<div class="last-modified">$Id: I18N.page 1650 2007-01-24 06:55:32Z wei $</div></com:TContent>