@etsoo/appscript
Version:
Applications shared TypeScript framework
49 lines (48 loc) • 1.52 kB
JavaScript
import { DomUtils } from "@etsoo/shared";
/**
* Culture namespace
*/
export var Culture;
(function (Culture) {
/**
* Make culture
* @param cultureMaker Culture maker
* @param resources Resources
* @returns Culture
*/
function make(cultureMaker, ...resources) {
return cultureMaker(async () => {
const rs = await Promise.all(resources.map((resource) => new Promise((resolve) => {
if (typeof resource === "object") {
resolve(resource);
}
else {
resource().then((result) => resolve(result));
}
})));
return rs.reduce((prev, curr) => ({
...prev,
...curr
}));
});
}
Culture.make = make;
/**
* Get en neutral culture
* @param localResources Local resources
* @returns Full culture
*/
Culture.en = (...resources) => make(DomUtils.en, import("./en.json"), ...resources);
/**
* Get zh-Hans neutral cultrue
* @param localResources Local resources
* @returns Full culture
*/
Culture.zhHans = (...resources) => make(DomUtils.zhHans, import("./zh-Hans.json"), ...resources);
/**
* Get zh-Hant neutral cultrue
* @param localResources Local resources
* @returns Full culture
*/
Culture.zhHant = (...resources) => make(DomUtils.zhHant, import("./zh-Hant.json"), ...resources);
})(Culture || (Culture = {}));