gifts2017

Перевод слов в наименовании товаров

Опубликовал Ярослав Радкевич (WKBAPKA) в раздел Обработки - Обработка справочников

В связи с новыми-старыми требованиями заполнения налоговой накладной с 01.04.2011,  наименования товаров должны быть строго на украинском языке. Т.к. у многих компаний наименование товаров на русском языке, появилась необходимость их перевода, что эта обработка и позволяет сделать. Хотя, нужно заметить, что ее можно использовать и для других целей перевода!

Обработка предназначена для перевода наименований элементов справочника "Номенклатура". Может быть использована для любой конфигурации. Перед употреблением могут потребоваться некоторые приготовления, т.к. обработка была написана в среде конфигурации "Управление торговлей для Украины".

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

Принцип работы обработки следующий: сначала нужно "набить" словарь. Словарь можно сохранять во внешний файл для последующего использования. После сего и установки некоторых флажков можно приступать к переводу путем акта нажатия кнопки "Выполнить перевод".

Результат перевода можно вывести в окно сообщений, а также можно отказаться от сохранения перевода в элементы переводимого справочника. Это уж кому как нравиться!

А да, можно еще переводить не все позиции, а только те которые входят в группу которую можно указать.

P.S Работы по переводу могу выполнить и я, но это, как сами понимаете, не за бесплатно !

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ПереводНаименованийТоваров.epf
.epf 16,27Kb
16.04.11
94
.epf 16,27Kb 94 Скачать

См. также

Contragent+ 5.0 от 2 500
Подписаться Добавить вознаграждение

Комментарии

0. Ярослав Радкевич (WKBAPKA) 01.01.70 03:00
В связи с новыми-старыми требованиями заполнения налоговой накладной с 01.04.2011, наименования товаров должны быть строго на украинском языке. Т.к. у многих компаний наименование товаров на русском языке, появилась необходимость их перевода, что эта обработка и позволяет сделать. Хотя, нужно заметить, что ее можно использовать и для других целей перевода!

Перейти к публикации

1. Андрей Д. (detec) 04.04.11 15:00
Только что по прбовал парочку наших товаров - google translate довольно неплохо перебивает названия товаров с русского на украинский. Не рассматривали возможность использовнаия этого api, а не самопального словарика по типу translation memory?
2. Ярослав Радкевич (WKBAPKA) 04.04.11 23:10
2(1): да нет, это же простая обработка для решения конкретной проблемы.. .кстати, нашел пару багов, завтра выложу... я первым делом кинулся в интернет, думал найду переводчик, который дает возможность передать строку и получить перевод, но не нашел... :( гугл первым был, но как получить нормально перевод? через http? как получить обратный ответ ? разбирать результат запроса... вообщем решение задачи того не стоит...
3. Андрей Д. (detec) 04.04.11 23:49
(2) API нужно использовать. Ответ можно настроить в виде XML, а такое распарсить несложно.
4. Ийон Тихий (cool.vlad4) 05.04.11 00:25
(1)(2)(3) Я через json обыкновенный парсю
сначала регимся на gmail, получаем для api translate ключ
и как-то так


Процедура КнопкаВыполнитьНажатие(Кнопка)

Сообщить(Перевести("счет"));

КонецПроцедуры

Функция Перевести(Текст, ЯзыкИсточник = "ru", ЯзыкРезультат = "uk")
url = "https://www.googleapis.com/language/translate/v2?key=ЗдесьДолженБытьКлюч&q=" + urlencode(Текст) + "&source=" + ЯзыкИсточник + "&target=" + ЯзыкРезультат + "&callback=handleResponse";
HTTPСоединение = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
HTTPСоединение.open("GET", url, 0);
HTTPСоединение.send();
Возврат HTTPСоединение.responseText;
КонецФункции

Функция urlencode(Строка)
ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
ScrptCtrl.Language="javascript";
Возврат ScrptCtrl.Run("encodeURIComponent", Строка);
КонецФункции



Получаем
handleResponse({
"data": {
"translations": [
{
"translatedText": "рахунок"
}
]
}
}
);

Что распарсить я думаю сможете сами
5. Ийон Тихий (cool.vlad4) 05.04.11 00:27
Кошерно будет если от комов избавлятся, конечно, ScrptCtrl = ""; и т.д.
6. Ийон Тихий (cool.vlad4) 05.04.11 00:29
Оказывается уже сделан http://infostart.ru/public/14872/ Правда .net здесь излишен
Да и еще советую api посмотреть, там куча всего, просто навскидку набросал...
8. Ярослав Радкевич (WKBAPKA) 06.04.11 16:24
анекдот прикольный... запомним... на самом деле нужно было решить простую задачу... просто переименовать большой массив информации... ради этого использовать API по переводу, писать свой парсинг, для того что бы перевести до десятка слов, как то сами понимаете - лень, да и платить никто не захочет... ;)
9. Damian (Damian) 15.04.11 23:14
Руками набивать словарик облом :(
Можно добавить такую фичу:

1. По кнопке "Найти слова" создается массив из неповторяющихся слов, которые присутствуют в наименованиях номенклатуры (за вычетом предлогов и аббревиатур) - это левая сторона табличной части обработки (на этом этапе можно также исключить слова, содержащие цифры и некиррилические символы - это, скорее всего, маркировки)

2. По кнопке "Перевести слова" происходит подключение к Google, способом, указанным cool.vlad4.

Кстати, в одном запросе можно передавать сразу несколько слов:
url = "https://www.googleapis.com/language/translate/v2?key=ЗДЕСЬ_ДОЛЖЕН_БЫТЬ_КЛЮЧ&q="+urlencode(ТЕКСТ_1)+"&q="+urlencode(ТЕКСТ_2)+"&source="+ЯзыкИсточник+"&target="+ЯзыкРезультат+"&callback=handleResponse";

Результат будет примерно таким:
handleResponse({
  "data": {
    "translations": [ 
       {
         "translatedText": "вимикач"
       },
       {
         "translatedText": "дверцята"
       }
    ]
  }
}
);
...Показать Скрыть

3. Парсим полученные от Google ответы и получаем правую сторону табличной части
4. Подправляем ручками слова, которые Google перевел коряво, и
5. Жмем кнопку "Выполнить перевод"

PS. Таким макаром Google позволяет переводить максимум 100000 символов в сутки.

PPS. А вот код
ScrptCtrl = Новый COMОбъект("MSScriptControl.ScriptControl");
думаю лучше вынести в ПриОткрытии(), а саму переменную ScrptCtrl сделать общей для всей формы, чтобы постоянно не создавать COM-объект

PPPS. Спасибо, автор, натолкнул на мысль :). Если мне еще раз придется переводить номенклатуру, обязательно воспользуюсь этой обработкой с дополнениями, изложенными в комментариях (в прошлый раз выгружал наименования в файлы, руками скармливал эти файлы Гуглу, потом назад из файлов загружал в номенклатуру. И это при том, что в файле должно быть не более 10000 символов - получилось 68 файлов. Геморрой, однако :)
10. Damian (Damian) 15.04.11 23:19
Оказывается уже сделан http://infostart.ru/public/14872/ Правда .net здесь излишен
Там компонента не переводит с русского на украинский :(
11. Ярослав Радкевич (WKBAPKA) 16.04.11 16:49
обновил обработку, была допущена досадная небольшая ошибка... исправил...
2(9): я уже писал, можно было бы конечно и гугл подключить... но мне клиент эту работу, по подключению гугла, не оплачивал, поэтому и смысла не было тратить время... все же распарсить файл не сложно, но и не так просто... с другой стороны, с помощью этой обработки можно не только переводить, а просто переименовывать не только номенклатуру, но и элементы любых справочников.
12. Ярослав Радкевич (WKBAPKA) 16.04.11 16:54
вообще у меня была первая мысль, для решения этой задачи, найти клиент которому можно скормить слова из 1С и получить перевод... потом пытался найти словарь, который можно просто подгрузить к этой обработке... вот если бы найти словари в виде: переводимое слово | перевод слова
вот это было бы шикарно :)
13. Ийон Тихий (cool.vlad4) 16.04.11 19:44
(12) словарь это набор слов, есть гугл - ну и кэшировать в БД слова или куда еще. JSON парсить не просто, а очень просто - на ИС есть обработки BigB (честно их не проверял), но есть также огромное количество javascript framework-ов, которые предназначены для этого. На хабре есть даже сравнение их. Ну и прикрутить одну из них либо через браузерный движок, либо через msscript...кстати современные браузеры - ie8 например, уже имеет встроенные функции для работы с json, если не ошибаюсь.
14. Ярослав Радкевич (WKBAPKA) 17.04.11 10:23
2(13): так и решение задачи простое... нужно было только перевести слова, а не фразы
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа