normalizeLanguageForSTT function
Normalize a language preference string to a BCP-47 code supported by the voice-stream STT endpoint.
Returns the default language (en) when language is null, empty, or
cannot be resolved. When a non-empty but unsupported value is given,
SttLanguageResult.fellBackFrom carries the original string so callers
can surface a warning.
Implementation
SttLanguageResult normalizeLanguageForSTT(String? language) {
if (language == null || language.isEmpty) {
return const SttLanguageResult(code: _defaultSttLanguage);
}
final lower = language.toLowerCase().trim();
if (lower.isEmpty) {
return const SttLanguageResult(code: _defaultSttLanguage);
}
if (_supportedLanguageCodes.contains(lower)) {
return SttLanguageResult(code: lower);
}
final fromName = _languageNameToCode[lower];
if (fromName != null) {
return SttLanguageResult(code: fromName);
}
final base = lower.split('-').first;
if (base.isNotEmpty && _supportedLanguageCodes.contains(base)) {
return SttLanguageResult(code: base);
}
return SttLanguageResult(code: _defaultSttLanguage, fellBackFrom: language);
}