Herhangi bir ücretsiz opensource PHP translite lib var mı?

5 Cevap php

Ben farklı dillerde yer alan makaleler yayınlayarak kullanıcıların bir sürü var. Ben eng 'r' içine rusça 'р' çevirmek ve böylece bütün avrupa dilleri, Rusça ve Asya dilleri için örneğin İngilizce harflere thouse makale adlarını çevirmek için bazı lib gerekir. Nerede böyle lib almak için?

Google 45 saniye bu "This extension allows you to transliterate text in non-latin characters (such as Chinese, Cyrillic, Greek etc) to latin characters." Ben gerçekten ne gerekli gibi görünüyor bana verdi. Herhangi bir gerçek hayatta bu çalıştı?

5 Cevap

Google bir AJAX transliteration API ki many major scripts iyi bir iş yapar vardır.

Edit: Lanet olsun, bu sadece dönüşümleri from Latin alfabesi sağlayan daha fazla denetim görünür. Bu zaten Kiril romanisations sağlamak için Google Translate bunu kullanarak konum beri Google, ters işlevselliği hazır değil bu biraz aptalca, Çince, Tayca, Hintçe, ve diğerleri gibi İbranice ve Arapça gibi özellikle değil abugidas olsa.

Further Edit: Ben olası bir çözüm düşündüm: dilini algılar ve örneğin, hedef dil olarak aynı kaynak dilini kullanarak Google Translate ile çalıştırmak için bir AJAX sorgusu kullanın Chinese-to-Chinese. Firebug çevirisi, bir div olan kimliktir çıkış olduğunu ortaya koymaktadır translit. Çevirilerini genellikle ağır aksanlı, böylece onları dönüştürmek gerekir. Bu hiçbir şekilde (Google genellikle kendi HTML sık sık yapısal değişiklik yapmaz gerçi) güvenmek şeydir, ama kesinlikle ilginç bir olasılıktır.

iconv yapacak?

Bu modül ile, Unicode karakter grubu olabilir başka karakter kümesi ile temsil birine ayarlamak yerel bir karakter tarafından temsil edilen bir dize açabilirsiniz.

PHP manuel:

$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;

Bunu yapmayacağım, bu kontrol

Bir alternatif olarak, bir dizideki karakter haritayı tanımlamak ve dönüşüm yapmak için str_replace veya mb_substitute_character kullanın.

Ben o uzakta, bir dilbilimci değilim, ama sana ne yapmaya çalışıyorsun uygulamak imkansız, ya da extremely karmaşık olduğunu olasılığını gönderin.

Sonuçta, isimlerini çeviri sadece daha fazla "alfabe dönüştürme." Her Kiril karakter aslında bir latin muadili (onlar sister alphabets) sahiptir, çünkü rusça de nispeten kolaydır.

Ben Arapça bilmiyorum, ama Çin için her yerde almak için Pinyin gibi bir Romalılaşmanın sistemi gerekir. Bu karakter yerine bir basit daha karmaşık.

Eğer doğru anlamak, sizin için çalışan bir çözüm bu kuralları uygulamak zorunda kalacak - İşte ISO Romanizations tam listesi.

Yani görev olacaktır:

  • Çok sayıda farklı karakter aralıkları içeren bir metni analiz

  • Kendisine ait hangi karakter aralığı için her kelimeyi tanımlamak (อักษร ไทย Tay; Москва alfabesi olduğunu, ve benzeri)

  • Her kelime için romanization doğru yöntem uygulayın.

Şimdi PHP bunu herhangi kütüphaneler duymak çok ilgileniyorum, ama orada yok olduğunu da mümkündür.

PHP5.3 yılında Intl yoğun bakımda etrafında sarıcı bir transliterator sınıfını tanıttı. Aşağıdaki kütüphane tam ISO kural belirledi:

http://www.php.net/manual/en/transliterator.transliterate.php

Ben iconv bulundu beri çok eksik olması (), Django projeden URLify.js dayalı bir PHP kütüphanesi yazma sona erdi. Bunu burada bulabilirsiniz:

https://github.com/jbroadway/urlify

Latin karakterleri yanı sıra, Yunanca, Türkçe, Rusça, Ukraynaca, Çekçe, Lehçe, ve Letonya Kolları.