Вопрос Создание языкового INI файла

ZVSRus

Участник
Может кто подскажет как сделать settings.ini файл для выбора языка по умолчанию.
Так-как у программы не нахожу такого файла ни в локальных папках, ни записей в реестре.
Программа по умолчанию ставиться на английском языке, хотя русский также присутствует. При переключении с английского на русский, при следующим запуске программы язык так и стоит русский, и это правильно. По логике вещей где-то должна быть запись на пропись языка. Все перерыл, не могу найти.
И если у кого есть пример выбора языка по умолчанию через запись в реестр.
Не помню на каком форуме, но такое решение по памяти уже встречал.
 
Последнее редактирование:

Avengerz13

Участник
Программа по умолчанию ставиться на английском языке, хотя русский также присутствует.
Удалить программу полностью. Устанавливаем заново. Создаем снимок реестра до смены языка и после смены. Потом можно сравнить и найти нужные значение.

И если у кого есть пример выбора языка по умолчанию через запись в реестр.
Через Task
Код:
[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; Flags: uninsdeletevalue; Tasks: TaskEntry
В этом примере в зависимости какой язык будет выбран, в реестр будет записан тот же язык по умолчанию.
Код:
[Setup]
AppName=My Program
AppVersion=1.0
DefaultDirName=My Program

[Languages]
Name: "English"; MessagesFile: "compiler:Default.isl"
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Registry]
Root: HKLM; Subkey: "Software\My Company\My Program\Settings"; ValueType: string; ValueName: "Language"; ValueData: "{language}"
 

ZVSRus

Участник
Avengerz13
Вы меня не поняли. Нужно что именно записать в INI файле ниже.
 

Вложения

vint56

Ветеран
Проверенный
ZVSRus,
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[code]
procedure CurStepChanged(CurStep: TSetupStep);
var
  S1: String;
begin
if CurStep = ssPostInstall then
begin
  if ActiveLanguage='russian' then
  s1:= + 'Language=russian.ini' + #13#10;
  if ActiveLanguage='english' then
  s1:= + 'Language=english.ini' + #13#10;
  SaveStringToFile(ExpandConstant('{app}\settings.ini'), s1, False);
end;
end;
 

ZVSRus

Участник
vint56
Как вариант пример хороший. Но желательно создать свой settings.ini с записью для русского языка и settings.ini с записью для английского языка.
Что бы можно было выбирать язык интерфейса по умолчанию через Check: LangRusCheck и Check: LangEngCheck.
Кроме:
[General]
Language=Russian
в файле должно быть что-то ещё отвечающее за связывание с программой
 

vint56

Ветеран
Проверенный
Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Languages]
Name: "english"; MessagesFile: "compiler:Languages\English.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"


[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;


[code]

procedure InitializeWizard();
begin
if ActiveLanguage='russian' then
  WizardForm.ComponentsList.Checked[1]:=true;
if ActiveLanguage='english' then
  WizardForm.ComponentsList.Checked[2]:=true;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  S1: String;
begin
if CurStep = ssPostInstall then
begin
  if ActiveLanguage='russian' then
  s1:= + 'Language=russian.ini' + #13#10;
  if ActiveLanguage='english' then
  s1:= + 'Language=english.ini' + #13#10;

  SaveStringToFile(ExpandConstant('{app}\settings.ini'), s1, False);

  if IsComponentSelected('text\rus') then
  begin
  s1:= + 'Language=russian.ini' + #13#10;
  SaveStringToFile(ExpandConstant('{app}\settings.ini'), s1, False);
  end;

  if IsComponentSelected('text\eng') then
  begin
  s1:= + 'Language=english.ini' + #13#10;
  SaveStringToFile(ExpandConstant('{app}\settings.ini'), s1, False);
  end;
end;
end;
 
Последнее редактирование:

ZVSRus

Участник
vint56
Завтра поэкспериментирую. Но все же хотелось бы по проще, сделать settings.ini вручную.
 

SBalykov

Старожил
vint56
Завтра поэкспериментирую. Но все же хотелось бы по проще, сделать settings.ini вручную.
Если уж Вам так дорог settings.ini, почему бы не сделать так
Код:
[Files]
Source: "Rus\settings.ini"; DestDir: {app}; Languages: Russian; overwritereadonly ignoreversion
Source: "Eng\settings.ini"; DestDir: {app}; Languages: English; overwritereadonly ignoreversion
 

ZVSRus

Участник
SBalykov, vint56 Большое спасибо за ответы. Решение найдено:
Код:
[Registry]
Root: HKCU; SubKey: Software\ObviousIdea\ImageResizer\4.0; ValueType: string; ValueName: locale_file; ValueData: RSZ_Russia.ini; Check: "LangRusCheck and InstallerCheck"; Flags: uninsdeletevalue uninsdeletekeyifempty
Root: HKCU; SubKey: Software\ObviousIdea\ImageResizer\4.0; ValueType: string; ValueName: locale_file; ValueData: RSZ_United States.ini; Check: "LangEngCheck and InstallerCheck"; Flags: uninsdeletevalue uninsdeletekeyifempty
 
Последнее редактирование:
Сверху