Kentico ResHelper.GetString возвращает неправильный перевод - PullRequest
0 голосов
/ 19 октября 2018

Культура контента по умолчанию на моем сайте 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

Если это проблема, как я могу изменить это?

Обновление: я думал, что это может быть связано с этой проблемой, но Thread.CurrentThread.CurrentCulture также возвращает де-де

Другое обновление:

ResHelper.GetString("Key", CMS.Localization.LocalizationContext.CurrentCulture.CultureCode); возвращает немецкий перевод

Действительно хорошее обновление:

Благодаря Брендену Керену я сузил его.Когда я вызываю функцию в веб-части следующим образом, проблема не возникает:

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

Но когда я вызываю ее в веб-сервисе, проблема возникает именно из этого!

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

ResHelper.GetString работает от культуры интерфейса пользователя по умолчанию, если не может определить предпочтительную культуру.Я не уверен, как выглядит ваш веб-сервис, и в зависимости от того, что вы отправляете ему в своих запросах, вам, скорее всего, не хватает файлов cookie, которые задают культуру.

Кроме предоставления кода культурысебя:

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

Возможно, вы захотите посмотреть настройку культуры пользовательского интерфейса по умолчанию в web.config .

Культура интерфейса пользователя по умолчанию -нас.Если вы сконфигурируете систему для использования большего количества культур пользовательского интерфейса, вы можете изменить стандартную культуру пользовательского интерфейса для пользователей, добавив следующий ключ в раздел <appSettings> файла web.config вашего сайта:

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

0 голосов
/ 19 октября 2018

Он возвращает английский текст, потому что у вас есть английский текст в немецком поле.Ваши настройки звучат правильно, кажется, проблема с вводом данных на основе вашего скриншота.

ОБНОВЛЕНИЕ
Исходя из нового скриншота и обновленного вопроса, тестируете ли вы свой сайт для посетителей в новом закрытом окне?Если в приложении «Страницы» установлен язык «Английский» для редактирования и просмотра сайта в том же браузере / новой вкладке, на нем будет отображаться английский язык.Если вы измените язык в этом браузере на действующем сайте, он также обновит CMS при следующем обновлении страницы.Поэтому всегда проводите тестирование в частном окне браузера, чтобы исключить возможности кэширования или старых файлов cookie.

ОБНОВЛЕНИЕ 2
Чтобы это работало правильно, вам необходимо получить доступ к веб-службе в контекстепользователя.Это означает, что если пользователь находится на сайте и загружает страницу, система будет знать, в какой культуре находится пользователь. Принимая во внимание, что если вы используете его в запланированном задании, которое не запускается в контексте навигации пользователя по сайту,поэтому вам нужно будет указать культуру, в которой можно получить значение.

...