00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_LANGUAGE_MANAGER_H__
00024 #define __MYGUI_LANGUAGE_MANAGER_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include "MyGUI_Instance.h"
00028 #include "MyGUI_XmlDocument.h"
00029
00030 namespace MyGUI
00031 {
00032
00033 class MYGUI_EXPORT LanguageManager
00034 {
00035 MYGUI_INSTANCE_HEADER(LanguageManager);
00036
00037 public:
00038 void initialise();
00039 void shutdown();
00040
00042 bool load(const std::string& _file);
00043
00044 void _load(xml::ElementPtr _node, const std::string& _file, Version _version);
00045
00047 void setCurrentLanguage(const std::string& _name);
00049 const std::string& getCurrentLanguage();
00050
00053 UString replaceTags(const UString& _line);
00054
00056 UString getTag(const UString& _tag);
00057
00059 void addUserTag(const UString& _tag, const UString& _replace);
00060
00062 void clearUserTags();
00063
00064 bool loadUserTags(const std::string& _file);
00065
00070 delegates::CMultiDelegate1<const std::string &> eventChangeLanguage;
00071
00072 private:
00073 bool loadResourceLanguage(const std::string& _name);
00074 bool loadLanguage(const std::string& _file, bool _user = false);
00075 void _loadLanguage(IDataStream* _stream, bool _user);
00076 void _loadLanguageXML(IDataStream* _stream, bool _user);
00077 void _loadSource(xml::ElementPtr _node, const std::string& _file, Version _version);
00078
00079 private:
00080 typedef std::map<UString, UString> MapLanguageString;
00081
00082 MapLanguageString mMapLanguage;
00083 MapLanguageString mUserMapLanguage;
00084
00085 std::string mCurrentLanguageName;
00086 };
00087
00088 }
00089
00090 #endif // __MYGUI_LANGUAGE_MANAGER_H__