FIX: System language detection (issue #1724)

This commit is contained in:
Alexander Koblov 2024-06-20 18:04:07 +03:00
commit e410909169
2 changed files with 13 additions and 7 deletions

View file

@ -61,9 +61,12 @@ function CeTryDecode(const aValue: AnsiString; aCodePage: Cardinal;
{$ELSEIF DEFINED(UNIX)}
var
SystemEncodingUtf8: Boolean = False;
SystemLanguage, SystemEncoding, SystemLocale: String;
SystemEncoding, SystemLocale: String;
{$ENDIF}
var
SystemLanguage: String;
implementation
uses
@ -324,6 +327,8 @@ begin
end;
procedure Initialize;
var
Buffer: array[1..4] of AnsiChar;
begin
CeOemToSys:= @OEM2Ansi;
CeSysToOem:= @Ansi2OEM;
@ -335,6 +340,9 @@ begin
CeUtf8ToAnsi:= @UTF82Sys;
CeSysToUtf8:= @Sys2UTF8;
CeUtf8ToSys:= @UTF82Sys;
if GetLocaleInfo(GetUserDefaultLCID, LOCALE_SABBREVLANGNAME, @Buffer[1], 4) > 0 then
SystemLanguage := LowerCase(Copy(Buffer, 1, 2));
end;
{$ELSEIF DEFINED(UNIX)}

View file

@ -53,7 +53,6 @@ uses
DCUnicodeUtils, nsCore, nsUniversalDetector, uLng, uGlobs;
var
Lang, FallbackLang: AnsiString;
SupportedEncodings: TStringList = nil;
type
@ -334,10 +333,10 @@ begin
// When unknown encoding then use system encoding
if SupportedEncodings.IndexOf(Result) < 0 then
begin
if (FallbackLang = 'be') or (FallbackLang = 'bg') or
(FallbackLang = 'ky') or (FallbackLang = 'mk') or
(FallbackLang = 'mn') or (FallbackLang = 'ru') or
(FallbackLang = 'tt') then
if (SystemLanguage = 'be') or (SystemLanguage = 'bg') or
(SystemLanguage = 'ky') or (SystemLanguage = 'mk') or
(SystemLanguage = 'mn') or (SystemLanguage = 'ru') or
(SystemLanguage = 'tt') then
Result:= DetectCharsetCyrillic(S)
else
begin
@ -618,7 +617,6 @@ end;
initialization
InitStatistic;
GetLanguageIDs(Lang, FallbackLang);
SupportedEncodings:= TStringList.Create;
GetSupportedEncodings(SupportedEncodings);