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

  • Автор темы Автор темы ZVSRus
  • Дата начала Дата начала

ZVSRus

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

И если у кого есть пример выбора языка по умолчанию через запись в реестр.
Через 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}"
 
Avengerz13
Вы меня не поняли. Нужно что именно записать в INI файле ниже.
 

Вложения

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;
 
vint56
Как вариант пример хороший. Но желательно создать свой settings.ini с записью для русского языка и settings.ini с записью для английского языка.
Что бы можно было выбирать язык интерфейса по умолчанию через Check: LangRusCheck и Check: LangEngCheck.
Кроме:
[General]
Language=Russian
в файле должно быть что-то ещё отвечающее за связывание с программой
 
Код:
[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;
 
Последнее редактирование:
vint56
Завтра поэкспериментирую. Но все же хотелось бы по проще, сделать settings.ini вручную.
 
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
 
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
 
Последнее редактирование:
Назад
Сверху