首页 > 解决方案 > 在移动设备浏览器上使用 i18n for ASP.NET

问题描述

我一直试图找出在移动设备浏览器上运行的 ASP.NET 项目中使用 i18n 库时遇到的这个奇怪问题。本地化适用于台式计算机,我可以切换语言,例如,我的默认语言是“fr”,我可以选择更改为“en”,而不会在台式机上出现任何问题。

/fr -> 将在桌面浏览器上显示“fr” /en -> 将在桌面浏览器上显示“en”

问题是当我尝试在移动设备浏览器上访问该网站时。无论更改为“en”,我都会得到“fr”语言

/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 从 /fr 切换到 /en,反之亦然。

有谁知道我在这里做错了什么?桌面浏览器工作正常,移动浏览器不行,非常感谢。

标签: c#asp.netinternationalization

解决方案


推荐阅读