/**
 * Languages Loader
 */

import * as fs from 'fs';
import * as yaml from 'js-yaml';

export type LangKey = 'de' | 'en' | 'fr' | 'ja' | 'pl';
export type LocaleObject = { [key: string]: any };

const loadLang = (lang: LangKey) => yaml.safeLoad(
	fs.readFileSync(`./locales/${lang}.yml`, 'utf-8')) as LocaleObject;

const native = loadLang('ja');

const langs: { [key: string]: LocaleObject } = {
	'de': loadLang('de'),
	'en': loadLang('en'),
	'fr': loadLang('fr'),
	'ja': native,
	'pl': loadLang('pl')
};

Object.entries(langs).map(([, locale]) => {
	// Extend native language (Japanese)
	locale = Object.assign({}, native, locale);
});

export function isAvailableLanguage(lang: string): lang is LangKey {
	return lang in langs;
}

export default langs;
