⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnugettext.hpp

📁 Last change: 2008-02-03 This is the source code of KCeasy。
💻 HPP
📖 第 1 页 / 共 2 页
字号:
	
public:
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~EGGAnsi2WideConvError(void) { }
	#pragma option pop
	
};


typedef void __fastcall (__closure *TOnDebugLine)(System::TObject* Sender, const AnsiString Line, bool &Discard);

typedef int __fastcall (*TGetPluralForm)(int Number);

typedef void __fastcall (__closure *TDebugLogger)(AnsiString line);

class DELPHICLASS TMoFile;
class PASCALIMPLEMENTATION TMoFile : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	bool doswap;
	
public:
	int Users;
	__fastcall TMoFile(AnsiString filename, __int64 Offset, __int64 Size);
	__fastcall virtual ~TMoFile(void);
	AnsiString __fastcall gettext(const AnsiString msgid, bool &found);
	__property bool isSwappedArchitecture = {read=doswap, nodefault};
	
private:
	unsigned N;
	unsigned O;
	unsigned T;
	int startindex;
	int startstep;
	unsigned mo;
	unsigned momapping;
	char *momemoryHandle;
	char *momemory;
	unsigned __fastcall autoswap32(unsigned i);
	unsigned __fastcall CardinalInMem(char * baseptr, unsigned Offset);
};


class DELPHICLASS TDomain;
class PASCALIMPLEMENTATION TDomain : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	bool Enabled;
	AnsiString vDirectory;
	void __fastcall setDirectory(const AnsiString dir);
	
public:
	TDebugLogger DebugLogger;
	AnsiString Domain;
	__property AnsiString Directory = {read=vDirectory, write=setDirectory};
	__fastcall TDomain(void);
	__fastcall virtual ~TDomain(void);
	void __fastcall SetLanguageCode(const AnsiString langcode);
	void __fastcall SetFilename(const AnsiString filename);
	void __fastcall GetListOfLanguages(Classes::TStrings* list);
	WideString __fastcall GetTranslationProperty(AnsiString Propertyname);
	AnsiString __fastcall gettext(const AnsiString msgid);
	
private:
	TMoFile* mofile;
	AnsiString SpecificFilename;
	AnsiString curlang;
	bool OpenHasFailedBefore;
	void __fastcall OpenMoFile(void);
	void __fastcall CloseMoFile(void);
};


class DELPHICLASS TExecutable;
class PASCALIMPLEMENTATION TExecutable : public System::TObject 
{
	typedef System::TObject inherited;
	
public:
	virtual void __fastcall Execute(void) = 0 ;
public:
	#pragma option push -w-inl
	/* TObject.Create */ inline __fastcall TExecutable(void) : System::TObject() { }
	#pragma option pop
	#pragma option push -w-inl
	/* TObject.Destroy */ inline __fastcall virtual ~TExecutable(void) { }
	#pragma option pop
	
};


class DELPHICLASS TGnuGettextInstance;
class PASCALIMPLEMENTATION TGnuGettextInstance : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	TOnDebugLine fOnDebugLine;
	unsigned CreatorThread;
	
public:
	bool Enabled;
	int DesignTimeCodePage;
	__fastcall TGnuGettextInstance(void);
	__fastcall virtual ~TGnuGettextInstance(void);
	void __fastcall UseLanguage(AnsiString LanguageCode);
	void __fastcall GetListOfLanguages(const AnsiString domain, Classes::TStrings* list);
	virtual WideString __fastcall gettext(const AnsiString szMsgId)/* overload */;
	virtual WideString __fastcall gettext(const WideString szMsgId)/* overload */;
	virtual WideString __fastcall ngettext(const AnsiString singular, const AnsiString plural, int Number)/* overload */;
	virtual WideString __fastcall ngettext(const WideString singular, const WideString plural, int Number)/* overload */;
	AnsiString __fastcall GetCurrentLanguage();
	WideString __fastcall GetTranslationProperty(const AnsiString Propertyname);
	WideString __fastcall GetTranslatorNameAndEmail();
	void __fastcall TP_Ignore(System::TObject* AnObject, const AnsiString name);
	void __fastcall TP_IgnoreClass(TMetaClass* IgnClass);
	void __fastcall TP_IgnoreClassProperty(TMetaClass* IgnClass, AnsiString propertyname);
	void __fastcall TP_GlobalIgnoreClass(TMetaClass* IgnClass);
	void __fastcall TP_GlobalIgnoreClassProperty(TMetaClass* IgnClass, AnsiString propertyname);
	void __fastcall TP_GlobalHandleClass(TMetaClass* HClass, TTranslator Handler);
	void __fastcall TranslateProperties(System::TObject* AnObject, AnsiString textdomain = "");
	void __fastcall TranslateComponent(Classes::TComponent* AnObject, const AnsiString TextDomain = "");
	void __fastcall RetranslateComponent(Classes::TComponent* AnObject, const AnsiString TextDomain = "");
	virtual WideString __fastcall dgettext(const AnsiString szDomain, const AnsiString szMsgId)/* overload */;
	virtual WideString __fastcall dgettext(const AnsiString szDomain, const WideString szMsgId)/* overload */;
	virtual WideString __fastcall dngettext(const AnsiString szDomain, const AnsiString singular, const AnsiString plural, int Number)/* overload */;
	virtual WideString __fastcall dngettext(const AnsiString szDomain, const WideString singular, const WideString plural, int Number)/* overload */;
	void __fastcall textdomain(const AnsiString szDomain);
	AnsiString __fastcall getcurrenttextdomain();
	void __fastcall bindtextdomain(const AnsiString szDomain, const AnsiString szDirectory);
	void __fastcall bindtextdomainToFile(const AnsiString szDomain, const AnsiString filename);
	WideString __fastcall LoadResString(System::PResStringRec ResStringRec);
	void __fastcall DebugLogToFile(const AnsiString filename, bool append = false);
	void __fastcall DebugLogPause(bool PauseEnabled);
	__property TOnDebugLine OnDebugLine = {read=fOnDebugLine, write=fOnDebugLine};
	WideString __fastcall ansi2wideDTCP(const AnsiString s);
	
protected:
	void __fastcall TranslateStrings(Classes::TStrings* sl, const AnsiString TextDomain);
	virtual void __fastcall WhenNewLanguage(const AnsiString LanguageID);
	virtual void __fastcall WhenNewDomain(const AnsiString TextDomain);
	virtual void __fastcall WhenNewDomainDirectory(const AnsiString TextDomain, const AnsiString Directory);
	
private:
	AnsiString curlang;
	TGetPluralForm curGetPluralForm;
	AnsiString curmsgdomain;
	Sysutils::TMultiReadExclusiveWriteSynchronizer* savefileCS;
	TextFile savefile;
	Classes::TStringList* savememory;
	AnsiString DefaultDomainDirectory;
	Classes::TStringList* domainlist;
	Classes::TStringList* TP_IgnoreList;
	Classes::TList* TP_ClassHandling;
	Classes::TList* TP_GlobalClassHandling;
	TExecutable* TP_Retranslator;
	Sysutils::TMultiReadExclusiveWriteSynchronizer* DebugLogCS;
	Classes::TStream* DebugLog;
	bool DebugLogOutputPaused;
	TExecutable* __fastcall TP_CreateRetranslator(void);
	void __fastcall FreeTP_ClassHandlingItems(void);
	void __fastcall DebugWriteln(AnsiString line);
	void __fastcall TranslateProperty(System::TObject* AnObject, Typinfo::PPropInfo PropInfo, Classes::TStrings* TodoList, const AnsiString TextDomain);
	TDomain* __fastcall Getdomain(const AnsiString domain, const AnsiString DefaultDomainDirectory, const AnsiString CurLang);
};


//-- var, const, procedure ---------------------------------------------------
#define DefaultTextDomain "default"
extern PACKAGE AnsiString ExecutableFilename;
static const bool PreferExternal = false;
#define VCSVersion "$LastChangedRevision: 118 $"
static const bool AutoCreateHooks = false;
extern PACKAGE TGnuGettextInstance* DefaultInstance;
extern PACKAGE WideString __fastcall gettext(const WideString szMsgId);
extern PACKAGE WideString __fastcall dgettext(const AnsiString szDomain, const WideString szMsgId);
extern PACKAGE WideString __fastcall dngettext(const AnsiString szDomain, const WideString singular, const WideString plural, int Number);
extern PACKAGE WideString __fastcall ngettext(const WideString singular, const WideString plural, int Number);
extern PACKAGE void __fastcall textdomain(const AnsiString szDomain);
extern PACKAGE AnsiString __fastcall getcurrenttextdomain();
extern PACKAGE void __fastcall bindtextdomain(const AnsiString szDomain, const AnsiString szDirectory);
extern PACKAGE void __fastcall TP_Ignore(System::TObject* AnObject, const AnsiString name);
extern PACKAGE void __fastcall TP_GlobalIgnoreClass(TMetaClass* IgnClass);
extern PACKAGE void __fastcall TP_IgnoreClass(TMetaClass* IgnClass);
extern PACKAGE void __fastcall TP_IgnoreClassProperty(TMetaClass* IgnClass, const AnsiString propertyname);
extern PACKAGE void __fastcall TP_GlobalIgnoreClassProperty(TMetaClass* IgnClass, const AnsiString propertyname);
extern PACKAGE void __fastcall TP_GlobalHandleClass(TMetaClass* HClass, TTranslator Handler);
extern PACKAGE void __fastcall TranslateComponent(Classes::TComponent* AnObject, const AnsiString TextDomain = "");
extern PACKAGE void __fastcall RetranslateComponent(Classes::TComponent* AnObject, const AnsiString TextDomain = "");
extern PACKAGE AnsiString __fastcall LoadResStringA(System::PResStringRec ResStringRec);
extern PACKAGE WideString __fastcall GetTranslatorNameAndEmail();
extern PACKAGE void __fastcall UseLanguage(AnsiString LanguageCode);
extern PACKAGE WideString __fastcall LoadResString(System::PResStringRec ResStringRec);
extern PACKAGE WideString __fastcall LoadResStringW(System::PResStringRec ResStringRec);
extern PACKAGE AnsiString __fastcall GetCurrentLanguage();
extern PACKAGE void __fastcall AddDomainForResourceString(const AnsiString domain);
extern PACKAGE void __fastcall RemoveDomainForResourceString(const AnsiString domain);
extern PACKAGE void __fastcall HookIntoResourceStrings(bool enabled = true, bool SupportPackages = false);

}	/* namespace Gnugettext */
using namespace Gnugettext;
#pragma option pop	// -w-
#pragma option pop	// -Vx

#pragma delphiheader end.
//-- end unit ----------------------------------------------------------------
#endif	// gnugettext

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -