Subversion Repositories spacemission

Compare Revisions

Regard whitespace Rev 95 → Rev 96

/Global.pas
108,24 → 108,38
 
procedure SwitchLanguage(newLang: string);
var
bakHInst: hInst;
modFileName: string;
oldHInst: hInst;
newHInst: hInst;
bakOverride: string;
FileName: array [0..MAX_PATH] of Char;
Module: PLibModule;
begin
Module := LibModuleList;
GetModuleFileName(Module.Instance, FileName, Length(FileName));
 
bakOverride := GetLocaleOverride('');
try
SetLocaleOverride(newLang);
 
// Note: SetLocaleOverride() does not work, because LibModuleList.ResInstance
// Note: SetLocaleOverride() alone does not work, because LibModuleList.ResInstance
// is already set and won't be re-set by the FindResourceHInstance()!
bakHInst := LibModuleList.ResInstance;
modFileName := ChangeFileExt(ParamStr(0),'.'+GetLocaleOverride(ParamStr(0)));
LibModuleList.ResInstance := LoadResourceModule(PChar(modFileName));
if LibModuleList.ResInstance = 0 then
LibModuleList.ResInstance := LibModuleList.Instance;
FreeLibrary(bakHInst);
newHInst := LoadResourceModule(FileName);
if newHInst = 0 then newHInst := Module.Instance;
 
oldHInst := Module.ResInstance;
Module.ResInstance := newHInst;
FreeLibrary(oldHInst);
except
SetLocaleOverride(bakOverride);
end;
end;
 
function GetUserDefaultUILanguage: LANGID; stdcall; external 'kernel32';
 
procedure SpaceMission_SwitchLanguage;
const
BaseLanguage = LANG_GERMAN;
DesiredFallbackLanguage = 'ENU'; // English USA
begin
// We need this because of a tricky problem...
// Our base language is German (DE), and we have a translation for English USA (ENU)
132,9 → 146,12
// If the system locale is not exactly ENU (even ENG is not accepted), then the base language (German) will be used.
// But much more people are speaking English than German. So we need to force the system to use ENU instead of DE.
// This decision if we choose DE or ENU is done by the language selected during setup.
if (GetUserDefaultUILanguage and $FF) <> LANG_GERMAN then
SwitchLanguage('ENU');
if (GetLocaleOverride('') = '') and
((GetUserDefaultUILanguage and $FF) <> BaseLanguage) then
begin
SwitchLanguage(DesiredFallbackLanguage);
end;
end;
 
function GetKnownFolderPath(const rfid: TGUID): string;
var