Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/FICN/src/orxonox/core/Language.h @ 704

Last change on this file since 704 was 704, checked in by landauf, 16 years ago

added a new class: Language
it's a manager for different language files to store translations of ingame text (it uses the default text, defined in the code, if no translation in the configured language is available)

File size: 2.8 KB
Line 
1/*
2 *   ORXONOX - the hottest 3D action shooter ever to exist
3 *
4 *
5 *   License notice:
6 *
7 *   This program is free software; you can redistribute it and/or
8 *   modify it under the terms of the GNU General Public License
9 *   as published by the Free Software Foundation; either version 2
10 *   of the License, or (at your option) any later version.
11 *
12 *   This program is distributed in the hope that it will be useful,
13 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 *   GNU General Public License for more details.
16 *
17 *   You should have received a copy of the GNU General Public License
18 *   along with this program; if not, write to the Free Software
19 *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20 *
21 *   Author:
22 *      Fabian 'x3n' Landau
23 *   Co-authors:
24 *      ...
25 *
26 */
27
28#ifndef _Language_H__
29#define _Language_H__
30
31#include <string>
32#include <map>
33
34#include "CorePrereqs.h"
35
36#include "OrxonoxClass.h"
37
38namespace orxonox
39{
40    typedef std::string LanguageEntryName;
41
42    class _CoreExport LanguageEntry : public OrxonoxClass
43    {
44        public:
45            explicit LanguageEntry(const std::string& fallbackEntry);
46            void setTranslation(const std::string& translation);
47            void setDefault(const std::string& fallbackEntry);
48
49            inline const std::string& getTranslation()
50                { return this->translatedEntry_; }
51
52            inline const std::string& getDefault()
53                { return this->fallbackEntry_; }
54
55        private:
56            std::string fallbackEntry_;
57            std::string translatedEntry_;
58    };
59
60    class _CoreExport Language : public OrxonoxClass
61    {
62        public:
63            static Language& getLanguage();
64            void setConfigValues();
65            void addEntry(const LanguageEntryName& name, const std::string& entry);
66            const std::string& getTranslation(const LanguageEntryName& name) const;
67
68        private:
69            Language();
70            Language(const Language& language) {}   // don't copy
71            virtual ~Language() {};                 // don't delete
72
73            void readDefaultLanguageFile();
74            void readTranslatedLanguageFile();
75            void writeDefaultLanguageFile() const;
76            static const std::string getFileName(const std::string& language);
77            void createEntry(const LanguageEntryName& name, const std::string& entry);
78
79            std::string language_;
80            std::string defaultLanguage_;
81            std::string defaultTranslation_;
82            std::map<std::string, LanguageEntry*> languageEntries_;
83    };
84}
85
86#endif /* _Language_H__ */
Note: See TracBrowser for help on using the repository browser.