code: public ULocale canonicalize(ULocale ulocale) {
          // TODO Get the data from CLDR, use Java conventions.
          String lang = ulocale.getLanguage();
          String lang2 = canonicalMap.get(lang);
          String script = ulocale.getScript();
          String script2 = canonicalMap.get(script);
          String region = ulocale.getCountry();
          String region2 = canonicalMap.get(region);
          if (lang2 != null || script2 != null || region2 != null) {
              return new ULocale(
                  lang2 == null ? lang : lang2,
                      script2 == null ? script : script2,
                          region2 == null ? region : region2
                  );
          }
          return ulocale;
      }
docs: Canonicalize a locale (language). Note that for now, it is canonicalizing
  according to CLDR conventions (he vs iw, etc), since that is what is needed
  for likelySubtags.
  @param ulocale language/locale code
  @return ULocale with remapped subtags.