@singleton-i18n/js-core-sdk
Version:
A JavaScript Singleton client library for internationalization and localization that leverage data from Singleton service. The library works both for the browser and as a Node.js module.
70 lines (69 loc) • 2.25 kB
JavaScript
;
/*
* Copyright 2019-2021 VMware, Inc.
* SPDX-License-Identifier: EPL-2.0
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.assign = exports.getBrowserCultureLang = exports.resolveLanguageTag = exports.isDefined = void 0;
/**
* verify value if undefined or null
*/
function isDefined(value) {
return value !== undefined && value !== null && value !== '';
}
exports.isDefined = isDefined;
function resolveLanguageTag(languageTag) {
if (!isDefined(languageTag)) {
return languageTag;
}
return languageTag.split('_').join('-').toLocaleLowerCase();
}
exports.resolveLanguageTag = resolveLanguageTag;
/**
* Returns the culture language code name from the browser, e.g. "de-DE"
* @returns string
*/
function getBrowserCultureLang() {
if (typeof window === 'undefined' || typeof window.navigator === 'undefined') {
return undefined;
}
let browserCultureLang = window.navigator.languages ? window.navigator.languages[0] : null;
browserCultureLang = browserCultureLang ||
window.navigator.language ||
window.navigator.browserLanguage ||
window.navigator.userLanguage;
return browserCultureLang;
}
exports.getBrowserCultureLang = getBrowserCultureLang;
/**
* Merge the key-value pair which defined in each object and
* check whether the key is globally unique
* TODO: Support object directly
* @param target Target object contains all strings
* @param source A set of source objects
*/
function assign(target, source) {
let s, i, props;
const isObject = function (obj) {
return obj && typeof obj === 'object';
};
if (!isObject(target)) {
throw new TypeError('Target must be an object');
}
for (s = 0; s < source.length; ++s) {
let sub;
sub = source[s];
if (!isObject(sub)) {
throw new TypeError('Source must be an object');
}
props = Object.keys(Object(sub));
for (i = 0; i < props.length; ++i) {
if (target.hasOwnProperty(props[i])) {
console.warn('Duplicate message key:', props[i]);
}
target[props[i]] = sub[props[i]];
}
}
return target;
}
exports.assign = assign;