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

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

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

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

Сообщение Mr.Smart » 19.01.2011 15:31:40

VAshot, давным-давно я "ковырялся" в этом и составил небольшое описание функций перевода модулей. Может будет полезно...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение zub » 19.01.2011 15:45:44

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

У меня добавляется из подкаталогов проекта. Попробуй указать "Каталог вывода модулей(-FU)" чтоб все скомпиленые модули болтались в одном месте и компилятор не ломал ядра думая где лежат *.rst
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение VAshot » 19.01.2011 15:49:15

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

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

Сообщение Mr.Smart » 19.01.2011 15:56:46

Хм... я не могу найти 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);

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

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

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

Сообщение VAshot » 19.01.2011 16:11:23

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

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


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

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

До этого сам дошел, но меня поставило в тупик как PDOfile (POFile.ReadPOText(r.Value);) преобразовать в "объект" (поток), который нужно подставить в LRSTranslator := TPoTranslator.Create(X) вместо X ?
Аватара пользователя
VAshot
постоялец
 
Сообщения: 128
Зарегистрирован: 01.11.2007 12:31:21
Откуда: Пермь

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

Сообщение zub » 19.01.2011 16:20:06

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

Да, пиши репорт.
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Mr.Smart » 19.01.2011 16:29:47

VAshot посмотрите код в посте http://freepascal.ru/forum/viewtopic.php?p=49902#p49902. Я там внёс изменения.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

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

Сообщение VAshot » 19.01.2011 20:05:35

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 12:31:21
Откуда: Пермь

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

Сообщение VAshot » 23.01.2011 18:25:18

Еще пара вопросов:
- может ли встроенный парсер включать в .po примечания? Так понимаю, что нет, т.к. через промежуточный файл это происходит, в котором их нет.
- возможна ли динамическая смена языка интерфейса без перезапуска программы?
Аватара пользователя
VAshot
постоялец
 
Сообщения: 128
Зарегистрирован: 01.11.2007 12:31:21
Откуда: Пермь

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

Сообщение gNEV » 24.02.2011 00:33:33

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

Пред.

Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

Рейтинг@Mail.ru