我一直在使用 Thread.CurrentThread.CurrentUICultureSystem.ThreadingSystem.Globalization ,现在手动设置我的 ASP.net 页面使用的语言,主要是带有 Razor 的 WebForms 和 WebPages。

MSDN: Thread.CurrentThread.CurrentUICulture

我最近阅读了一个使用 Page.UICulture 代替的教程(实际上,UICulture 似乎是强类型的)。令我惊讶的是,我最终得到了完全相同的结果;他们都更改了我网站的 ui 语言设置并读取了正确的资源文件。

MSDN: Page.UICulture

对我来说, Thread.CurrentUICulture 更有意义(我是凭直觉这么说的,因为它实际上是“改变当前线程的文化”)。

但是调用 Page.Culture 更容易,并且不需要调用另一对 ASP.net using ,所以我现在已经解决了这个解决方案。

两者之间有根本区别还是完全可以互换?

我担心的原因是我有一堆旧网站是用第一种方法开发的,如果我贸然更新为第二种方法,我担心会遇到互换性冲突。

注意 :我通常在我的工作中关注 UICulture 并且 Culture 对我的工作非常有用,但我是为他们两个问这个问题。

最佳答案

Page.UICultureThread.CurrentThread 属性的包装器,供内部 .NET 框架使用:

查看 source code ,您可以清楚地看到:

public string UICulture
{
    set
    {
        CultureInfo newUICulture = null;

        if(StringUtil.EqualsIgnoreCase(value, HttpApplication.AutoCulture))
        {
            CultureInfo browserCulture = CultureFromUserLanguages(false);
            if(browserCulture != null)
            {
                newUICulture = browserCulture;
            }
        }
        else if(StringUtil.StringStartsWithIgnoreCase(value, HttpApplication.AutoCulture))
        {
            CultureInfo browserCulture = CultureFromUserLanguages(false);
            if(browserCulture != null)
            {
                newUICulture = browserCulture;
            }
            else
            {
                try
                {
                    newUICulture = HttpServerUtility.CreateReadOnlyCultureInfo(value.Substring(5));
                }
                catch {}
            }
        }
        else
        {
            newUICulture = HttpServerUtility.CreateReadOnlyCultureInfo(value);
        }

        if (newUICulture != null)
        {
            Thread.CurrentThread.CurrentUICulture = newUICulture;
            _dynamicUICulture = newUICulture;
        }
    }
    get { return Thread.CurrentThread.CurrentUICulture.DisplayName; }
}

关于c# - Page.Culture 与 Thread.CurrentThread.CurrentCulture,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30107420/

10-11 10:39