MyGUI 3.0.1
|
00001 00007 /* 00008 This file is part of MyGUI. 00009 00010 MyGUI is free software: you can redistribute it and/or modify 00011 it under the terms of the GNU Lesser General Public License as published by 00012 the Free Software Foundation, either version 3 of the License, or 00013 (at your option) any later version. 00014 00015 MyGUI is distributed in the hope that it will be useful, 00016 but WITHOUT ANY WARRANTY; without even the implied warranty of 00017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00018 GNU Lesser General Public License for more details. 00019 00020 You should have received a copy of the GNU Lesser General Public License 00021 along with MyGUI. If not, see <http://www.gnu.org/licenses/>. 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 //bool loadResourceLanguage(const std::string& _name); 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 //void _loadSource(xml::ElementPtr _node, const std::string& _file, Version _version); 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 } // namespace MyGUI 00095 00096 #endif // __MYGUI_LANGUAGE_MANAGER_H__