useGrafikpfad = 'images/shared/gbg/grafikpack-full';
useGrafikpfadLang = 'images/zh/gbg/grafikpack-full';

var I18N = {
	'wordTable' : {
		'noObjInFrontOfAds' : 'Bitte die das Objekt nicht vor die Werbung schieben - auch DL braucht Werbung :/',
		'tavernTableEmpty' : 'Tisch {0} ist unbesetzt!',
		'tavernTableInfo' : 'Tischinfo',
		'tavernTableWithId' : 'Tisch {0}',
  		'DECIMAL_POINT' : ',',
  		'THOUSANDS_SEP' : '.',
  		'SECOND' : ['秒', '秒'],
  		'MINUTE' : ['分钟', '分钟'],
  		'HOUR' : ['小时', '小时'],
  		'DAY' : ['天', '天'],
  		'ABORT' : '取消',
  		'AREANAME_0' : '海洋',
  		'AREANAME_7' : '安静的森林',
  		'AREANAME_8' : '碎片层',
  		'AREANAME_9' : 'Nag\'rd Nöj',
  		'AREANAME_10' : '灯海',
  		'AREANAME_11' : '绿宝石山谷',
  		'AREANAME_12' : 'Damagra的王国',
  		'AREANAME_13' : 'Moderia',
  		'AREANAME_14' : '荒漠',
  		'AREANAME_15' : '玻璃谷',
  		'HIRE_PACK_QUESTION' : '真的招募雇佣兵团队 \'{0}\' 吗？',
  		'JS_NO_MONSTERS_ON_FIELD' : '没有怪物',
  		'JS_MONSTER_DISPLAY_DEACTIVATED' : '使显示怪物无效',
  		'QUEUE_ENTRY_READY' : '完成',
		'BUILDING_PLACEMENT_INFO' : '通过拖动鼠标来给这个基地在你们部落安排个合适的位置，然后点鼠标左键，开始盖基地。[color=tomato]在选位置的时候绿色表示可选区域，红色表示不可选区域。[/color] 如果你们先在还不想建基地，那么只需关闭这个窗口给基地选择位置过程就会自动中断了。',
		'INFO_MENU_HH' : '<u>建基地</u>',
		'INFO_MENU_BIBO' : '<u>图书馆</u>',
		'INFO_MENU_TEMPEL' : '<u>神庙</u>',
		'INFO_MENU_HEXE' : '实验室',
		'INFO_MENU_KASERNE' : '<u>军营</u>',
		'INFO_MENU_FRIEDHOF' : '<u>墓地</u>',
		'INFO_MENU_DRACHENHOF' : '<u>龙巢</u>',
		'INFO_MENU_SCHATTENPORTAL' : '<u>幽灵之门</u>',
		'INFO_MENU_VERTEIDIGUNG' : '<u>防御</u>',
		'INFO_MENU_MARKT' : '<u>集贸市场</u>',
		'INFO_MENU_HANDEL' : '交易',
		'INFO_MENU_WAPPEN' : '<u>徽章</u>',
		'INFO_MENU_TRUPPEN' : '<u>军队</u>',
		'INFO_MENU_EINHEITEN' : '<u>成员</u>',
		'INFO_MENU_KARTE' : '<u>地图</u>',
		'INFO_MENU_AREA' : '区域',
		'INFO_MENU_GRUPPE' : '<u>团队</u>',
		'INFO_MENU_KRIEG' : '战争',
		'INFO_MENU_TOPLIST1' : '排名列表1',
		'INFO_MENU_TOPLIST2' : '排名列表2',
		'INFO_MENU_TOPLIST3' : '排名列表3',
		'INFO_MENU_TOPLISTG' : '团队排名列表',
		'INFO_MENU_IGM' : '<u>短信</u>',
		'INFO_MENU_HILFE' : '<u>帮助</u>',
		'INFO_MENU_SONSTIGES' : '其它',
		'INFO_MENU_TAVERN' : '酒馆',
		'INFO_MENU_COMMITMENT' : 'INFO_MENU_COMMITMENT',
		'INFO_MENU_TOURNEY' : 'INFO_MENU_TOURNEY',
		'INFO_MENU_SETTLESHOP' : 'INFO_MENU_SETTLESHOP',
		'INFO_MENU_JUICESHOP' : 'INFO_MENU_JUICESHOP',
		'INFO_MENU_QUESTBUILDING1' : 'INFO_MENU_QUESTBUILDING1',
		'INFO_MENU_FORUM' : 'INFO_MENU_FORUM',
		'GTYPE_ANARCHIE_BONUS' : '如果没有首领领导，那么所有的团队职位将被每月2次（第1天和第15天）随机地分配给团队的所有成员，在这之就任者将会收到一封现任职位的信息消息。',
		'GTYPE_SCHATTENBRUT_BONUS' : '幽灵后代们将会在每天的4:30根据玩家的实力（这个实力由他们拥有的居民数来体现）得到团队职位的分配。实力最强的玩家将得到最高的职位，剩下的职位从高到低依次由继任者、将军、大臣和魔法师担任。',
		'GTYPE_RITUALISTEN_BONUS' : '那些仪式主义者十分重视祭祀品，团队队友们将会在每天的4:30根据祭祀值的大小得到团队职位的分配。祭祀值越高的，对职位的影响就越大，职位从高到低依次由团队首领、继任者、将军、大臣和魔法师担任。',
		'GTYPE_JAEGER_SAMMLER_BONUS' : '在猎人和收藏家之间，谁的产量高谁就有统治团队的优先权，然后将按照产量的降低来分配（在每天的4:30）别的职位（继任者、将军、大臣和魔法师）。',
		'MAX_TRADE_DIFF_X' : '最多允许{0}%的价值差异！',
		'TRADE_DIFF_OKAY' : '资源比例正常！',
		'ORE' : '铁',
		'GOLD' : '金子',
		'WOOD' : '木头',
		'FOOD' : '食物',
		'SILVER' : '银子',
		'DURATION_UNTIL_ENDTIME' : '{0}至{1}',
		'ENTER_TEMPLATE_NAME' : '这个样板是什么意思？',
		'YES' : '对',
		'NO' : '否',
		'MONSTERFIELD_TYPE_0' : '混战',
		'MONSTERFIELD_TYPE_1' : '近战',
		'MONSTERFIELD_TYPE_2' : '远战',
		'MONSTERFIELD_TYPE_3' : '战斗魔法',
		'MONSTERFIELD_TYPE_4' : '支撑魔法',
		'MONSTERFIELD_CHALLENGE' : '(挑战)',
		'SAVE_NOTES' : '保存记事本',
		'CLOSE_NOTES' : '关闭',
		'ITEM_COSTS_POPUP' : '配件\'{0}\'能让一个成员能力发生变化—[b]{1} 负荷值[/b] ，需要[b]{2} 祭祀值[/b]来装备他，这要花费你们：\n\n[img]{3}/icons/20x20/erz.gif[/img][b] 铁：[/b] {4} - [img]{3}/icons/20x20/gold.gif[/img][b] 金子：[/b] {5} - [img]{3}/icons/20x20/holz.gif[/img][b] 木头：[/b] {6} - [img]{3}/icons/20x20/nahrung_{7}.gif[/img][b] 食物：[/b] {8} - [img]{3}/icons/20x20/silber.gif[/img][b] 银子：[/b] {9}',
		'DO_REPAIR' : 'DO_REPAIR',
		'REPAIR_MARKET_RES' : 'REPAIR_MARKET_RES',
		'HEAL_UNITS' : '恢复成员的体力',
		'HEAL_MARKET_RES' : 'HEAL_MARKET_RES',
		'CHANGE_LEADER_CONFIRMATION' : 'CHANGE_LEADER_CONFIRMATION',
		'MISSING_RES' : '缺乏的资源',
		'FACEBOOK_FRIENDLIST' : 'FACEBOOK_FRIENDLIST',
		'FB_INVITE_NAME' : 'FB_INVITE_NAME',
		'FB_INVITE_ACTION_NAME' : 'FB_INVITE_ACTION_NAME',
		'FB_INVITE_DESC' : 'FB_INVITE_DESC',
		'FB_INVITE' : 'FB_INVITE',
		'MONDAY_SHORT' : 'MONDAY_SHORT',
		'TUESDAY_SHORT' : 'TUESDAY_SHORT',
		'WEDNESDAY_SHORT' : 'WEDNESDAY_SHORT',
		'THURSDAY_SHORT' : 'THURSDAY_SHORT',
		'FRIDAY_SHORT' : 'FRIDAY_SHORT',
		'SATURDAY_SHORT' : 'SATURDAY_SHORT',
		'SUNDAY_SHORT' : 'SUNDAY_SHORT',
		'DISTANCE_UNIT_SHORT' : 'km',
		'DISTANCE_UNIT' : 'DISTANCE_UNIT',
		'CREATE_DIPLOMACY_BUTTON' : '登记',
		'DIPLOMACY_ACCEPT' : '接受',
		'DIPLOMACY_REJECT' : '拒绝',
		'SPEEDUP_NO_QUEUEENTRIES_INFO' : 'SPEEDUP_NO_QUEUEENTRIES_INFO'
	},
	
	/**
	  * Format number according to the locale
	  *
	  * @param theNumber The number to be formatted
	  * @param decimalDigits The number of decimal digits can be passed to this functions, as it is not locale specific. Defaults to 0 decimal digits.
	  */
	'numberFormat' : function(theNumber, decimalDigits) {
		return(number_format(theNumber, decimalDigits, this.wordTable['DECIMAL_POINT'], this.wordTable['THOUSANDS_SEP']));
	},

	/**
	 * Format a duration according to the locale
	 *
	 * @param duration The duration to format
	 * @param showUnit (optional) If the unit shall be displayed, set this to true (default)
	 */
	 'durationFormat' : function(duration, showUnit) {
		if(duration < 60) {
		  multiplier = 1;
		  unitLangId = 'SECOND';
		} else if(duration < 3600) {
		  multiplier = 60;
		  unitLangId = 'MINUTE';
		} else if(duration < 86400) {
		  multiplier = 3600;
		  unitLangId = 'HOUR';
		} else {
		  multiplier = 86400;
		  unitLangId = 'DAY';
		}
		
		durationString = this.numberFormat(duration / multiplier, 1);
		if(durationString.indexOf(this.wordTable['DECIMAL_POINT']) != -1) { // If we have a fractionated number
			durationString = durationString.replace(/0+$/, '');						// Trim right zeroes
			if(durationString.substr(durationString.length - 1, 1) == this.wordTable['DECIMAL_POINT']) durationString = durationString.substr(0, durationString.length - 1);  // If, after trimming zeroes, the decimal point is the end of the string, remove it as well
		}
		return(durationString + (showUnit ? ' ' + this.pluralize(Math.round(duration / multiplier * 10) / 10, unitLangId) : ''));
	},
	
	/**
	  * Function to pluralize a given language object
	  *
	  * @param theNumber The number that we are seeking the plural form for
	  * @param langObjId The language object ID. This must refer to an array of objects inside this internationalization classes word table
	  */
	'pluralize' : function(theNumber, langObjId) {
		if(theNumber != 1) return(this.wordTable[langObjId][1]); // In german, everything with a count of 2 or more uses the plural
		return(this.wordTable[langObjId][0]);			// Otherwise return the singular
	},
	
	/**
	  * Returns a specific string
	  * In contrast to the PHP I18N function, this function is used rarely, only when JS strings have wildcards that must be replaced. Usually, the variables are accessed directly through the word table.
          *
	  * @param varName The variable name of the string
	  * @param params A number indexed array of values. The wildcard {0} in the string is replaced with the value at index 0 etc. If the array is empty, nothing is changed
	  */
	'getSpecificString' : function(varName, params) {
		var varVal = this.wordTable[varName];
		if(typeof(varVal) == 'undefined') return(varName);
		if(typeof(params) != 'undefined' && typeof(params.length) != 'undefined') {
			for(var i = 0, len = params.length; i < len; ++i) {
				var replacer = new RegExp('\\{' + String(i) + '\\}', 'g');
				varVal = varVal.replace(replacer, params[i]);
			}
		}
		return(varVal);
	}


}
