Kentico ResHelper.GetString 返回错误的翻译

Kentico ResHelper.GetString returning wrong translation

我的 Kentico 11 网站的默认内容文化和访问者文化都设置为德语。当我检查页面的设置选项卡时,我可以看到他们的文化也设置为德语。当我在调试器中放置一个断点并检查 LocalizationContext.CurrentCulture 的值时,它也是 returns 德语。

我在 web.config 中还有以下设置:

<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="de-DE" uiCulture="en-US" />

但是,ResHelper.GetString只有returns英文翻译。

我猜这是因为不知何故在本地化模块中,英语仍然是默认语言:

如果这是问题所在,我该如何更改?

更新:我认为这可能与 this 问题有关,但 Thread.CurrentThread.CurrentCulture 也返回 de-De

另一个更新:

ResHelper.GetString("Key", CMS.Localization.LocalizationContext.CurrentCulture.CultureCode); returns 德语翻译

更新真不错:

感谢 Brenden Kehren,我缩小了范围。当我像这样在 webpart 中调用该函数时,没有问题:

<%# CMS.Helpers.ResHelper.GetString("key") %>

但是当我在网络服务中调用它时,这就是问题的来源!

它正在返回英文文本,因为您在德语字段中有英文文本。您的设置听起来正确,根据您的屏幕截图,似乎是数据输入问题。

更新
根据新的屏幕截图和更新的问题,您是否在新的私人 window 中测试您的访问者网站?如果您将 Pages 应用程序中的文化设置为英语以进行编辑,并在同一 browser/new 选项卡中查看网站,它将显示英语。如果您在实时站点上更改该浏览器的语言,它也会在下次刷新整个页面时更新 CMS。因此,始终在私人浏览器中进行测试 window 以消除缓存或旧 cookie 的可能性。

更新 2
为了使其正常工作,您需要在用户上下文中访问 Web 服务。这意味着如果用户在网站上并加载页面,系统将知道用户所处的文化。而如果您在计划任务中使用它,则不会 运行 在用户的上下文中浏览网站,因此您需要指定获取价值的文化。

ResHelper.GetString 如果无法确定首选文化,则使用默认的 UI 文化。我不确定您的网络服务是什么样的,并且根据您在请求中发送给它的内容,您很可能缺少设置文化的 cookie。

除了自己提供文化代码之外:

GetString(string stringName, string culture = null, bool useDefaultCulture = true)

您可能想看看 setting the default UI culture in the web.config

The default UI culture is en-us. If you configure the system to allow more UI cultures to be used, you can change the default UI culture for users by adding the following key to the <appSettings> section of your site's web.config file:

<add key="CMSDefaultUICulture" value="en-nz" />