Kentico ResHelper.GetString返回错误的翻译

时间:2018-10-19 08:06:22

标签: kentico

我的Kentico 11网站的“默认内容”文化和“访客”文化都设置为德语。当我检查页面的设置选项卡下时,我可以看到它们的区域性也设置为德语。当我在调试器中放置一个断点并检查LocalizationContext.CurrentCulture的值时,它也会返回德语。

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

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

但是,ResHelper.GetString仅返回英语翻译。

我猜是因为在本地化模块中,英语仍然是默认语言: enter image description here

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

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

另一个更新:

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

非常好的更新:

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

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

但是当我在Web服务中调用它时,这就是问题所在!

2 个答案:

答案 0 :(得分:1)

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

更新
基于新的屏幕截图和更新的问题,您是否正在新的私有窗口中测试访问者网站?如果您在Pages应用程序中将区域性设置为英语进行编辑,并在同一浏览器/新标签页中查看该网站,它将显示英语。如果您在实时站点上的该浏览器中更改语言,则下次刷新整个页面时,它还将更新CMS。因此,请始终在专用浏览器窗口中进行测试,以消除缓存或旧Cookie的可能性。

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

答案 1 :(得分:1)

ResHelper.GetString如果无法确定首选的区域性,则可以使用默认的UI区域性。我不确定您的网络服务是什么样的,并且根据您在请求中向其发送的内容,您很可能会丢失设置文化的cookie。

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

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

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

  

默认的UI文化是en-us。如果您将系统配置为允许使用更多的UI文化,则可以通过向站点的web.config文件的<appSettings>部分添加以下密钥,来为用户更改默认的UI文化:

     

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