Bahasa Indonesia

Teks & alat sehari-hari · Perangkat Teks

Bagaimana generator slug melipat aksen: penjelasan dekomposisi NFD

· Cara kerjanya

url-siput konversi teks javascript

Huruf beraksen dipisahkan menjadi huruf dasar dan tanda sebelum menjadi siput URL
Ilustrasi vektor ToolAcre asli

Menjelaskan bagaimana dekomposisi kanonik Unicode memisahkan huruf dasar dari aksennya sehingga 'Café Crème' menjadi cafe-creme, bukan caf-cr-me, dan dekomposisi saja tidak cukup.

caf-cr-me — bug siput umum yang merusak nama, dan mengapa hal itu terjadi

Rutinitas slug yang lemah dapat mengubah `Café Crème` menjadi `caf-cr-me` ketika menghapus setiap karakter di luar rentang ASCII yang sempit. Aksen yang terlihat menghilang, namun huruf dasar di bawahnya ikut menghilang, meninggalkan URL yang tidak lagi menyerupai judul artikel. Kerusakan tersebut terlihat jelas terutama pada nama, tempat, dan kategori editorial yang berulang.

ToolAcre mengambil jalur berbeda di `slugify`. Pertama-tama, ini menormalkan input, lalu menghapus rentang tanda gabungan tertentu sambil mempertahankan huruf yang dihasilkan. Baru setelah itu huruf kecil pada pemisah teks dan bentuk. Urutan tersebut menjadi alasan `Café Crème` menjadi `cafe-creme` dan bukannya sebuah fragmen dengan vokal yang hilang.

Satu karakter, dua representasi - bagaimana é dapat berupa satu titik kode atau e diikuti dengan gabungan aksen lancip

Teks yang tampak identik dapat memiliki urutan internal yang berbeda. `é` dapat muncul sebagai satu karakter yang telah disusun sebelumnya, atau sebagai `e` biasa yang diikuti dengan tanda lancip yang digabungkan. Editor konten biasanya tidak dapat melihat representasi mana yang berasal dari CMS, dokumen, atau papan klip, namun filter karakter demi karakter dapat memperlakukan kedua masukan tersebut secara berbeda.

Perbedaan tersembunyi itu menjadi penting ketika aturan pengganti mengakui satu bentuk tetapi tidak mengakui bentuk yang lain. ToolAcre menghindari penulisan pengganti terpisah untuk setiap ejaan yang telah disusun sebelumnya. Normalisasi memberikan slug pipeline bentuk peralihan yang lebih konsisten, sehingga tanda aksen yang didukung dapat dihilangkan satu langkah berikutnya sementara huruf dasar tetap tersedia untuk URL.

Normalisasi Bentuk D - bagaimana dekomposisi kanonik menulis ulang setiap huruf beraksen menjadi huruf dasar ditambah tanda gabungan

Implementasinya memanggil `.normalize("NFD")` sebelum huruf kecil atau pemisah berfungsi. Untuk karakter yang memiliki dekomposisi kanonik yang ditangani oleh runtime JavaScript, hal ini menghasilkan karakter dasar yang diikuti oleh satu atau lebih tanda gabungan. Fungsi ini tidak menyimpan katalog ejaan Perancis atau Spanyolnya sendiri dan tidak memeriksa kata-kata secara semantik.

Garis besarnya mengatakan NFD menulis ulang setiap huruf beraksen, tetapi sumbernya mendukung pernyataan yang lebih sempit. Dekomposisi bergantung pada karakter, dan ekspresi penghapusan berikut mencakup poin kode dari `U+0300` hingga `U+036F`. Oleh karena itu, artikel tersebut harus mendeskripsikan perilaku yang ditunjukkan oleh kode, bukan menjanjikan penghapusan aksen universal untuk setiap skrip atau tanda.

NFD menguraikan karakter yang didukung; implementasinya tidak menjanjikan bahwa setiap huruf beraksen akan terpisah

Setelah normalisasi, `slugify` menerapkan `/[̀-ͯ]/g` dan mengganti setiap tanda yang cocok dengan string kosong. Dalam bentuk `é` yang terurai, `e` tidak cocok dengan rentang tersebut, sedangkan tanda lancip cocok. Menghapus hanya tanda akan meninggalkan huruf dasar yang dapat dibaca yang hanya akan dibuang oleh pendekatan ASCII sebelumnya.

Ini adalah pelipatan aksen, bukan izin pembersihan teks umum. Ekspresi reguler sengaja ditempatkan sebelum aturan pemisah, sehingga huruf dasar dapat ikut serta sebagai huruf di kemudian hari. Jika penghapusan tanda terjadi setelah jalur yang tidak didukung telah runtuh, tanda yang terurai dapat mempengaruhi penempatan pemisah dan menghasilkan slug yang kurang setia.

Sisa dari slug pipeline — memperkecil, mengecilkan proses non-alfanumerik menjadi tanda hubung tunggal, memangkas pemisah depan dan belakang, menghilangkan emoji

Alur yang tersisa memperkecil teks yang dinormalisasi dan menggantikan setiap proses yang bukan huruf atau angka Unicode dengan pemisah yang dikonfigurasi, yang defaultnya adalah tanda hubung. Ekspresi kedua memangkas pemisah berulang dari kedua ujungnya. Oleh karena itu, emoji dan tanda baca menghilang sebagai konten, sementara karakter berdekatan yang tidak didukung menjadi satu batas, bukan beberapa tanda hubung.

Garis besarnya menjelaskan keruntuhan non-alfanumerik, namun pola sebenarnya menggunakan pelolosan properti Unicode, bukan alfabet khusus ASCII. Huruf dari skrip non-Latin dapat tetap berada di slug setelah menggunakan huruf kecil. Konfigurasi mengonfirmasi bahwa tidak ada langkah transliterasi: simbol dihapus, tetapi huruf yang dipertahankan tidak secara otomatis ditulis ulang sebagai perkiraan ejaan Latin.

Sisa dari slug pipeline ini menyimpan huruf dan angka dari skrip apa pun sambil mengganti proses lainnya dengan pemisah yang dipilih

Ikuti `Café Crème & Co. — Été 2024!` hingga penerapannya. NFD memisahkan karakter beraksen yang didukung menjadi huruf dan tanda dasar. Ekspresi penghapusan tanda meninggalkan `Cafe Creme & Co. — Ete 2024!`, dan huruf kecil menghasilkan `cafe creme & co. — ete 2024!` sebelum tanda baca diproses.

Jaringan non-huruf dan non-angka kemudian menjadi tanda hubung, menghasilkan urutan bermakna `cafe-creme-co-ete-2024` setelah pemisah awal dan akhir dipangkas. Tanda ampersand, titik, tanda hubung, dan tanda seru tidak menerima nama yang diucapkan atau penggantian khusus. Mereka hanya berfungsi sebagai batas antara huruf dan angka dalam konversi ini.

Apa yang tidak dapat dilakukan dekomposisi — huruf seperti ø, ł, ß dan æ tidak memiliki aksen untuk dihilangkan dan memerlukan tabel transliterasi

Dekomposisi bukanlah transliterasi. Karakter seperti `ø`, `ł`, `ß` dan `æ` masih berupa huruf Unicode setelah saluran ini, sehingga filter berbasis properti menyimpannya daripada melihat tabel untuk `o`, `l`, `ss` atau `ae`. Mengklaim bahwa pengguna memerlukan tabel transliterasi mungkin merupakan saran desain yang berguna di tempat lain, tetapi tabel seperti itu tidak ada di alat ini.

Perbedaan tersebut juga menjelaskan mengapa hasilnya mungkin merupakan proyek slug yang valid tanpa hanya ASCII saja. Editor yang sistem penerbitannya memerlukan ASCII harus memeriksa batasan sistem terpisah tersebut sebelum menggunakan hasilnya. ToolAcre menjanjikan pelipatan aksen untuk rentang dekomposisi dan tanda yang diterapkan; itu tidak menjanjikan ejaan yang sadar bahasa, konversi yang dapat dibalik, atau keluaran Latin untuk setiap judul.

Karakter tanpa tanda yang dapat dilepas tetap berupa huruf; alat ini tidak memiliki tabel transliterasi

Kesimpulan yang dapat diandalkan adalah prosedural: normalkan terlebih dahulu, hapus tanda penggabungan yang didukung, huruf kecil, ciutkan proses yang tidak didukung, dan potong pemisah. Setiap tahap memiliki satu tanggung jawab yang terlihat, dan urutannya mempertahankan huruf dasar sebelum tanda baca dihilangkan. Itu cukup untuk mencegah kegagalan `caf-cr-me` yang umum tanpa menciptakan aturan bahasa yang tidak terdapat dalam sumbernya.

Rekatkan judul yang dikerjakan ke dalam Konverter huruf besar-kecil dan pilih opsi siput untuk memeriksa hasil akhir di kotak teks yang sama. Jika judul menyertakan huruf di luar kasus aksen yang ditunjukkan, tinjau keluarannya terhadap platform tujuan. Konverter menyediakan transformasi sisi browser yang dapat diprediksi, sementara editor tetap bertanggung jawab atas konvensi rute.