public static string GetBestLanguage(HttpRequest request, string fallback = null)
{
if (request.UserLanguages == null || request.UserLanguages.Length == 0)
{
return I18NComplete.DefaultWorkingLanguage;
}
foreach (string lang in request.UserLanguages)
{
string language = string.IsNullOrWhiteSpace(lang) ? I18NComplete.DefaultWorkingLanguage : lang;
int languageHash = string.IsNullOrWhiteSpace(lang) ? I18NComplete.DefaultWorkingLanguageLCID : LCID(language);
if (Localizations.ContainsKey(languageHash))
return lang;
string fragment = language.Split('-')[0];
if (Localizations.ContainsKey(fragment.GetHashCode()))
return fragment;
}
return fallback ?? I18NComplete.DefaultWorkingLanguage;
}