##// END OF EJS Templates
corrected tear down logic handling in observables. Added support for observable query results
corrected tear down logic handling in observables. Added support for observable query results

File last commit:

r109:4a375b9c654a default
r110:1a190b3a757d v1.4.0 default
Show More
i18n.ts
51 lines | 1.6 KiB | video/mp2t | TypeScriptLexer
import { id as mid} from "module";
import { MapOf } from "@implab/core-amd/interfaces";
import { LocaleProvider, NlsBundle } from "./NlsBundle";
import { isPromise } from "@implab/core-amd/safe";
import { locale as sysLocale } from "dojo/_base/kernel";
import { TraceSource } from "@implab/core-amd/log/TraceSource";
const trace = TraceSource.get(mid);
trace.debug("Current sysLocale: {0}", sysLocale);
export interface OnLoad {
(result?: unknown): void;
error(err: unknown): void;
}
export function bundle<T extends object>(nls: T, locales?: MapOf<LocaleProvider<object>>) {
const nlsBundle = new NlsBundle(nls, locales);
const fn = (_locale?: string) => {
const locale = _locale || sysLocale;
const result = nlsBundle.getLocale(locale);
if (isPromise(result))
throw new Error(`The bundle '${locale}' isn't loaded`);
else
return result;
};
fn.define = (pack: Partial<T>) => pack;
fn.load = async (id: string, require: Require, cb: OnLoad, config: {isBuild?: boolean}) => {
const locale = id || sysLocale;
if (config && config.isBuild) {
cb();
} else {
try {
await nlsBundle.getLocale(locale);
cb();
} catch (e) {
if(cb.error) {
cb.error(e);
} else {
// in case the loader doesn't support error reporting
trace.error("Error loading {0}: {1}", locale, e);
}
}
}
};
return fn;
}