ICU: Update to version 70.1

This commit is contained in:
bruvzg 2021-10-28 09:15:28 +03:00
parent 157cba3933
commit 44a241b241
173 changed files with 10272 additions and 8071 deletions

View file

@ -313,29 +313,29 @@ public:
LocaleDisplayNamesImpl(const Locale& locale, UDisplayContext *contexts, int32_t length);
virtual ~LocaleDisplayNamesImpl();
virtual const Locale& getLocale() const;
virtual UDialectHandling getDialectHandling() const;
virtual UDisplayContext getContext(UDisplayContextType type) const;
virtual const Locale& getLocale() const override;
virtual UDialectHandling getDialectHandling() const override;
virtual UDisplayContext getContext(UDisplayContextType type) const override;
virtual UnicodeString& localeDisplayName(const Locale& locale,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& localeDisplayName(const char* localeId,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& languageDisplayName(const char* lang,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& scriptDisplayName(const char* script,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& scriptDisplayName(UScriptCode scriptCode,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& regionDisplayName(const char* region,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& variantDisplayName(const char* variant,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& keyDisplayName(const char* key,
UnicodeString& result) const;
UnicodeString& result) const override;
virtual UnicodeString& keyValueDisplayName(const char* key,
const char* value,
UnicodeString& result) const;
UnicodeString& result) const override;
private:
UnicodeString& localeIdName(const char* localeId,
UnicodeString& result, bool substitute) const;
@ -407,7 +407,7 @@ struct LocaleDisplayNamesImpl::CapitalizationContextSink : public ResourceSink {
virtual ~CapitalizationContextSink();
virtual void put(const char *key, ResourceValue &value, UBool /*noFallback*/,
UErrorCode &errorCode) {
UErrorCode &errorCode) override {
ResourceTable contexts = value.getTable(errorCode);
if (U_FAILURE(errorCode)) { return; }
for (int i = 0; contexts.getKeyAndValue(i, key, value); ++i) {
@ -723,11 +723,25 @@ LocaleDisplayNamesImpl::localeIdName(const char* localeId,
return result;
}
}
if (substitute) {
return langData.get("Languages", localeId, result);
} else {
return langData.getNoFallback("Languages", localeId, result);
langData.getNoFallback("Languages", localeId, result);
if (result.isBogus() && uprv_strchr(localeId, '_') == NULL) {
// Canonicalize lang and try again, ICU-20870
// (only for language codes without script or region)
Locale canonLocale = Locale::createCanonical(localeId);
const char* canonLocId = canonLocale.getName();
if (nameLength == UDISPCTX_LENGTH_SHORT) {
langData.getNoFallback("Languages%short", canonLocId, result);
if (!result.isBogus()) {
return result;
}
}
langData.getNoFallback("Languages", canonLocId, result);
}
if (result.isBogus() && substitute) {
// use key, this is what langData.get (with fallback) falls back to.
result.setTo(UnicodeString(localeId, -1, US_INV)); // use key (
}
return result;
}
UnicodeString&
@ -742,10 +756,22 @@ LocaleDisplayNamesImpl::languageDisplayName(const char* lang,
return adjustForUsageAndContext(kCapContextUsageLanguage, result);
}
}
if (substitute == UDISPCTX_SUBSTITUTE) {
langData.get("Languages", lang, result);
} else {
langData.getNoFallback("Languages", lang, result);
langData.getNoFallback("Languages", lang, result);
if (result.isBogus()) {
// Canonicalize lang and try again, ICU-20870
Locale canonLocale = Locale::createCanonical(lang);
const char* canonLocId = canonLocale.getName();
if (nameLength == UDISPCTX_LENGTH_SHORT) {
langData.getNoFallback("Languages%short", canonLocId, result);
if (!result.isBogus()) {
return adjustForUsageAndContext(kCapContextUsageLanguage, result);
}
}
langData.getNoFallback("Languages", canonLocId, result);
}
if (result.isBogus() && substitute == UDISPCTX_SUBSTITUTE) {
// use key, this is what langData.get (with fallback) falls back to.
result.setTo(UnicodeString(lang, -1, US_INV)); // use key (
}
return adjustForUsageAndContext(kCapContextUsageLanguage, result);
}