toLocale function
Parses an underscore-separated locale string (e.g. en_US, zh_Hans_CN)
into a Locale. Returns en_US when locale is null, empty, or
fails to parse.
Implementation
Locale toLocale(String? locale) {
const defaultLocale = Locale('en', 'US');
if (locale == null || locale.isEmpty) {
return defaultLocale;
}
try {
final parts = locale.split('_');
switch (parts.length) {
case 1:
return Locale(parts[0]);
case 2:
return Locale(parts[0], parts[1]);
default:
return Locale.fromSubtags(
languageCode: parts[0],
scriptCode: parts.length > 1 ? parts[1] : null,
countryCode: parts.length > 2 ? parts[2] : null,
);
}
} catch (e) {
return defaultLocale;
}
}