поэтому у меня много пользователей, публикующих статьи с именами на разных языках. Мне нужно несколько lib, чтобы перевести названия театских статей на английские буквы, например, включить русский 'р' в eng 'r' и т. Д. Для всех европейских языков, русского и азиатского языков. Где взять такую библиотеку?
45 секунд google дали мне это «Это расширение позволяет транслитерировать текст не латинскими буквами (например, китайский, кириллический, греческий и т. Д.) На латинские символы». Кажется, это то, что мне действительно нужно. Кто-нибудь пробовал это в реальной жизни?
У 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;
Если этого не произойдет, проверьте эти
В качестве альтернативы определите карту символов в массиве и используйте 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
Обрабатывает латинские символы, а также греческий, турецкий, русский, украинский, чешский, польский и латышский.