Сообщество русскоговорящих пользователей
CMS DotNetNuke
   Вы здесь:  Форум
Добро пожаловать, Гость. Чтобы воспользоваться всеми функциями форума - зарегистрируйтесь или аутентифицируйтесь.
artur Offline
#1 Оставлено : 12 февраля 2010 г. 19:39:19(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Предлагаю вам мой новый сегодняшний релиз автоматического "умного" переводчика ресурсов для DNN на основе Google Translate
Когда стоит задача преводить текст или ресурсный файл, обычно сначала переводят текст начерно автоматическим переводчиком, а потом уже “доводят ” его до кондиции, если перевод не очень удался.
Существует некоторое количество бесплатных переводчиков ресурсный файлов через гугль (которые я перепробовал лично), но ни один из них не подойдёт к файлам DNN.
Проблема в том, что все они, как показала практика и алгоритм работы Google Language, не справляются с задачей, если в тексте есть лексемы (Tokens), типа [User:UserName]
А, как известно, в DNN это широко используется. В этом случае переводчик переведёт что-то вроде: [Пользователь : UserName]. Сами видите, что это не то!
Кроме того, в случае такого теста “Dear {0}, your now is signed in.”, переводчик переведёт так: “Уважаемые (0), вы теперь вошли в систему”. Видно, что все фигурные скобки меняются на круглые.
Короче говоря, это полная лажа и так работать явно нельзя. Если вы попробуете попереводить, то поймёте, о чём я.
Мне пришлось переводить какое-то количество специальных платных модулей. Мне надоело каждый раз вычищать за переводчиком лексемы и скобки, и я придумал простой переводчик, который путём интересного алгоритма справляется с недостатком перевода лексем на ура.
Алгоритм заключается в том, что ресурс переводится построчно, каждая строка перед переводом парсится и все лексемы, которые могут пострадать при переводе, заменяются регулярными выражениями на их хешкод, попутно занося исходный текст в Hashtable. Хешкод гуглём не переводится и остаётся, как есть. После перевода я произвожу обратную замену хешкодов в тексте на их исходные лексемы и строки. Достаточно просто и работает точно. В исходниках можно посмотреть, как я это умудрился сделать.
Комментарии в тексте программы.
Если возникнут вопросы, обращайтесь. Надеюсь, релиз окажется полезным для общества.
Спасибо.Derisive

Отредактировано пользователем 25 июля 2010 г. 20:00:06(UTC)  | Причина: Не указана

Вложение(я):
DNNResTranslator.rar (127kb) загружен 366 раз(а).
 2 пользователей поблагодарили artur за этот пост.
balbes оставлено 12.02.2010(UTC), OdKirill оставлено 30.08.2010(UTC)
Реклама
balbes Offline
#2 Оставлено : 12 февраля 2010 г. 20:02:52(UTC)
balbes

Статус: Профессионал

Зарегистрирован: 10.08.2008(UTC)
Сообщений: 928

Откуда: Ukraine

Сказал «Спасибо»: 13 раз
Поблагодарили: 141 раз в 138 постах
Спасибо за полезную утилиту! Не желаете прикрутить функционал к http://svn.rsdn.ru/svn/Janus/trunk/LocUtil2/ ?
Получилось бы очень приятное и удобное приложение.
artur Offline
#3 Оставлено : 13 февраля 2010 г. 23:38:04(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
balbes написал:
Спасибо за полезную утилиту! Не желаете прикрутить функционал к http://svn.rsdn.ru/svn/Janus/trunk/LocUtil2/ ?
Получилось бы очень приятное и удобное приложение.

Вы имеете в виду ввинтить это дело в уже имеющийся проект на SVN?
Можно посмотреть. Только мне бы хотелось сначала знать, что это за проект и чей он.
Расскажите вкратце.

Отредактировано пользователем 14 февраля 2010 г. 0:28:37(UTC)  | Причина: Не указана

balbes Offline
#4 Оставлено : 14 февраля 2010 г. 10:32:10(UTC)
balbes

Статус: Профессионал

Зарегистрирован: 10.08.2008(UTC)
Сообщений: 928

Откуда: Ukraine

Сказал «Спасибо»: 13 раз
Поблагодарили: 141 раз в 138 постах
Имеется в виду добавить функционал автоматического перевода с использованием исключаемых строк (символов). На предмет добавления нового функционала в репозиторий, даже не знаю имеет ли смысл тратить на это время.
Как видно из структуры репозитория, эта утилита является подпроектом оффлайн клиента для форумов rsdn RSDN@HOME (ака Janus)
Пользователь balbes прикрепил следующие файлы:
LocUtil.jpg
artur Offline
#5 Оставлено : 14 февраля 2010 г. 13:29:32(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
balbes написал:
Имеется в виду добавить функционал автоматического перевода с использованием исключаемых строк (символов).


Вас понял. Мне не хочется работать над этим проектом на Янусе.

Если есть у Вас ссылка на некий более понятный исходный проект, скажем на CodeProject или на CodePlex, где есть грид для редактирования ресурсов, думаю, я мог бы его доработать, а потом опубликовать на том же ресурсе как расширение уже имеющегося. Кроме того, скорее всего, у меня будет скоро возможность и время написать собственный редактор ресурсов, где будет опция перевода сохранения строк, который я выложу для публичного использования.


artur Offline
#6 Оставлено : 11 мая 2011 г. 2:59:18(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
В ответ на просьбу товарищей выкладываю версию моего переводчика, но уже в виде модуля для DNN.
Вместе с исходником.

Пакет устанавливается как обычный модуль, добавляется на страницу портала, дальше всё интуитивно понятно.
Интерфейс похожий на моё настольное приложение. Умеет переводить любые из установленных на портале модулей, один или сразу несколько, включая административные страницы.
Просто выберите из списка то, что следуеит перевести. Не забывайте, что перевод автоматический, так что следует потом его править в большинстве случаев, но для беглого чернового перевода вполне даже отлично. Использовал DLL моего же производства из настольного приложения, выложенного выше в теме.

Это первая простая версия, но она уже дочтаточно хорошо делает свою работу.

В дальнейшем планирую добавить возможность предварительного просмотра файлов ресурсов, исходного и переведённого.

С вопросами/багами обращайтесь. (надеюсь, багов не будетDerisive)

Успеха.

Отредактировано пользователем 11 мая 2011 г. 8:07:51(UTC)  | Причина: Не указана

Вложение(я):
DNNResTranslatorModule1.0.0.zip (67kb) загружен 98 раз(а).
 1 пользователь поблагодарил artur за этот пост.
OdKirill оставлено 12.05.2011(UTC)
OdKirill Offline
#7 Оставлено : 12 мая 2011 г. 20:48:59(UTC)
OdKirill

Статус: Опытный

Зарегистрирован: 11.12.2009(UTC)
Сообщений: 170
Откуда: Одесса

Сказал «Спасибо»: 9 раз
Поблагодарили: 16 раз в 16 постах
Проверил, работает, багов не заметил)
Из предложений:
Есть ли возможность что-бы при перезаписи существующего ресурсного файла добавлялся перевод только для элементов где он отсутствует, часто уже существует перевод для модуля но разработчик выпускает новую версию и добавляет новые элементы перевода для которых нет.
artur Offline
#8 Оставлено : 13 мая 2011 г. 0:26:47(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Ага. Вполне можно сделать.
Таки сделаю.
Спасибо за предложение.
artur Offline
#9 Оставлено : 2 июня 2011 г. 8:50:03(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Добавил в модуль моего переводчика автоматическую возможность сохранения ресурсов от предыдущего перевода, если переведённый файл уже есть на диске.
Т.е., если отключить опцию Overwrite exiting file, то не будет полностью переводить все ресурсы и перезаписывать, а только добавлять новые записи из исходного файла, на которых перевода ещё не было.
Т.е. в этом случае можно использовать переводчик для апгрейда модулей, когда разработчики добавляют новые ресурсы в файл, не трогая старые.

Я тестировал на standalone версии переводчика, на DNN на поднимал, но должно работать без проблем.
Желательно перед переводом сохранить всё же старые копии файлов ресурсов.
Вложение(я):
DNNResTranslatorModule1.1.0.zip (68kb) загружен 98 раз(а).
Влад Offline
#10 Оставлено : 17 сентября 2011 г. 7:18:55(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Хорошая штука.
пробовал.
все работает отлично.

конечно не плохо было бы, чтобы список файлов ресурсов разделялся.

"Это переведно полность", "Это частично", "Это не переведено"

для наглядности удобно было бы.
superbluesman Offline
#11 Оставлено : 20 октября 2011 г. 20:57:21(UTC)
superbluesman

Статус: Продвинутый

Зарегистрирован: 29.09.2011(UTC)
Сообщений: 62
Откуда: http://www.dvbi.ru

Сказал «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
artur,

переводит хорошо, но не все,т.к. прерывается из-за ошибки:

Цитата:


Translated with exceptions: key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html key => [response status:403]Quota Exceeded. Please see http://code.google.com/a.../translate/overview.html


где что подкрутить?
V.Pupkin Offline
#12 Оставлено : 20 октября 2011 г. 23:41:20(UTC)
V.Pupkin

Статус: Опытный

Зарегистрирован: 26.11.2009(UTC)
Сообщений: 129

Сказал «Спасибо»: 4 раз
Поблагодарили: 15 раз в 14 постах
Подкрутить нужно всегда там где нужна подкрутка, лично я довольно давно использую sisulizer, который местами подкручивает самLOL
superbluesman Offline
#13 Оставлено : 21 октября 2011 г. 13:37:05(UTC)
superbluesman

Статус: Продвинутый

Зарегистрирован: 29.09.2011(UTC)
Сообщений: 62
Откуда: http://www.dvbi.ru

Сказал «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
V.Pupkin,
а по-существу сказать есть что?


Автору:
вроде как Google сделал этот API платным??!
Но ведь еще несколько дней назад Ваша утилита успешно переводила
artur Offline
#14 Оставлено : 7 ноября 2011 г. 17:29:25(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Автор: superbluesman Перейти к цитате
V.Pupkin,
Автору:
вроде как Google сделал этот API платным??!
Но ведь еще несколько дней назад Ваша утилита успешно переводила


Видно, такова злая судьба...Cry

А, если серъёзно, то в самое ближайшее время я проверю и посмотрю, что можно сделать, может переключу утилиту на другой сервис, а может найду другой выход из ситуации.
Просто уже давно не занимался данной темой, а так, спасибо, что обратили внимание.

Отредактировано пользователем 7 ноября 2011 г. 17:30:01(UTC)  | Причина: Не указана

artur Offline
#15 Оставлено : 15 ноября 2011 г. 18:32:00(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Ура!Clapping Мой пакетный переводчик DNN ресурсов опять работает!
Теперь будем с вами юзать вместо противного гугля очень дружественный Bing API. Не знаю, как насчет ихних правил и лимита этого сервиса, но у меня пока пашет нормально, сегодня проверял.
Опробуйте и скажите.
Пока в ньюковский модуль, который я здесь публиковал еще это дело не встроил, но скоро встрою и опубликую новую версию.

Жду от вас респонза.

Отредактировано пользователем 15 ноября 2011 г. 18:34:51(UTC)  | Причина: Не указана

Вложение(я):
DNNResTranslatorBing.rar (163kb) загружен 98 раз(а).
Влад Offline
#16 Оставлено : 19 февраля 2012 г. 3:41:52(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Автор: artur Перейти к цитате
Ура!Clapping Мой пакетный переводчик DNN ресурсов опять работает!
Теперь будем с вами юзать вместо противного гугля очень дружественный Bing API. Не знаю, как насчет ихних правил и лимита этого сервиса, но у меня пока пашет нормально, сегодня проверял.
Опробуйте и скажите.
Пока в ньюковский модуль, который я здесь публиковал еще это дело не встроил, но скоро встрою и опубликую новую версию.

Жду от вас респонза.


Пользовался ранней версией. Очень понравилось.
Подскажите, пожалуйста, как поставить новую версию с расширением rar?
artur Offline
#17 Оставлено : 9 марта 2012 г. 0:54:26(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Вот выкладываю обновленную рабочую версию автоматического транслятора ресурсных файлов в виде модуля для DNN на основе Bing API.

Отредактировано пользователем 9 марта 2012 г. 0:55:21(UTC)  | Причина: Не указана

Вложение(я):
DNNResTranslatorModule1.1.0.zip (69kb) загружен 97 раз(а).
Влад Offline
#18 Оставлено : 10 марта 2012 г. 17:57:45(UTC)
Влад

Статус: Продвинутый

Зарегистрирован: 12.08.2011(UTC)
Сообщений: 83
Откуда: N/A

Сказал(а) «Спасибо»: 22 раз
Поблагодарили: 1 раз в 1 постах
Автор: artur Перейти к цитате
Вот выкладываю обновленную рабочую версию автоматического транслятора ресурсных файлов в виде модуля для DNN на основе Bing API.


Спасибо! Отличная работа!
Поставил, попробовал.
Это лучшее, чем что либо испробуемое мной.
То, что большие пакеты переводит с зависанием сайта - это ерунда. Спокойно отношусь. Убираешь галочку на "Overwrite existing files" и прогоняешь перевод по ресурсному файлу несколько раз.

Однако, замечено два "момента" и возможно это поможет в развитии Вашего проекта.

1. Встречаются случаи, когда программа "выбрасывает" строки из итогового файла (рус)
Например, 100 строк в файле на англ, а смотришь файл на русском - в нем всего 80 строк.
Визуально сравниваешь.. а нэту..

Это я увидел, когда все, что выдает прога в окне вашей программы - нужное для перевода (т.е встречаются ресурсные файлы), перевел и на странице установки языка нажал кнопку "Verify Language Resource Files" - вроде как глянуть - ну и..?

выдало сколько строк - не нашло..
начал смотреть подробно, потому что строки показаны в тех файлах, которые перевел и увидел - строки "выбрасывает"

2. Тут же всплыл второй момент.
Оказалось, что не все имеющиеся в проекте ресурсные файлы показывает ваша программа.
Например, в окне вашей программы нету ресурсного файла из папки ( в корне она) - controls..

в любом случае, после перевода вашей программы, показало, что не переведено всего 17 файлов (10 из них в папке controls), ну и какое то не значительное количество строк.
А так все быстро и по делу.

Отредактировано пользователем 10 марта 2012 г. 18:13:11(UTC)  | Причина: Не указана

artur Offline
#19 Оставлено : 10 марта 2012 г. 20:15:36(UTC)
artur

Статус: Продвинутый

Зарегистрирован: 10.02.2010(UTC)
Сообщений: 52

Сказал «Спасибо»: 3 раз
Поблагодарили: 10 раз в 8 постах
Большое спасибо, Влад, за оценку моей программы и за советы по улучшению!
Я постараюсь исправить замеченные Вами недостатки.
superbluesman Offline
#20 Оставлено : 10 марта 2012 г. 22:20:13(UTC)
superbluesman

Статус: Продвинутый

Зарегистрирован: 29.09.2011(UTC)
Сообщений: 62
Откуда: http://www.dvbi.ru

Сказал «Спасибо»: 7 раз
Поблагодарили: 1 раз в 1 постах
artur,

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



 
OpenedBorderBoxed Small width layoutMedium width layoutMaximum width layout Small textMedium textMaximum text