Subversion Repositories spk

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 cycrow 1
#ifndef __LANGUAGES_H__
2
#define __LANGUAGES_H__
3
 
4
#include <spk.h>
5
 
6
enum Lang_Section { LANGSECTION_STARTUP, LANGSECTION_FILEDIALOG };
7
enum { LANGSTARTUP_ANOTHERINSTANCE_TITLE, LANGSTARTUP_ANOTHERINSTANCE };
8
 
9
#define LANGMAP std::map<std::string, std::string>
10
 
11
typedef struct SLanguageTexts {
12
	int		iLang;
13
	LANGMAP	texts;
14
} SLanguageTexts;
15
 
16
class CLanguages
17
{
18
public:
19
	CLanguages() { m_iLanguage = -1; }
20
	void SetLanguage(int lang) { m_iLanguage = lang; }
21
 
22
	CyString GetText(int section, int id)
23
	{
24
		switch(section)
25
		{
26
			case LANGSECTION_STARTUP:
27
				return GetText_Startup(id);
28
		}
29
 
30
		return Error(section, id);
31
	}
32
 
33
	CyString GetText_Startup(int id)
34
	{
35
		switch(id)
36
		{
37
			case LANGSTARTUP_ANOTHERINSTANCE_TITLE:
38
				return "Another Instance Detected";
39
 
40
			case LANGSTARTUP_ANOTHERINSTANCE:
41
				return "Another instance of the plugin manager is already running";
42
		}
43
		return Error(LANGSECTION_STARTUP, id);
44
	}
45
private:
46
	CyString FindText(int section, int id)
47
	{
48
		SLanguageTexts *text = FindLanguageText();
49
		if ( text )
50
		{
51
			LANGMAP::iterator itr = text->texts.find(CyString(CyString::Number(section) + ":" + CyString::Number(id)).ToString());
52
			if ( itr != text->texts.end() )
53
				return itr->second;
54
		}
55
 
56
		return GetText(section, id);
57
	}
58
	SLanguageTexts *FindLanguageText(int id = -1)
59
	{
60
		if ( id == -1 ) id = m_iLanguage;
61
 
62
		for ( int i = 0; i < (int)m_lLanguages.size(); i++ )
63
		{
64
			if ( m_lLanguages.at(i).iLang == id )
65
				return &m_lLanguages.at(i);
66
		}
67
		return NULL;
68
	}
69
 
70
	CyString Error(int section, int id)
71
	{
72
		return CyString("ReadText") + CyString::Number(section) + "-" + CyString::Number(id);
73
	}
74
 
75
	int		m_iLanguage;
76
 
77
	std::vector<SLanguageTexts> m_lLanguages;
78
};
79
 
80
#endif //__LANGUAGES_H__