'use strict';

import path = require('path');
import electron = require('electron');
import i18n = require('i18n');

let instance: TranslationUtil = null;
let app: Electron.App = null;

/* To make the util runnable in both main and renderer process */
if (process.type === 'renderer') {
	app = electron.remote.app;
} else {
	app = electron.app;
}

class TranslationUtil {
	constructor() {
		if (instance) {
			return this;
		}

		instance = this;
		i18n.configure({
			directory: path.join(__dirname, '../../../translations/'),
			register: this
		});
	}

	__(phrase: string): string {
		return i18n.__({ phrase, locale: app.getLocale() });
	}
}

export = new TranslationUtil();

'use strict';

import path = require('path');
import electron = require('electron');
import i18n = require('i18n');

let instance: TranslationUtil = null;
let app: Electron.App = null;

/* To make the util runnable in both main and renderer process */
if (process.type === 'renderer') {
	app = electron.remote.app;
} else {
	app = electron.app;
}

class TranslationUtil {
	constructor() {
		if (instance) {
			return this;
		}

		instance = this;
		i18n.configure({
			directory: path.join(__dirname, '../../../translations/'),
			register: this
		});
	}

	__(phrase: string): string {
		return i18n.__({ phrase, locale: app.getLocale() ? app.getLocale() : 'en' });
	}
}

export = new TranslationUtil();

Use English as fallback language.
i18n: Use English as fallback language.

In case app.getLocale() returns a falsey value, English is used as the
app language.
