@ali-i18n-fe/dada-component
Version:
60 lines (52 loc) • 2.01 kB
JavaScript
const axios = require("axios");
const i18NCache = {};
const promiseCache = {};
const downloadMedusaCopyPackage = async medusaAppName => {
const fetchUrl = `http://mcms.alibaba-inc.com/info/allResources.htm?type=new&appName=${medusaAppName}`;
console.log(`download mcms ${medusaAppName} package...`);
const { data: originData } = await axios.get(fetchUrl, {
credentials: "include"
});
return originData;
};
const parseMedusaCopyPackage = medusaCopyPackage => {
const I18NCopyPackage = {
max: {},
min: {}
};
Object.keys(medusaCopyPackage).forEach(originKey => {
const language = originKey.slice(0, 2).toLowerCase(); // en
const medusaKey = originKey.slice(3); // app_title
const medusaValue = medusaCopyPackage[originKey];
if (!I18NCopyPackage[language]) {
I18NCopyPackage[language] = {};
}
I18NCopyPackage[language][medusaKey] = medusaCopyPackage[originKey];
const originMaxValue = I18NCopyPackage.max[medusaKey] || "";
const newMaxValue =
originMaxValue.length > medusaValue.length ? originMaxValue : medusaValue;
I18NCopyPackage.max[medusaKey] = newMaxValue;
const originMinValue =
I18NCopyPackage.min[medusaKey] || new Array(999).fill("foo").join("");
const newMinValue =
originMinValue.length < medusaValue.length ? originMinValue : medusaValue;
I18NCopyPackage.min[medusaKey] = newMinValue;
});
return I18NCopyPackage;
};
const getI18NCopyPackage = async medusaAppName => {
if (medusaAppName in i18NCache) {
return i18NCache[medusaAppName];
}
let promise = promiseCache[medusaAppName];
if(!promise){
promise = downloadMedusaCopyPackage(medusaAppName);
promiseCache[medusaAppName] = promise
}
const medusaCopyPackage = await promise;
const I18NCopyPackage = parseMedusaCopyPackage(medusaCopyPackage);
I18NCopyPackage.medusaAppName = medusaAppName;
i18NCache[medusaAppName] = I18NCopyPackage;
return I18NCopyPackage;
};
exports.getI18NCopyPackage = getI18NCopyPackage;