diff --git a/background.html b/background.html
index f4ac3c0e4..06eabaf8e 100644
--- a/background.html
+++ b/background.html
@@ -731,6 +731,7 @@
+
diff --git a/js/chromium.js b/js/chromium.js
index bfb57b32e..ff61b8519 100644
--- a/js/chromium.js
+++ b/js/chromium.js
@@ -153,17 +153,19 @@
};
// Translate
- window.i18n = function(message, substitutions) {
- if (window.chrome && chrome.i18n) {
- return chrome.i18n.getMessage(message, substitutions);
- }
- };
- i18n.getLocale = function() {
- if (window.chrome && chrome.i18n) {
- return chrome.i18n.getUILanguage();
- }
- return 'en';
- };
+
+ if (window.chrome && window.chrome.i18n) {
+ window.i18n = function(message, substitutions) {
+ return chrome.i18n.getMessage(message, substitutions);
+ };
+
+ i18n.getLocale = function() {
+ if (window.chrome && chrome.i18n) {
+ return chrome.i18n.getUILanguage();
+ }
+ return 'en';
+ };
+ }
extension.install = function(mode) {
if (mode === 'standalone') {
diff --git a/js/i18n.js b/js/i18n.js
new file mode 100644
index 000000000..7e5c50cf6
--- /dev/null
+++ b/js/i18n.js
@@ -0,0 +1,22 @@
+/*
+ * vim: ts=4:sw=4:expandtab
+ */
+;(function() {
+ 'use strict';
+ var json = window.env.locale_json;
+ window.i18n = function (message, substitutions) {
+ var s = json[message] ? json[message].message : message;
+ if (substitutions instanceof Array) {
+ substitutions.forEach(function(sub) {
+ s = s.replace(/\$.+?\$/, sub);
+ });
+ } else if (substitutions) {
+ s = s.replace(/\$.+?\$/, substitutions);
+ }
+ return s;
+ };
+
+ i18n.getLocale = function() {
+ return window.env.locale;
+ };
+})();
diff --git a/main.js b/main.js
index 119cbddcb..a697cd8e0 100644
--- a/main.js
+++ b/main.js
@@ -6,6 +6,7 @@ const url = require('url')
const fs = require('fs')
const autoUpdater = require('electron-updater').autoUpdater
const autoUpdaterInterval = 60 * 60 * 1000;
+const ipc = electron.ipcMain;
app.setAppUserModelId('org.whispersystems.signal-desktop')
@@ -47,12 +48,22 @@ function createWindow () {
}
})
+ // Load locale
+ const locale = 'en'; // FIXME
+ const localeData = JSON.parse(fs.readFileSync(path.join(__dirname, '_locales', locale, 'messages.json'), 'utf-8'))
+ ipc.on('locale-data', function(event, arg) {
+ event.returnValue = localeData;
+ });
+
// and load the index.html of the app.
mainWindow.loadURL(url.format({
pathname: path.join(__dirname, 'background.html'),
protocol: 'file:',
slashes: true,
- query: { node_env: NODE_ENV }
+ query: {
+ node_env: NODE_ENV,
+ locale: locale
+ }
}))
// Open the DevTools.
diff --git a/preload.js b/preload.js
index dc24352c6..c2ca1d3a7 100644
--- a/preload.js
+++ b/preload.js
@@ -8,3 +8,6 @@ window.location.search.substring(1).split('&').forEach(function(variable) {
var pair = variable.split('=');
env[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
});
+
+const ipc = require('electron').ipcRenderer
+window.env.locale_json = ipc.sendSync('locale-data');