i18n.ts
29 lines
| 878 B
| video/mp2t
|
TypeScriptLexer
cin
|
r0 | import { MapOf } from "@implab/core-amd/interfaces"; | ||
import { NlsBundle } from "./NlsBundle"; | ||||
import { isPromise } from "@implab/core-amd/safe"; | ||||
export function bundle<T extends object>(nls: T, locales?: MapOf<any>) { | ||||
const nlsBundle = new NlsBundle(nls, locales); | ||||
const fn = (locale?: string) => { | ||||
cin
|
r2 | const result = locale ? nlsBundle.getLocale(locale) : nlsBundle.default; | ||
cin
|
r0 | if (isPromise(result)) | ||
throw new Error(`The bundle '${locale}' isn't loaded`); | ||||
else | ||||
return result; | ||||
}; | ||||
fn.define = (pack: Partial<T>) => pack; | ||||
fn.default = nlsBundle.default; | ||||
fn.load = async (id: string, require: Require, cb: { (): void; error: (arg0: any) => void; }) => { | ||||
try { | ||||
await nlsBundle.getLocale(id); | ||||
cb(); | ||||
} catch (e) { | ||||
cb.error(e); | ||||
} | ||||
}; | ||||
return fn; | ||||
} | ||||