resolve method
Resolving intl recognizable String by the given locale.
The pattern of returned String for resolved locale should
be either (language) or (language)_(COUNTRY).
The flow of resolve should be followed in this order:
- If
localeis nulled already, it just return null back. - If
localeprovided it's country code already, the generated String will refer it directly. - Otherwise, it try to find the corresponded country code by isAssigned and apply as a country code.
- When the given
locale's country code is undefined, no country code is applied.
For example, using default assigned value: zh_Hant to apply DateFormat setting:
final resolvedStr = IntlScriptRecognizer.resolve(const Locale("zh", "Hant")));
print(DateFormat.yMMMMd(resolvedStr) // Applied as `zh_TW` instead
.add_E()
.format(DateTime.now()));
The returned DateFormat result will obey the given country code instead of fallback
by intl library.
Implementation
String? resolve(Locale? locale) {
if (locale == null) {
return null;
}
StringBuffer buf = StringBuffer()..write(locale.languageCode);
if (locale.countryCode != null) {
buf.write("_${locale.countryCode}");
} else if (isAssigned(locale)) {
buf.write("_${_localCountryMapper[locale]}");
}
return buf.toString();
}