normalizePreserveEmpty = function(sLocale, bPreserveLanguage) {
		// empty string is valid and should not be normalized
		if (sLocale === "") {
			return sLocale;
		}
		var sNormalizedLocale = normalize(sLocale, bPreserveLanguage);
		if (sNormalizedLocale === undefined) {
			throw new TypeError("Locale '" + sLocale + "' is not a valid BCP47 language tag");
		}
		return sNormalizedLocale;
	}
Normalizes the given locale, unless it is an empty string (<code>""</code>).

When locale is an empty string (<code>""</code>), it is returned without normalization.
@see normalize
@param {string} sLocale locale (aka 'language tag') to be normalized.
	   Can either be a BCP47 language tag or a JDK compatible locale string (e.g. "en-GB", "en_GB" or "fr");
@param {boolean} [bPreserveLanguage=false] whether to keep the language untouched, otherwise
    the language is mapped from modern to legacy ISO639 codes, e.g. "he" to "iw"
@returns {string} normalized locale
@throws {TypeError} Will throw an error if the locale is not a valid BCP47 language tag.
@private