2022-03-01 16:22:53 -05:00
|
|
|
// Copyright 2022 Documize Inc. <legal@documize.com>. All rights reserved.
|
|
|
|
//
|
|
|
|
// This software (Documize Community Edition) is licensed under
|
|
|
|
// GNU AGPL v3 http://www.gnu.org/licenses/agpl-3.0.en.html
|
|
|
|
//
|
|
|
|
// https://www.documize.com
|
|
|
|
|
|
|
|
import Service, { inject as service } from '@ember/service';
|
|
|
|
import $ from 'jquery';
|
|
|
|
|
|
|
|
export default Service.extend({
|
2023-02-11 12:06:29 +09:00
|
|
|
langs: { enUS: [], deDE: [] , zhCN: [], ptBR: [], frFR: [], jaJP: [] },
|
2022-03-01 16:22:53 -05:00
|
|
|
locales: [],
|
|
|
|
session: service(),
|
|
|
|
|
|
|
|
init() {
|
|
|
|
this._super(...arguments);
|
|
|
|
$.getJSON("/i18n/en-US.json", (data) => {
|
|
|
|
this.langs.enUS = data;
|
|
|
|
});
|
2022-04-08 11:59:08 -04:00
|
|
|
$.getJSON("/i18n/de-DE.json", (data) => {
|
|
|
|
this.langs.deDE = data;
|
|
|
|
});
|
2022-07-09 08:50:35 +08:00
|
|
|
$.getJSON("/i18n/zh-CN.json", (data) => {
|
|
|
|
this.langs.zhCN = data;
|
|
|
|
});
|
2022-07-12 22:14:26 -03:00
|
|
|
$.getJSON("/i18n/pt-BR.json", (data) => {
|
|
|
|
this.langs.ptBR = data;
|
|
|
|
});
|
2023-02-06 11:45:47 -05:00
|
|
|
$.getJSON("/i18n/fr-FR.json", (data) => {
|
|
|
|
this.langs.frFR = data;
|
|
|
|
});
|
2023-02-11 12:43:32 +09:00
|
|
|
$.getJSON("/i18n/ja-JP.json", (data) => {
|
|
|
|
this.langs.jaJP = data;
|
|
|
|
});
|
2022-03-01 16:22:53 -05:00
|
|
|
},
|
|
|
|
|
2022-03-01 20:01:06 -05:00
|
|
|
localize(key, ...args) {
|
|
|
|
let str = "";
|
|
|
|
|
2022-03-01 16:22:53 -05:00
|
|
|
switch(this.session.locale) {
|
2022-03-21 13:14:55 -04:00
|
|
|
case "en-US":
|
|
|
|
str = this.langs.enUS[key];
|
2022-03-01 20:01:06 -05:00
|
|
|
break;
|
2022-04-08 11:59:08 -04:00
|
|
|
case "de-DE":
|
|
|
|
str = this.langs.deDE[key];
|
|
|
|
break;
|
2022-07-09 08:50:35 +08:00
|
|
|
case "zh-CN":
|
|
|
|
str = this.langs.zhCN[key];
|
|
|
|
break;
|
2022-07-12 22:14:26 -03:00
|
|
|
case "pt-BR":
|
|
|
|
str = this.langs.ptBR[key];
|
|
|
|
break;
|
2023-02-06 11:45:47 -05:00
|
|
|
case "fr-FR":
|
|
|
|
str = this.langs.frFR[key];
|
|
|
|
break;
|
2023-02-11 12:51:59 +09:00
|
|
|
case "ja-JP":
|
|
|
|
str = this.langs.jaJP[key];
|
|
|
|
break;
|
2022-03-01 20:01:06 -05:00
|
|
|
}
|
|
|
|
|
2022-03-02 19:55:52 -05:00
|
|
|
if (_.isUndefined(str)) {
|
2022-03-21 13:14:55 -04:00
|
|
|
// eslint-disable-next-line no-console
|
2022-03-02 19:55:52 -05:00
|
|
|
console.log(">>>>>>>>>>>> i18n missed key", key);
|
|
|
|
return `!${key}!`;
|
2022-03-01 20:01:06 -05:00
|
|
|
}
|
|
|
|
|
2022-03-02 19:55:52 -05:00
|
|
|
if (args) {
|
|
|
|
for (let i = 0; i < args.length; i++) {
|
|
|
|
str = str.replace(`{${i+1}}`, args[i]);
|
|
|
|
}
|
2022-03-01 20:01:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
return str;
|
2022-03-01 16:22:53 -05:00
|
|
|
},
|
|
|
|
});
|