wukodlak / TestMultiLangue

// ==UserScript==
// @name        TestMultiLangue 
// @description TestMultiLangue 
// @description:wukodlak
// @namespace   wukodlak
// @include     http*://*.ogame.gameforge.com/game/index.php?page=messages*
// @include     http*://*.ogame.gameforge.com/game/index.php?page=fleet1*
// @exclude     http*://*.ogame.gameforge.com/game/index.php?page=messages*messageId*
// @require     https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js
// @version     1.1
// @grant          GM_info
// @grant          GM_getValue
// @grant          GM_setValue
// @grant          GM_deleteValue
// @grant          GM_addStyle
// @grant          GM_xmlhttpRequest
// ==/UserScript==
'use strict';

// @ require     https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js

/** Variables utilitaires **///{region
	// Si jQuery n'est pas dans le scope courant c'est qu'il est dans le scope de l'unsafeWindow
	if (typeof $ === 'undefined') {
		var $;
		if(typeof jQuery === 'undefined'){
			$ = unsafeWindow.$;
		} else{
			$ = jQuery;
		}
	}
//}endregion


/** Classe d'internationalisation  **///{region
	function I18n() {
		this.fr = {};
		this.en = {};

	}
	I18n.prototype = {
		get: function (key) {
			var local = this[langue][key];
			if (local === undefined && key !== 'missing_translation') {
				console.log(i18n('missing_translation') + ' : "' + key + '"');
			}
			if (local === undefined && langue !== 'en') {
				local = this.en[key];
			}
			if (local === undefined && langue !== 'fr') {
				local = this.fr[key];
			}
			return local || '##' + key + '##';
		},
		exporter: function (langue) {
			return this[langue];
		},
		importer: function (langue, data) {
			this[langue] = data;
		}
	};
	var i18n;
//}endregion

/** Fonctions utilitaires **///{region

	/** un des première fonction à être appelée, initialise un peu tout */
	function init() {
		i18n = instanciateAsFunction(I18n, 'get');

		console.log('Init ok');
	}

	/** Instancie une classe mais en mode fonction (comme jQuery)
	 * mainMethod correspond à la méthode qui sera utilisé en mode raccourci
	 * exemple : i18n(...) est identique à i18n.get(...) si mainMethod = 'get'
	 */
	function instanciateAsFunction(ClassObject, mainMethod) {
		var instance = new ClassObject();
		var func = instance[mainMethod].bind(instance);
		for (var method in ClassObject.prototype) {
			func[method] = instance[method].bind(instance);
		}
		return func;
	}
//}endregion

init();
var langue = 'fr';


/** Variables de langues **///{region
	var text;
	text = {
		//{ Global
		'Raids Table': 'Raids Table',
		missing_translation: 'Traduction manquante',
		//}
		//option mon compte
			moncompte:'Mon compte ',
			vos_techno:'Vos technologies : ',
			q_coord:'Coordonnées de départ de vos raids',
			q_vaisseau_min:'Quel est le vaisseau le plus lent de votre flotte lors des raids ?',
			pourcent:'Pourcentage de débris de vaisseaux dans le cdr de votre univers',
			pourcent_def:'Pourcentage de débris de défense dans le cdr de votre univers',

		// option variable
		choix_certaine_vari:'Choix pour certaines variables',
		selec_scan_st:'Sélection de scan',
			q_apartir:'Butin',
			q_cdrmin:'CDR ',
			q_totmin:'CDR + Butin',
			q_prend_type:'Ne prendre les rapports avec ',
				rep_0_prend1:' Un CDR > ',
				rep_0_prend2:' ou un butin > ',
				rep_1_prend1:' Un CDR > ',
				rep_1_prend2:' et un butin > ',
				rep_2_prend:' Un CDR + butin > ',

		classement_st:'Classement',
			q_class:'Classer le tableau par ',
				c_date:'Date',
				c_coo:'Coordonnées',
				c_nj:'Joueur',
				c_np:'Nom de Planète',
				c_met:'Métal',
				c_cri:'Cristal',
				c_deu:'Deut',
				c_acti:'Activité',
				c_cdr:'Cdr possible',
				c_nbv:'Flotte',
				c_nbd:'Défense',
				c_pill:'Pillages',
				c_type:'Type (lune ou planète)',
				c_cdrress:'Ressources + CDR',
				prod_classement:'Production',
				c_GT: 'GT',
				c_PT: 'PT',
				c_PT2: 'PT2',

			q_reverse:'Classer par ordre',
				descroissant:' décroissant',
				croissant:' croissant',
			taux_classement_ressource:'Donner le taux pour le classement par ressources.',
				taux_m:'Taux M : ',
				taux_c:'Taux C : ',
				taux_d:'Taux D : ',

		option_save_scan_st:'Options de sauvegarde de scan',
			q_sae_auto:'Sauvegarde automatique des scans dès leur visionnage?',
			remp_scn:'Remplacer automatiquement les scans sur une même planète ?',
			q_garde:'Ne pas sauvegarder et supprimer les scans vieux de plus',
				jours:'jours',
				heures:'heures',
				min:'minutes',
			q_nb_max_def:'Nombre max de défense au-delà duquel le script ne prend pas les scans ?(0 = désactivé)',

		other_st:'Autre',
			import_q:'Lors de l\'importation, les scans',
				import_remplace:'remplacent les autres',
				import_rajoute:' sont ajoutés aux autres',
			lien_raide_nb_pt_gt:'Voulez-vous en appuyant sur le lien attaquer, préselectionner soit',
				//nb_pt:'Le nb de PT',
				//nb_gt:'Le nb de GT',
				rien:'rien',
			lien_raide_ajout_nb_pourcent:"Rajouter au nombre de PT/GT preselectionné de base",


		//couleur ligne
		couleur_ligne:'Couleur ligne ',
			q_color:' Couleur de la ligne d\'une cible si une flotte  effectue une mission en mode',
				attt:'Attaquer',
				ag:'Attaque Groupée ',
				det:'Détruire',
				att_r:'Attaquer (R)',
				ag_r:'Attaque Groupée (R)',
				det_r:'Détruire (R)',

		//option affichage
		option_affichage:'Option d\'affichage ',
		affichage_changement_colonne:'Changement dans les colonnes',
			q_date_type:'Pour la date, on affiche ?',
				date_type_chrono:'Un chrono',
				date_type_heure:'L\'heure du scan',
			cdr_q:'Le comptage de cdr est affiché',
				recyclc:' en nombre de recycleurs',
				ressousrce:'en nombre de ressources',

		affichage_colonne:'Affichage de Colonne :',

			q_aff_gt:'Afficher la colonne GT ?',
			q_aff_pt:'Afficher la colonne PT ?',
			q_aff_pt2:'Afficher le second pillage au PT ?',
			q_aff_edlm:'Afficher la colonne Edlm ?',
		
			q_date:'Afficher la date dans le tableau ?',
			tps_vol:'Afficher le temps de vol ?',
			nom_j_q:'Afficher le nom du joueur ?',
			nom_p_q:'Afficher le nom de la planète ?',
			
			defense_q:'Afficher les infos sur la défense ?',
			vaisseau_q:'Afficher les infos sur la flotte ?',
				defense_nb:'oui, son nombre',
				defense_valeur:'oui, sa valeur d\'attaque',
			q_tech: 'Afficher les tech.',

		affichage_global:'Affichage Global :',
			q_galaxie_scan:'Voulez-vous afficher seulement les scans de la galaxie de la planète sélectionnée ?',
				other:' autres',
				galaxie_plus_ou_moins:'Galaxie en cours + ou -',
			afficher_seulement:'Afficher seulement',
				toutt:'Tout',
				planete_sel:'Planète',
				lune:'Lune',
			filtrer : 'Filtrer',
			filtre_actif : 'Actif',
			filtre_inactif : 'Inactif',
			q_afficher_ligne_def_nvis:'Afficher la ligne si la défense n\'est pas visible ?',
			q_afficher_ligne_flo_nvis:'Afficher la ligne si la flotte n\'est pas visible ?',
			page:'Combien de scan voulez-vous afficher par page ? (0=tous)',


		//other_st:'Autre',
			q_techn_sizero:'Voulez-vous mettre vos techno à 0 si celles de la cible sont inconnues ?',
			banner_sky:'Position de la banniere de pub',
			myPlanets:'Position de la liste des planètes',
			tableau_Raids_Table:'Taille du tableau Raids Table',

		//global
			oui:'oui',
			non:'non',
			ok: 'Ok',
			erreur: 'Erreur',
			cancel: 'Annuler',

		//option langue
		option_langue:'Langage',
			q_langue:'Dans quelle langue voulez-vous le script ?',
				francais:'Français',
				anglais:'English',
				spagnol:'Español',
				roumain:'Roumain',

		// tableau icone et autre
			// titre tableau
			dated:'Date',
			tmp_vol_th:'Temps de Vol',
			th_ress_cdr_col:'CDR+Butin',
			nb_recycl:'Nb Recyleurs',
			th_nj:'Joueur',
			th_coo:'Position',
			th_nv:'Flotte',
			th_nd:'Défense',
			th_ress:'Pillages',
			th_fleet_GT:'GT',
			th_fleet_PT:'PT',
			th_fleet_PT2:'PT2',
			th_fleet_Edlm:'Edlm',
			th_tech:'Tech.',

		// bouton de droite
			espionner:'Espionner',
			eff_rapp:'Effacer ce rapport',
			att:'Attaquer',
			simul:'Simuler',
			plus_infos:'Plus d\'infos',

		// type de vaisseaux
		type_vaisseaux: 'Type de vaisseau',
			flotte_rc:'Recy.',
			flotte_pt:'PT',
			flotte_gt:'GT',
			flotte_Edlm:'Edlm',
			
		// interieur avec acronyme
			cdr_pos:'Cdr poss',
			abbr_metal:'M',
			abbr_cristal:'C',
			abbr_deut:'D',	
			retour_f:'Retour ',
			arriv_f:'Arrivée ',
			non_visible:'No Data',

		//message de pop up
			option_sv:'Options de Raids Table sauvegardées',
			rep_mess_supri:'Messages Supprimés',

		// boutons
			save_optis:'Sauvegarder les options',
			remis_z:'Remise à zéro.',
			supr_scan_coche:'Supprimer les scans cochés',
			supr_scan_coche_nnslec:'Supprimer les scans non cochés',


		lm: 'Lanceur de missiles', lle: 'Artillerie laser légère', llo: 'Artillerie laser lourde', gauss: 'Canon de Gauss', ion: 'Artillerie à ions', pla: 'Lanceur de plasma', pb: 'Petit bouclier', gb: 'Grand bouclier', mic: 'Missile d`interception', mip: 'Missile Interplanétaire'
	};
	i18n.importer('fr', text);

	
	if (langue !== 'fr') { /* anglais */
			text = {
				//{ Global
				'Raids Table': 'Raids Table',
				missing_translation: 'Traduction manquante',
				//}

				//option mon compte
					moncompte:'My account ',
					vos_techno:'Your technologies : ',
					q_coord:'Coordinates of departure fleet',
					q_vaisseau_min:'What\'s your slowest ship in your fleet that you use',
					pourcent:'What percentage of your fleet is converted to DF in your universe?',
					pourcent_def:'What percentage of your defense is converted to DF in your universe?',

						
				// option variable
					choix_certaine_vari:'Choice for some variables',
					selec_scan_st:'Selection of espionage report',
						q_apartir:'take espionage report from',
						q_cdrmin:'Minimal Debris field ',
						q_totmin:'Debris Field + minimum of Resources recoverable ',
						q_prend_type:'Take only scans with ',
							rep_0_prend1:' Debris Field>',
							rep_0_prend2:' or resources >',
							rep_1_prend1:'Debris Field>',
							rep_1_prend2:' and resources > ',
							rep_2_prend:' Debris Field + resources > ',


				classement_st:'Ranking',
						q_class:'Sort the table by',
							c_date:'Date',
							c_coo:'Coordinates',
							c_nj:'Name of Player',
							c_np:'Name of Planet',
							c_met:'Metal',
							c_cri:'Crystal',
							c_deu:'Deut',
							c_acti:'Activity',
							c_cdr:'Possible Debris Field',
							c_nbv:'ships',
							c_nbd:'Defense',
							c_pill:'Resources',
							c_type:'Type (moon or planet)',
							c_cdrress:'Resource+DF',
							prod_classement:'Production',
							c_GT: 'GT',
							c_PT: 'PT',
							c_PT2: 'PT2',
							
					q_reverse:'the ranking will be in order :',
						  descroissant:' decreasing',
						  croissant:' increasing',
						  
					taux_classement_ressource:'Give the resources rate for the rainking by resources.',
							taux_m:'Rate M : ',
							taux_c:'Rate C : ',
							taux_d:'Rate D : ',
						
						
					option_save_scan_st:'Backup options of espionage report',
						q_sae_auto:'Automatic backup of espionage report where they are viewed ? ',
						remp_scn:'Automatic replacement of espionage report if they are from the same planet ? ',
						q_garde:'Do not make and erase espionage report older than ',
							jours:'days',
							heures:'hours',
							min:'minutes',
						q_nb_max_def:'Maximum nomber of defense beyond which the script doesn\'t take espionnage reports ?(0= desactivate)',

					other_st:'Other',
						import_q:'When importing, each scan ',
							import_remplace:' replaces the other ',
							import_rajoute:' are added to the others ',
						lien_raide_nb_pt_gt:'Do you want, when selecting Attack boutton, preselect either or either :',
							//nb_pt:'Number of SC',
							//nb_gt:'Number of LC',
							rien:'Nothing',


					lien_raide_ajout_nb_pourcent:"Add to the preselected PT/GT number ",


				   //couleur ligne
					couleur_ligne:'Colour line ',
						q_color:' Color of the line of the target if your fleet mode is',
							attt:'Attack',
							ag:'ACS attack ',
							det:'Destroy',
							att_r:'Attack (R)',
							ag_r:' ACS attack (R)',
							det_r:'Destroy (R)',


		            //option affichage
					option_affichage:'Display Options ',
					affichage_changement_colonne:'Change in the columns :',
							q_date_type:'For the date we show ?',
						date_type_chrono:'Current time',
						date_type_heure:'Time of the espionage report',
							cdr_q:'The amount of Debris Field is displayed : ',
						recyclc:' in numbers of Recyclerss ',
						ressousrce:'in numbers of resource',
						
				affichage_colonne:'Column Display :',
					q_aff_gt:'Display a HT column ?',
					q_aff_pt:'Display CT column ?',
					q_aff_pt2:'Display a second CT loot ?',
					q_aff_edlm:'Display an Edlm column ?',
					
						q_date:'Show date in the table ?',
						tps_vol:'Show flight time?',
						nom_j_q:'Show name of the player ?',
						nom_p_q:'Show name of the planet ?',
							autre_planette:'Don\'t show the name directly but it show when you click on the coordinates',
						coor_q:'Show of the coordinates of the planet ?',
					defense_q:'Display infos about the defense ?',
					vaisseau_q:'Display infos about the fleet ?',
						defense_nb:'yes, its number.',
						defense_valeur:'yes, its attack strength',
						q_tech: 'Show tech.',

				
					affichage_global:'Global Display :',
						q_galaxie_scan:'Do you want to show only the spy reports of the galaxy of the selected planet ?',
							other:' others',
						afficher_seulement:'Display only : ',
							toutt:'All',
							planete_sel:'Planet',
							lune:'Moon',
						filtrer : 'Filter',
						filtre_actif : 'Active',
						filtre_inactif : 'Inactive',
						q_afficher_ligne_def_nvis:'Display the line if the défense isn\'t apparent?',
						q_afficher_ligne_flo_nvis:'Display the line if the fleet isn\'t apparent ?',
						page:'How many scans you want to display per page ?(0=all)',

			
						
					
				//other_st:'Other',
					q_techn_sizero:'Do you want to put your tech to 0 when the espionage report do not display the opponent\'s tech ?',
					banner_sky:'Position de la banniere de pub',
					myPlanets:'Position de la liste des planètes',
					tableau_Raids_Table:'Taille du tableau Raids Table',

				   //global
						oui:'yes',
						non:'no',
						ok: 'Ok',
						erreur: 'Error',
						cancel: 'Cancel',

					//option langue
					option_langue:'Language',
						q_langue:'In what Language do you want to use the script ?',
							francais:'Français',
							anglais:'English',
							spagnol:'Español',
							roumain:'Romanian',			



				// tableau icone et autre

				// titre tableau
					dated:'Date',
					tmp_vol_th:'Flight time',
					th_ress_cdr_col:'DF+Res',
					nb_recycl:'Nb Recyleurs',
					th_nj:'Player',
					th_coo:'Position',
					th_nv:'Fleet',
					th_nd:'Défense',
					th_ress:'Pillages',
					th_fleet_GT:'HT',
					th_fleet_PT:'SC',
					th_fleet_PT2:'SC2',
					th_fleet_Edlm:'Edlm',
					th_tech:'Tech.',

				// bouton de droite
					espionner:'Spying',
					eff_rapp:'Remove this espionage report',
					att:'Attack',
					simul:'Simulate',
					plus_infos:'More infos',

				// type de vaisseaux
				type_vaisseaux: 'Kind of fleet',
					flotte_rc:'Recy.',
					flotte_pt:'SC',
					flotte_gt:'HT',
					flotte_Edlm:'Edlm',
					
				// interieur avec acronyme
					cdr_pos:'Debris Field',
					abbr_metal:'M',
					abbr_cristal:'C',
					abbr_deut:'D',	
					retour_f:'Retour ',
					arriv_f:'Arrivée ',
					non_visible:'No Data',

				//message de pop up
					option_sv:'Options of Raids Table saved',
					rep_mess_supri:'Posts deleted',

					// boutons
					save_optis:'Save options',
					remis_z:'Reset.',
					supr_scan_coche:'Delete selected esp reports',
					supr_scan_coche_nnslec:'Delete unselected esp reports',
					
				lm: 'Lanceur de missiles', lle: 'Artillerie laser légère', llo: 'Artillerie laser lourde', gauss: 'Canon de Gauss', ion: 'Artillerie à ions', pla: 'Lanceur de plasma', pb: 'Petit bouclier', gb: 'Grand bouclier', mic: 'Missile d`interception', mip: 'Missile Interplanétaire'
			};
		i18n.importer('en', text);
	}

	var vari, localization;
   // 'fr' // info.ogameMeta['ogame-language']
	if ( langue == 'fr') {
		localization = {
			missions: {
				'1': 'Attaquer',
				'2': 'Attaque groupée',
				'3': 'Transporter',
				'4': 'Stationner',
				'5': 'Stationner',
				'6': 'Espionner',
				'7': 'Coloniser',
				'8': 'Recycler le champ de débris',
				'9': 'Détruire',
				'15': 'Expédition'
			}
		};
		vari = {
			sur: 'sur ',
			de: ' de ',
			pt: 'Petit transporteur', gt: 'Grand transporteur', cle: 'Chasseur léger', clo: 'Chasseur lourd', cro: 'Croiseur', vb: 'Vaisseau de bataille', vc: 'Vaisseau de colonisation', rec: 'Recycleur', esp: 'Sonde d`espionnage', bb: 'Bombardier', sat: 'Satellite solaire', dest: 'Destructeur', edlm: 'Étoile de la mort', tra: 'Traqueur',
			lm: 'Lanceur de missiles', lle: 'Artillerie laser légère', llo: 'Artillerie laser lourde', gauss: 'Canon de Gauss', ion: 'Artillerie à ions', pla: 'Lanceur de plasma', pb: 'Petit bouclier', gb: 'Grand bouclier', mic: 'Missile d`interception', mip: 'Missile Interplanétaire',
			tech_arm: 'Technologie Armes', tech_bouc: 'Technologie Bouclier', tech_pro: 'Technologie Protection des vaisseaux spatiaux',
			tech_com: 'Technologie Combustion', tech_imp: 'Technologie Impulsion', tech_hyp: 'Technologie Hyper-Espace',
			mine_m: 'Mine de métal',
			mine_c: 'Mine de cristal',
			mine_d: 'Synthétiseur de deutérium',

			lang_speedsin: 'fr',
			lang_dragosin: 'french'
		};
	}
	else /* anglais */ {
		localization = {
			missions: {
				'1': 'Attack',
				'2': 'ACS Attack',
				'3': 'Transport',
				'4': 'Deployment',
				'5': 'ACS Defend',
				'6': 'Espionage',
				'7': 'Colonization',
				'8': 'Recycle debris field',
				'9': 'Moon Destruction',
				'15': 'Expedition'
			}
		};
		vari = {
			sur: 'on ',
			de: ' from ',
			tech_arm: 'Weapons Technology', tech_bouc: 'Shielding Technology', tech_pro: 'Armour Technology',
			tech_hyp: 'Hyperspace Drive', tech_com: 'Combustion Drive', tech_imp: 'Impulse Drive',
			pt: 'Small Cargo', gt: 'Large Cargo', cle: 'Light Fighter', clo: 'Heavy Fighter', cro: 'Cruiser', vb: 'Battleship', vc: 'Colony Ship', rec: 'Recycler', esp: 'Espionage Probe', bb: 'Bomber', sat: 'Solar Satellite', dest: 'Destroyer', edlm: 'Deathstar', tra: 'Battlecruiser',
			lm: 'Rocket Launcher', lle: 'Light Laser', llo: 'Heavy Laser', gauss: 'Gauss Cannon', ion: 'Ion Cannon', pla: 'Plasma Turret', pb: 'Small Shield Dome', gb: 'Large Shield Dome', mic: 'Anti-Ballistic Missiles', mip: 'Interplanetary Missiles',

			// ressource:'Ressources',//pour antigame
			mine_m: 'Metal Mine',
			mine_c: 'Crystal Mine',
			mine_d: 'Deuterium Synthesizer',

			lang_speedsin: 'en',
			lang_dragosin: 'english'
		};
	}
//}endregion


(function(){

 //alert('test') ;
 console.log('vos tech : '+ text.vos_techno ) ;
 console.log('tech armes : '+ vari.tech_arm ) ; 
 console.log('tech bouclier : '+ vari.tech_bouc ) ; 
 console.log('tech protection : '+ vari.tech_pro ) ; 
 console.log('cancel : '+ text.cancel ) ; 
    
})();