Многоязычный интерфейс в приложении на Lazarus

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

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

Многоязычный интерфейс в приложении на Lazarus

Сообщение ViruZ » 29.05.2006 14:55:45

Каким образом можно создать приложение с мультиязычным интерфейсом (чтобы можно было локаль устанавливать как в LAZARUS IDE)?
Пишу прогу для Linux/Windows, нужно использовать разные кодировки в интерфейсе.
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Сообщение Nik » 29.05.2006 22:20:27

Исхо, самый надежный способ - это подгрузка текстовых строк из заданного файла. Ну а файл это может быть в любой кодировке. Собственно, как-то так Лазарь и работает (точно не знаю - исходники в этом месте не смотрел :) )
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Сообщение ViruZ » 30.05.2006 09:17:57

Хорошо, текстовые строки подгружать не сложно, но оригинальный интерфейс тогда приходится писать английский? Если я буду одновременно работать то под Линухом, то под Виндой, другого выхода нет?
ViruZ
постоялец
 
Сообщения: 175
Зарегистрирован: 30.05.2005 17:41:12
Откуда: Украина

Сообщение tria » 30.05.2006 10:41:14

Я сделал таким образом:
- текстовый файл загружаю в открытый массив array of string
- в текстовых полях компонентов вместо текста указал номера строк из этого массива
- написал одну процедурину, которая перебирает все компоненты формы и меняет номера на тексты.

Одно неудобство - на этапе разработки плохо видно, как будет выглядеть форма, неудобно работать с менюшками.
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Сообщение Sergei I. Gorelkin » 30.05.2006 10:43:03

Лазарь локализован с помощью GNU Gettext, как, собственно, и весь Linux. Строки при этом берутся из .mo файла, который отличается от текстового, по сути, только наличием дерева для быстрого поиска. Оригинальный интерфейс пишут, как правило, на английском, но для gettext это безразлично - его задача найти исходную строку и взять соответствующую ей пару. Если не нашел, то строка просто остается в непереведенном виде.
Что в Лазаре делается автоматически, а что нужно вручную - я до сих пор так и не понял. Теоретически, должно быть достаточно положить нужный .mo в нужную папку. Но все это можно глянуть в файле lcl\defaulttranslator.pas
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1395
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 34

Рейтинг@Mail.ru