pickLocale function
Locale resolution (same rule as the web widget and the agent app):
explicit preferred → site default unless auto → device language
starting with en → English, everything else Vietnamese.
Implementation
HatangLocale pickLocale({String? preferred, String siteDefault = 'auto', String? deviceLanguage}) {
final p = HatangLocale.tryParse(preferred);
if (p != null) return p;
final s = HatangLocale.tryParse(siteDefault);
if (s != null) return s;
return (deviceLanguage ?? '').toLowerCase().startsWith('en') ? HatangLocale.en : HatangLocale.vi;
}