import React from 'react';
import * as EN from './en';
import * as DE from './de';
import * as ES from './es';
import * as FR from './fr';
import * as IT from './it';
import * as RU from './ru';
import d3 from 'd3';
let fallbackTerms = EN.terms;
export function getLanguage(langCode) {
let lang, translate;
switch (langCode) {
case 'de': lang = DE; break;
case 'es': lang = ES; break;
case 'fr': lang = FR; break;
case 'it': lang = IT; break;
case 'ru': lang = RU; break;
default:
lang = EN;
}
let currentTerms = lang.terms;
let d3Locale = d3.locale(lang.formats);
let gen = d3Locale.numberFormat('n');
if(lang === EN) {
translate = (t) => { return currentTerms[t] || t; };
} else {
translate = (t) => { return currentTerms[t] || fallbackTerms[t] || t; };
}
return {
formats: {
gen: gen,
int: d3Locale.numberFormat(',.0f'),
pwr: d3Locale.numberFormat(',.2f'),
round: (d) => gen(d3.round(d, 2)),
pct: d3Locale.numberFormat('.2%'),
pct1: d3Locale.numberFormat('.1%'),
rPct: d3.format('%'),
time: (d) => Math.floor(d / 60) + ':' + ('00' + Math.floor(d % 60)).substr(-2, 2)
},
translate,
units: {
CR: {' ' + translate('CR')}, // Credits
kg: {' ' + translate('kg')}, // Kilograms
kgs: {' ' + translate('kg/s')}, // Kilograms per second
km: {' ' + translate('km')}, // Kilometers
Ls: {' ' + translate('Ls')}, // Light Seconds
LY: {' ' + translate('LY')}, // Light Years
MJ: {' ' + translate('MJ')}, // Mega Joules
ms: {' ' + translate('m/s')}, // Meters per second
MW: {' ' + translate('MW')}, // Mega Watts (same as Mega Joules per second)
ps: {translate('/s')}, // per second
T: {' ' + translate('T')}, // Metric Tons
}
}
}
export const Languages = {
en: 'English',
de: 'Deutsh',
it: 'Italiano',
es: 'Español',
fr: 'Français',
ru: 'ру́сский'
};