【问题标题】:How to get and set cultureInfo如何获取和设置cultureInfo
【发布时间】:2020-04-09 15:17:59
【问题描述】:

我在页面上使用带有用户控件的 Umbraco 7。我为法国(例如但许多其他国家/地区)构建了一些 resx 文件

在页面加载时我有以下代码

var cultureInfo = System.Globalization.CultureInfo.GetCultureInfo("fr-FR");
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
System.Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo;

我的模板默认设置为href lang="en"。文化和主机名设置为inherited,但我永远无法将文化设置为我想要的?

例子

我的网站结构是

site.com/parent/child

当用户到达包含控件的子页面时,我要翻译数据。

我想测试法国的数据。我在页面加载时执行上面的代码,该代码被硬编码为法国(我可以稍后将其更改为动态),仅用于测试。

目前我通过法国加载数据,它显示法国数据,因为它与 fr-FR 一起保存在数据库中。

我面临的问题是我的 resx 文件包含法语文本,并且从不显示在控件上。它以英文显示。

所以标签文本的标记代码类似于

<asp:label runat="server" id="lblSayHello" Text="<% Resources:Resource SayHello%>" />

所以我在页面加载时设置和硬编码语言,我希望看到 Bonjour,但我看到的是 hello(来自默认的 Resource.resx 文件)。 Bonjour 是我对不显示的 fr-FR resx 文件的文本。

我该怎么做?

【问题讨论】:

    标签: c# asp.net umbraco umbraco7 cultureinfo


    【解决方案1】:

    转到您的设置选项卡并在语言文件夹中添加新的文化/语言。

    然后为您的模板设置文化/主机名,或者模板继承其文化/主机名。

    【讨论】:

    • 我添加了语言,即法国和德国。我如何在代码隐藏的模板中设置它?理想情况下,我有一个我想用于两个国家/地区的用户控件,因此当他们到达 site.com/parent/child 时,子页面会按国家/地区加载数据?谢谢
    • 请注意确定 umbraco 7 的可行性,看看插件调用 Vorto。失败了,您将如何输入两种语言的内容,以便我了解您的需求。
    • 每个国家的数据将存储在数据库中。我正在使用国家语言存储数据,即 de-DE fr-FR 我想做的是当用户到达时,他们通过父页面上的按钮/下拉菜单选择国家(请参阅前面的评论)。这会将它们放在子页面上。所以我可以从数据库中加载数据,但为了显示每种语言的一些标题,我将它们存储在 resx 文件中。这是我无法加载的信息?希望这有点道理?
    • 啊,我明白了,我不确定设置文化是否是正确的方法。由于它是在服务器端设置的,因此您可以让多个用户以不同的语言查看同一个子页面。我认为将语言存储在会话或 cookie 中,然后在检查用户会话或 cookie 后读取控制器中的数据
    • 感谢您,我可以尝试将其添加到会话中。我将它添加到页面加载只是为了测试它,但如果它有效,我可以将它更改为会话。我面临的问题是,当我将它设置为如上所述的页面加载时,它不会从我的 resx 文件中获取法语翻译,它默认为英语。如果我可以让它与法语一起工作,我可以相应地改变它吗?谢谢
    猜你喜欢
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多