Slug ialah ekor alamat web yang boleh dibaca — my-first-post dalam example.com/blog/my-first-post. Ia adalah bahagian yang boleh dibaca oleh seseorang sebelum membuat keputusan untuk klik, dan bahagian yang dibaca oleh enjin carian sebagai penerangan ringkas tentang kandungan halaman, itulah sebabnya ia patut diberi lebih perhatian daripada id pangkalan data atau tarikh. Penjana percuma ini menukar apa-apa teks menjadi slug: tampal tajuk ke "Teks untuk ditukar", tekan "Jana", dan hasilnya muncul dengan butang salin di sebelahnya. Tetapan lalai adalah tetapan yang dikehendaki oleh kebanyakan tapak web — huruf kecil, sempang antara perkataan, kata pengisi umum digugurkan, huruf bukan Latin ditransliterasi — jadi slug yang boleh digunakan hanya sejauh satu klik, dan setiap keputusan tersebut ialah suis yang boleh anda ubah.
Semuanya berlaku pada peranti anda sendiri. Halaman ini memuatkan enjin JavaScript kecil dan menjalankannya secara tempatan: tajuk anda tidak pernah dimuat naik, tidak pernah dilog, dan alat ini terus berfungsi walaupun sambungan dimatikan. Itulah juga sebabnya hasilnya dikemas kini sebaik sahaja anda menukar tetapan. Susunan kerjanya wajar dinyatakan, kerana itulah yang menjadikan keluarannya boleh dijangka: pautan yang ditampal dikurangkan kepada segmen laluan terakhirnya terlebih dahulu, kemudian teks ditukar menjadi huruf kecil, kemudian kata henti digugurkan, kemudian aksara bukan Latin ditransliterasikan, kemudian nombor dan aksara khas dibuang jika anda memintanya, kemudian apa-apa yang tinggal digabungkan dengan pemisah anda, kemudian hasilnya dipangkas kepada panjang maksimum, dan akhirnya ulangan mendapat imbuhan akhiran angka. "Teks untuk ditukar" menerima sehingga 500,000 aksara sekali gus, yang bersamaan dengan beberapa ribu tajuk artikel.
Satu baris masuk, satu slug keluar. Tampal keseluruhan senarai tajuk dan setiap baris menjadi slug bernomborkan sendiri, dengan tajuk asalnya ditunjukkan di atasnya dalam warna kelabu, supaya dalam kelompok lima puluh anda masih boleh mengetahui slug mana milik tajuk yang mana. Senarai yang sedia ada di dalam fail tidak perlu melalui papan keratan: "Muatkan daripada fail", butang di sebelah kotak input, membuka fail teks biasa — .txt, .csv, .md, .json dan seumpamanya — dan memasukkan kandungannya ke dalam medan tersebut. Pelayar anda membaca fail tersebut sama seperti ia membaca apa yang anda taip, dan ia tidak dimuat naik ke mana-mana. "Pisahkan input dengan" menentukan bagaimana senarai dipotong. "Pengesanan automatik" adalah lalai: baris baharu sentiasa memisahkan item, manakala koma hanya memisahkannya apabila input adalah baris tunggal yang semua bahagiannya kelihatan seperti nilai mandiri — jadi "harga 3,500 RM" dan "Bab 5: hasil, kesimpulan" kekal utuh dan bukannya pecah menjadi serpihan. "Baris baharu", "Koma" dan "Ruang" memaksa pilihan apabila anda sudah mengetahui bentuk data anda. "Format hasil" menentukan bagaimana sesuatu kelompok dikembalikan apabila anda mengambilnya — satu setiap baris, "Dipisahkan dengan ruang", atau "Dipisahkan dengan koma" — dan kedua-dua "Salin Semua" dan "Simpan ke fail" mematuhinya. "Sejarah" menyimpan 10 kelompok terakhir anda di pelayar anda sendiri, jadi senarai yang anda tukar sejam yang lalu masih ada di sana.
Teks bukan Latin merupakan bahagian yang dilakukan dengan agak betul oleh kebanyakan penjana slug dan hanya segelintir sahaja yang melakukannya dengan tepat. URL paling selamat dalam ASCII biasa, jadi aksara Sirilik, Yunani, Arab, Cina dan huruf beraksen Eropah mesti ditukar, dan satu-satunya persoalan sebenar ialah mengikut peraturan siapa. Halaman ini menjawabnya dalam dua lapisan. Lapisan umum meliputi setiap skrip: pustaka transliterasi dengan jawapan ASCII yang munasabah untuk hampir setiap aksara yang boleh anda taip, yang merupakan maksud "Transliterasi dari" apabila ia memaparkan "Automatik (sebarang bahasa)". Lapisan khusus ialah satu set jadual binaan tangan untuk bahasa yang jawapan generiknya bukanlah apa yang sebenarnya digunakan oleh negara tersebut; menu "Transliterasi dari" menamakan bahasa yang mempunyai jadual pada hari ini, dan setnya berkembang apabila alat ini mencapai lebih banyak bahasa yang memerlukannya. Memilih salah satu jadual akan memuatkannya ke dalam grid yang boleh disunting di bawah "Peraturan Transliterasi", yang mana setiap huruf ialah medan teks yang boleh anda ubah, dan "Tetapkan semula peraturan ke lalai" mengembalikannya. Jadual bahasa Ukraine mengikut Resolusi Kabinet Menteri No. 55 tahun 2010, piawaian yang dicetak dalam pasport Ukraine, termasuk butiran yang mudah terlepas pandang: зг menjadi zgh bukannya zh supaya ia kekal berbeza daripada ж; є, ї, й, ю dan я mengambil satu bentuk pada permulaan kata dan satu lagi di dalamnya; dan tanda koma atas dan tanda lembut digugurkan tanpa memulakan kata baharu, jadi Знам'янка keluar sebagai znamianka dan bukannya znamyanka. Bahasa Jerman ditetapkan kepada lalai varian yang diperluas ä → ae, ö → oe, ü → ue yang benar-benar digunakan oleh alamat Jerman, dengan varian ä → a biasa jika anda lebih menyukainya.
"Buang kata henti" dihidupkan secara lalai. Ia menggugurkan perkataan penyambung yang kecil — yang, di, ke, dan, dari — yang memanjangkan slug tanpa menambah makna padanya. Senarai di bawah "Kata henti" boleh disunting sepenuhnya dan tiba dalam keadaan telah diisi: senarai bahasa Inggeris berserta senarai untuk bahasa halaman yang anda sedang lawati, jadi halaman bahasa Melayu mengetahui yang, di, dan ke. Tambahkan kata anda sendiri, padam kata yang ingin anda simpan, atau matikan ciri tersebut sepenuhnya, di mana medan tersebut menjadi kelabu dan bukannya berpura-pura masih penting. Dua nota jujur mengenainya. Membuang kata henti adalah sedikit penambahan kekemasan dan bukannya tuas kedudukan carian — anda mendapat alamat yang lebih pendek dan bersih, bukan kedudukan yang lebih baik. Dan jika setiap perkataan dalam tajuk kebetulan ada dalam senarai, hasil jujurnya adalah tiada apa-apa langsung, jadi alat ini memberitahu anda mengenainya dan bukannya memberikan anda kotak kosong.
Suis selebihnya memutuskan bentuknya. "Pemisah dalam slug" memilih perkara yang berada di antara perkataan, dan lalai sempang bukanlah masalah cita rasa: Google membaca sempang sebagai pemisah kata dan garis bawah sebagai penyambung, jadi my_first_post mencapai perangkak carian sebagai satu perkataan yang panjang manakala my-first-post mencapainya sebagai tiga. "Garis bawah (_)" ada di sana untuk sistem yang bertegas mengenainya. "Huruf kecil" dihidupkan kerana kebanyakan pelayan menganggap alamat sebagai peka huruf besar dan kecil, dan huruf bercampur merupakan cara mudah untuk berakhir dengan dua URL bagi satu halaman. "Buang aksara khas" menanggalkan semua yang bukan huruf, digit, ruang, sempang atau garis bawah, yang menghalang tanda baca, tanda petikan dan emoji daripada alamat — emoji dibuang sebelum transliterasi secara khusus supaya roket tidak menjadi perkataan rocket. "Buang nombor" dimatikan, kerana nombor dalam tajuk biasanya sebahagian daripada tajuk. "Panjang Maksimum" berjalan dari 10 hingga 200 dan lalainya 80; apabila slug lebih panjang daripada itu enjin memotong pada kata penuh terakhir yang muat dan bukannya memotong di tengah-tengahnya. Angka di sebelah setiap hasil ialah panjangnya dalam aksara, dan ia bertukar merah melepasi 60 — bukan had keras, tetapi titik di mana slug mula dipangkas dalam hasil carian dan menjadi janggal untuk ditampal ke dalam mesej.
Terdapat dua suis lagi kerana ia menukar penukaran pukal kembali menjadi kerja satu klik. "Jadikan slug unik" menangkap kes di mana dua tajuk berbeza berkurangan menjadi slug yang sama — "10 petua teratas" dan "10-petua teratas" kedua-duanya menjadi 10-petua-teratas — dan memberikan yang kedua -2, yang ketiga -3, memendekkan asas terlebih dahulu jika akhiran tersebut akan mendorongnya melepasi panjang maksimum anda. Dua halaman di satu alamat adalah masalah yang jauh lebih murah untuk ditangkap dalam senarai ini berbanding dalam CMS anda. "Ambil slug dari URL yang ditampal" berfungsi sebaliknya: tampal pautan penuh dan alat ini mengambil bahagian terakhir laluan, menggugurkan rentetan pertanyaan dan mana-mana hujung .html atau .php, dan menyahkod pengekodan peratus, jadi pautan Wikipedia yang berakhir dengan %D0%9B%D1%8C%D0%B2%D1%96%D0%B2 kembali sebagai lviv dan bukannya rentetan digit perenambelasan. Ia hanya tercetus apabila keseluruhan baris adalah pautan, jadi alamat yang dipetik di dalam ayat dibiarkan di tempat asalnya.
Mengapa memilih penjana slug ini?
- Pelayar sahaja: tajuk anda tidak pernah dimuat naik, dan halaman ini terus berfungsi di luar talian
- Penukaran pukal dari tampalan atau fail teks, dengan tajuk sumber di atas setiap slug
- Piawaian transliterasi sebenar mengikut bahasa, bukan satu jadual generik untuk kesemuanya
- Bahasa Ukraine melalui Resolusi No. 55 tahun 2010 — ejaan yang digunakan dalam pasport
- Setiap peraturan boleh disunting huruf demi huruf, dengan tetapan semula satu klik
- Akhiran automatik -2 dan -3 supaya tiada dua slug dalam satu kelompok bertembung
- Tampal pautan dan dapatkan slug daripadanya, dengan pengekodan peratus dinyahkod
- Senarai kata henti boleh disunting yang tiba dalam keadaan telah diisi untuk bahasa anda
- Pemangkasan selamat pada kata penuh, dengan kiraan aksara di sebelah setiap hasil
- Percuma dan tanpa had: tiada pendaftaran, tiada kuota, tiada apa-apa yang disimpan di pelayan kami
Slug diperlukan di mana sahaja halaman mesti membawa alamat yang boleh dibaca. Blog atau tapak web berita mengubah setiap tajuk utama menjadi slug, yang merupakan kes mengapa alat ini dibina: tampalkan tajuk utama minggu ini, dapatkan URL minggu ini. Kedai dalam talian melakukan perkara yang sama untuk nama produk dan kategori, biasanya secara pukal selepas import, dan biasanya dalam bahasa yang abjadnya tidak boleh dimuatkan ke dalam alamat. Dokumentasi dan pangkalan pengetahuan membina sauh dan nama fail dengan cara yang sama. Di luar alamat web, rentetan bersih yang sama adalah yang anda mahukan untuk nama fail yang tidak akan rosak pada sistem operasi lain, kunci pangkalan data yang boleh dibaca oleh seseorang dalam log, nama cawangan, nama imej di perpustakaan media, atau pengecam bahagian dalam penjana tapak web statik. Mana-mana tempat di mana nama yang boleh dibaca manusia perlu bertahan selepas dimasukkan ke dalam medan boleh baca mesin adalah tempat bagi slug.
Beberapa had wajar diketahui sebelum anda bergantung padanya. Ini ialah penjana, bukan pengesah: ia tidak akan menyemak sama ada slug sudah digunakan di tapak web anda, kerana ia tidak tahu apa yang tapak web anda mengandungi — keunikan yang dijaminnya adalah di dalam kelompok di hadapan anda. Pengalihan hala juga adalah kerja anda; menukar slug bagi halaman yang diterbitkan akan merosakkan alamat lamanya, dan itu adalah keputusan untuk CMS anda dan bukannya untuk alat ini. "Simpan ke fail" menulis teks biasa, bukan CSV atau JSON. Pemisahan automatik membuat pertimbangan tentang koma yang tepat dalam hampir setiap kes tetapi tidak pada kesemuanya, itulah sebabnya "Pisahkan input dengan" membolehkan anda membatalkannya. Dan transliterasi ialah suatu kelaziman berbanding terjemahan — München menjadi muenchen, bukan Munich — jadi apabila sesuatu halaman mempunyai nama yang telah kukuh dalam bahasa sasaran, nama itu ialah slug yang lebih baik berbanding mana-mana penukaran automatik bagi yang asalnya.