normalizeLanguageForSTT function

SttLanguageResult normalizeLanguageForSTT(
  1. String? language
)

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);
}