function normalize(sLocale, bPreserveLanguage) {

		var m;
		if ( typeof sLocale === 'string' && (m = rLocale.exec(sLocale.replace(/_/g, '-'))) ) {
			var sLanguage = m[1].toLowerCase();
			if (!bPreserveLanguage) {
				sLanguage = M_ISO639_NEW_TO_OLD[sLanguage] || sLanguage;
			}
			var sScript = m[2] ? m[2].toLowerCase() : undefined;
			var sRegion = m[3] ? m[3].toUpperCase() : undefined;
			var sVariants = m[4] ? m[4].slice(1) : undefined;
			var sPrivate = m[6];
			// recognize and convert special SAP supportability locales (overwrites m[]!)
			if ( (sPrivate && (m = rSAPSupportabilityLocales.exec(sPrivate)))
				|| (sVariants && (m = rSAPSupportabilityLocales.exec(sVariants))) ) {
				return "en_US_" + m[1].toLowerCase(); // for now enforce en_US (agreed with SAP SLS)
			}
			// Chinese: when no region but a script is specified, use default region for each script
			if ( sLanguage === "zh" && !sRegion ) {
				if ( sScript === "hans" ) {
					sRegion = "CN";
				} else if ( sScript === "hant" ) {
					sRegion = "TW";
				}
			}
			if (sLanguage === "sr" && sScript === "latn") {
				if (bPreserveLanguage) {
					sLanguage = "sr_Latn";
				} else {
					sLanguage = "sh";
				}
			}
			return sLanguage + (sRegion ? "_" + sRegion + (sVariants ? "_" + sVariants.replace("-","_") : "") : "");
		}
	}
/**
	 * Helper to normalize the given locale (in BCP-47 syntax) to the java.util.Locale format.
	 *
	 * @param {string} sLocale Locale to normalize
	 * @param {boolean} [bPreserveLanguage=false] Whether to keep the language untouched, otherwise
	 *     the language is mapped from modern to legacy ISO639 codes, e.g. "sr" to "sh"
	 * @returns {string} Normalized locale or undefined if the locale can't be normalized
	 * @private
	 */
Helper to normalize the given locale (in BCP-47 syntax) to the java.util.Locale format.
@param {string} sLocale Locale to normalize
@param {boolean} [bPreserveLanguage=false] Whether to keep the language untouched, otherwise
the language is mapped from modern to legacy ISO639 codes, e.g. "sr" to "sh"
@returns {string} Normalized locale or undefined if the locale can't be normalized
@private
Helper to normalize the given locale ( in BCP - 47 syntax ) to the java . util . Locale format . @param { string } sLocale Locale to normalize @param { boolean } [ bPreserveLanguage = false ] Whether to keep the language untouched otherwise the language is mapped from modern to legacy ISO639 codes e . g . " sr " to " sh " @returns { string } Normalized locale or undefined if the locale can ' t be normalized @private
function normalize(sLocale, bPreserveLanguage) {
		var m;
		if ( typeof sLocale === 'string' && (m = rLocale.exec(sLocale.replace(/_/g, '-'))) ) {
			var sLanguage = m[1].toLowerCase();
			if (!bPreserveLanguage) {
				sLanguage = M_ISO639_NEW_TO_OLD[sLanguage] || sLanguage;
			}
			var sScript = m[2] ? m[2].toLowerCase() : undefined;
			var sRegion = m[3] ? m[3].toUpperCase() : undefined;
			var sVariants = m[4] ? m[4].slice(1) : undefined;
			var sPrivate = m[6];
			if ( (sPrivate && (m = rSAPSupportabilityLocales.exec(sPrivate)))
				|| (sVariants && (m = rSAPSupportabilityLocales.exec(sVariants))) ) {
				return "en_US_" + m[1].toLowerCase(); 
			}
			if ( sLanguage === "zh" && !sRegion ) {
				if ( sScript === "hans" ) {
					sRegion = "CN";
				} else if ( sScript === "hant" ) {
					sRegion = "TW";
				}
			}
			if (sLanguage === "sr" && sScript === "latn") {
				if (bPreserveLanguage) {
					sLanguage = "sr_Latn";
				} else {
					sLanguage = "sh";
				}
			}
			return sLanguage + (sRegion ? "_" + sRegion + (sVariants ? "_" + sVariants.replace("-","_") : "") : "");
		}
	}
function normalize ( sLocale , bPreserveLanguage ) { var m ; if ( typeof sLocale === 'string' && ( m = rLocale . exec ( sLocale . replace ( / _ / g , '-' ) ) ) ) { var sLanguage = m [ 1 ] . toLowerCase ( ) ; if ( ! bPreserveLanguage ) { sLanguage = M_ISO639_NEW_TO_OLD [ sLanguage ] || sLanguage ; } var sScript = m [ 2 ] ? m [ 2 ] . toLowerCase ( ) : undefined ; var sRegion = m [ 3 ] ? m [ 3 ] . toUpperCase ( ) : undefined ; var sVariants = m [ 4 ] ? m [ 4 ] . slice ( 1 ) : undefined ; var sPrivate = m [ 6 ] ; if ( ( sPrivate && ( m = rSAPSupportabilityLocales . exec ( sPrivate ) ) ) || ( sVariants && ( m = rSAPSupportabilityLocales . exec ( sVariants ) ) ) ) { return "en_US_" + m [ 1 ] . toLowerCase ( ) ; } if ( sLanguage === "zh" && ! sRegion ) { if ( sScript === "hans" ) { sRegion = "CN" ; } else if ( sScript === "hant" ) { sRegion = "TW" ; } } if ( sLanguage === "sr" && sScript === "latn" ) { if ( bPreserveLanguage ) { sLanguage = "sr_Latn" ; } else { sLanguage = "sh" ; } } return sLanguage + ( sRegion ? "_" + sRegion + ( sVariants ? "_" + sVariants . replace ( "-" , "_" ) : "" ) : "" ) ; } }
Helper to normalize the given locale (in BCP-47 syntax) to the java.util.Locale format.
Helper to normalize the given locale ( in BCP - 47 syntax ) to the java . util . Locale format .
// recognize and convert special SAP supportability locales (overwrites m[]!) // for now enforce en_US (agreed with SAP SLS) // Chinese: when no region but a script is specified, use default region for each script