【问题标题】:asp.net multiligual website culture settingsasp.net 多语言网站文化设置
【发布时间】:2010-01-18 06:02:19
【问题描述】:

在英语英国和瑞典语的 asp.net 多语言网站中,我有三个 rsources 文件

1. en-GB.resx
2. sv-SE.resx
3. Culture neutral file.

我创建了一个基类,所有页面都继承自该类。在那里我写了以下几行来设置 UICULTURE 和文化

1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture.Name;
2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name;

问题:假设我的浏览器语言是瑞典语(sv-SE),那么这段代码会运行,因为它找到了CurrentUICulture and CurrentCulture values as sv-SE.

现在如果假设浏览器语言仅为瑞典语(sv),在这种情况下,值将设置为

CurrentUICulture = sv; and CurrentCulture = sv-SE

现在的问题是用户可以查看我保存为英文的文化中性资源文件中的所有文本,而所有小数点、货币和其他都将以瑞典语显示。 对 usr 来说,这看起来很混乱。

什么是正确的方法。我正在考虑以下解决方案。请纠正我?

1. i can create extra resource file for sv also.
2. I check value of CurrentUICulture in base class and if it is sv then replace it with sv-SE

请纠正我哪个是正确的方法或者还有其他好的方法吗?

【问题讨论】:

    标签: asp.net multilingual


    【解决方案1】:

    您可以像您提到的那样轻松替换基类中的值。我会远离创建一个复制数据的额外资源文件,因为它更难维护。

     if (Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToLower() != "sv")
          ...replace with sv-SE
    

    编辑查看其他问题]1 了解更多信息。该问题的答案中引用了一篇好文章

    【讨论】:

    • 我认为也不需要检查。因为我们已经有了带有 CultureInfo.CurrentCulture.Name 的 sv-SE;我可以像这样为两者分配这个值 1. Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture.Name; 2. Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture.Name 你说什么?
    • 如果您不需要在一种文化中使用数字而在另一种文化中使用文本,那么您绝对可以这样做。
    猜你喜欢
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2011-06-07
    • 2016-09-07
    相关资源
    最近更新 更多