📄 jvgnugettext.pas
字号:
var
Data: PTypeData;
begin
Result := 0;
PropList := nil;
if (AObject.ClassInfo <> nil) then
begin
Data := GetTypeData(AObject.ClassInfo);
Result := Data^.PropCount;
if Result > 0 then
begin
GetMem(PropList, Result * SizeOf(PPropInfo));
GetPropInfos(AObject.ClassInfo, PropList);
end;
end;
end;
{$endif}
function ResourceStringGettext(const MsgId: WideString): WideString;
var
i: Integer;
begin
if (MsgId = '') or (ResourceStringDomainListCS = nil) then
begin
// This only happens during very complicated program startups that fail
// or when MsgId=''
Result := MsgId;
Exit;
end;
ResourceStringDomainListCS.BeginRead;
try
for i := 0 to ResourceStringDomainList.Count - 1 do
begin
Result := dgettext(ResourceStringDomainList.Strings[i], MsgId);
if Result <> MsgId then
Break;
end;
finally
ResourceStringDomainListCS.EndRead;
end;
end;
{$ifndef DELPHI5OROLDER}
function gettext(const szMsgId: AnsiString): WideString;
begin
Result := DefaultInstance.gettext(szMsgId);
end;
{$endif}
function gettext(const szMsgId: WideString): WideString;
begin
Result := DefaultInstance.gettext(szMsgId);
end;
{$ifndef DELPHI5OROLDER}
function _(const szMsgId: AnsiString): WideString;
begin
Result := DefaultInstance.gettext(szMsgId);
end;
{$endif}
function _(const szMsgId: WideString): WideString;
begin
Result := DefaultInstance.gettext(szMsgId);
end;
{$ifndef DELPHI5OROLDER}
function dgettext(const szDomain: string; const szMsgId: AnsiString): WideString;
begin
Result := DefaultInstance.dgettext(szDomain, szMsgId);
end;
{$endif}
function dgettext(const szDomain: string; const szMsgId: WideString): WideString;
begin
Result := DefaultInstance.dgettext(szDomain, szMsgId);
end;
{$ifndef DELPHI5OROLDER}
function dngettext(const szDomain: string; const singular, plural: AnsiString;
Number: Longint): WideString;
begin
Result := DefaultInstance.dngettext(szDomain, singular, plural, Number);
end;
{$endif}
function dngettext(const szDomain: string; const singular, plural: WideString;
Number: Longint): WideString;
begin
Result := DefaultInstance.dngettext(szDomain, singular, plural, Number);
end;
{$ifndef DELPHI5OROLDER}
function ngettext(const singular, plural: AnsiString; Number: Longint): WideString;
begin
Result := DefaultInstance.ngettext(singular, plural, Number);
end;
{$endif}
function ngettext(const singular, plural: WideString; Number: Longint): WideString;
begin
Result := DefaultInstance.ngettext(singular, plural, Number);
end;
procedure textdomain(const szDomain: string);
begin
DefaultInstance.textdomain(szDomain);
end;
{not used}
{
procedure SetGettextEnabled(Enabled: Boolean);
begin
DefaultInstance.Enabled := Enabled;
end;
}
function getcurrenttextdomain: string;
begin
Result := DefaultInstance.getcurrenttextdomain;
end;
procedure bindtextdomain(const szDomain, szDirectory: string);
begin
DefaultInstance.bindtextdomain(szDomain, szDirectory);
end;
procedure TP_Ignore(AnObject: TObject; const Name: AnsiString);
begin
DefaultInstance.TP_Ignore(AnObject, Name);
end;
procedure TP_GlobalIgnoreClass(IgnClass: TClass);
begin
DefaultInstance.TP_GlobalIgnoreClass(IgnClass);
end;
procedure TP_IgnoreClass(IgnClass: TClass);
begin
DefaultInstance.TP_IgnoreClass(IgnClass);
end;
procedure TP_IgnoreClassProperty(IgnClass: TClass; const PropertyName: AnsiString);
begin
DefaultInstance.TP_IgnoreClassProperty(IgnClass, PropertyName);
end;
procedure TP_GlobalIgnoreClassProperty(IgnClass: TClass; const PropertyName: AnsiString);
begin
DefaultInstance.TP_GlobalIgnoreClassProperty(IgnClass, PropertyName);
end;
procedure TP_GlobalHandleClass(HClass: TClass; Handler: TTranslator);
begin
DefaultInstance.TP_GlobalHandleClass(HClass, Handler);
end;
{not used}
{
procedure TranslateProperties(AnObject: TObject; TextDomain: AnsiString = '');
begin
DefaultInstance.TranslateProperties(AnObject, TextDomain);
end;
}
procedure TranslateComponent(AnObject: TComponent; const TextDomain: string = '');
begin
DefaultInstance.TranslateComponent(AnObject, TextDomain);
end;
procedure RetranslateComponent(AnObject: TComponent; const TextDomain: string = '');
begin
DefaultInstance.RetranslateComponent(AnObject, TextDomain);
end;
{$ifdef MSWINDOWS}
// These constants are only used in Windows 95
// Thanks to Frank Andreas de Groot for this table
const
IDAfrikaans = $0436;
IDAlbanian = $041C;
IDArabicAlgeria = $1401;
IDArabicBahrain = $3C01;
IDArabicEgypt = $0C01;
IDArabicIraq = $0801;
IDArabicJordan = $2C01;
IDArabicKuwait = $3401;
IDArabicLebanon = $3001;
IDArabicLibya = $1001;
IDArabicMorocco = $1801;
IDArabicOman = $2001;
IDArabicQatar = $4001;
IDArabic = $0401;
IDArabicSyria = $2801;
IDArabicTunisia = $1C01;
IDArabicUAE = $3801;
IDArabicYemen = $2401;
IDArmenian = $042B;
IDAssamese = $044D;
IDAzeriCyrillic = $082C;
IDAzeriLatin = $042C;
IDBasque = $042D;
IDByelorussian = $0423;
IDBengali = $0445;
IDBulgarian = $0402;
IDBurmese = $0455;
IDCatalan = $0403;
IDChineseHongKong = $0C04;
IDChineseMacao = $1404;
IDSimplifiedChinese = $0804;
IDChineseSingapore = $1004;
IDTraditionalChinese = $0404;
IDCroatian = $041A;
IDCzech = $0405;
IDDanish = $0406;
IDBelgianDutch = $0813;
IDDutch = $0413;
IDEnglishAUS = $0C09;
IDEnglishBelize = $2809;
IDEnglishCanadian = $1009;
IDEnglishCaribbean = $2409;
IDEnglishIreland = $1809;
IDEnglishJamaica = $2009;
IDEnglishNewZealand = $1409;
IDEnglishPhilippines = $3409;
IDEnglishSouthAfrica = $1C09;
IDEnglishTrinidad = $2C09;
IDEnglishUK = $0809;
IDEnglishUS = $0409;
IDEnglishZimbabwe = $3009;
IDEstonian = $0425;
IDFaeroese = $0438;
IDFarsi = $0429;
IDFinnish = $040B;
IDBelgianFrench = $080C;
IDFrenchCameroon = $2C0C;
IDFrenchCanadian = $0C0C;
IDFrenchCotedIvoire = $300C;
IDFrench = $040C;
IDFrenchLuxembourg = $140C;
IDFrenchMali = $340C;
IDFrenchMonaco = $180C;
IDFrenchReunion = $200C;
IDFrenchSenegal = $280C;
IDSwissFrench = $100C;
IDFrenchWestIndies = $1C0C;
IDFrenchZaire = $240C;
IDFrisianNetherlands = $0462;
IDGaelicIreland = $083C;
IDGaelicScotland = $043C;
IDGalician = $0456;
IDGeorgian = $0437;
IDGermanAustria = $0C07;
IDGerman = $0407;
IDGermanLiechtenstein = $1407;
IDGermanLuxembourg = $1007;
IDSwissGerman = $0807;
IDGreek = $0408;
IDGujarati = $0447;
IDHebrew = $040D;
IDHindi = $0439;
IDHungarian = $040E;
IDIcelandic = $040F;
IDIndonesian = $0421;
IDItalian = $0410;
IDSwissItalian = $0810;
IDJapanese = $0411;
IDKannada = $044B;
IDKashmiri = $0460;
IDKazakh = $043F;
IDKhmer = $0453;
IDKirghiz = $0440;
IDKonkani = $0457;
IDKorean = $0412;
IDLao = $0454;
IDLatvian = $0426;
IDLithuanian = $0427;
IDMacedonian = $042F;
IDMalaysian = $043E;
IDMalayBruneiDarussalam = $083E;
IDMalayalam = $044C;
IDMaltese = $043A;
IDManipuri = $0458;
IDMarathi = $044E;
IDMongolian = $0450;
IDNepali = $0461;
IDNorwegianBokmol = $0414;
IDNorwegianNynorsk = $0814;
IDOriya = $0448;
IDPolish = $0415;
IDBrazilianPortuguese = $0416;
IDPortuguese = $0816;
IDPunjabi = $0446;
IDRhaetoRomanic = $0417;
IDRomanianMoldova = $0818;
IDRomanian = $0418;
IDRussianMoldova = $0819;
IDRussian = $0419;
IDSamiLappish = $043B;
IDSanskrit = $044F;
IDSerbianCyrillic = $0C1A;
IDSerbianLatin = $081A;
IDSesotho = $0430;
IDSindhi = $0459;
IDSlovak = $041B;
IDSlovenian = $0424;
IDSorbian = $042E;
IDSpanishArgentina = $2C0A;
IDSpanishBolivia = $400A;
IDSpanishChile = $340A;
IDSpanishColombia = $240A;
IDSpanishCostaRica = $140A;
IDSpanishDominicanRepublic = $1C0A;
IDSpanishEcuador = $300A;
IDSpanishElSalvador = $440A;
IDSpanishGuatemala = $100A;
IDSpanishHonduras = $480A;
IDMexicanSpanish = $080A;
IDSpanishNicaragua = $4C0A;
IDSpanishPanama = $180A;
IDSpanishParaguay = $3C0A;
IDSpanishPeru = $280A;
IDSpanishPuertoRico = $500A;
IDSpanishModernSort = $0C0A;
IDSpanish = $040A;
IDSpanishUruguay = $380A;
IDSpanishVenezuela = $200A;
IDSutu = $0430;
IDSwahili = $0441;
IDSwedishFinland = $081D;
IDSwedish = $041D;
IDTajik = $0428;
IDTamil = $0449;
IDTatar = $0444;
IDTelugu = $044A;
IDThai = $041E;
IDTibetan = $0451;
IDTsonga = $0431;
IDTswana = $0432;
IDTurkish = $041F;
IDTurkmen = $0442;
IDUkrainian = $0422;
IDUrdu = $0420;
IDUzbekCyrillic = $0843;
IDUzbekLatin = $0443;
IDVenda = $0433;
IDVietnamese = $042A;
IDWelsh = $0452;
IDXhosa = $0434;
IDZulu = $0435;
function GetOSLanguage: AnsiString;
var
langid: Cardinal;
LangCode: AnsiString;
CountryName: array[0..4] of AnsiChar;
LanguageName: array[0..4] of AnsiChar;
works: Boolean;
begin
// The return value of GetLocaleInfo is compared with 3 = 2 characters and a zero
works := 3 = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SISO639LANGNAME,
LanguageName, SizeOf(LanguageName));
works := works and (3 = GetLocaleInfo(LOCALE_USER_DEFAULT,
LOCALE_SISO3166CTRYNAME, CountryName,
SizeOf(CountryName)));
if works then
begin
// Windows 98, Me, NT4, 2000, XP and newer
LangCode := PChar(@LanguageName[0]) + '_' + PChar(@CountryName[0]);
end
else
begin
// This part should only happen on Windows 95.
langid := GetThreadLocale;
case langid of
IDBelgianDutch: LangCode := 'nl_BE';
IDBelgianFrench: LangCode := 'fr_BE';
IDBrazilianPortuguese: LangCode := 'pt_BR';
IDDanish: LangCode := 'da_DK';
IDDutch: LangCode := 'nl_NL';
IDEnglishUK: LangCode := 'en_GB';
IDEnglishUS: LangCode := 'en_US';
IDFinnish: LangCode := 'fi_FI';
IDFrench: LangCode := 'fr_FR';
IDFrenchCanadian: LangCode := 'fr_CA';
IDGerman: LangCode := 'de_DE';
IDGermanLuxembourg: LangCode := 'de_LU';
IDGreek: LangCode := 'gr_GR';
IDIcelandic: LangCode := 'is_IS';
IDItalian: LangCode := 'it_IT';
IDKorean: LangCode := 'ko_KO';
IDNorwegianBokmol: LangCode := 'nb_NO';
IDNorwegianNynorsk: LangCode := 'nn_NO';
IDPolish: LangCode := 'pl_PL';
IDPortuguese: LangCode := 'pt_PT';
IDRussian: LangCode := 'ru_RU';
IDSpanish, IDSpanishModernSort: LangCode := 'es_ES';
IDSwedish: LangCode := 'sv_SE';
IDSwedishFinland: LangCode := 'sv_FI';
else
LangCode := 'C';
end;
end;
Result := LangCode;
end;
{$endif}
{$ifdef CLR}
function GetOSLanguage: string;
var
p: Integer;
begin
Result := CultureInfo.get_CurrentCulture.ToString;
p := Pos('-', Result);
if p <> 0 then
Result[p] := '_';
end;
{$endif}
{$ifdef LINUX}
function GetOSLanguage: AnsiString;
begin
Result := '';
end;
{$endif}
{$ifndef CLR}
function LoadResStringA(ResStringRec: PResStringRec): string;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -