Локализация программы

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

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

Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

VAshot, давным-давно я "ковырялся" в этом и составил небольшое описание функций перевода модулей. Может будет полезно...
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Проверил, у меня добавляются только из корневого каталога файлы ресурсов.
Это у всех так или у меня версия IDE старовата? Иль настройки какие виноваты?

У меня добавляется из подкаталогов проекта. Попробуй указать "Каталог вывода модулей(-FU)" чтоб все скомпиленые модули болтались в одном месте и компилятор не ломал ядра думая где лежат *.rst
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

С преобразованием ресурса в поток не подскажите?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Хм... я не могу найти SetResourceStrings, есть только SetUnitResourceStrings. Вы где её взяли?

Модуль objpas.pp

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

{****************************************************************************
                             Resource strings.
****************************************************************************}

   type
     TResourceIterator = Function (Name,Value : AnsiString; Hash : Longint; arg:pointer) : AnsiString;

   Function Hash(S : AnsiString) : LongWord;
   Procedure ResetResourceTables;
   Procedure FinalizeResourceTables;
   Procedure SetResourceStrings (SetFunction :  TResourceIterator;arg:pointer);
   Procedure SetUnitResourceStrings (const UnitName:string;SetFunction :  TResourceIterator;arg:pointer);

С преобразованием ресурса в поток не подскажите?

Не понял, что значит преобразовать? Что за поток?
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

zub писал(а):Попробуй указать "Каталог вывода модулей(-FU)"

Благодарю, заработало. Но явно баг или недоработка случайная, сами то модули нормально обрабатывал.


Mr.Smart писал(а):Не понял, что значит преобразовать? Что за поток?

VAshot писал(а):
Mr.Smart писал(а):Измените класс TPoTranslator с возможностью чтения из потока

До этого сам дошел, но меня поставило в тупик как PDOfile (POFile.ReadPOText(r.Value);) преобразовать в "объект" (поток), который нужно подставить в LRSTranslator := TPoTranslator.Create(X) вместо X ?
zub
долгожитель
Сообщения: 2890
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Но явно баг или недоработка случайная, сами то модули нормально обрабатывал.

Да, пиши репорт.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

VAshot посмотрите код в посте http://freepascal.ru/forum/viewtopic.php?p=49902#p49902. Я там внёс изменения.
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

Mr.Smart писал(а):VAshot посмотрите код в посте http://freepascal.ru/forum/viewtopic.php?p=49902#p49902. Я там внёс изменения.

Эм.... Я ж говорю, до кода

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

constructor TPoTranslator.Create(aStream: TStream);
begin
  inherited Create;
  FPOFile:=TPOFile.Create(aSteram);
end;
я и сам догадался. Вопрос в том, чем заполнить переменную aStream, точнее, как? Это не совсем по тематике ветки, но всё же.
Аватара пользователя
VAshot
постоялец
Сообщения: 128
Зарегистрирован: 01.11.2007 11:31:21
Откуда: Пермь

Сообщение VAshot »

Еще пара вопросов:
- может ли встроенный парсер включать в .po примечания? Так понимаю, что нет, т.к. через промежуточный файл это происходит, в котором их нет.
- возможна ли динамическая смена языка интерфейса без перезапуска программы?
gNEV
новенький
Сообщения: 26
Зарегистрирован: 23.07.2010 14:20:06
Откуда: Санкт-Петербург

Сообщение gNEV »

Интересный момент обнаружил (а может уже давно известный :) ) например диалог поиска FindDialog позволяет менять текст своего интерфейса через SetResourceStrings, а диалог печати PrintDialog нет. Странно как-то... Куда нужно посмотреть для русификации PrintDialog?
Ответить