|
@@ -2,12 +2,13 @@
|
2
|
2
|
import i18n from 'i18next';
|
3
|
3
|
import XHR from 'i18next-xhr-backend';
|
4
|
4
|
import jqueryI18next from 'jquery-i18next';
|
5
|
|
-var languages = require("../../service/translation/languages");
|
6
|
|
-var languagesR = require("json!../../lang/languages.json");
|
7
|
|
-var mainR = require("json!../../lang/main.json");
|
8
|
|
-var DEFAULT_LANG = languages.EN;
|
|
5
|
+import languagesR from "../../lang/languages.json";
|
|
6
|
+import mainR from "../../lang/main.json";
|
|
7
|
+import languages from "../../service/translation/languages";
|
9
|
8
|
|
10
|
|
-var defaultOptions = {
|
|
9
|
+const DEFAULT_LANG = languages.EN;
|
|
10
|
+
|
|
11
|
+const defaultOptions = {
|
11
|
12
|
compatibilityAPI: 'v1',
|
12
|
13
|
compatibilityJSON: 'v1',
|
13
|
14
|
fallbackLng: DEFAULT_LANG,
|
|
@@ -41,8 +42,8 @@ function getLangFromQuery() {
|
41
|
42
|
return null;
|
42
|
43
|
}
|
43
|
44
|
|
44
|
|
-module.exports = {
|
45
|
|
- init: function (settingsLang) {
|
|
45
|
+class Translation {
|
|
46
|
+ init (settingsLang) {
|
46
|
47
|
let options = defaultOptions;
|
47
|
48
|
|
48
|
49
|
let lang = getLangFromQuery() || settingsLang || config.defaultLanguage;
|
|
@@ -65,10 +66,9 @@ module.exports = {
|
65
|
66
|
.use({
|
66
|
67
|
type: 'postProcessor',
|
67
|
68
|
name: "resolveAppName",
|
68
|
|
- process:
|
69
|
|
- function (res, key) {
|
70
|
|
- return i18n.t(key, {app: interfaceConfig.APP_NAME});
|
71
|
|
- }
|
|
69
|
+ process: (res, key) => {
|
|
70
|
+ return i18n.t(key, {app: options.app});
|
|
71
|
+ }
|
72
|
72
|
})
|
73
|
73
|
.init(options, initCompleted);
|
74
|
74
|
// adds default language which is preloaded from code
|
|
@@ -76,33 +76,34 @@ module.exports = {
|
76
|
76
|
i18n.addResourceBundle(
|
77
|
77
|
DEFAULT_LANG, 'languages', languagesR, true, true);
|
78
|
78
|
jqueryI18next.init(i18n, $, {useOptionsAttr: true});
|
79
|
|
- },
|
80
|
|
- setLanguage: function (lang) {
|
|
79
|
+ }
|
|
80
|
+
|
|
81
|
+ setLanguage (lang) {
|
81
|
82
|
if(!lang)
|
82
|
83
|
lang = DEFAULT_LANG;
|
83
|
84
|
i18n.setLng(lang, defaultOptions, initCompleted);
|
84
|
|
- },
|
85
|
|
- getCurrentLanguage: function () {
|
|
85
|
+ }
|
|
86
|
+
|
|
87
|
+ getCurrentLanguage () {
|
86
|
88
|
return i18n.lng();
|
87
|
|
- },
|
88
|
|
- translateElement: function (selector, options) {
|
|
89
|
+ }
|
|
90
|
+
|
|
91
|
+ translateElement (selector, options) {
|
89
|
92
|
// i18next expects undefined if options are missing, check if its null
|
90
|
93
|
selector.localize(
|
91
|
94
|
options === null ? undefined : options);
|
92
|
|
- },
|
93
|
|
- generateTranslationHTML: function (key, options) {
|
94
|
|
- var str = "<span data-i18n=\"" + key + "\"";
|
95
|
|
- if (options) {
|
96
|
|
- str += " data-i18n-options='" + JSON.stringify(options) + "'";
|
97
|
|
- }
|
98
|
|
- str += ">";
|
99
|
|
- // i18next expects undefined if options ARE missing, check if its null
|
100
|
|
- str += i18n.t(key, options === null ? undefined : options);
|
101
|
|
- str += "</span>";
|
102
|
|
- return str;
|
|
95
|
+ }
|
103
|
96
|
|
104
|
|
- },
|
105
|
|
- addLanguageChangedListener: function(listener) {
|
|
97
|
+ generateTranslationHTML (key, options) {
|
|
98
|
+ let optAttr = options
|
|
99
|
+ ? ` data-i18n-options='${JSON.stringify(options)}'` : "";
|
|
100
|
+ let text = i18n.t(key, options === null ? undefined : options);
|
|
101
|
+ return `<span data-i18n="${key}"${optAttr}>${text}</span>`;
|
|
102
|
+ }
|
|
103
|
+
|
|
104
|
+ addLanguageChangedListener(listener) {
|
106
|
105
|
i18n.on('languageChanged', listener);
|
107
|
106
|
}
|
108
|
|
-};
|
|
107
|
+}
|
|
108
|
+
|
|
109
|
+export default new Translation();
|