#ifndef _Core_lng_h_
#define _Core_lng_h_

#define enUS(text)  { LNGC_('E','N','U','S', CHARSET_UTF8), text },
#define enGB(text)  { LNGC_('E','N','G','B', CHARSET_UTF8), text },
#define enAU(text)  { LNGC_('E','N','A','U', CHARSET_UTF8), text },
#define enCA(text)  { LNGC_('E','N','C','A', CHARSET_UTF8), text },
#define enNZ(text)  { LNGC_('E','N','N','Z', CHARSET_UTF8), text },
#define enIE(text)  { LNGC_('E','N','I','E', CHARSET_UTF8), text },
#define enZA(text)  { LNGC_('E','N','Z','A', CHARSET_UTF8), text },
#define enJM(text)  { LNGC_('E','N','J','M', CHARSET_UTF8), text },
#define enCB(text)  { LNGC_('E','N','C','B', CHARSET_UTF8), text },
#define enBZ(text)  { LNGC_('E','N','B','Z', CHARSET_UTF8), text },
#define enTT(text)  { LNGC_('E','N','T','T', CHARSET_UTF8), text },
#define bgBG(text)  { LNGC_('B','G','B','G', CHARSET_UTF8), text },
#define csCZ(text)  { LNGC_('C','S','C','Z', CHARSET_UTF8), text },
#define daDK(text)  { LNGC_('D','A','D','K', CHARSET_UTF8), text },
#define deDE(text)  { LNGC_('D','E','D','E', CHARSET_UTF8), text },
#define deCH(text)  { LNGC_('D','E','C','H', CHARSET_UTF8), text },
#define deAT(text)  { LNGC_('D','E','A','T', CHARSET_UTF8), text },
#define deLU(text)  { LNGC_('D','E','L','U', CHARSET_UTF8), text },
#define deLI(text)  { LNGC_('D','E','L','I', CHARSET_UTF8), text },
#define elGR(text)  { LNGC_('E','L','G','R', CHARSET_UTF8), text },
#define esES(text)  { LNGC_('E','S','E','S', CHARSET_UTF8), text },
#define esMX(text)  { LNGC_('E','S','M','X', CHARSET_UTF8), text },
#define esES(text)  { LNGC_('E','S','E','S', CHARSET_UTF8), text },
#define esGT(text)  { LNGC_('E','S','G','T', CHARSET_UTF8), text },
#define esCR(text)  { LNGC_('E','S','C','R', CHARSET_UTF8), text },
#define esPA(text)  { LNGC_('E','S','P','A', CHARSET_UTF8), text },
#define esDO(text)  { LNGC_('E','S','D','O', CHARSET_UTF8), text },
#define esVE(text)  { LNGC_('E','S','V','E', CHARSET_UTF8), text },
#define esCO(text)  { LNGC_('E','S','C','O', CHARSET_UTF8), text },
#define esPE(text)  { LNGC_('E','S','P','E', CHARSET_UTF8), text },
#define esAR(text)  { LNGC_('E','S','A','R', CHARSET_UTF8), text },
#define esEC(text)  { LNGC_('E','S','E','C', CHARSET_UTF8), text },
#define esCL(text)  { LNGC_('E','S','C','L', CHARSET_UTF8), text },
#define esUY(text)  { LNGC_('E','S','U','Y', CHARSET_UTF8), text },
#define esPY(text)  { LNGC_('E','S','P','Y', CHARSET_UTF8), text },
#define esBO(text)  { LNGC_('E','S','B','O', CHARSET_UTF8), text },
#define esSV(text)  { LNGC_('E','S','S','V', CHARSET_UTF8), text },
#define esHN(text)  { LNGC_('E','S','H','N', CHARSET_UTF8), text },
#define esNI(text)  { LNGC_('E','S','N','I', CHARSET_UTF8), text },
#define esPR(text)  { LNGC_('E','S','P','R', CHARSET_UTF8), text },
#define fiFI(text)  { LNGC_('F','I','F','I', CHARSET_UTF8), text },
#define frFR(text)  { LNGC_('F','R','F','R', CHARSET_UTF8), text },
#define frBE(text)  { LNGC_('F','R','B','E', CHARSET_UTF8), text },
#define frCA(text)  { LNGC_('F','R','C','A', CHARSET_UTF8), text },
#define frCH(text)  { LNGC_('F','R','C','H', CHARSET_UTF8), text },
#define frLU(text)  { LNGC_('F','R','L','U', CHARSET_UTF8), text },
#define huHU(text)  { LNGC_('H','U','H','U', CHARSET_UTF8), text },
#define isIS(text)  { LNGC_('I','S','I','S', CHARSET_UTF8), text },
#define itIT(text)  { LNGC_('I','T','I','T', CHARSET_UTF8), text },
#define itCH(text)  { LNGC_('I','T','C','H', CHARSET_UTF8), text },
#define nlNL(text)  { LNGC_('N','L','N','L', CHARSET_UTF8), text },
#define nlBE(text)  { LNGC_('N','L','B','E', CHARSET_UTF8), text },
#define noNO(text)  { LNGC_('N','O','N','O', CHARSET_UTF8), text },
#define noNO(text)  { LNGC_('N','O','N','O', CHARSET_UTF8), text },
#define plPL(text)  { LNGC_('P','L','P','L', CHARSET_UTF8), text },
#define ptBR(text)  { LNGC_('P','T','B','R', CHARSET_UTF8), text },
#define ptPT(text)  { LNGC_('P','T','P','T', CHARSET_UTF8), text },
#define roRO(text)  { LNGC_('R','O','R','O', CHARSET_UTF8), text },
#define ruRU(text)  { LNGC_('R','U','R','U', CHARSET_UTF8), text },
#define hrHR(text)  { LNGC_('H','R','H','R', CHARSET_UTF8), text },
#define srSP(text)  { LNGC_('S','R','S','P', CHARSET_UTF8), text },
#define srSP(text)  { LNGC_('S','R','S','P', CHARSET_UTF8), text },
#define skSK(text)  { LNGC_('S','K','S','K', CHARSET_UTF8), text },
#define svSE(text)  { LNGC_('S','V','S','E', CHARSET_UTF8), text },
#define svFI(text)  { LNGC_('S','V','F','I', CHARSET_UTF8), text },
#define trTR(text)  { LNGC_('T','R','T','R', CHARSET_UTF8), text },
#define slSI(text)  { LNGC_('S','L','S','I', CHARSET_UTF8), text },
#define afZA(text)  { LNGC_('A','F','Z','A', CHARSET_UTF8), text },
#define sqAL(text)  { LNGC_('S','Q','A','L', CHARSET_UTF8), text },
#define euES(text)  { LNGC_('E','U','E','S', CHARSET_UTF8), text },
#define beBY(text)  { LNGC_('B','E','B','Y', CHARSET_UTF8), text },
#define caES(text)  { LNGC_('C','A','E','S', CHARSET_UTF8), text },
#define etEE(text)  { LNGC_('E','T','E','E', CHARSET_UTF8), text },
#define foFO(text)  { LNGC_('F','O','F','O', CHARSET_UTF8), text },
#define idID(text)  { LNGC_('I','D','I','D', CHARSET_UTF8), text },
#define lvLV(text)  { LNGC_('L','V','L','V', CHARSET_UTF8), text },
#define ltLT(text)  { LNGC_('L','T','L','T', CHARSET_UTF8), text },
#define ukUA(text)  { LNGC_('U','K','U','A', CHARSET_UTF8), text },
#define zhCN(text)  { LNGC_('Z','H','C','N', CHARSET_UTF8), text },
#define zhTW(text)  { LNGC_('Z','H','T','W', CHARSET_UTF8), text },
#define koKR(text)  { LNGC_('K','O','K','R', CHARSET_UTF8), text },
#define jaJP(text)  { LNGC_('J','A','J','P', CHARSET_UTF8), text },
#define thTH(text)  { LNGC_('T','H','T','H', CHARSET_UTF8), text },
#define msMY(text)  { LNGC_('M','S','M','Y', CHARSET_UTF8), text },

#define T_(text)    { 1, text },

#ifndef LNG_VERA
#define LNG_VERA 0
#define LNG_VERB 0
#else
	#if LNG_VERA == 0
		#undef LNG_VERA
		#define LNG_VERA 1
	#elif LNG_VERA == 1
		#undef LNG_VERA
		#define LNG_VERA 2
	#elif LNG_VERA == 2
		#undef LNG_VERA
		#define LNG_VERA 3
	#elif LNG_VERA == 3
		#undef LNG_VERA
		#define LNG_VERA 4
	#elif LNG_VERA == 4
		#undef LNG_VERA
		#define LNG_VERA 5
	#elif LNG_VERA == 5
		#undef LNG_VERA
		#define LNG_VERA 6
	#elif LNG_VERA == 6
		#undef LNG_VERA
		#define LNG_VERA 7
	#elif LNG_VERA == 6
		#undef LNG_VERA
		#define LNG_VERA 7
	#elif LNG_VERA == 6
		#undef LNG_VERA
		#define LNG_VERA 7
	#elif LNG_VERA == 7
		#undef LNG_VERA
		#define LNG_VERA 8
	#elif LNG_VERA == 8
		#undef LNG_VERA
		#define LNG_VERA 9
	#elif LNG_VERA == 9
		#undef LNG_VERA
		#define LNG_VERA 0
		#if LNG_VERB == 0
			#undef LNG_VERB
			#define LNG_VERB 1
		#elif LNG_VERB == 1
			#undef LNG_VERB
			#define LNG_VERB 2
		#elif LNG_VERB == 2
			#undef LNG_VERB
			#define LNG_VERB 3
		#elif LNG_VERB == 3
			#undef LNG_VERB
			#define LNG_VERB 4
		#elif LNG_VERB == 4
			#undef LNG_VERB
			#define LNG_VERB 5
		#elif LNG_VERB == 5
			#undef LNG_VERB
			#define LNG_VERB 6
		#elif LNG_VERB == 6
			#undef LNG_VERB
			#define LNG_VERB 7
		#elif LNG_VERB == 6
			#undef LNG_VERB
			#define LNG_VERB 7
		#elif LNG_VERB == 6
			#undef LNG_VERB
			#define LNG_VERB 7
		#elif LNG_VERB == 7
			#undef LNG_VERB
			#define LNG_VERB 8
		#elif LNG_VERB == 8
			#undef LNG_VERB
			#define LNG_VERB 9
		#elif LNG_VERB == 9
			#undef LNG_VERB
			#define LNG_VERB 10
		#elif LNG_VERB == 10
			#undef LNG_VERB
			#define LNG_VERB 11
		#elif LNG_VERB == 11
			#undef LNG_VERB
			#define LNG_VERB 12
		#elif LNG_VERB == 12
			#undef LNG_VERB
			#define LNG_VERB 13
		#elif LNG_VERB == 13
			#undef LNG_VERB
			#define LNG_VERB 14
		#elif LNG_VERB == 14
			#undef LNG_VERB
			#define LNG_VERB 15
		#elif LNG_VERB == 15
			#undef LNG_VERB
			#define LNG_VERB 16
		#elif LNG_VERB == 16
			#undef LNG_VERB
			#define LNG_VERB 17
		#elif LNG_VERB == 17
			#undef LNG_VERB
			#define LNG_VERB 18
		#elif LNG_VERB == 18
			#undef LNG_VERB
			#define LNG_VERB 19
		#elif LNG_VERB == 19
			#undef LNG_VERB
			#define LNG_VERB 20
		#else
			#error Too many language files !
		#endif
	#endif
#endif

INITBLOCK_(COMBINE3(LNG_MODULE, LNG_VERB, LNG_VERA))
{
	static UPP::LngEntry__ langset[] = {
	#include TFILE
		{ 0, NULL }
	};
#ifdef LNGMODULE
	AddModule(langset, LNGMODULE);
#else
	AddModule(langset);
#endif
}

#undef enUS
#undef enGB
#undef enAU
#undef enCA
#undef enNZ
#undef enIE
#undef enZA
#undef enJM
#undef enCB
#undef enBZ
#undef enTT
#undef bgBG
#undef csCZ
#undef daDK
#undef deDE
#undef deCH
#undef deAT
#undef deLU
#undef deLI
#undef elGR
#undef esES
#undef esMX
#undef esES
#undef esGT
#undef esCR
#undef esPA
#undef esDO
#undef esVE
#undef esCO
#undef esPE
#undef esAR
#undef esEC
#undef esCL
#undef esUY
#undef esPY
#undef esBO
#undef esSV
#undef esHN
#undef esNI
#undef esPR
#undef fiFI
#undef frFR
#undef frBE
#undef frCA
#undef frCH
#undef frLU
#undef huHU
#undef isIS
#undef itIT
#undef itCH
#undef nlNL
#undef nlBE
#undef noNO
#undef noNO
#undef plPL
#undef ptBR
#undef ptPT
#undef roRO
#undef ruRU
#undef hrHR
#undef srSP
#undef srSP
#undef skSK
#undef svSE
#undef svFI
#undef trTR
#undef slSI
#undef afZA
#undef sqAL
#undef euES
#undef beBY
#undef caES
#undef etEE
#undef foFO
#undef idID
#undef lvLV
#undef ltLT
#undef ukUA
#undef zhCN
#undef zhTW
#undef koKR
#undef jaJP
#undef thTH
#undef msMY

#undef T_

#endif
