[new feature] add i18n support (#310)
* fix: Tabbar icon line-height * [new feature] progress add showPivot prop * [new feature] TabItem support vue-router * [new feature] update document header style * [Doc] add toast english ducoment * [new feature] add i18n support * feat: Extract demos from markdown * feat: Base components demos * [new feature] complete demo extract & translate * [fix] text cases * fix: add deepAssign test cases * fix: changelog detail * [new feature] AddressEdit support i18n
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
const camelizeRE = /-(\w)/g;
|
||||
export default function(str) {
|
||||
return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : '');
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
const hasOwnProperty = Object.prototype.hasOwnProperty;
|
||||
|
||||
function isObj(x) {
|
||||
const type = typeof x;
|
||||
return x !== null && (type === 'object' || type === 'function');
|
||||
}
|
||||
|
||||
function assignKey(to, from, key) {
|
||||
const val = from[key];
|
||||
|
||||
if (
|
||||
val === undefined ||
|
||||
val === null ||
|
||||
(hasOwnProperty.call(to, key) &&
|
||||
(to[key] === undefined || to[key] === null))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hasOwnProperty.call(to, key) || !isObj(val)) {
|
||||
to[key] = val;
|
||||
} else {
|
||||
to[key] = assign(Object(to[key]), from[key]);
|
||||
}
|
||||
}
|
||||
|
||||
export default function assign(to, from) {
|
||||
for (const key in from) {
|
||||
if (hasOwnProperty.call(from, key)) {
|
||||
assignKey(to, from, key);
|
||||
}
|
||||
}
|
||||
return to;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
export default function(object, path) {
|
||||
const keys = path.split('.');
|
||||
let result = object;
|
||||
|
||||
keys.forEach(key => {
|
||||
result = result[key] || '';
|
||||
});
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user