Что то странное пошло в июне с Яндекс переводчиком. Сначала стал ругаться на JSON. До этого этой проблемы не было. Доустановил через CPAN. А как оно до этого работало?! Вроде пошло без ругани. Но нет:
yatr: failed request en-ru for 384870 at /.../lib/LangTransform/YaTranslate.pm line 109.
...
Wide character in warn at /.../lib/LangTransform/YaTranslate.pm line 109.
yatr: failed request en-ru for 2А at /.../LangTransform/YaTranslate.pm line 109.
Что бы это значило:
malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "(end of string)") at /.../lib/LangTransform/YaTranslate.pm line 68.
No transformer id=yatr_en_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
No transformer id=yatr_ka_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
Хронология такова, ещё до смены системы (соответственно и Perl) переход на более свежие конфиги отметился ростом времени обработки данных. Переход потребовал доустановки модулей. Ничего не меняя вернулся на прежний вариант. А вот уже со сменой системы пробую, на сколько позволяет время, возврат к гугл конфигам.
Есть “perlbrew”. Пробовал параллельно поставить Perl-5.14.4. Пока не смог развести два разных Perl на независимые рельса. Так что проверить ещё раз не получается. Сейчас главное с “yatr” разобраться. Думал "perlbrew"ом навредил, ан нет - переустановка системы не помогла.
Что то клин какой то: Linux Mint 18.1 (т.е. Ubuntu 16.04). Ставил по инструкции. Не хватило модулей, доставил. Все заработало. Выпустил набор Украины и по мелочам для пробы с переводом на Русский.
Две недели пауза:
$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --lt-yatr-key @me.key --lt-priority yatr_en_ru=4 --lt-priority yatr_ka_ru=3 --lt-yatr-cache-dir osm2mp/cachedir --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp MAPS/AB/OSM/AB-1.osm
---| OSM -> MP converter 1.03 (c) 2008-2013 liosha, xliosha@gmail.com
Loading configuration...
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at /home/alvi/7W/osm2mp/lib/LangTransform/YaTranslate.pm line 68.
No transformer id=yatr_en_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
No transformer id=yatr_ka_ru found at /usr/share/perl/5.22/Getopt/Long.pm line 600.
Loading OSM data from file MAPS/AB/OSM/AB-1.osm...
Бред. В очередной переставил систему. Модули решил поставить под рут. Всё прекрасно работает, но перевод… Может на Яндексе что творится?!
Изменил некоторые написания, бац прошло без тревоги:
$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --target-lang=ru --default-lang=en --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp --lt-yatr-key=@me.key --lt-yatr-cache-dir=osm2mp/cachedir MAPS/AB/OSM/AB-1.osm
---| OSM -> MP converter 1.03 (c) 2008-2013 liosha, xliosha@gmail.com
Loading configuration...
Loading OSM data from file MAPS/AB/OSM/AB-1.osm...
Initialising bounds from file MAPS/AB/POLY/AB-1.poly...
Что называется найдите хотя бы одно отличие. Тут ;е перезапускаю JSON уже ругается типа на пустую строку:
$ perl osm2mp/osm2mp.pl --config=osm2mp/cfg-navitel/navitel-ab.cfg --bpoly=MAPS/AB/POLY/AB-1.poly --target-lang=ru --default-lang=en --default-country=AB --default-region="Гагрский район" --mapname="Абхазия Гагрский район" --output=MAPS/AB/MP/AB-1.mp --lt-yatr-key=@me.key --lt-yatr-cache-dir=osm2mp/cachedir MAPS/AB/OSM/AB-1.osm
---| OSM -> MP converter 1.03 (c) 2008-2013 liosha, xliosha@gmail.com
Loading configuration...
malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at /home/alvi/7W/osm2mp/lib/LangTransform/YaTranslate.pm line 68.
Loading OSM data from file MAPS/AB/OSM/AB-1.osm...
И что я этого не сделал раньше. Перешел на другой ПК (Windows OC). Старые перлы. И та же песня. Там то уж ничего не перенастраивал.
Это что же получается? Надо в Яндекс писать.
Сегодня мой день. С Яндекс пока не ответили, но уже перевод наладился. Обе ОС работают штатно. Остаётся дождаться письменного уведомления, собрать карты и свериться по реакции пользователей.
Да, я прочитал там про это. Но перл у меня не завелся, я пользую скомпилированный вариант в виде .ехе. Похоже, надо перекомпилировать, но некому.
Вики по конвертору не обновляется уже давно, ссылка на скомпилированный екзешник ведет в никуда - развития нет и похоже не предвидится…
Народ, а как в osm2mp наладить конвертацию из UTF8 в однобайтовый транслит? Карта Украины. Названия в name могут быть на русском или украинском, местами встречается что-то ещё, например, названия пивнушки “Фрау Мюллер” на немецком с умляутами или кафешки с закосом под Францию.
Хорошо, если прописано name:en. Можно взять название оттуда. Но, увы, это есть далеко не везде.
Я указываю в параметрах --codepage=1251 --target-lang=en --default-lang=uk, в общем-то оно работает, но некоторые символы Юникода отсутствуют в cp1251, и я получаю матюки типа “\x{00e1}”. Приходится их потом отдельной программкой менять на что-то человекопонятное. И ещё проблема с некоторыми украинскими буквами вроде і, ї. Они остаются нетранслитерированными, и потом в навигаторе кракозябры.
Где и что нужно подкрутить, чтобы перекодировка происходила как надо?