Локализация приложений

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
divinusproject
новенький
Сообщения: 49
Зарегистрирован: 16.05.2006 08:25:02
Откуда: Барнаул
Контактная информация:

Локализация приложений

Сообщение divinusproject »

Какие средства есть в Lazarus'е для локализации интерфейса приложений?
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Кроме поддержки GNU Gettext там вряд ли что есть... но ее хватает за глаза. Рекомендую, тем не менее, dxgettext в связке с poEdit.
tria
постоялец
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10
Контактная информация:

Сообщение tria »

Тот же вопрос я задавал на мастерах делфи.
После обсуждений пришел к выводу - лучше сделать самому и ни от кого не зависеть.
Реализация у меня:
Массив strings, который подымается из файла.
В свойствах Captions пишу номер строки из массива.
При создании форм вызывается процедурина, которая перебирает все контролы формы и меняет номера на строки из массива.
Все это пишется за пол дня.
Replicator
постоялец
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven
Контактная информация:

Сообщение Replicator »

Хорошая мысль. Можно еще, чтобы с преобразованием типов не возиться, номер строки записывать не в caption, а в tag.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Философский вопрос: Если мы зависим от пары десятков мегабайт кода LCL, что изменится с появлением зависимости еще от сотни килобайт модуля gnugettext? ;)
Если нумеровать строки - после того, как их количество в программе превысит некоторый порог, все просто расползется по швам... А что делать с сообщениями RTL, FCL и LCL?
Replicator
постоялец
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven
Контактная информация:

Сообщение Replicator »

Все зависит от разрабатываемого приложения. Где-то даже удобнее сделать так, как предложено выше. Где-то надо использовать gnugettext. Нужно просто взвесить все + и -
ViruZ
постоялец
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина
Контактная информация:

Сообщение ViruZ »

А как заставить работать dxgettext с Лазарем? У меня при попытке скомпилировать проект вылетает ошибка компиляции:

Код: Выделить всё

gnugettext.pas(939,39) Error: Identifier not found "ResourceStringTableCount"
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Есть опасение, что только путем доработки напильником, ибо написано оно под какую-то из первых версий FPC и с тех пор не менялось. (См. исходники packages/fcl-base/src/gettext.pp и rtl/objpas/objpas.pp на предмет того, что там теперь вместо ResourceStringTableCount).

Я сам это место вообще закомментировал, а resourcestrings 'перевожу' вызовом TranslateResourceStrings из "родного" gettext. Оно, конечно, коряво, и идея все это хозяйство доработать уже давно обитает в моей голове...
Аватара пользователя
Alexx2000
постоялец
Сообщения: 491
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи
Контактная информация:

Сообщение Alexx2000 »

Сейчас же в Лазарусе можно включить поддержку i18n в настройках проекта. При этом по указанному пути будет автоматически генерироваться *.po файл, содержащий все resourcestring'и и строки всех форм.

А дальше работать с юнитами Translations, DefaultTranslator, GetText.

Я все это дело в Double Commander настроил, теперь все формы автоматом переводятся. Удобно :)
AMD
постоялец
Сообщения: 189
Зарегистрирован: 23.01.2008 21:25:25
Откуда: Кишинев

Сообщение AMD »

Alexx2000 писал(а):Сейчас же в Лазарусе можно включить поддержку i18n в настройках проекта. При этом по указанному пути будет автоматически генерироваться *.po файл, содержащий все resourcestring'и и строки всех форм.

А дальше работать с юнитами Translations, DefaultTranslator, GetText.

Я все это дело в Double Commander настроил, теперь все формы автоматом переводятся. Удобно :)


Где это включается?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

В свойствах проекта
Ответить