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 #include "MyGUI_Delegate.h"
00030
00031 namespace MyGUI
00032 {
00033
00034 class MYGUI_EXPORT LanguageManager
00035 {
00036 MYGUI_INSTANCE_HEADER( LanguageManager )
00037
00038 public:
00039 void initialise();
00040 void shutdown();
00041
00043 bool load(const std::string& _file);
00044
00045 void _load(xml::ElementPtr _node, const std::string& _file, Version _version);
00046
00048 void setCurrentLanguage(const std::string& _name);
00050 const std::string& getCurrentLanguage();
00051
00054 UString replaceTags(const UString& _line);
00055
00057 UString getTag(const UString& _tag);
00058
00060 void addUserTag(const UString& _tag, const UString& _replace);
00061
00063 void clearUserTags();
00064
00065 bool loadUserTags(const std::string& _file);
00066
00071 delegates::CMultiDelegate1<const std::string &> eventChangeLanguage;
00072
00073 private:
00074
00075 bool loadLanguage(const std::string& _file, bool _user = false);
00076 void _loadLanguage(IDataStream* _stream, bool _user);
00077 void _loadLanguageXML(IDataStream* _stream, bool _user);
00078
00079
00080 private:
00081 typedef std::map<UString, UString> MapLanguageString;
00082
00083 MapLanguageString mMapLanguage;
00084 MapLanguageString mUserMapLanguage;
00085
00086 std::string mCurrentLanguageName;
00087
00088 typedef std::vector<std::string> VectorString;
00089 typedef std::map<std::string, VectorString> MapListString;
00090 MapListString mMapFile;
00091
00092 };
00093
00094 }
00095
00096 #endif // __MYGUI_LANGUAGE_MANAGER_H__