plain-design 1.0.0-beta.56 → 1.0.0-beta.58
Sign up to get free protection for your applications and to get access to all the features.
package/package.json
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import {createSyncHooks, reactive} from "plain-design-composition";
|
2
2
|
import {ZhCnLocale} from './lang/zh-cn';
|
3
3
|
import {deepmerge} from "../components/PageThemeUtils/deepmerge";
|
4
|
+
import {PlainObject} from "plain-utils/utils/event";
|
4
5
|
|
5
6
|
/**
|
6
7
|
/**
|
@@ -159,19 +160,48 @@ export const i18n = (() => {
|
|
159
160
|
*/
|
160
161
|
const setLangs = (langs: any) => {
|
161
162
|
|
162
|
-
let
|
163
|
+
let result = {} as any;
|
163
164
|
Object.keys({ ...state.langs, ...langs }).forEach(localeName => {
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
165
|
+
result[localeName] = mergeLangs(
|
166
|
+
state.langs[localeName],
|
167
|
+
langs[localeName],
|
168
|
+
(lang1, lang2) => {
|
169
|
+
return mergeLangs(
|
170
|
+
lang1,
|
171
|
+
lang2,
|
172
|
+
(item1, item2) => {
|
173
|
+
return {
|
174
|
+
...item1,
|
175
|
+
...item2,
|
176
|
+
};
|
177
|
+
}
|
178
|
+
);
|
179
|
+
}
|
180
|
+
);
|
168
181
|
});
|
169
182
|
|
170
|
-
state.langs =
|
183
|
+
state.langs = result;
|
171
184
|
|
172
185
|
hooks.onUpdateLangs.exec(undefined);
|
173
186
|
};
|
174
187
|
|
188
|
+
const mergeLangs = (lang1: PlainObject, lang2: PlainObject, merge: (val1: PlainObject, val2: PlainObject) => PlainObject): PlainObject => {
|
189
|
+
const keys = new Set<string>();
|
190
|
+
Object.keys(lang1).forEach(key => {keys.add(key);});
|
191
|
+
Object.keys(lang2).forEach(key => {keys.add(key);});
|
192
|
+
const result = {} as PlainObject;
|
193
|
+
keys.forEach((key) => {
|
194
|
+
const val1 = lang1[key];
|
195
|
+
const val2 = lang2[key];
|
196
|
+
if (!!val1 && !!val2) {
|
197
|
+
result[key] = merge(val1, val2);
|
198
|
+
} else {
|
199
|
+
result[key] = val1 || val2;
|
200
|
+
}
|
201
|
+
});
|
202
|
+
return result;
|
203
|
+
};
|
204
|
+
|
175
205
|
return {
|
176
206
|
$t,
|
177
207
|
$intl,
|