MyGUI  3.0.3
MyGUI_LanguageManager.h
Go to the documentation of this file.
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__