Модераторы: THandle, bems
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как я локализовал свое приложение на Delphi, статья про локализацию приложения 
:(
    Опции темы
Akella
  Дата 11.2.2012, 14:07 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



По рекомендации GunSmoker`а для журнала по Delphi "Blaise Pascal Magazine" я написал небольшую статью "Как я локализовал свое приложение на Delphi", используя свой личный опыт. Может кому пригодится.
Когда выйдет статья и вообще выйдет ли она или нет, никто не знает  smile 

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

В статье подробно описана локализация с помощью библиотек ресурсов.

Будут пожелания/замечания - высказывайтесь.

Я смотрю, что статья не была опубликована пока ни в одном из номеров журнала.

Выложу ка я её в блоге.
Как я локализовал свое приложение на Delphi

Это сообщение отредактировал(а) Akella - 28.5.2012, 09:30

Присоединённый файл ( Кол-во скачиваний: 70 )
Присоединённый файл  localization_application.pdf 633,77 Kb
PM MAIL   Вверх
MetalFan
Дата 11.3.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: нет
Всего: 128



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


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Caduser
Дата 27.5.2012, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 2.10.2006
Где: г. Хабаровск

Репутация: нет
Всего: 1



Спасибо за хорошую статью. Жаль что прошел не замеченным Korzh Localizer. Я наоборот обратил на него внимание и сейчас тестирую демо-версию. Все очень даже не плохо, хотя после прочтения этой статьи захотелось попробовать Radialix.
Из недостатков которые заметил в Korzh Localizer:
1. Нет возможности авто-перевода. Как я понял автор сделал ставку на Google API но сейчас это не работает.
2. Часто сталкивался со сложностью и неочевидностью интерфейса. Справка не помогала. Например долго не мог разобраться почему команда "Creating resource DLL" не активна. Оказалось что предварительно нужно было снять галочку с опции "Показывать исходный язык".

Почему обратил внимание на Korzh Localizer:
1. Хорошо дружит со сторонними компонентами (FastReport, Devexpress и т.д.). Как я понял именно Korzh Localizer используют разработчики FastReport.
2. Есть гибкая настройка правил добавления локализуемых свойств. Это позволяет решить проблему Radialix о которой сказано в статье, когда в таблицу локализации попадает 400 свойств из которых реально нужно локализовать только 30.
PM MAIL ICQ   Вверх
Akella
Дата 28.5.2012, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Уже вышла новая бета версия radialix 3, но пока не щупал smile
PM MAIL   Вверх
Caduser
Дата 28.5.2012, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 2.10.2006
Где: г. Хабаровск

Репутация: нет
Всего: 1



Цитата(Akella @ 28.5.2012,  09:28)
Уже вышла новая бета версия radialix 3, но пока не щупал smile

К сожалению не увидел в описании Radialix 3 решение озвученной в статье проблемы.
>>> 
Поддержка визуального редактора для 64-х разрядных сборок .NET.
Поддержка CHM файлов (*.chm, *.its), файлов бинарных ресурсов Qt (*.rcc), файлов локализации PGP (*.str).
Панель вариантов автоперевода.
Автосохранение проекта.
>>>
PM MAIL ICQ   Вверх
Akella
Дата 30.5.2012, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Какой именно проблемы?

Добавлено через 20 секунд
И почему "к сожалению", если проблемы нет?
PM MAIL   Вверх
sourcelocalizer
Дата 14.3.2013, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2013

Репутация: нет
Всего: нет



Доброго времени суток!

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

Но в итоге я так и не нашел необходимых возможностей для локализации в предлагаемых программных продуктах и разработал свой smile

Сайт моей программы локализации: www.sourcelocalizer.ru

http://www.youtube.com/watch?feature=playe...p;v=OFFzXvI_A9k
Пример локализации разрабатываемой программы с помощью "Локализатора исходного кода", на примере тестового проекта на Lazarus. На видео показаны все этапы локализации примера подробно описанные в руководстве пользователя. 
На видео, начиная с 19:45, описан процесс внесение изменений в проект, отслеживание их программой локализации, а также процесс локализации добавленных элементов. 

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

Также важным требованием к программе была возможность ее работы с системами контроля версий на серевере сборки (build) и выводе результатов в удобные отчеты (junit).
В дальнейшем был добавлен вывод отчетов в виде html для возможности локальной работы с программой.

Подход в локализации схож с gettext, но нет необходимости в коде указывать функции вызова для замены текста в процессе выполнения.

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

ПРИМЕРЫ ОПТИМИЗАЦИИ:

1) Простые случаи объединения текстовых фрагментов в коде:

Примеры исходных строк кода до объединения:
s:= 'Строка ' + 'из нескольких ' + 'частей.'; 
s:= 'Длинная строка ' +
'с переносом.'; 

Результат объединения указанных примеров:
s:= 'Строка из нескольких частей.'; 
s:= 'Длинная строка с переносом.'; 

2) Более сложные случаи:

Примеры исходных строк кода:
s:= 'Строка 1.' + #13 + 'Строка 2.'; 
s:= 'Выполнено ' + IntToStr(count) + '%'; 
s:= 'Найдено ' + IntToStr(countdir) + ' каталогов, ' + IntToStr(countfile) + ' файлов.';
application.messagebox(pchar ('Расчет: ' + Edit1.text + '+' + Edit2.text + '=' + IntToStr(z)), 'Результат', 0);

Результат объединения указанных примеров:
s:= format(' Строка 1.%sСтрока 2.', [#13]);
s:= format('Выполнено %s%%', [IntToStr(count) ]);
s:= format('Найдено %s каталогов, %s файлов.', [IntToStr(countdir), IntToStr(countfile)]);
application.messagebox(pchar (format('Расчет: %s+%s=%s', [Edit1.text, Edit2.text, IntToStr(z)])), 'Результат', 0);

RUNTIME-код:

У Delphi7(6) есть проблема с отображением текста форм в зависимости от кодировки системы, заключающаяся в появлении знаков вопросов, если кодировки не совпадают - delphi начинает считать юникод как 1251
или наоборот.
Решение этой проблемы заключается в автоматическом формировании кода вызова всех элементов в формы с заполнением их теми же текстовыми значениями, но уже из кода. 
Либо можно использовать специальные unicode-компоненты, но это будет серьезной переработкой форм.
Данная программа позволяет формировать такой код, для этого необходимо просто подключить внешний файл в свой файл директивой $I.

Программа локализации позволяет решать и другие проблемы. 
Например - преобразование кодированного текста в dfm в обычный текст, что позволяет переносить
свой проект на компьютеры с другой кодировкой системы.

Буду рад услышать комментарии, предложения и замечания.

PM MAIL WWW   Вверх
Akella
Дата 14.3.2013, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Цитата(sourcelocalizer @  14.3.2013,  22:06 Найти цитируемый пост)
Но в итоге я так и не нашел необходимых возможностей


А конкретнее, чего именно не хватило?
PM MAIL   Вверх
sourcelocalizer
Дата 15.3.2013, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2013

Репутация: нет
Всего: нет



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

При выборе программы локализации к ней были определены следующие требования:
1. Отсутствие или минимум доработки исходного кода для локализации.
2. Отслеживание дальнейших изменений/дополнений, требующих локализации.
3. Хорошая работа с системами сборки для выполнения пункта 2 (Junit-отчеты) и возможности получать переведенный проект при изменении только функционала без необходимости обращаться к переводчикам.

4. Дополнительное, но важное, требование - решить проблему с кириллицей, а именно ее замену на знаки вопросов в формах при работе с разрабатываемой программой в ОС с другой кодировкой (Английская, Немецкая, пр.),
в том числе с Русской (1251), так как описание формы в Delphi7 генерируются в 1251 либо юникоде (либо другой кодировке).
Проблема с кириллицей касается и разработчиков, если один из них работает с ОС другой локализации, то работать с формами проекта он не может, а с его формами не могут другие.
Был вариант использовать для решения этой проблемы юникод-компоненты, но это привело бы к полному переписыванию форм программы.

Все рассмотренные программы локализации не соответствовали перечисленным требованиям.

В связи с этим я разработал свою программу локализации, которая отвечает всем требованиям.

В ней есть так же возможности оптимизации кода, позволяющие корректировать код перед локализацией (см.примеры выше), если изначально плохо было прописано сочетание текста и кода.
Пример: 
s:= 'Найдено ' + IntToStr(countdir) + ' каталогов, ' + IntToStr(countfile) + ' файлов.';
а надо:
s:= format('Найдено %s каталогов, %s файлов.', [IntToStr(countdir), IntToStr(countfile)]);

и т.п.

Возможности оптимизации, которые изначально не планировались, не встречал нигде. 

Спасибо за вопрос.

P.S. Интересная статья - "23 решения для локализации и интернационализации приложений."
http://www.webdelphi.ru/2012/09/23-resheni...ii-prilozhenij/

PM MAIL WWW   Вверх
Akella
Дата 15.3.2013, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Цитата(sourcelocalizer @  15.3.2013,  11:11 Найти цитируемый пост)
В связи с этим я разработал свою программу локализации, которая отвечает всем требованиям.


С костылём, котрый описан в пункте 4? smile 
PM MAIL   Вверх
Akella
Дата 15.3.2013, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



PM MAIL   Вверх
sourcelocalizer
Дата 15.3.2013, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2013

Репутация: нет
Всего: нет



>>С костылём, котрый описан в пункте 4? 
Данная функция тоже доступна:
1) Для передачи dfm между разработчиками - можно без настройки программы локализации, просто бросить на специальный ярлык свой dfm файл и коды в нем будет преобразованы в текст.
2) Для runtime - генерируется спец.файл вызова всех элементов форм и переназначение им текста. От программиста требуется только указать обращение к этому файлу из функции инициализации формы через {$I namefile.pas}

>>решения для локализации и интернационализации приложений
я тоже привел эту ссылку.

Если подскажете средство локализации подходящее под все требования, буду признателен.
Я такое средство не нашел.

Следует отметить простоту моего подхода для работы над локализацией для переводчика, когда ему передается po-файл или даже простой csv (как на видео).

Отдельно отметил возможности моей программы по автоматической оптимизации строк перед локализацией, когда строка составляется из текста и переменных.
Теперь вручную преобразование делать не нужно, кроме очень сложных случаев.
Пока это сделано только для Delphi.
Такого требования изначально не было, но теперь очень удобно, что не нужно переделывать сотни и сотни строк.
Особенно строк в которых программисты делают переносы предложений через #13. 
Пример: s:='Важно выполнить' + #13 + 'преобразование....';
Набор примеров "до" и "после" приведен в постах выше.

Спасибо.


Это сообщение отредактировал(а) sourcelocalizer - 15.3.2013, 16:32
PM MAIL WWW   Вверх
Akella
Дата 15.3.2013, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Я не понимаю просто. Ну это ну очень специфичное желание - ковырять DFM.
PM MAIL   Вверх
sourcelocalizer
Дата 15.3.2013, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 14.3.2013

Репутация: нет
Всего: нет



>>ковырять DFM
Все делается автоматом и от программиста ничего не требуется.
Буду признателен если Вы предложите решение проблемы отображения текста (кириллицы) в dfm на ОС с разными локализациями.

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

Вы знаете другое решение?
Поделитесь, пожалуйста, опытом в решении такой проблемы.

UPDATE:
Подробней все изложил в посте:
Причины создания программы "Локализатор исходного кода"

UPDATE2:
Пример формы и автоматически генерируемого файла к нему можно посмотреть: 
Решение проблем с кириллицей в dfm-файлах Delphi

Это сообщение отредактировал(а) sourcelocalizer - 17.3.2013, 13:06
PM MAIL WWW   Вверх
Akella
Дата 22.7.2013, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Сайт автора программы Radialix перестал существовать, проект тоже умер, как я понял.
Существующим покупателям программы неоткуда брать программу, неоткуда обновиться.
На данный момент версия 3.0.0.486 - самая последняя.
Здесь можно скачать портативную версию: upload.ee/files/3359227/Radialix_Localizer_3_Pro_v_3.00.00.486_Portable.zip.html
да, выкладка портативной версии - это не очень хорошо, ну а что делать.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

Добро пожаловать в форум группы "Delphi".

В разделе разрешается:

  • Флудить (в приемлемых величинах)
  • Обсуждать модерирование данного раздела (но не его модератора)
  • Добавлять свои правила если они не противоречат существующим
  • Делать наезды на пешеходов***

Строго запрещено:

  • Размещать рекламу
  • Совершать оскорбления личностей
  • Материться
  • *** Пешеходами не являются (ко)модераторы, админы, участники клуба.

Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форум группы: delphi | Следующая тема »


 




[ Время генерации скрипта: 0.1703 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.