function getOptimalLanguageTag(original, resolved) {
  // Returns Array<Object>, where each object has maximized and base properties.
  // Maximized: zh -> zh-Hans-CN
  // Base: zh-CN-u-ca-gregory -> zh-CN
  // Take care of grandfathered or simple cases.
  if (original === resolved) {
    return original;
  }

  var locales = %GetLanguageTagVariants([original, resolved]);
  if (locales[0].maximized !== locales[1].maximized) {
    return resolved;
  }

  // Preserve extensions of resolved locale, but swap base tags with original.
  var resolvedBase = new GlobalRegExp('^' + locales[1].base, 'g');
  return InternalRegExpReplace(resolvedBase, resolved, locales[0].base);
}
function getOptimalLanguageTag(original, resolved) {
  
  
  
  
  if (original === resolved) {
    return original;
  }

  var locales = %GetLanguageTagVariants([original, resolved]);
  if (locales[0].maximized !== locales[1].maximized) {
    return resolved;
  }

  
  var resolvedBase = new GlobalRegExp('^' + locales[1].base, 'g');
  return InternalRegExpReplace(resolvedBase, resolved, locales[0].base);
}
function getOptimalLanguageTag ( original , resolved ) { // Returns Array<Object>, where each object has maximized and base properties. // Maximized: zh -> zh-Hans-CN // Base: zh-CN-u-ca-gregory -> zh-CN // Take care of grandfathered or simple cases. if ( original === resolved ) { return original ; } var locales = % GetLanguageTagVariants ( [ original , resolved ] ) ; if ( locales [ 0 ] . maximized !== locales [ 1 ] . maximized ) { return resolved ; } // Preserve extensions of resolved locale, but swap base tags with original. var resolvedBase = new GlobalRegExp ( '^' + locales [ 1 ] . base , 'g' ) ; return InternalRegExpReplace ( resolvedBase , resolved , locales [ 0 ] . base ) ; }
It's sometimes desireable to leave user requested locale instead of ICU
supported one (zh-TW is equivalent to zh-Hant-TW, so we should keep shorter
one, if that was what user requested).
This function returns user specified tag if its maximized form matches ICU
resolved locale. If not we return ICU result.
It s sometimes desireable to leave user requested locale instead of ICU supported one ( zh - TW is equivalent to zh - Hant - TW so we should keep shorter one if that was what user requested ) . This function returns user specified tag if its maximized form matches ICU resolved locale . If not we return ICU result .