Bentuk jamak , jenis kelamin , angka singkat , bilangan ordinal , perubahan bahasa runtime , pemeriksaan tumpang tindih dan pemotongan , dan banyak lagi.
Pulai telah menerapkan koleksi API internasionalisasi (I18N) untuk .NET, Angular dan Delphi. Setiap API menambahkan fitur tambahan ke API I18N standar dari platform - misalnya, dukungan untuk angka tata bahasa, jenis kelamin tata bahasa, angka singkat, dan bilangan ordinal. Perpustakaan juga termasuk API untuk melakukan sakelar bahasa runtime dari aplikasi, atau untuk memilih bahasa awal pada runtime. Perpustakaan juga berisi API yang pada runtime memeriksa antarmuka pengguna Anda untuk masalah seperti kontrol terpotong atau tumpang tindih. Akhirnya, Perpustakaan Delphi berisi sumber daya lokalisasi yang tepat untuk Firemonkey.
Setiap API adalah 100% API asli. Ini berarti berisi kode sumber penuh dan tidak memerlukan file tambahan. .NET API hanya berisi kode C# dan tidak memerlukan file pustaka atau data lain. Dengan cara yang sama, Angular API hanya berisi kode TypeScript, dan Delphi API hanya berisi kode Delphi. Aturan yang digunakan oleh kode telah diekstraksi dari CLDR ke file kode sumber yang merupakan bagian dari kode sumber API. Anda tidak memerlukan perpustakaan ICU atau file XML CLDR, tetapi semuanya termasuk logika dan aturan disusun ke dalam file aplikasi Anda.
Sebagian besar format sumber daya (misalnya .resx di .net, .properties in Java, dan string sumber daya di Delphi) hanya mendukung string biasa. Angka tata bahasa, dan jenis kelamin memerlukan data struktural di mana ada beberapa varian bahasa-depend untuk satu string. Misalnya, dalam bahasa Inggris, "Saya memiliki N mobil" akan membutuhkan dua varian:
| Nomor tata bahasa | .BERSIH | Delphi dan Java |
|---|---|---|
| tunggal | Saya memiliki {0} mobil | Saya punya %d mobil |
| jamak | Saya memiliki {0} mobil | Saya punya %d mobil |
Beberapa platform seperti Android dan Angular memiliki dukungan bawaan untuk bentuk jamak, dan itulah sebabnya mereka juga memiliki format sumber daya khusus untuk memiliki banyak pola. Namun, .NET, Delphi, dan Java tidak memiliki format sumber daya seperti itu. Perpustakaan ini menggunakan format pesan ICU untuk menyimpan semua pola terkait ke dalam string sumber daya standar. Sintaksnya adalah:
{parameter, kind, form1 {pattern1}[ form2 {pattern2}]...[ formN {patternN}]
Di mana
kind itu plural , gender atau select
form adalah kode untuk bentuk bilangan tata bahasa atau untuk bentuk gender tata bahasa.
Tabel berikut berisi kemungkinan bentuk.
| Membentuk | Digunakan dengan | Keterangan |
|---|---|---|
| nol | Angka tata bahasa | Nullar |
| satu | Angka tata bahasa | Tunggal |
| dua | Angka tata bahasa | Ganda |
| sedikit | Angka tata bahasa | Paucal, percobaan atau yang serupa |
| banyak | Angka tata bahasa | Paucal yang lebih besar atau serupa |
| lainnya | Angka tata bahasa Jenis kelamin tata bahasa | Jamak Netral |
| pria | Jenis kelamin tata bahasa | Pria |
| perempuan | Jenis kelamin tata bahasa | Perempuan |
| netral | Jenis kelamin tata bahasa | Netral. Sama seperti lainnya. |
Selain formulir di atas, Anda dapat menggunakan operator dengan nomor tata bahasa. Operatornya adalah:
| Membentuk | Contoh | Keterangan |
|---|---|---|
| = n | = 1 | Setara |
| ~ n | ~ 12 | Sekitar |
| > n | > 5 | Lebih besar dari |
| <n | <10 | Kurang dari |
| > = n | > = 5 | Lebih besar atau sama dengan |
| <= n | <= 10 | Kurang atau sama dengan |
| n..m | 2..6 | Jangkauan |
Sampel mobil untuk .net adalah:
{plural, one {I have {0} car} other {I have {0} cars}}
Versi Finlandia akan
{plural, one {Minulla on {0} auto} other {Minulla on {0} autoa}}
Versi Jepang akan
{plural, other {{0}車持っています}}
Jepang hanya memiliki satu bentuk, universal, sehingga string hanya berisi pola lain.
Pola ini dapat berisi teks sebelum dan sesudah sintaks multi-pola. Contoh berikut berisi "yang saya miliki" sebelum multi-pola dan "." setelah multi-pola.
I have {plural, one {{0} car} other {{0} cars}}.
Untuk Delphi sampel itu akan terjadi
I have {plural, one {%d car} other {%d cars}}.
Jika pola Anda perlu memiliki kawat gigi ({atau}) mereka harus diloloskan menggunakan . Karakter juga harus diloloskan. Misalnya "Saya suka bermain ski {alpine s} Namun, saya hanya memiliki {0} pasang ski"
other {I like skiing {alpine\s} however, I only have {0} pairs of skis}
Lihat sampel dalam SamplesDelphiVCLPatterns , SamplesDelphiFMXPatterns , SamplesWindowsFormsPatterns dan SamplesWPFPatterns direktori.
Kelas -kelas ini juga mendukung format multi pola lama
one;I have {0} car;other;I have {0} cars
Namun dukungan untuk format warisan ini telah ditinggalkan. Format pesan ICU adalah format yang disarankan.
API mendukung beberapa placeholder yang diaktifkan jamak/gender. Dalam hal ini, Anda telah membagi string Anda menjadi beberapa bagian, masing -masing berisi satu placeholder, dan kemudian rantai segmen menjadi kalimat logis. Gunakan formulir next untuk memulai bagian baru. Misalnya, jika saya ingin mengatakan "Saya memiliki mobil C dan S ski" Anda akan membuat string berikut yang berisi dua bagian: satu untuk mobil dan satu lagi untuk ski. Setiap bagian berisi dua pola: tunggal dan jamak.
I have {plural, one {{0} car} other {{0} cars}} and {plural, one {{0} ski} other {{0} skis}}.
String berisi dua pola multi: mobil dan ski.
I have {plural, one {%d car} other {%d cars}} and {plural, one {%d ski} other {%d skis}}.
Lihat SamplesDelphiVCLPatternsMulti , SamplesDelphiFMXPatternsMulti , SamplesWindowsFormsPatternsMulti dan SamplesWPFPatternsMulti sampel.
Jika kita perlu menampilkan angka besar di layar, mungkin sulit bagi pengguna untuk memahami besarnya angka dengan mudah. Misalnya, jika kita memiliki nomor 144563217, bagaimana kita harus menunjukkannya. Kami dapat memformatnya sesuai dengan aturan lokal pengguna. Misalnya, di AS akan menjadi 14.456.217. Meskipun ini lebih mudah dipahami daripada angka yang tidak diformat, ia masih memiliki beberapa masalah. Yang pertama adalah bahwa ia membutuhkan upaya untuk memahami besarnya angka. Kedua, itu membutuhkan cukup banyak ruang. Salah satu solusinya adalah dengan membulatkannya seperti 14.000.000. Lebih mudah dimengerti. Untuk membuatnya lebih mudah dipahami, kita juga dapat menyingkatnya seperti 14m. Bentuk singkatan semakin populer. Sayangnya, setiap bahasa sebagai cara untuk menyingkat. Sebagian besar bahasa pergi dengan tiga digit. Misalnya, bahasa Inggris: k, m, g, t, dll. Namun, beberapa bahasa Asia pergi dengan empat digit. Misalnya bahasa Jepang: 万 (10.000), 億 (100.000.000), dll.
CLDR berisi aturan untuk menyingkat angka. API angka singkat menggunakan aturan tersebut untuk memformat angka (integer atau float) sebagai string. Hasilnya bisa menjadi string panjang seperti 14 juta, pendek 14m, atau string mata uang seperti $ 14 juta.
CLDR tidak berisi informasi tentang cara membuat nomor ordinal dari angka. Saya telah mengumpulkan aturan dari berbagai sumber. Masih ada banyak bahasa tanpa aturan yang tepat. Bantuan dari penutur asli akan dihargai.
Beberapa platform seperti Angular tidak memiliki pemuatan terjemahan runtime. API ini mengimplementasikannya. Dengan menggunakan API ini, Anda sekarang dapat membuat satu kompilasi, satu penyebaran dan satu URL yang melayani semua bahasa.
Runtime Language Switch adalah fitur di mana aplikasi dapat mengubah bahasa antarmuka penggunanya saat runtime. Perpustakaan ini berisi kode untuk itu. Perubahan bahasa diimplementasikan sedemikian rupa sehingga tidak ada pemuatan ulang formulir atau dialog, dan keadaan aplikasi saat ini tetap tidak berubah.
Sakelar bahasa runtime API adalah untuk Delphi VCL, Delphi Firemonkey, .NET Windows Forms, dan .NET WPF.
Ketika kita menerjemahkan string ke bahasa lain, selalu ada kemungkinan bahwa terjemahan akan lebih lama dari string aslinya. Ini terutama benar jika bahasa aslinya adalah bahasa Inggris karena bahasa Inggris adalah bahasa yang lebih kompak seperti misalnya, Jerman atau Finlandia. Ketika string yang diterjemahkan menjadi lebih lama, ada risiko bahwa bagian dari string akan terpotong atau dua atau lebih string tumpang tindih. Situasi seperti ini sulit ditemukan. API Pemeriksa Antarmuka Pengguna membantu. Ini adalah API yang Anda tautan sementara ke kode Anda, dan ketika Anda menjalankan aplikasi menulis file laporan dengan tangkapan layar yang menunjukkan pemotongan dan tumpang tindih ditandai dengan warna yang jelas. Anda dapat langsung melihat di mana pemotongan atau tumpang tindih terjadi.
API Pemeriksa Antarmuka Pengguna adalah untuk Delphi VCL, Delphi Firemonkey, .NET Windows Forms, dan .NET WPF.
LibraryNET berisi .net API. LibraryNETStandard berisi perpustakaan standar .net yang berisi API untuk angka tata bahasa, jenis kelamin tata bahasa, angka singkat, dan bilangan ordinal. Kompilasi dan tambahkan ke dalam solusi Anda dan akhirnya tambahkan perpustakaan ke dalam referensi proyek Anda. Karena bagian No UI dari perpustakaan adalah .NET Standard, ia bekerja dengan Windows Forms, WPF, Asp.net, .NET Core, dan Xamarin. Anda juga dapat mengkompilasinya menggunakan versi .NET apa pun yang dimulai dengan .NET 2.0.
Anda bisa mendapatkan API melalui Nuget.
Install-Package Soluling
Saat ini, kami memiliki sampel untuk Windows Forms dan WPF. Kami akan segera menambahkan sampel inti ASP.NET dan ASP.NET.
LibraryAngular berisi API sudut. API membutuhkan sudut 9 atau yang lebih baru. Cara termudah untuk menggunakannya adalah melalui NPM.
npm install @soluling/angularUntuk mempelajari lebih lanjut tentang API ini, baca dokumentasinya.
LibraryDelphi berisi API Delphi. Cara termudah untuk memasukkannya ke dalam aplikasi Anda adalah dengan menambahkan jalur ke jalur pencarian proyek Anda. Perpustakaan mendukung Delphi 7 atau lebih baru. Namun, untuk mendapatkan semua fitur yang Anda butuhkan Delphi XE2 atau lebih baru.
Firemonkey tidak memiliki sumber daya lokalisasi yang tepat. Jika platform seluler target Anda seperti iOS atau Android, Anda tidak dapat menggunakan DLL sumber daya. Semuanya, termasuk sumber daya yang terlokalisasi, harus berada di file aplikasi utama. Perpustakaan ini berisi solusi untuk lokalisasi firemonkey. Ini menggunakan format file .ntres khusus untuk menyimpan formulir ( .fmx ), string, gambar, dan sumber daya audio ke dalam satu file .ntres . File berisi sumber daya dalam semua bahasa yang ingin Anda dukung. Terakhir, Anda menambahkan file .ntres sebagai sumber daya khusus ke dalam aplikasi Anda dan menggunakan panggilan API perpustakaan untuk mengakses sumber daya. Anda tidak perlu memodifikasi aplikasi Anda yang ada untuk membuat multibahasa. Satu -satunya pengecualian adalah string sumber daya. Anda tidak dapat menggunakan. Jika Anda memiliki string hardcoded, dan Anda ingin melokalkannya, bungkus dalam fungsi _t.
procedure TForm1.UpdateStrings ;
begin
Label1.Text := _T( ' Hello world ' );
end ;Jika Anda sudah memiliki string sumber daya yang ada, hapus dan gunakan fungsi _t. Selain itu Anda harus menelepon _t untuk setiap formulir.
procedure TForm1.FormCreate (Sender: TObject);
begin
_T(Self);
end ; Lihat SamplesDelphiFMXPatternsSimple terlebih dahulu.
Anda dapat menggunakan sumber daya .ntres juga dalam aplikasi VCL, tetapi disarankan untuk menggunakan metode lokalisasi VCL standar dengan string sumber daya dan DLL sumber daya atau file EXE terlokalisasi.
Pembangun C ++ tidak didukung secara resmi. Semua kode ini harus bekerja dengan pembangun C ++ tetapi tidak pernah diuji.
Kami memilih .NET, Angular dan Delphi sebagai platform pertama karena beberapa alasan. Pertama adalah bahwa kami menyukai Angular, C# dan Delphi. Kedua, baik Delphi dan .net tidak memiliki dukungan untuk beberapa API I18N, seperti bentuk jamak dan jenis kelamin. Yang ketiga adalah bahwa Delphi dan .NET juga akan mendapat manfaat dari sakelar bahasa runtime. Keempat adalah bahwa Delphi digunakan untuk membuat aplikasi seluler di mana ukurannya penting. Kelima adalah bahwa saya percaya bahwa C# + .net Core akan memiliki masa depan yang cerah.
Kami sedang mempertimbangkan untuk mengimplementasikan kelas serupa untuk TypeScript (JavaScript hadir dalam proses). Namun, TypeScript sebagian besar digunakan dengan sudut yang sudah memiliki bentuk jamak dan jenis kelamin. Kami menerapkan pemuatan terjemahan runtime untuk Angular. Kami mungkin hanya akan menerapkan API angka singkat untuk naskah.
Kami dapat mengimplementasikan perpustakaan serupa untuk Java. Sudah ada implementasi ICU untuk Java, jadi jika Anda menggunakan Java di sisi server, Anda dapat menggunakannya. Jika Anda menggunakan Java di sisi klien, kemungkinan besar akan Android, dan mendukung bentuk jamak tetapi bukan jenis kelamin. Kami masih mempertimbangkan dukungan Java. Beri tahu kami apakah itu berguna.
BinCldrToCode.exe adalah alat yang mengekstraksi aturan dari file CLDR XML ke file C# dan Delphi. Biasanya Anda tidak harus menggunakannya karena perpustakaan sudah berisi file yang diekstraksi yang berisi aturan dalam semua bahasa CLDR. Namun, jika Anda ingin membuat file aturan yang hanya berisi beberapa bahasa, Anda dapat menggunakan CldrToCode.exe untuk membuat file aturan Anda sendiri. Misalnya, jika Anda ingin membuat file aturan yang hanya berisi penggunaan bahasa Inggris, Jerman, dan Prancis:
CldrToCode.exe -lang:en;de;fr D:CLDRcommon
Ini akan membuat NtPluralData.pas , NtNumberData.pas , PluralData.cs dan NumberData.cs .
Dengan sedikit usaha kami dapat membuat cldrtocode.exe untuk membuat file java, naskah dan python juga.
Repo ini juga berisi aplikasi sampel internasionalisasi dan lokalisasi, file dan database. Penyulingan memiliki lusinan sampel yang mencakup beberapa platform pemrograman utama dan format file. Sampel terkini dan menggunakan versi terbaru dari bahasa pemrograman mereka.
Pulai berisi sampel untuk platform berikut:
Jika Anda berencana untuk melokalisasi aplikasi Anda menggunakan beberapa string pola, Anda lebih baik menggunakan alat lokalisasi yang memiliki dukungan untuk angka tata bahasa dan jenis kelamin tata bahasa. Pulai memiliki dukungan yang sangat baik untuk berbagai pola, dan mendukung ASP.NET, .NET, Angular, React, Blazor, Delphi, Python, Java, ditambah lebih dari 100 format file dan basis data lainnya.
Pulai mendukung lokalisasi berkelanjutan, terjemahan mesin, pencocokan interaktif yang diaktifkan memori terjemahan, terminologi interaktif, impor/ekspor, alat pembuatan, dan terjemahan cloud.

Anda dapat mengunduh larut dari sini.
Catatan! Saat ini, larut dan solumake adalah aplikasi Windows dan hanya berfungsi pada Windows. Namun, kami berencana untuk merilis versi berbasis web di Future dan Port Solumake ke Linux dan MacOS.