Xamarin — на конкретном КОМПЬЮТЕРЕ ResourceManager.getString () всегда возвращает строку для CultureInfo по умолчанию

#c# #xamarin

#c# #xamarin

Вопрос:

В моем приложении Xamarin я использую два файла .resx в качестве переводов: Translation.resx для польского языка (по умолчанию) и Translation.en.resx для английского.

Переключение UICulture реализовано и отлично работает на нескольких ПК-эмуляторах Android, но у нас есть один компьютер, на котором это работает не так, как ожидалось.

Для этого конкретного КОМПЬЮТЕРА при cultureInfo = {en} вызове ResourceManager.GetString(text, cultureInfo); ВСЕГДА возвращается строка перевода из ресурса по умолчанию (из Translation.resx) вместо Translation.en.resx.

Все компьютеры используют Win10, VS2019, одни и те же версии Xamarin SDK и эмулятор Android, запущенный код из одного и того же репозитория — все то же самое, и все же на одном компьютере это работает не так, как ожидалось.

Не могли бы вы, пожалуйста, дать мне несколько советов, где искать решение проблемы, что проверять и т.д.?

Комментарии:

1. Как вы проверяете настройку CultureInfo?

2. Если вы возвращаете HTTP, укажите язык в заголовке : developer.mozilla.org/en-US/docs/Web/HTTP/Headers /…

3. UWP или Android?

4. @Jason — android

5. вы уверены, что эмулятор Android на этом конкретном компьютере настроен идентично другим?

Ответ №1:

Я исправил проблему с ПК, мне пришлось:

  • переустановите Xamarin SDK и эмулятор Android (версии не изменились)
  • добавьте полностью новое устройство эмулятора в VS (настройки по умолчанию)
  • извлеките свежий репозиторий git в новое местоположение — даже если в коде вообще не было изменений.

Комментарии:

1. Вы можете отметить этот ответ позже, который поможет большему количеству людей с такой же проблемой :).