react-native-localize
Version:
A toolbox for your React Native app localization.
2 lines • 2.67 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.constants=exports.handlers=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _constants=require("./constants");function getCountryCode(languageTagParts){return languageTagParts[1]==="419"?"UN":languageTagParts[1];}function getLocaleFromLanguageTag(languageTag,countryCodeFallback){var splitted=languageTag.split("-");var languageCode=splitted[0];var countryCode=getCountryCode(splitted)||countryCodeFallback;return{languageCode:languageCode,countryCode:countryCode,languageTag:languageCode+"-"+countryCode,isRTL:_constants.USES_RTL_LAYOUT.includes(languageCode)};}function getFirstCountryCode(languageTags){for(var i=0;i<languageTags.length;i++){var countryCode=getCountryCode(languageTags[i].split("-"));if(countryCode){return countryCode;}}}function generateConstants(languageTags){var countryCode=getFirstCountryCode(languageTags);var locales=[];var currencies=[];languageTags.forEach(function(languageTag){var locale=getLocaleFromLanguageTag(languageTag,countryCode);var currency=_constants.CURRENCIES[locale.countryCode];if(!locales.find(function(_){return _.languageTag===locale.languageTag;})){locales.push(locale);}if(currency&&!currencies.includes(currency)){currencies.push(currency);}});if(currencies.length===0){currencies.push("USD");}var numberFormatter=new Intl.NumberFormat(locales[0].languageTag);var dateFormatter=new Intl.DateTimeFormat(locales[0].languageTag,{hour:"numeric"});var numberSeparators=(0,_toConsumableArray2.default)(numberFormatter.format(1000000.1).replace(/\d/g,""));var numberFormatSettings={decimalSeparator:numberSeparators[numberSeparators.length-1],groupingSeparator:numberSeparators[0]};var eveningDate=new Date(2000,0,1,20);var uses24HourClock=!!dateFormatter.format(eveningDate).match(/am|pm/i);return{calendar:"gregorian",country:countryCode,currencies:currencies,locales:locales,numberFormatSettings:numberFormatSettings,temperatureUnit:_constants.USES_FAHRENHEIT.includes(countryCode)?"fahrenheit":"celsius",timeZone:dateFormatter.resolvedOptions().timeZone||"Etc/UTC",uses24HourClock:uses24HourClock,usesMetricSystem:!_constants.USES_IMPERIAL.includes(countryCode)};}var handlers=new Set();exports.handlers=handlers;var constants=generateConstants(navigator.languages);exports.constants=constants;window.addEventListener("languagechange",function(){exports.constants=constants=generateConstants(navigator.languages);handlers.forEach(function(handler){return handler();});});
//# sourceMappingURL=module.web.js.map