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


 

воскресенье, 17 марта 2013 г.

Решение проблем с кириллицей в dfm-файлах Delphi

Проблема состоит из двух частей:
1) проблема передачи исходных файлов программисту команды, у которого локализация (н.п. английская вместо русской) ОС отличается от ОС у других программистов;
2) проблема отображения кириллицы при работе программы на ОС (операционная система) разной локализации.

Решение пункта 1

Для правильной передачи dfm-файлов между разработчиками достаточно вместо кодов в dfm вписать простой текст.
Это довольно трудоемкий процесс, кроме того, при внесении новых компонент текст в них будет оформлен кодами.

Такой функционал присутствует в программе локализации, и его можно использовать даже без настройки программы локализации, а просто бросить на специальный ярлык свой dfm-файл, и коды в нем будет преобразованы в текст.

Решение пункта 2

В Delphi7(6) есть проблема с отображением текста форм в зависимости от кодировки системы, заключающаяся в появлении знаков вопросов, если кодировки не совпадают - delphi, начинает считать юникод как 1251 или наоборот.

Основным решением, которое я встречал, является использование специальных unicode-компонентов, но это будет серьезной переработкой форм.
Для больших проектов это мало подходит. Особенно, когда нужно старый готовый проект локализовать для иностранных пользователей и при этом "ничего не трогать" в коде проекта.

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



Данная программа локализации позволяет автоматически формировать такой код, для этого необходимо просто подключить внешний файл в свой файл директивой $I.
Таким образом, для runtime - генерируется спец.файл вызова всех элементов форм и переназначение им текста. От программиста требуется только указать обращение
к этому файлу из функции инициализации формы через {$I namefile.pas}

Пример формы и генерируемого к нему файла:


(sender as TForm1).Caption := 'Прием заявок';
(sender as TForm1).Label1.Caption := 'Фамилия:';
(sender as TForm1).Label2.Caption := 'Имя:';
(sender as TForm1).Label3.Caption := 'Отчество:';
(sender as TForm1).Label4.Caption := 'Контактный телефон:';
(sender as TForm1).Label5.Caption := 'Заявка:';
(sender as TForm1).Label6.Caption := 'Важность заявки:';
(sender as TForm1).Edit1.Text := 'Пример фамилии';
(sender as TForm1).Button1.Caption := 'Сохранить';
(sender as TForm1).memo1.Lines[0] := 'Текстовая линия 1';
(sender as TForm1).memo1.Lines[1] := 'Текстовая линия 2';
(sender as TForm1).Button2.Caption := 'Отменить';
(sender as TForm1).ComboBox1.Text := 'Обычная';
(sender as TForm1).ComboBox1.Items[0] := 'Низкая';
(sender as TForm1).ComboBox1.Items[1] := 'Обычная';
(sender as TForm1).ComboBox1.Items[2] := 'Высокая';
(sender as TForm1).N1.Caption := 'Действие';
(sender as TForm1).N3.Caption := 'Сохранить';
(sender as TForm1).N4.Caption := 'Удалить';
(sender as TForm1).N5.Caption := 'Выход';
(sender as TForm1).ComboBox1.ItemIndex := 1;

Прошу обратить внимание на последнюю строку кода. 
Дело в том, что при переназначении текстовых значений "слетают" индексы для таких (combobox и т.п.) компонентов, поэтому необходимо им назначить ранее указанный индекс.

Комментариев нет:

Отправить комментарий