plain-design 1.0.0-beta.57 → 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,6 @@
1
1
  {
2
2
  "name": "plain-design",
3
- "version": "1.0.0-beta.57",
3
+ "version": "1.0.0-beta.58",
4
4
  "description": "",
5
5
  "main": "dist/plain-design.min.js",
6
6
  "module": "dist/plain-design.commonjs.min.js",
@@ -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 mergeLangs = {} as any;
163
+ let result = {} as any;
163
164
  Object.keys({ ...state.langs, ...langs }).forEach(localeName => {
164
- mergeLangs[localeName] = {
165
- ...state.langs[localeName],
166
- ...langs[localeName]
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 = mergeLangs;
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,