Я пытался выяснить эту причудливую проблему, возникающую при использовании библиотеки i18n в моем проекте ASP.NET, работающем в браузерах мобильных устройств.Локализация работает на настольных компьютерах, я могу переключать языки, например, мой язык по умолчанию - «fr», и я могу выбрать «en» без проблем на рабочем столе.
/ fr -> покажет «fr» в настольном браузере / en -> покажет «en» в настольном браузере
Проблема в том, что я пытаюсь получить доступ к веб-сайту на мобильном телефонебраузер устройства.Я всегда получу язык "fr", независимо от того, что меняю на "en"
/ fr -> в мобильных браузерах будет отображаться "fr" / en -> в мобильных браузерах будет отображаться "fr"
Что бы я ни делал, я всегда буду видеть только язык FR.URL действительно изменяется, НО перевод не происходит.Ниже приведен код, который я использую в своем файле global.asax.cs:
protected void Application_Start(object sender, EventArgs e)
{
// Blacklist certain URLs from being 'localized'.
i18n.UrlLocalizer.QuickUrlExclusionFilter = new System.Text.RegularExpressions.Regex(@"((sitemap\.xml|\.css|\.less|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.svg|\.woff|\.woff2|\.ttf|\.eot)$)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
// Change from the default of 'en'.
i18n.LocalizedApplication.Current.DefaultLanguage = "fr";
// Change from the of temporary redirects during URL localization
i18n.LocalizedApplication.Current.PermanentRedirects = true;
i18n.LocalizedApplication.Current.SetPrincipalAppLanguageForRequestHandlers = delegate (System.Web.HttpContextBase context, ILanguageTag langtag)
{
// Do own stuff with the language tag.
// The default handler does the following:
if (langtag != null)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = langtag.GetCultureInfo();
}
};
}
В моем файле web.config есть следующее:
<add key="i18n.DirectoriesToScan" value="..;web" />
<add key="i18n.AvailableLanguages" value="fr;en;" />
<add key="i18n.DefaultLanguage" value="fr" />
<add key="i18n.WhiteList" value="*.aspx;*.ascx;*.cs;*.cshtml;*.sitemap;*.Master;*.master;" />
<add key="i18n.BlackList" value=".\assets;.\bower_components;.\obj;" />
<add key="i18n.VisualizeMessages" value="false" />
<add key="i18n.NuggetVisualizeToken" value="!" />
, и у меня есть простой выпадающий список для переключения URL-адресов.из / фр в / ан и наоборот.
Кто-нибудь знает, что я здесь не так делаю?Браузеры для настольных компьютеров работают нормально, мобильные браузеры - нет, спасибо большое.