ra-core
Version:
Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React
86 lines • 3.17 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
import merge from 'lodash/merge';
import { DEFAULT_LOCALE } from './index';
/**
* Resolve the browser locale according to the value of the global window.navigator
*
* Use it to determine the <Admin> locale at runtime.
*
* @example
* import * as React from "react";
* import { Admin, Resource, resolveBrowserLocale } from 'react-admin';
* import polyglotI18nProvider from 'ra-i18n-polyglot';
* import englishMessages from 'ra-language-english';
* import frenchMessages from 'ra-language-french';
*
* const messages = {
* fr: frenchMessages,
* en: englishMessages,
* };
* const i18nProvider = polyglotI18nProvider(
* locale => messages[locale] ? messages[locale] : messages.en,
* resolveBrowserLocale()
* );
*
* const App = () => (
* <Admin i18nProvider={i18nProvider}>
* ...
* </Admin>
* );
*
* @param {string} defaultLocale Defaults to 'en'
* @param options
* @param {boolean} options.fullLocale Defaults to false
*/
export var resolveBrowserLocale = function (defaultLocale, options) {
// from http://blog.ksol.fr/user-locale-detection-browser-javascript/
// Rely on the window.navigator object to determine user locale
var _a = window.navigator, language = _a.language, browserLanguage = _a.browserLanguage, userLanguage = _a.userLanguage;
var locale = language ||
browserLanguage ||
userLanguage ||
defaultLocale ||
DEFAULT_LOCALE;
return (options === null || options === void 0 ? void 0 : options.fullLocale) ? locale : locale.split('-')[0];
};
/**
* Compose translations from multiple packages for a single language (eg: 'english').
*
* Use it to merge translations from addons with the main react-admin translations.
*
* @example
* import * as React from "react";
* import { Admin, Resource, mergeTranslations } from 'react-admin';
* import polyglotI18nProvider from 'ra-i18n-polyglot';
* import englishMessages from 'ra-language-english';
* import englishTreeMessages from 'ra-tree-language-english';
*
* const messages = {
* en: mergeTranslations(englishMessages, englishTreeMessages),
* };
* const i18nProvider = polyglotI18nProvider(
* locale => messages[locale] ? messages[locale] : messages.en
* );
*
* const App = () => (
* <Admin i18nProvider={i18nProvider}>
* ...
* </Admin>
* );
*/
export var mergeTranslations = function () {
var translationsModules = [];
for (var _i = 0; _i < arguments.length; _i++) {
translationsModules[_i] = arguments[_i];
}
return merge.apply(void 0, __spreadArray([{}], translationsModules, false));
};
//# sourceMappingURL=TranslationUtils.js.map