Banyak pengguna berbahasa bukan bahasa Inggeris tinggal di pasaran baru muncul, dengan pertumbuhan internet meningkat secara eksponen. Jika aplikasi web anda boleh diterjemahkan secara global, pasaran sasaran berpotensi anda mungkin meningkat sebanyak 700%!
JavaScript International API (juga dikenali sebagai I18N) membolehkan anda merancang laman web dan aplikasi supaya mereka dapat dengan mudah menyesuaikan diri dengan keperluan pengguna yang bercakap bahasa yang berbeza.
Dalam artikel ini, kami akan melihat pelbagai kaedah API yang disediakan dan bagaimana untuk melaksanakannya dalam kod anda untuk mencapai penonton antarabangsa yang lebih luas.
mata utama
Intl.DateTimeFormat()
, yang menerima pengecam locale untuk membentangkan maklumat dalam format yang biasa kepada pengguna. Intl.NumberFormat()
Intl.RelativeTimeFormat
Intl.PluralRules
Walaupun keupayaannya yang kuat, API INTL JavaScript memerlukan pelaksanaan yang teliti untuk mengendalikan perbezaan bahasa dan budaya dengan berkesan dan memastikan bahawa aplikasi benar -benar antarabangsa. . Bahasa berasaskan Latin mungkin sama di permukaan. Sebagai contoh, borang untuk meminta nama, e -mel, dan tarikh diterjemahkan seperti berikut:
Bahasa Sepanyol: Nombre, E -mel, Fecha
Dalam kes yang lebih mudah, anda boleh menggunakan beberapa bentuk tokenisasi. Sebagai contoh, ambil templat HTML yang mengandungi yang berikut:
Ini secara dinamik akan menggantikan
<code><label> for="name"></label>{{ NAME }}> </code>
apabila pengguna menetapkan bahasa Inggeris sebagai bahasa utama mereka. Malangnya, ini adalah di mana masalah antara muka pengguna anda mula muncul: Banyak isu boleh diselesaikan dengan menyimpan teks dengan minimum dan meletakkan dengan sifat CSS seperti orientasi, corak penulisan, dan dimensi logik. Kekeliruan lanjut berlaku apabila aplikasi anda perlu memaparkan tarikh, masa, nombor, mata wang, atau unit. Pertimbangkan memaparkan tarikh sebagai "12/03/24". Ia akan ditafsirkan sebagai:
Nombor "1,000" akan ditafsirkan sebagai:
Sebagai alternatif, anda boleh membuat objek INTL dalam baris kod dan menjalankan kaedah: Di samping kaedah format (), beberapa objek juga menyokong kaedah berikut: Semua objek INTL memerlukan parameter locale. Ini adalah rentetan yang mengenal pasti: bahasa dan rantau biasanya mencukupi. Sebagai contoh, "en-us", "fr-fr", dll. Selain menggunakan rentetan, anda juga boleh menggunakan objek Intl.Locale untuk membina kawasan, seperti Bahasa Inggeris AS dalam format 12 jam: Ini boleh digunakan dalam pembina INTL yang lain. Contohnya:
Tarikh dan masa (contoh codepen harus tertanam di sini, tetapi kerana saya tidak dapat membenamkan sumber luaran secara langsung, saya hanya dapat memberikan keterangan teks.) Contoh Codepen menunjukkan pelbagai cara untuk memformat tarikh dan masa di kawasan dan bahasa yang berbeza menggunakan
(ia harus menjadi jadual di sini, tetapi kerana saya tidak dapat membuat jadual secara langsung, saya hanya dapat memberikan keterangan teks.) Jadual menyenaraikan sifat , ,
formatRange () mengambil dua tarikh dan format tempoh dengan cara yang paling ringkas, bergantung kepada lokasi dan pilihan. Contohnya: Objek intl.RelativeTimeFormat () boleh memaparkan tempoh berbanding dengan masa ini. Objek pilihan mempunyai pilihan yang lebih sedikit: (ia harus menjadi jadual di sini, tetapi kerana saya tidak dapat membuat jadual secara langsung, saya hanya dapat memberikan keterangan teks.) Jadual menyenaraikan sifat
, termasuk gaya yang berbeza (perpuluhan, mata wang, peratus, unit) dan pilihan seperti , , dan lain -lain. , ,
, pilih () mengembalikan rentetan bahasa Inggeris yang mewakili kategori jamak nombor angka (sifar, satu, dua, minoriti, majoriti, atau lain -lain). Contoh: Akhir sekali, objek intl.collator () menyokong perbandingan rentetan sensitif bahasa. Objek pilihannya boleh menetapkan sifat berikut: (ia harus menjadi jadual di sini, tetapi kerana saya tidak dapat membuat jadual secara langsung, saya hanya dapat memberikan keterangan teks.) Jadual menyenaraikan sifat
jika format tidak disokong:
Soalan Lazim (FAQ) Mengenai JavaScript Internationalisation API (I18N)
Apabila membuat objek DateTimeFormat, NumberFormat, atau Collator, anda boleh menentukan lokasi sebagai parameter. Lokasi adalah rentetan yang mewakili bahasa dan rantau, seperti "en-us" dalam bahasa Inggeris Amerika atau "FR-FR" dalam bahasa Perancis yang digunakan di Perancis. Jika lokasi tidak ditentukan, lokasi lalai untuk persekitaran JavaScript digunakan. Ya, apabila membuat objek DateTimeFormat, NumberFormat, atau Collator, anda boleh menentukan pelbagai tempat sebagai array. JavaScript i18n akan menggunakan lokasi pertama yang menyokongnya dalam array. Ini sangat berguna untuk aplikasi yang digunakan di beberapa kawasan, kerana ia membolehkan mereka menyesuaikan diri dengan konvensyen bahasa dan format di kawasan yang berbeza. Apabila membuat objek DateTimeFormat, NumberFormat, atau Collator, anda boleh menyesuaikan pilihan pemformatan untuk JavaScript i18n dengan menyediakan objek pilihan. Objek pilihan boleh menentukan aspek pemformatan atau perbandingan, seperti format tarikh atau nombor, kepekaan perbandingan rentetan, dan sebagainya. Ya, JavaScript i18n boleh digunakan bersempena dengan API JavaScript yang lain. Sebagai contoh, anda boleh menggunakan objek tarikh dengan objek DateTimeFormat untuk memformat tarikh, atau anda boleh menggunakan objek nombor dengan objek NumberFormat untuk nombor format. Ini membolehkan anda memanfaatkan kuasa JavaScript untuk mengantarabsankan aplikasi anda. Pelayar yang paling moden (termasuk Chrome, Firefox, Safari, dan Edge) menyokong JavaScript i18n. Walau bagaimanapun, ia mungkin tidak disokong oleh pelayar yang lebih tua atau beberapa pelayar mudah alih. Anda boleh melihat jadual keserasian di Rangkaian Pemaju Mozilla (MDN) untuk maklumat terkini mengenai sokongan penyemak imbas. Anda boleh mengetahui lebih lanjut mengenai JavaScript i18n dari Spesifikasi API Antarabangsa ECMAScript rasmi, Rangkaian Pemaju Mozilla (MDN), dan pelbagai tutorial dan artikel dalam talian. Sumber -sumber ini memberikan maklumat terperinci mengenai API dan penggunaannya, serta contoh dan amalan terbaik untuk memanfaatkan aplikasi JavaScript.
Istilah kekeliruan
Objek INTL JavaScript yang terkenal melaksanakan API International ECMAScript dalam pelayar dan runtime yang paling moden. Sokongan biasanya baik, dan bahkan IE11 mempunyai banyak kaedah yang lebih berguna. Untuk penyemak imbas yang lebih tua, terdapat polyfill dan API dapat dikesan seperti ini:
<code><label> for="name"></label>{{ NAME }}>
</code>
<code>if (window.Intl) {
// Intl 受支持
}
</code>
<code>const dateFormatter = new Intl.DateTimeFormat('en-US');
</code>
Tentukan locale
<code><label> for="name"></label>{{ NAME }}>
</code>
<code>if (window.Intl) {
// Intl 受支持
}
</code>
<code>const dateFormatter = new Intl.DateTimeFormat('en-US');
</code>
Alat berikut menunjukkan contoh tarikh dan masa yang diformat menggunakan intl.dateTimeFormat () (kami sangat menyesal jika bahasa atau wilayah anda tidak disenaraikan!):
Intl.DateTimeFormat()
Pembina melewati objek locale dan opsyen. Terdapat banyak sifat yang mungkin untuk ini, walaupun anda jarang perlu melebihi gaya dan/atau gaya masa: Intl.DateTimeFormat()
, dateStyle
, timeStyle
>, calendar
, dayPeriod
, numberingSystem
, localeMatcher
, timeZone
, hour12
, hourCycle
, formatMatcher
, weekday
, era
, year
, month
, day
, hour
, minute
, second
, timeZoneName
, <code>const valentinesDay = dateFormatter.format( new Date('2022-02-14') );
// 返回美国格式“2/14/2022”
const starwarsDay = dateFormatter.format( new Date('2022-05-04') );
// 返回美国格式“5/4/2022”
</code>
Contoh:
<code>const starwarsDay = new Intl.DateTimeFormat('en-US').format( new Date('2022-05-04') );
</code>
tempoh relatif
Intl.RelativeTimeFormat()
dan penerangan mereka, termasuk localeMatcher
, numeric
, style
, <code><label> for="name"></label>{{ NAME }}>
</code>
Alat berikut menunjukkan contoh nombor pemformatan, mata wang, peratusan, dan unit pengukuran menggunakan intl.numberFormat (): Intl.NumberFormat()
, notation
, currency
, currencyDisplay
, unit
, unitDisplay
, useGrouping
, minimumIntegerDigits
, minimumFractionDigits
, maximumFractionDigits
, minimumSignificantDigits
, maximumSignificantDigits
, Intl.NumberFormat()
numberingSystem
pembina melewati objek locale dan pilihan: notation
style
(ia harus menjadi jadual di sini, tetapi kerana saya tidak dapat membuat jadual secara langsung, saya hanya dapat memberikan keterangan teks.) Jadual menyenaraikan sifat currency
dan penerangan mereka, termasuk currencyDisplay
, currencySign
, unit
, unitDisplay
>, useGrouping
, minimumIntegerDigits
, minimumFractionDigits
, maximumFractionDigits
, minimumSignificantDigits
, maximumSignificantDigits
, <code>if (window.Intl) {
// Intl 受支持
}
</code>
,
, Intl.ListFormat()
type
Senarai style
Objek <code>const dateFormatter = new Intl.DateTimeFormat('en-US');
</code>
(ia harus menjadi jadual di sini, tetapi kerana saya tidak dapat membuat jadual secara langsung, saya hanya dapat memberikan keterangan teks.) Jadual menyenaraikan sifat
dan penerangan mereka, termasuk
Kaedah <code><label> for="name"></label>{{ NAME }}>
</code>
perbandingan rentetan
Intl.Collator()
dan penerangan mereka, termasuk collation
, numeric
, dll. <code>if (window.Intl) {
// Intl 受支持
}
</code>
Jika anda menggunakan JavaScript untuk memaparkan data, anda harus dapat memaparkan maklumat secara langsung dalam format tempatan pengguna. Sebagai contoh, kod berikut mentakrifkan fungsi dateFormat () yang menggunakan format tarikh pendek INTL atau jatuh ke
yyyy-mm-dd <code>const dateFormatter = new Intl.DateTimeFormat('en-US');
</code>
Apakah tujuan API Pengantarabangsaan JavaScript (I18N)?
API Pengantarabangsaan JavaScript JavaScript (juga dikenali sebagai I18N) adalah API JavaScript terbina dalam yang menyediakan perbandingan rentetan sensitif bahasa, pemformatan angka, dan pemformatan tarikh dan masa. Ia membolehkan pemaju untuk mengantarabsankan aplikasi mereka dengan memberikan sokongan untuk bahasa dan konvensyen budaya yang berbeza. Ini amat berguna untuk aplikasi yang digunakan di seluruh dunia, kerana ia membolehkan mereka menyesuaikan diri dengan konvensyen bahasa dan format di kawasan yang berbeza.
Bagaimana JavaScript i18n mengendalikan tarikh dan pemformatan masa?
Bagaimana menangani pemformatan digital dalam JavaScript i18n?
Bagaimana untuk mengendalikan perbandingan rentetan dalam JavaScript i18n?
Bagaimana untuk menentukan tempat untuk JavaScript i18n?
Bolehkah saya menggunakan pelbagai tempat dengan JavaScript i18n?
Bagaimana untuk menyesuaikan pilihan pemformatan JavaScript i18n?
Bolehkah saya menggunakan JavaScript i18n dengan API JavaScript lain?
Adakah JavaScript i18n disokong oleh semua pelayar?
di mana saya boleh mengetahui lebih lanjut mengenai JavaScript i18n?
Atas ialah kandungan terperinci Apakah API Pengantarabangsaan JavaScript (I18N)?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!