Ben o işlemi esnek olması açısında javascript ile yapıyorum, şu kütüphaneyi kullanıyorum:
https://github.com/pid/speakingurl
Bir de URL de kendi dilinde slug olmasını istiyorsam şöyle yazdığım basit bir fonksiyon var:
/**
* Basit slug. Arapça, Japonca, Çince... gibi diller için
*
* @param text
* @returns {string}
*/
function simpleSlug(text) {
return text.toString().toLowerCase()
.replace(/[".,\/#!$%\^&\*;:{}=\-_`~()]/g, ' ') // Noktalama işaretleri
.replace(/\s+/g, '-') // Boşlukları - ile değiştir
.replace(/\-\-+/g, '-') // Fazla olan - simgelerini kaldır
.replace(/^-+/, '') // Baştaki - simgesini kaldır
.replace(/-+$/, ''); // Sondaki - simgesini kaldır
};
Bu da şöyle bir url yapısı elde etmemi sağlıyor:
http://www.site.com/ru/Добро-пожаловать-на-наш-веб-страницы
speakingurl kütüphanesi ile yapsaydım:
http://www.site.com/ru/dobro-pozhalovat-na-nash-veb-stranitsy
şeklinde olurdu.
PHP olarak da şu var:
https://github.com/cocur/slugify