Karena Angular 9 dapat kita gunakan
$localize`Hello ${name}:name:`
Untuk i18n dalam kode naskah. Ini masih memiliki beberapa keterbatasan karena ng xi18n
perintah tidak mendeteksi string, tetapi jika teks-teks ini ditambahkan secara manual ke file terjemahan itu berfungsi.
The $localize
fungsi cukup baik didokumentasikan dalam JSDoc di sumber , namun tidak menjelaskan bagaimana bekerja dengan bentuk jamak. Yang saya maksud adalah sesuatu seperti ini (pseudo-code):
$localize`Hello {${count}, plural, =1 {reader} other {readers}}`
Apakah ini mungkin $localize
? Jika ya: Bagaimana? Jika tidak: Bagaimana Angular mengkompilasi ekspresi seperti itu dari HTML ke TypeScript?
angular
angular-i18n
yankee
sumber
sumber
<span i18n>Updated {minutes, plural, =0 {just now} =1 {one minute ago} other {{{minutes}} minutes ago}}</span>
? Itu ada dalam dokumen. Sangat mirip dengan yang Anda inginkanJawaban:
Untuk saat ini, tidak mungkin untuk menggunakan ICU dengan
$localize
, seperti yang dibahas dalam masalah github ini . Dari komentar terakhir, sepertinya tim sudut sedang mempertimbangkannya jika tetap ringan.Sementara itu, solusi yang disarankan adalah membuat metode pembantu Anda sendiri yang mengembalikan terjemahan yang benar berdasarkan parameter jumlah.
sumber
Saya baru saja membaca masalah https://github.com/angular/angular/issues/35912 dan saya pikir itu
intl-messageformat
dapat melakukan apa yang Anda butuhkan.Lihat https://github.com/formatjs/formatjs/tree/master/packages/intl-messageformat .
sumber