Как стать автором
Поиск
Написать публикацию
Обновить

Уникализация контента. Перевод на английский и обратно.

Время на прочтение2 мин
Количество просмотров1.7K
Лично мне известно по крайней мере два способа перевода текста. Начну с первого.

Это Yahoo pipes. Я накатал простейшую трубу для перевода текста с русского на английский и обратно. И всё бы хорошо, но есть две проблемы. Первая — при переводе яху тупо убирает все html теги. И как их восстанавливать — это отдельный вопрос. Я бы даже сказал, нетривиальная задача. Ну и второе — модуль перевода иногда бывает банально не работает. Я нашёл жалобы в саппорт по этому поводу на форуме про yahoo pipes, и вроде всё починили. Но у меня всё равно из 10 запусков трубы в разное время суток нерезультативными оказываются примерно 6.

Подводя итог можно сказать, что yahoo pipes — это хороший и быстрый инструмент, но я его не использую. Может вам повезёт больше, а для меня очень критично наличие тегов и стабильная работа сервиса.

Подходим ко второму способу — через AJAX API от гугла. Сам по себе способ не очень юзабелен, необходима некоторая автоматизация. Поэтому был организован небольшой скрипт. Я там в самом начале оставил set_time_limit(5) для отладки. Это чтоб сначала всё хорошо проверить, а уже потом запускать на сутки (ну или у кого как), убирая ограничения set_time_limit(0).

И есть ещё две тонкости, без которых скрипт работать не будет. Во-первых, предполагается что все входные и выходные строки будут в юникоде. Так что если будете редактировать, убедитесь что ваш редактор умеет сохранять в UTF-8 (я юзаю notepad++). И второе — для работы с БД вам понадобится библиотека dbsimple. Ну, то есть я её использую, а вы вполне можете приспособить все её вызовы под свои нужды. Там всё просто и прозрачно.

У гугловского API есть одно существенное ограничение — это длина строки, которую вы будете переводить. Вроде как она составляет 700 символов, но иногда вываливаются ошибки при запросе на перевод строки в 600 символов, а иногда нормально проходят строки по 690 символов. Закономерность явлений установить не удалось. Опытным путём установлено, что всё железно работает при длине строки до 545 символов. На ней я и остановился.

Основная функция в скрипте — это string translate(string $src, string $langpair).
string $src — это строка для перевода (строка в полную длину)
string $langpair — это языковая пара перевода. Например, «ru%7Cen». Именно в таком виде, поскольку эта строка подставляется без изменений в url запрос.

Ну и вот. Строка переводится один раз туда, а второй раз — обратно. Скрипт мал, изящен, открыт и даже как-то там прокомментирован. Любые изменения и дополнения приветствуются.

В достоинствах скрипта то, что мне так необходимо. Это надёжность и сохранение тегов. Но вот время выполнения оставляет желать лучшего. Хотя я не пробовал запускать его на хостинге — только дома на локалхосте, на не очень толстой выделенке.

P.S. Для себя в процессе написания скрипта выделил одну вещь. Уникализация контента путём превращения его в нечто нечитаемое — это не труъ. Гораздо лучше фигачить мешапы. =) Но инструмент остался, поэтому делюсь.

Это немного изменённая статья из моего блога.
Теги:
Хабы:
Всего голосов 14: ↑10 и ↓4+6
Комментарии11

Публикации

Ближайшие события