Локалізація додатків в Delphi для Win32 (исходники), Різне, Програмування, статті

Вступ

Чи вмієте ви писати програми для всього світу? Не так давно мій начальник в передчутті швидкого виходу нашої фірми на міжнародний ринок попросив розглянути можливість переведення багатомодульним програмного комплексу середнього рівня складності з російської мови на англійську з метою використання його в Латинській Америці! Звичайно, я не знаю, наскільки виправдано це рішення з практичної точки зору і скільки мов знає середньостатистичний індієць, але переді мною постала серйозна і нова для мене завдання. Тим більше що ідеологія швидкої заменяемости строкових ресурсів у проекті (отже, і в готовій програмою) була давно і безповоротно порушена через наявність маси більш важливих і невідкладних завдань – нехай це буде моя особиста версія історії проблеми.

Актуальність питання локалізації сучасних програмних додатків сьогодні вже можна поставити під сумнів, так як в сучасні потужні засоби розробки і програмні платформи, як правило, спочатку закладені достатні для деяких типових завдань можливості локалізації розроблюваних сучасних рішень. І це справедливо не тільки для Windows. У той же час перед розробниками, як і десять років тому, постає все та ж завдання по забезпеченню інтернаціоналізації (або локалізації) давно написаного ПО. А в разі, якщо створювалося воно сторонніми програмістами і всякі контакти з ними назавжди втрачені, сюди іноді додається ще й пікантна проблема відсутності вихідного тексту, тобто самого проекту. В цьому випадку дуже незайвим буде знати ті інструменти, які існують для вирішення подібних завдань.


Визначення

Щоб зрозуміти важливість етапу проектування самого рішення з точки зору подальшої його адаптації для конкретного регіону, можна дослівно навести цитату з Вікіпедії ( http://ru.wikipedia.org ): «Є важливе розходження між інтернаціоналізацією та локалізацією. Інтернаціоналізація – це адаптація продукту для потенційного використання практично в будь-якому місці, у той час як локалізація – це додавання спеціальних функцій для використання в деякому певному регіоні ».

Звідси для досвідченого розробника напрошується висновок: чим точніше він врахує і реалізує функціональність, пов’язану з інтернаціоналізацією його програмного продукту, тим більше шансів звести до мінімуму подальші зусилля по його локалізації.


Коло проблем

Сама локалізація може включати в себе переклад текстових ресурсів графічного інтерфейсу користувача, документації, що входить до складу програмного пакета, і більш складні роботи, пов’язані зі змінами фрагментів вихідного коду на рівні алгоритмів. Трапляється, що останній пункт іноді можна вважати результатом прорахунків на ранніх стадіях роботи над проектом. Приміром, такі начебто безневинні речі, як використання якогось одного фіксованого формату строкового представлення дати-часу в алгоритмі обробки даних, можуть спричинити за собою не тільки серйозні помилки, а й непередбачену витрату великої кількості часу на їх виявлення і боротьбу з наслідками.

Дуже часто постає окрема, багатопланова, не завжди помітна при першому погляді на проблему завдання по локалізації повідомлень про помилки, але актуальність її більшою мірою залежить вже від концепції програмного пакета.


Про головне

Сказати, що темою статті є переклад користувацького інтерфейсу, буде не зовсім вірно, тому що, як ми побачимо з розглянутих рішень, в тих випадках, коли має місце професійних підхід до якості комерційного програмного продукту, грань між інтернаціоналізацією і власне локалізацією може стиратися.

Delphi: майстер додавання мов


В дану статтю не увійшли завдання, пов’язані з платформою MS.NET і проектами, заснованими на VLC.NET. Також не розглядаються питання локалізації проектів на Borland Kylix.

Ми розглянемо тільки кошти для локалізації проектів в середовищі Delphi для Win32. До речі, варто зауважити, що в цій IDE вже реалізований один із способів локалізації програми.

Основна зручність цього рішення полягає в його первісному присутності в Delphi, без додаткової установки будь-яких програм і компонентів. Більш детальну інформацію про майстра додавання мов можна отримати у відповідних розділах довідкової системи Delphi.


Методи рішень

Отже, для спрощення нелегке життя розробника існує ряд спеціалізованих утиліт і комплексних програмних пакетів, які дозволяють значно скоротити витрати на локалізацію. Крім того, є окремий ряд програм, формально не відносяться до подібних утилітам, але мають, наприклад, зручний доступ до строкових ресурсів. exe-і. dll-файлів з можливістю їх редагування.


Можливі порівняльні характеристики сторонніх продуктів

При виборі розглянутих рішень ми керувалися перш за все такими критеріями, як сумісність з Delphi 2006 (Win32), виразне вказівку на тип ліцензії, наявність в пакеті готових прикладів по локалізації проектів. Наявність вихідних текстів і можливість роботи безпосередньо з готовими exe-модулями можна в загальному випадку вважати додатковими, але не обов’язковими характеристиками.

На перше місце ставиться зручність процесу локалізації, бо такі можливості, як динамічна зміна мови, на перевірку виявляються менш важливі, ніж, наприклад, функціональне розмежування етапів підготовки локалізації. Не будемо забувати: програміст заробляє на хліб в основному все-таки не тим, що володіє іноземними мовами … І найяскравіше це проявляється, коли мова йде про переведення на екзотичні мови.


Безкоштовні рішення

«ДеЛок»

deloc.narod.ru

Програмний пакет «ДеЛок» («Дельфійний локалізатор» – так розшифровують назву самі розробники продукту) поширюється вільно, тобто його можна використовувати в будь-яких проектах, включаючи умовно безкоштовні (Shareware) і комерційні.

«ДеЛок»: головне вікно


Версія 1.11 призначена для роботи з середовищем Delphi версій 6 і 7. За допомогою цієї утиліти локалізується рядки, оголошені в секції resourcestring, а також строкові властивості форм і компонентів. Для локалізації написаного на Delphi програми потрібно за допомогою програми «ДеЛок» створити файл локалізації, в якому будуть міститися перекладені на потрібну мову ресурсні рядки і властивості форм і компонентів.

Далі треба включити в проект локалізуемой програми файл LcUnit.pas, який входить в пакет разом з «локалізаторів».

«ДеЛок»: вибір мови перекладу


Після завантаження програми слід викликати функцію LoadLcf (), де в якості параметрів вказати потрібну мову та ім’я файлу локалізації. Виклик функції можна помістити в исходнике проекту відразу після слова begin чи в будь-якому модулі проекту в секції initialization.

Під час створення форми, яка підлягає локалізації, необхідно викликати для неї функцію TranslateComponent (). Виклик функції можна помістити в перевантажений конструктор форми (відразу після inherited) або в обробник події OnCreate. У випадку, якщо форми успадковуються від однієї базової форми, можна поставити виклик функції TranslateComponent () тільки в ній.

У пакет входить файл російської довідки і успішно запускається під Delphi 2006 демопроект, що показує можливість перемикання «на льоту» російської та англійської мов для основних елементів управління. Більш детально про роботу модуля LcUnit.pas можна дізнатися з довідкового файлу або з файлу readme_ru.txt.

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


Комерційні пакети

Helicon Translator

На сайті www.helicon.co.at/translator/ є 30-денна ознайомлювальна версія Helicon Translator.

Важлива особливість пакета полягає в тому, що він дозволяє працювати як з файлом проекту, так і з бінарними модулями. Exe,. Bpl і. Dll.

Helicon Translator: початок роботи


Однак для роботи з бінарними файлами програмі все ж необхідний map-файл.

Helicon Translator потребує map-файл для роботи з бінарними файлами

На етапі створення проекту транслятор з метою запобігання помилок може двічі уточнювати версію використаної або використовуваної в поточний момент середовища компілювання.

Helicon Translator: уточнення версії Delphi під час локалізації


Крім обмеження за часом ознайомча версія відзначає свою роботу в заголовку вікна програми.


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


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*