bobril-g11n
Advanced tools
Comparing version 0.6.1 to 0.7.0
{ | ||
"name": "bobril-g11n", | ||
"version": "0.6.1", | ||
"version": "0.7.0", | ||
"description": "Bobril globalization", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -6,3 +6,3 @@ var msgFormatParser = require("./msgFormatParser"); | ||
var localeDataStorage = require('./localeDataStorage'); | ||
var cfg = {}; | ||
var cfg = { defaultLocale: "en", pathToTranslation: function () { return null; } }; | ||
var loadedLocales = Object.create(null); | ||
@@ -61,2 +61,7 @@ var registeredTranslations = Object.create(null); | ||
exports.f = f; | ||
var initPromise = Promise.resolve(null); | ||
initPromise = initPromise.then(function () { return setLocale(cfg.defaultLocale); }); | ||
b.setBeforeInit(function (cb) { | ||
initPromise.then(cb); | ||
}); | ||
function initGlobalization(config) { | ||
@@ -66,10 +71,11 @@ if (initWasStarted) { | ||
} | ||
cfg = config; | ||
b.assign(cfg, config); | ||
initWasStarted = true; | ||
var prom = Promise.resolve(null); | ||
prom = prom.then(function () { return setLocale(config.defaultLocale || 'en'); }); | ||
b.setBeforeInit(function (cb) { | ||
prom.then(cb); | ||
}); | ||
return prom; | ||
if (currentLocale.length !== 0) { | ||
if (!loadedLocales[currentLocale]) { | ||
currentLocale = ""; | ||
} | ||
return setLocale(cfg.defaultLocale); | ||
} | ||
return initPromise; | ||
} | ||
@@ -76,0 +82,0 @@ exports.initGlobalization = initGlobalization; |
@@ -16,5 +16,9 @@ import * as msgFormatParser from "./msgFormatParser"; | ||
let cfg: IG11NConfig = {}; | ||
let loadedLocales: { [name: string]: boolean } = Object.create(null); | ||
let registeredTranslations: { [name: string]: string[] } = Object.create(null); | ||
function newMap():any { | ||
return Object.create(null); | ||
} | ||
let cfg: IG11NConfig = { defaultLocale: "en-US", pathToTranslation: () => null }; | ||
let loadedLocales: { [name: string]: boolean } = newMap(); | ||
let registeredTranslations: { [name: string]: string[] } = newMap(); | ||
let initWasStarted = false; | ||
@@ -24,4 +28,12 @@ let currentLocale = ''; | ||
let currentCachedFormat: IMessageFormat[] = []; | ||
let stringCachedFormats: { [input: string]: IMessageFormat } = Object.create(null); | ||
let stringCachedFormats: { [input: string]: IMessageFormat } = newMap(); | ||
if ((<any>window).g11nPath) { | ||
cfg.pathToTranslation = (<any>window).g11nPath; | ||
} | ||
if ((<any>window).g11nLoc) { | ||
cfg.defaultLocale = (<any>window).g11nLoc; | ||
} | ||
function currentTranslationMessage(message: number): string { | ||
@@ -72,2 +84,8 @@ let text = currentTranslations[message]; | ||
let initPromise = Promise.resolve<any>(null); | ||
initPromise = initPromise.then(() => setLocale(cfg.defaultLocale)); | ||
b.setBeforeInit((cb: (_: any) => void) => { | ||
initPromise.then(cb); | ||
}); | ||
export function initGlobalization(config?: IG11NConfig): Promise<any> { | ||
@@ -77,10 +95,11 @@ if (initWasStarted) { | ||
} | ||
cfg = config; | ||
b.assign(cfg, config); | ||
initWasStarted = true; | ||
var prom = Promise.resolve<any>(null); | ||
prom = prom.then(() => setLocale(config.defaultLocale || 'en')); | ||
b.setBeforeInit((cb: (_:any)=>void) => { | ||
prom.then(cb); | ||
}); | ||
return prom; | ||
if (currentLocale.length !== 0) { | ||
if (!loadedLocales[currentLocale]) { | ||
currentLocale = ""; | ||
} | ||
return setLocale(cfg.defaultLocale); | ||
} | ||
return initPromise; | ||
} | ||
@@ -95,8 +114,8 @@ | ||
if (pathToTranslation) { | ||
let p = pathToTranslation(locale); | ||
if (p) { | ||
prom = prom.then(() => { | ||
return jsonp(p); | ||
}); | ||
} | ||
let p = pathToTranslation(locale); | ||
if (p) { | ||
prom = prom.then(() => { | ||
return jsonp(p); | ||
}); | ||
} | ||
} | ||
@@ -109,3 +128,3 @@ } | ||
currentCachedFormat.length = currentTranslations.length; | ||
stringCachedFormats = Object.create(null); | ||
stringCachedFormats = newMap(); | ||
b.ignoreShouldChange(); | ||
@@ -120,5 +139,5 @@ }); | ||
export function registerTranslations(locale: string, localeDefs:any[], msgs: string[]): void { | ||
export function registerTranslations(locale: string, localeDefs: any[], msgs: string[]): void { | ||
if (Array.isArray(localeDefs)) { | ||
if (localeDefs.length>=1) localeDataStorage.setPluralRule(locale, localeDefs[0]); | ||
if (localeDefs.length >= 1) localeDataStorage.setPluralRule(locale, localeDefs[0]); | ||
} | ||
@@ -125,0 +144,0 @@ if (Array.isArray(msgs)) |
165425
3871