Есть ли бесплатный open source PHP translit lib?

поэтому у меня много пользователей, публикующих статьи с именами на разных языках. Мне нужно несколько lib, чтобы перевести названия театских статей на английские буквы, например, включить русский 'р' в eng 'r' и т. Д. Для всех европейских языков, русского и азиатского языков. Где взять такую ​​библиотеку?

45 секунд google дали мне это «Это расширение позволяет транслитерировать текст не латинскими буквами (например, китайский, кириллический, греческий и т. Д.) На латинские символы». Кажется, это то, что мне действительно нужно. Кто-нибудь пробовал это в реальной жизни?

Related of "Есть ли бесплатный open source PHP translit lib?"

У Google есть API транслитерации AJAX, который хорошо справляется со многими основными скриптами .

Редактирование: Черт, он появляется при дальнейшем осмотре, что это разрешает только конверсии с латинского алфавита. Это глупо, что Google не сделал обратную функциональность доступной, так как они уже используют ее в Google Translate, чтобы обеспечить румыны для кириллицы, китайца, тайского, хинди и других, хотя, в частности, не такие abugidas, как иврит и арабский.

Дальнейшее редактирование: я думал о возможном обходном пути: обнаружил язык и использовал запрос AJAX для его запуска через Google Translate с использованием того же исходного языка, что и язык назначения, например, китайский-китайский . Firebug показывает, что транслитерация выводится в div чей идентификатор translit . Транслитерации, как правило, сильно акцентированы, поэтому вам нужно их преобразовать. Это отнюдь не то, на что можно положиться (хотя Google обычно не делает частых структурных изменений в своем HTML), но это, безусловно, интересная возможность.

Я не лингвист, далек от него, но я подчиняюсь вам возможностью того, что то, что вы пытаетесь сделать, невозможно или чрезвычайно сложно реализовать.

В конце концов, перевод имен – это больше, чем просто «преобразование алфавитов». Это сравнительно легко по-русски, потому что у каждого кириллического персонажа на самом деле есть латинский аналог (они – сестринские алфавиты ).

Я не знаю об арабском, но для китайца вам понадобится система латинизации, такая как пиньинь, чтобы добраться куда угодно. Это сложнее, чем простая замена символов.

Вот полный список Ротаринизации ISO. Если я правильно понимаю, решение, которое работает для вас, должно будет реализовать эти правила.

Таким образом, задача будет заключаться в следующем:

  • Анализ текста, содержащего множество различных диапазонов символов

  • Определите каждое слово, для которого он принадлежит (อักษร ไทย является тайским, Москва – кириллицей и т. Д.).

  • Примените правильный метод латинизации к каждому слову.

Теперь мне очень интересно услышать о любых библиотеках, которые могут делать это на PHP, но вполне возможно, что их нет.

Будет ли iconv делать?

С помощью этого модуля вы можете превратить строку, представленную локальным набором символов, в тот, который представлен другим набором символов, который может быть набором символов Unicode.

Из руководства по PHP:

 $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; 

Если этого не произойдет, проверьте эти

  • Поддержка языков и символов Поддержка библиотек в PHP

В качестве альтернативы определите карту символов в массиве и используйте str_replace или mb_substitute_character для преобразования.

В PHP5.3 Intl вводит класс транслитератора, который является оберткой вокруг ICU. Следующая библиотека имеет полный набор правил ISO:

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

Я закончил писать PHP-библиотеку на основе URLify.js из проекта Django, так как я обнаружил, что iconv () слишком неполный. Вы можете найти это здесь:

https://github.com/jbroadway/urlify

Обрабатывает латинские символы, а также греческий, турецкий, русский, украинский, чешский, польский и латышский.