Skip to content

Commit

Permalink
feat(framework): create getLocaleData API (#1269)
Browse files Browse the repository at this point in the history
  • Loading branch information
vladitasev committed Mar 9, 2020
1 parent e4c1dba commit c9253a6
Show file tree
Hide file tree
Showing 11 changed files with 49 additions and 20 deletions.
4 changes: 2 additions & 2 deletions packages/base/src/asset-registries/i18n.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import "../shims/Core-shim.js";
import { getLanguage } from "../LocaleProvider.js";
import getLocale from "../locale/getLocale.js";
import { fetchJsonOnce } from "../util/FetchHelper.js";
import { normalizeLocale, nextFallbackLocale } from "../util/normalizeLocale.js";

Expand Down Expand Up @@ -48,7 +48,7 @@ const fetchI18nBundle = async packageName => {
return;
}

const language = getLanguage();
const language = getLocale().getLanguage();

let localeId = normalizeLocale(language);
while (!bundlesForPackage[localeId]) {
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import Locale from "./Locale.js";
import detectNavigatorLanguage from "./util/detectNavigatorLanguage.js";
import { getLanguage as getConfigLanguage } from "./config/Language.js";
import detectNavigatorLanguage from "../util/detectNavigatorLanguage.js";
import { getLanguage as getConfigLanguage } from "../config/Language.js";

const convertToLocaleOrNull = lang => {
try {
Expand All @@ -13,22 +13,19 @@ const convertToLocaleOrNull = lang => {
};

/**
* Returns the locale based on the configured language Configuration#getLanguage
* Returns the locale based on the parameter or configured language Configuration#getLanguage
* If no language has been configured - a new locale based on browser language is returned
*/
const getLocale = () => {
const getLocale = lang => {
if (lang) {
return convertToLocaleOrNull(lang);
}

if (getConfigLanguage()) {
return new Locale(getConfigLanguage());
}

return convertToLocaleOrNull(detectNavigatorLanguage());
};

/**
* Returns the language of #getLocale return value
*/
const getLanguage = () => {
return getLocale().sLanguage;
};

export { getLocale, getLanguage };
export default getLocale;
27 changes: 27 additions & 0 deletions packages/base/src/locale/getLocaleData.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
import getLocale from "./getLocale.js";
import { fetchCldr } from "../asset-registries/LocaleData.js";

const instances = new Map();

/**
* Fetches and returns а LocaleData object for the required locale
* For more information on this object's API, please see:
* https://ui5.sap.com/#/api/sap.ui.core.LocaleData
*
* @param lang - if left empty, will use the configured/current locale
* @returns {LocaleData}
*/
const getLocaleData = async lang => {
const locale = getLocale(lang);
const localeLang = locale.getLanguage();

if (!instances.has(localeLang)) {
await fetchCldr(locale.getLanguage(), locale.getRegion(), locale.getScript());
instances.set(localeLang, LocaleData.getInstance(locale));
}

return instances.get(localeLang);
};

export default getLocaleData;
2 changes: 1 addition & 1 deletion packages/base/src/shims/Core-shim.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { inject as injectCore } from "@ui5/webcomponents-utils/dist/sap/ui/core/Core.js";
import { getLocale } from "../LocaleProvider.js";
import getLocale from "../locale/getLocale.js";
import { getLanguage } from "../config/Language.js";
import { getCalendarType } from "../config/CalendarType.js";
import getDesigntimePropertyAsArray from "../util/getDesigntimePropertyAsArray.js";
Expand Down
5 changes: 5 additions & 0 deletions packages/main/bundle.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ import "@ui5/webcomponents-base/dist/features/calendar/Persian.js";
// ESM bundle targets Edge + browsers with native support
import "@ui5/webcomponents-base/dist/features/browsersupport/Edge.js";

// CLDR
import getLocaleData from "@ui5/webcomponents-base/dist/locale/getLocaleData.js";

// Icons
import "@ui5/webcomponents-icons/dist/Assets.js";

Expand Down Expand Up @@ -69,6 +72,7 @@ import CustomListItem from "./dist/CustomListItem.js";
import GroupHeaderListItem from "./dist/GroupHeaderListItem.js";



// used in test pages
import RenderScheduler from "@ui5/webcomponents-base/dist/RenderScheduler.js";
window.RenderScheduler = RenderScheduler;
Expand All @@ -93,4 +97,5 @@ window["sap-ui-webcomponents-bundle"] = {
getFirstDayOfWeek,
},
getIconNames,
getLocaleData,
};
2 changes: 1 addition & 1 deletion packages/main/src/Calendar.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
import CalendarDate from "@ui5/webcomponents-base/dist/dates/CalendarDate.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/main/src/DatePicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
import { getFeature } from "@ui5/webcomponents-base/dist/FeaturesRegistry.js";
import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/main/src/DayPicker.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
import { fetchCldr } from "@ui5/webcomponents-base/dist/asset-registries/LocaleData.js";
import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
import { getFirstDayOfWeek } from "@ui5/webcomponents-base/dist/config/FormatSettings.js";
import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/main/src/MonthPicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
import { isSpace, isEnter } from "@ui5/webcomponents-base/dist/events/PseudoEvents.js";
import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js";
import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
import CalendarType from "@ui5/webcomponents-base/dist/dates/CalendarType.js";
import CalendarDate from "@ui5/webcomponents-base/dist/dates/CalendarDate.js";
import ItemNavigationBehavior from "@ui5/webcomponents-base/dist/types/ItemNavigationBehavior.js";
Expand Down
2 changes: 1 addition & 1 deletion packages/main/src/YearPicker.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import LocaleData from "@ui5/webcomponents-utils/dist/sap/ui/core/LocaleData.js"
import { getCalendarType } from "@ui5/webcomponents-base/dist/config/CalendarType.js";
import { isEnter, isSpace } from "@ui5/webcomponents-base/dist/events/PseudoEvents.js";
import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
import { getLocale } from "@ui5/webcomponents-base/dist/LocaleProvider.js";
import getLocale from "@ui5/webcomponents-base/dist/locale/getLocale.js";
import Integer from "@ui5/webcomponents-base/dist/types/Integer.js";
import DateFormat from "@ui5/webcomponents-utils/dist/sap/ui/core/format/DateFormat.js";
import CalendarType from "@ui5/webcomponents-base/dist/dates/CalendarType.js";
Expand Down

0 comments on commit c9253a6

Please sign in to comment.