ISDone

DLL ISDone 0.6 final

Нет прав для скачивания

AlexGri

Новичок
У меня вопрос. Как сделать, чтобы отображение единиц времени при распаковке было на другом языке, кроме русского и, набившего уже оскомину, английского?
В упаковке в папке include входят два файла russian.ini и english.ini. При выборе другого языка часы, минуты, секунды отображаются на русском. Писал в секции [CustomMessages] пропись основных фраз на другом языке: "Прошло:", "Осталось времени:", "Всего:". Они отображаются нормально, а минуты и т.д. на русском.
Пробовал создавать ini -файл для этого языка, переводил единицы времени. Только русский и только английский. :(
 

sergey3695

Ветеран
Модератор
AlexGri, ChangeLanguage использовали?
Код:
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
 

Adil

Старожил
Код:
#ifdef precomp
  PCFVer:={#precomp};
#else
  PCFVer:=0;
#endif
    ISDoneError:=true;
    if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
      repeat
        case ActiveLanguage of
          'eng': ChangeLanguage('English');
          'rus': ChangeLanguage('Russian');
        end;
?
 

AlexGri

Новичок
Вот как это все выглядит.
Это в коде присутствует - function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
Вид.jpg
 

Adil

Старожил
AlexGri, а это?
case ActiveLanguage of
'eng': ChangeLanguage('English');
'rus': ChangeLanguage('Russian');
end;
 

AlexGri

Новичок
AlexGri, а это?
case ActiveLanguage of
'eng': ChangeLanguage('English');
'rus': ChangeLanguage('Russian');
end;
Этого не было. Я ставил исходный "исдановский" код, не знал, что там меняется язык. Там так -
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1, Comps2, Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then
begin
repeat
// ChangeLanguage('English');

Поставил эти строки -
case ActiveLanguage of
'eng': ChangeLanguage('English');
'rus': ChangeLanguage('Russian');
end;
Добавил это - 'esp': ChangeLanguage('Esperanto');
Все равно русские единицы времени при выборе другого языка во время распаковки.
 

vint56

Ветеран
Проверенный
AlexGri, переведи

[CustomMessages]
english.ExtractedFile=Извлекается файл:
english.Extracted=Распаковка архивов...
english.CancelButton=Отменить распаковку
english.Error=Ошибка распаковки!
english.ElapsedTime=Прошло:
english.RemainingTime=Осталось времени:
english.EstimatedTime=Всего:
english.AllElapsedTime=Время установки:
 

AlexGri

Новичок
AlexGri, переведи

[CustomMessages]
english.ExtractedFile=Извлекается файл:
english.Extracted=Распаковка архивов...
english.CancelButton=Отменить распаковку
english.Error=Ошибка распаковки!
english.ElapsedTime=Прошло:
english.RemainingTime=Осталось времени:
english.EstimatedTime=Всего:
english.AllElapsedTime=Время установки:
У меня вот так -

esperanto.CancelButton=Stopi depakon
esperanto.Error=Eraro depakon!
esperanto.ElapsedTime=Pasis:
esperanto.RemainingTime=Restas da tempo:
esperanto.EstimatedTime=Tutan tempon:

Все фразы отображаются правильно.
Только минуты, секунды все равно на русском. А должно быть - minutoj, sekundoj. В ini-файле, созданном в папке Include для этого языка я прописал их -
"TIME_MIN_FULL1"="minutoj "
"TIME_MIN_FULL2"="minuto "
"TIME_MIN_FULL3"="de minuto "
"TIME_SEC_FULL1"="sekundoj "
"TIME_SEC_FULL2"="sekundo "
"TIME_SEC_FULL3"="de sekundoj "
Но они не отображаются. Только по-русски.
 

AlexGri

Новичок
Вот здесь в коде идет пропись для отображения времени. Это исходный код ISDone.

#endif
WizardForm.FileNamelabel.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, WizardForm.FileNamelabel.Font, WizardForm.FileNamelabel.Width-ScaleX(100));
LblTime[0].Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
LblTime[1].Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LblTime[2].Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
Result := ISDoneCancel;
end;

Я не пойму как в [Custom Messages] прописать эти минуты, секунды.
 

vint56

Ветеран
Проверенный
AlexGri, тебе надо будет перевести english.ini на испанский язык и добавить Spanish.ini

[Files]
Source: Include\Spanish.ini; DestDir: {tmp}; Flags: dontcopy
ExtractTemporaryFile('Spanish.ini');

if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
case ActiveLanguage of
'english': ChangeLanguage('English');
'russian': ChangeLanguage('Russian');
'spanish': ChangeLanguage('Spanish');
end;
 

AlexGri

Новичок
AlexGri, тебе надо будет перевести english.ini на испанский язык и добавить Spanish.ini

[Files]
Source: Include\Spanish.ini; DestDir: {tmp}; Flags: dontcopy
ExtractTemporaryFile('Spanish.ini');

if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
case ActiveLanguage of
'english': ChangeLanguage('English');
'russian': ChangeLanguage('Russian');
'spanish': ChangeLanguage('Spanish');
end;
"Ура-а-а! Заработала!" (Кот Матроскин)

Все получилось!! Сделан 1.jpg Сделан 2.jpg
Спасибо огромное. И всем, кто помогал, и старался помочь.
Вот тут и видно насколько муторна вся эта настройка с языками когда есть уже давно один международный (альтернативный) язык - эсперанто. А вовсе не узурпатор - английский.
В-общем чего надо, если кому приспичит:
1. Создаем в папке Include ini-файл для нужного языка используя Russian.ini. Например Esperanto.ini. В нем переводим все на нужный язык. Я переводил только для часов, секунд, минут.
2. Прописываем в скрипте язык, который нужен (как обычно).
[Languages]
Name: "esperanto"; MessagesFile: "compiler:Languages\Esperanto.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
3. В секцию [Files] этот самый ini-файл
Source: Include\Esperanto.ini; DestDir: {tmp}; Flags: dontcopy
4. В [CustomMessages] помимо русского ставим еще для нужного языка -
esperanto.ExtractedFile=:
esperanto.Extracted=
esperanto.CancelButton=Stopi depakon
esperanto.Error=Eraro depakon!
esperanto.ElapsedTime=Pasis:
esperanto.RemainingTime=Restas da tempo:
esperanto.EstimatedTime=Tutan tempon:

5. В секции (в коде для ISDone), где строки:

**********************************************************************
#endif
// ExtractTemporaryFile('English.ini');
ставим -
ExtractTemporaryFile('Esperanto.ini');

*********************************************************************
6. Там же в коде в строках ставим это - 'esperanto': ChangeLanguage('Esperanto'); -

#endif
ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1, Comps2, Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then
begin
repeat
// ChangeLanguage('English');
case ActiveLanguage of
'esperanto': ChangeLanguage('Esperanto');
'russian': ChangeLanguage('Russian');

end;

**********************************************************************
И, как говорится, вуаля.


Кстати, если кому надо, на официальном сайте InnoSetup в разделе
языков есть моя языковая раскладка для эсперанто jrsoftware.org/files/istrans/.

Можете вставлять в инсталлятор.
 

dixen18

Ветеран
Mickey1s, Пробовал, либо CRC Error либо просто завершение работы программы
 

L-e-o-N

Старожил
Почему если в ручную с помощю packZIP создать zip архив, то его хеш отличается от хеша zip архива созданого при помощи ispackzip (я смотрел в диспетчере задач и команду упаковки выполняю одинаковую). Проблема заключается в том что потом мне созданый архив нужно патчить через xdelta а на этом этапе выдает ошибка хеша (я проверял хеши файлов созданых в ручную и хеши файлов созданых ispackzip, и они действительно разные)
И как решить даную проблему?
 
Последнее редактирование:

Druid

Новичок
Проверенный
1. сначала через ISDone просто создаешь zip файл
2. на него "накатываешь" xdelta, и получаешь diff файл
3. затем переписываешь скрипт чтобы ISDone сначала создавал zip файл, а потом "накатывал" на него твой diff файл.
 

Langren1

Мимокрокодил
Помогите пожалуйста. У меня при распаковке rar архивов с файлом внутри больше 10Gb прогресс бар набирает обороты и быстро доходит до 100% хотя установка продолжается при достижении этого значения. При использовании 7z такого не наблюдается. Грешу на ISDone.

Для создания setup.exe использую "Installer Creator" от Razor12911.
 
Последнее редактирование:
Сверху