mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
using System;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using Orchard.Environment.Extensions;
|
|
using Orchard.Localization.Services;
|
|
|
|
namespace Orchard.Localization.Selectors {
|
|
[OrchardFeature("Orchard.Localization.CutlureSelector")]
|
|
public class BrowserCultureSelector : ICultureSelector {
|
|
private readonly Lazy<ICultureManager> _cultureManager;
|
|
|
|
public BrowserCultureSelector(
|
|
Lazy<ICultureManager> cultureManager) {
|
|
_cultureManager = cultureManager;
|
|
}
|
|
|
|
public CultureSelectorResult GetCulture(HttpContextBase context) {
|
|
if (context == null) return null;
|
|
|
|
/* Fall back to Browser */
|
|
var userLanguages = context.Request.UserLanguages;
|
|
|
|
if (userLanguages == null || !userLanguages.Any())
|
|
return null;
|
|
|
|
var cultures = _cultureManager.Value.ListCultures().ToList();
|
|
|
|
foreach (var userLanguage in userLanguages
|
|
.Select(ul => ul.Split(';')[0].Trim())) {
|
|
|
|
if (cultures.Contains(userLanguage, StringComparer.OrdinalIgnoreCase)) {
|
|
return new CultureSelectorResult { Priority = -4, CultureName = CultureInfo.CreateSpecificCulture(userLanguage).Name };
|
|
}
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
} |