ttranslate.h.svn-base
来自「ffshow源码」· SVN-BASE 代码 · 共 118 行
SVN-BASE
118 行
#ifndef _TTRANSLATE_H_#define _TTRANSLATE_H_class Tinifile;class Ttranslate{private: ~Ttranslate() {} int refcount; int translateEncoding; HINSTANCE hi; const char_t *pth; char_t curlang[MAX_PATH]; char_t curflnm[MAX_PATH]; struct Tfont { public: Tfont(void); void init(Tinifile &ini); char_t typeface[256]; int pointsize;static const int pointsizeDef=8; uint8_t italic;static const uint8_t italicDef=0; //int charset; }; mutable bool initfont; struct Tstrs :public std::hash_map<ffstring,ffstring> { public: void init(Tinifile &ini); const char_t *translate(const char_t *s) const; void newTranslation(const ffstring &oldstring,const ffstring &newstring,const char_t *flnm,int encoding); } strs; struct Tdialog :public std::hash_map<int,ffstring> { private: static BOOL CALLBACK transDialogEnum(HWND hwnd,LPARAM lParam); void createTranslationTemplate(HWND hdlg,int dlgId); public: Tdialog(void) {} Tdialog(Tinifile &ini,const char_t *sect); Tdialog(HINSTANCE hi,HWND hwnd); void translate(int dlgId,HWND hwnd,Tdialog &builtin); const char_t* translate(int dlgId,int item,const char_t *def,Tdialog *builtin); void newTranslation(int dlgId,int item,const ffstring &newtrans,const char_t *flnm,int encoding); }; typedef std::hash_map<int,Tdialog> Tdialogs; mutable Tdialogs dlgs,dlgsBuiltin;public: Ttranslate(HINSTANCE Ihi,const char_t *Ipth); void addref(void) { refcount++; } void release(void) { if (--refcount<0) delete this; } struct Tlanglist :public std::map<ffstring,ffstring,ffstring_iless> { private: const char_t *pth; public: Tlanglist(const char_t *Ipth); void getLangName(const_iterator &lang,char_t *buf,size_t buflen); } langlist; void init(const char_t *lang,int ItranslateMode); void done(void); void translate(HWND hwnd,int dlgId); const char_t *translate(HWND hwnd,int dialogId,int item,const char_t *def) const; const char_t *translate(const char_t *s) const { return strs.translate(s); } const char_t *translate(int dlgId); Tfont font;bool isCustomFont(void); DLGTEMPLATE *translateDialogTemplate(int dialogId) const; void newTranslation(int dialogId,int item,const ffstring &newtrans) { if (stricmp(curlang,_l("en"))!=0) dlgs[dialogId].newTranslation(dialogId,item,newtrans,curflnm,translateEncoding); } void newTranslation(const ffstring &oldstring,const ffstring &newstring) { if (stricmp(curlang,_l("en"))!=0) strs.newTranslation(oldstring,newstring,curflnm,translateEncoding); } static int lang2int(const char_t *lang) { int res=0; memcpy(&res,text<char>(lang),std::min(strlen(lang),size_t(4))); char *resC=(char*)&res; resC[0]=(char)toupper(resC[0]); resC[1]=(char)toupper(resC[1]); resC[2]=(char)toupper(resC[2]); resC[3]=(char)toupper(resC[3]); return res; } static ffstring eolnFile2string(const ffstring &s) { return stringreplace(stringreplace(s,_l("\\n"),_l("\n"),rfReplaceAll),_l("\\r"),_l("\r"),rfReplaceAll); } static ffstring eolnString2file(const ffstring &s) { return stringreplace(stringreplace(s,_l("\n"),_l("\\n"),rfReplaceAll),_l("\r"),_l("\\r"),rfReplaceAll); } int translateMode; };#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?