Subversion Repositories spk

Rev

Rev 121 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#ifndef __LANGUAGES_H__
#define __LANGUAGES_H__

#include "Utils\String.h"
#include <map>
#include <vector>

enum Lang_Section 
{ 
        LS_STARTUP              = 1, 
        LS_DIRECTORY,
        LS_FILEDIALOG 
};

enum Lang_Startup
{ 
        LANGSTARTUP_ANOTHERINSTANCE_TITLE       = 1,
        LANGSTARTUP_ANOTHERINSTANCE,
        LANGSTARTUP_PROTECTEDDIR,
        LANGSTARTUP_LOCKEDDIR,
        LANGSTARTUP_LOCKEDDIR_TITLE,
};

enum Lang_Directory
{
        LANGDIR_TITLE    = 1,
};

typedef std::map<int, Utils::String> LangPage;
typedef std::map<int, LangPage> LangPages;
typedef std::map<int, LangPages> LangTexts;

class SPKEXPORT CLanguages
{
public:
        static CLanguages *Instance();
        static void Release();

        void SetLanguage(int lang);

        Utils::String findText(int section, int id);

protected:
        CLanguages();
        ~CLanguages();

private:
        void DEBUG_AddDefaultTexts();

        LangPages *_findLanguageText(int id = -1) const;
        Utils::String _error(int section, int id) const;
        bool _findText(LangPages *texts, int section, int id, Utils::String *out) const;

private:
        static CLanguages *_pInstance;

        int                     _iLanguage;
        LangTexts       *_lTexts;
        LangPages       *_pDefaultLang;
        LangPages       *_pCurrentLang;
};

#endif //__LANGUAGES_H__