aboutsummaryrefslogtreecommitdiff
path: root/core/lang.h
blob: 5d650fcbf7bdd73df32f46dce9c4c487b212fdeb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef LANG_H
#define LANG_H

class LanguageManager;
class IIniFile;

class Language : public IObject
{
public:
	explicit Language(LanguageManager *owner, std::string id, const std::string &file_name);
	~Language();
	std::string id() const { return id_; }
	std::string file_name() const { return file_name_; }
	std::string name() const { return name_; }
private:
	LanguageManager *owner_;
	std::string id_;
	std::string file_name_;
	std::string name_;
};

class LanguageManager : public ObjectList<Language>
{
public:
	explicit LanguageManager();
	void set_language(const std::string &id);
	Language *GetLanguageById(const std::string &id) const;
	static std::string default_language() { return "en"; }
private:
	void Add(const std::string &file_name);
};

#include "lang_enum.inc"

class LangStringList
{
public:
	LangStringList();
	void ReadFromFile(const char *file_name);
	void use_defaults();
	std::string operator[](LangString index) const;
private:
	void ReadFromIni(IIniFile &file);
	std::string values_[lsCNT],	default_values_[lsCNT];
};

extern LangStringList language;

#endif