cbcore-ts
Version:
CBCore is a library to build web applications using pure Typescript.
168 lines (167 loc) • 6.37 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var CBLanguageService_exports = {};
__export(CBLanguageService_exports, {
CBLanguageService: () => CBLanguageService
});
module.exports = __toCommonJS(CBLanguageService_exports);
var import_uicore_ts = require("uicore-ts");
var import_CBCore = require("./CBCore");
const _CBLanguageService = class _CBLanguageService {
static useStoredLanguageValues(values = {}) {
const result = JSON.parse(JSON.stringify(this.languageValues)).objectByCopyingValuesRecursivelyFromObject(
values
);
if (JSON.stringify(result) != JSON.stringify(this.languages)) {
this.languages = result;
this.broadcastLanguageChangeEvent();
}
}
static broadcastLanguageChangeEvent(view) {
view = view || import_CBCore.CBCore.sharedInstance.viewCores.everyElement.rootViewController.view.rootView;
view == null ? void 0 : view.broadcastEventInSubtree({
name: import_uicore_ts.UIView.broadcastEventName.LanguageChanged,
parameters: {}
});
}
static get defaultLanguageKey() {
return CBCoreInitializerObject.defaultLanguageKey || "en";
}
static get currentLanguageKey() {
if (!this._currentLanguageKey) {
this.updateCurrentLanguageKey();
}
return this._currentLanguageKey;
}
updateCurrentLanguageKey() {
_CBLanguageService.currentClassObject.updateCurrentLanguageKey();
}
static updateCurrentLanguageKey(route = import_uicore_ts.UIRoute.currentRoute) {
var _a, _b;
let result = (_b = (_a = route.componentWithName("settings")) == null ? void 0 : _a.parameters) == null ? void 0 : _b.language;
if ((0, import_uicore_ts.IS_NOT)(result)) {
result = this.defaultLanguageKey;
}
const isChanged = result != this._currentLanguageKey;
this._currentLanguageKey = result;
if (isChanged) {
import_CBCore.CBCore.sharedInstance.languageKey = result;
this.broadcastLanguageChangeEvent();
}
}
get currentLanguageKey() {
const result = _CBLanguageService.currentClassObject.currentLanguageKey;
return result;
}
static stringForKey(key, languageKey, defaultString, parameters) {
var result;
if ((0, import_uicore_ts.IS)(key) && this.languages[languageKey] && (0, import_uicore_ts.IS_DEFINED)(this.languages[languageKey][key])) {
result = this.languages[languageKey][key];
} else {
result = defaultString;
}
if ((0, import_uicore_ts.IS)(parameters)) {
const parameterKeys = Object.keys(parameters);
parameterKeys.forEach(function(key2, index, array) {
const keyString = "%" + key2 + "%";
const parameter = parameters[key2];
var parameterString;
if (parameter instanceof Object) {
parameterString = import_uicore_ts.UICore.languageService.stringForCurrentLanguage(parameter);
} else {
parameterString = parameter;
}
result = result.replace(new RegExp(keyString, "g"), parameterString);
});
}
return result;
}
stringForKey(key, languageKey, defaultString, parameters) {
return _CBLanguageService.currentClassObject.stringForKey(key, languageKey, defaultString, parameters);
}
static localizedTextObjectForKey(key, defaultString = key, parameters) {
const result = {};
this.languages.forEach((languageObject, languageKey) => {
result[languageKey] = this.stringForKey(key, languageKey, defaultString, parameters);
});
return result;
}
localizedTextObjectForKey(key, defaultString, parameters) {
const result = _CBLanguageService.currentClassObject.localizedTextObjectForKey(key, defaultString, parameters);
return result;
}
static localizedTextObjectForText(text) {
if ((0, import_uicore_ts.IS_NOT)(text)) {
return import_uicore_ts.nil;
}
const result = {
[this.defaultLanguageKey]: text
};
return result;
}
localizedTextObjectForText(text) {
const result = _CBLanguageService.currentClassObject.localizedTextObjectForText(text);
return result;
}
static stringForCurrentLanguage(localizedTextObject) {
if (localizedTextObject === "" + localizedTextObject) {
return localizedTextObject;
}
localizedTextObject = (0, import_uicore_ts.FIRST_OR_NIL)(localizedTextObject);
let result = localizedTextObject[this.currentLanguageKey];
if ((0, import_uicore_ts.IS_NOT)(result)) {
result = localizedTextObject[this.defaultLanguageKey];
}
if ((0, import_uicore_ts.IS_NOT)(result)) {
result = localizedTextObject["en"];
}
if ((0, import_uicore_ts.IS_NOT)(result)) {
result = "";
}
return result;
}
stringForCurrentLanguage(localizedTextObject) {
return _CBLanguageService.currentClassObject.stringForCurrentLanguage(localizedTextObject);
}
};
_CBLanguageService.currentClassObject = _CBLanguageService;
_CBLanguageService.languageValues = {
en: {
languageName: "English",
languageNameShort: "ENG",
topBarTitle: "UICore application",
selectLanguageTitle: "Select language",
leftBarTitle: "Title"
},
est: {
languageName: "Eesti keel",
languageNameShort: "EST",
topBarTitle: "UICore rakendus",
selectLanguageTitle: "Vali keel",
leftBarTitle: "Pealkiri"
}
};
_CBLanguageService.languages = JSON.parse(JSON.stringify(_CBLanguageService.languageValues));
let CBLanguageService = _CBLanguageService;
import_uicore_ts.UICore.languageService = CBLanguageService;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
CBLanguageService
});
//# sourceMappingURL=CBLanguageService.js.map