deps/v8/src/js/i18n.js
function toTitleCaseTimezoneLocation(location) {
  var match = InternalRegExpMatch(GetTimezoneNameLocationPartRE(), location)
  if (IS_NULL(match)) throw MakeRangeError(kExpectedLocation, location);

  var result = toTitleCaseWord(match[1]);
  if (!IS_UNDEFINED(match[2]) && 2 < match.length) {
    // The first character is a separator, '_' or '-'.
    // None of IANA zone names has both '_' and '-'.
    var separator = %_Call(StringSubstring, match[2], 0, 1);
    var parts = %_Call(StringSplit, match[2], separator);
    for (var i = 1; i < parts.length; i++) {
      var part = parts[i]
      var lowercasedPart = %StringToLowerCase(part);
      result = result + separator +
          ((lowercasedPart !== 'es' &&
            lowercasedPart !== 'of' && lowercasedPart !== 'au') ?
          toTitleCaseWord(part) : lowercasedPart);
    }
  }
  return result;
}
function toTitleCaseTimezoneLocation(location) {
  var match = InternalRegExpMatch(GetTimezoneNameLocationPartRE(), location)
  if (IS_NULL(match)) throw MakeRangeError(kExpectedLocation, location);

  var result = toTitleCaseWord(match[1]);
  if (!IS_UNDEFINED(match[2]) && 2 < match.length) {
    // The first character is a separator, '_' or '-'.
    // None of IANA zone names has both '_' and '-'.
    var separator = %_Call(StringSubstring, match[2], 0, 1);
    var parts = %_Call(StringSplit, match[2], separator);
    for (var i = 1; i < parts.length; i++) {
      var part = parts[i]
      var lowercasedPart = %StringToLowerCase(part);
      result = result + separator +
          ((lowercasedPart !== 'es' &&
            lowercasedPart !== 'of' && lowercasedPart !== 'au') ?
          toTitleCaseWord(part) : lowercasedPart);
    }
  }
  return result;
}
Returns titlecased location, bueNos_airES -> Buenos_Aires
or ho_cHi_minH -> Ho_Chi_Minh. It is locale-agnostic and only
deals with ASCII only characters.
'of', 'au' and 'es' are special-cased and lowercased.