121 lines
3.5 KiB
Plaintext
121 lines
3.5 KiB
Plaintext
|
(*
|
||
|
* CDDL HEADER START
|
||
|
*
|
||
|
* gfgfgfg
|
||
|
*)
|
||
|
unit Language;
|
||
|
{$mode objfpc}{$H+}
|
||
|
|
||
|
interface
|
||
|
|
||
|
procedure LanguageLoad(path: string);
|
||
|
function TranslateText(text: string) : string;
|
||
|
function TranslateTextA(text: string) : string;
|
||
|
function GetText(section : string; key: string) : string;
|
||
|
function GetText(key: string) : string;
|
||
|
|
||
|
|
||
|
|
||
|
implementation
|
||
|
uses SysUtils, Classes, IniFiles, LConvEncoding, UConfig;
|
||
|
|
||
|
|
||
|
var
|
||
|
LangPath : string;
|
||
|
LangFile : TIniFile;
|
||
|
CodePage : Integer;
|
||
|
WinIsoCP : Integer;
|
||
|
LangAbbr : string;
|
||
|
LangName : string;
|
||
|
|
||
|
procedure LanguageLoad(path: string);
|
||
|
begin
|
||
|
if (Copy(path, 2, 1) = ':')
|
||
|
then LangPath := path
|
||
|
else LangPath := ExtractFilePath(ParamStr(0)) + path;
|
||
|
|
||
|
if not FileExists(LangPath) then begin
|
||
|
Writeln(TranslateText('Language files doesn''t exists: "' + LangPath + '"'));
|
||
|
Halt;
|
||
|
end;
|
||
|
|
||
|
LangFile := TIniFile.Create(LangPath);
|
||
|
LangAbbr := LangFile.ReadString( 'info', 'LangAbbr', '');
|
||
|
WinIsoCP := LangFile.ReadInteger(' info', 'CodePage', 1250);
|
||
|
CodePage := LangFile.ReadInteger('Server', 'CodePage', 850);
|
||
|
LangName := LangFile.ReadString('info', 'Language', '');
|
||
|
|
||
|
Writeln(TimeStamp, GetText('iLangUse') + ' ', TranslateText(LangName));
|
||
|
end;
|
||
|
|
||
|
function LanguageGetName() : string;
|
||
|
begin
|
||
|
Result := LangName;
|
||
|
end;
|
||
|
|
||
|
function TranslateText(text: string) : string;
|
||
|
begin
|
||
|
case CodePage of
|
||
|
437 : Result := UTF8ToCP437(text);
|
||
|
850 : Result := UTF8ToCP850(text);
|
||
|
866 : Result := UTF8ToCP866(text);
|
||
|
874 : Result := UTF8ToCP874(text);
|
||
|
932 : Result := UTF8ToCP932(text);
|
||
|
936 : Result := UTF8ToCP936(text);
|
||
|
949 : Result := UTF8ToCP949(text);
|
||
|
950 : Result := UTF8ToCP950(text);
|
||
|
1250 : Result := UTF8ToCP1250(text);
|
||
|
1251 : Result := UTF8ToCP1251(text);
|
||
|
1252 : Result := UTF8ToCP1252(text);
|
||
|
1253 : Result := UTF8ToCP1253(text);
|
||
|
1254 : Result := UTF8ToCP1254(text);
|
||
|
1255 : Result := UTF8ToCP1255(text);
|
||
|
1256 : Result := UTF8ToCP1256(text);
|
||
|
1257 : Result := UTF8ToCP1257(text);
|
||
|
1258 : Result := UTF8ToCP1258(text);
|
||
|
else Result := UTF8ToCP1250(text);
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
function TranslateTextA(text: string) : string;
|
||
|
begin
|
||
|
case WinIsoCP of
|
||
|
437 : Result := TranslateText(CP437ToUTF8(text));
|
||
|
850 : Result := TranslateText(CP850ToUTF8(text));
|
||
|
866 : Result := TranslateText(CP866ToUTF8(text));
|
||
|
874 : Result := TranslateText(CP874ToUTF8(text));
|
||
|
932 : Result := TranslateText(CP932ToUTF8(text));
|
||
|
936 : Result := TranslateText(CP936ToUTF8(text));
|
||
|
949 : Result := TranslateText(CP949ToUTF8(text));
|
||
|
950 : Result := TranslateText(CP950ToUTF8(text));
|
||
|
1250 : Result := TranslateText(CP1250ToUTF8(text));
|
||
|
1251 : Result := TranslateText(CP1251ToUTF8(text));
|
||
|
1252 : Result := TranslateText(CP1252ToUTF8(text));
|
||
|
1253 : Result := TranslateText(CP1253ToUTF8(text));
|
||
|
1254 : Result := TranslateText(CP1254ToUTF8(text));
|
||
|
1255 : Result := TranslateText(CP1255ToUTF8(text));
|
||
|
1256 : Result := TranslateText(CP1256ToUTF8(text));
|
||
|
1257 : Result := TranslateText(CP1257ToUTF8(text));
|
||
|
1258 : Result := TranslateText(CP1258ToUTF8(text));
|
||
|
else Result := TranslateText(CP1250ToUTF8(text));
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
function GetText(section : string; key: string) : string;
|
||
|
var text : string;
|
||
|
begin
|
||
|
text := LangFile.ReadString(section, key, '');
|
||
|
if (text <> '')
|
||
|
then result := TranslateText(text)
|
||
|
else result := Format('%%%%[%s]%s%%%%', [section, key]);
|
||
|
end;
|
||
|
|
||
|
function GetText(key: string) : string;
|
||
|
begin
|
||
|
Result := GetText('Server', key);
|
||
|
end;
|
||
|
|
||
|
|
||
|
end.
|
||
|
|