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
- API Pengantarabangsaan JavaScript (I18N) menggalakkan penyesuaian aplikasi web kepada penonton global dengan menyokong pelbagai bahasa dan norma budaya.
- Menggunakan objek INTL, pemaju boleh memformat tarikh, masa, nombor, dan senarai berdasarkan keutamaan tempatan, yang mungkin berbeza mengikut rantau.
- API termasuk fungsi seperti
- dan
Intl.DateTimeFormat()
, yang menerima pengecam locale untuk membentangkan maklumat dalam format yang biasa kepada pengguna.Intl.NumberFormat()
Ciri -ciri canggih seperti pemformatan masa relatif ( - ) membolehkan aplikasi yang lebih nuanced dan budaya.
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. - Pengantarabangsaan (I18N) boleh menjadi rumit
Pengantarabangsaan kelihatan mudah ...
sehingga anda cuba melakukannya. 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
- Perancis: nom, e-mel, tarikh
- Jerman: Nama, e -mel, datum
- sistem pengantarabangsaan dan penyetempatan GETTEXT telah wujud selama beberapa dekad, dan kebanyakan bahasa pengaturcaraan mempunyai perpustakaan yang tersedia.
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>"nama"
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>
Jika locale tidak ditakrifkan, bahasa semasa dan tetapan serantau peranti digunakan. Contohnya: <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>
Kaedah tempoh relatif
Intl.RelativeTimeFormat()
dan penerangan mereka, termasuk localeMatcher
, numeric
, style
, <code><label> for="name"></label>{{ NAME }}>
</code>
digital, mata wang, peratusan dan unit
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!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza, masing -masing sesuai untuk senario aplikasi yang berbeza. Java digunakan untuk pembangunan aplikasi perusahaan dan mudah alih yang besar, sementara JavaScript digunakan terutamanya untuk pembangunan laman web.

Titik berikut harus diperhatikan apabila tarikh pemprosesan dan masa di JavaScript: 1. Terdapat banyak cara untuk membuat objek tarikh. Adalah disyorkan untuk menggunakan rentetan format ISO untuk memastikan keserasian; 2. Dapatkan dan tetapkan maklumat masa boleh diperoleh dan tetapkan kaedah, dan ambil perhatian bahawa bulan bermula dari 0; 3. Tarikh pemformatan secara manual memerlukan rentetan, dan perpustakaan pihak ketiga juga boleh digunakan; 4. Adalah disyorkan untuk menggunakan perpustakaan yang menyokong zon masa, seperti Luxon. Menguasai perkara -perkara utama ini secara berkesan dapat mengelakkan kesilapan yang sama.

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScriptispreferredforwebdevelopment, whersjavaisbetterforlarge-scalebackendsystemsandandroidapps.1) javascriptexcelsinceleatinginteractiveWebexperienceswithitsdynamicnatureanddommanipulation.2) javaoffersstrongyblectionandobjection

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

JavascripthassevenfundamentalDatypes: nombor, rentetan, boolean, undefined, null, objek, andsymbol.1) numberuseadouble-precisionformat, bergunaforwidevaluangesbutbecautiouswithfloating-pointarithmetic.2)

Jika aplikasi JavaScript memuat perlahan -lahan dan mempunyai prestasi yang buruk, masalahnya adalah bahawa muatan terlalu besar. Penyelesaian termasuk: 1. Penggunaan kod pemisahan (codesplitting), memecah bundle besar ke dalam pelbagai fail kecil melalui react.lazy () atau membina alat, dan memuatkannya seperti yang diperlukan untuk mengurangkan muat turun pertama; 2. Keluarkan kod yang tidak digunakan (treeshaking), gunakan mekanisme modul ES6 untuk membersihkan "kod mati" untuk memastikan perpustakaan yang diperkenalkan menyokong ciri ini; 3. Memampatkan dan menggabungkan fail sumber, membolehkan GZIP/Brotli dan Terser memampatkan JS, menggabungkan fail dan mengoptimumkan sumber statik; 4. Gantikan kebergantungan tugas berat dan pilih perpustakaan ringan seperti hari.js dan ambil

Perbezaan utama antara modul ES dan Commonjs adalah kaedah pemuatan dan senario penggunaan. 1.Commonjs dimuatkan secara serentak, sesuai untuk persekitaran sisi pelayan Node.js; 2. Modul tidak disengajakan, sesuai untuk persekitaran rangkaian seperti penyemak imbas; 3. Sintaks, modul ES menggunakan import/eksport dan mesti terletak di skop peringkat atas, manakala penggunaan CommonJS memerlukan/modul.exports, yang boleh dipanggil secara dinamik pada runtime; 4.Commonjs digunakan secara meluas dalam versi lama node.js dan perpustakaan yang bergantung kepadanya seperti Express, manakala modul ES sesuai untuk kerangka depan moden dan nod.jsv14; 5. Walaupun ia boleh dicampur, ia boleh menyebabkan masalah dengan mudah.
