Я создаю приложение UWP с Template10, и в настоящее время у меня есть такая структура папок внутри моего проекта для локализации:
Localization
|_en
| |_Resources.resw
|_it-IT
|_Resources.resw
Язык приложения по умолчанию - en, а моя текущая культура - it-IT. Файлы ресурсов верны, и поведение в приложении одинаково, сначала всегда отображается итальянская версия.
Я использую класс ResourceLoader внутри кода View, но пока я использую его внутри ViewModel, он всегда возвращает английскую локализацию, даже если она не существует (= пустая строка, хотя она существует в итальянском файле) .
Я использую его внутри виртуальной машины, потому что я создаю нового персонажа и даю ему имя по умолчанию («Без имени») в качестве заполнителя для пользователя, привязывая имя внутри представления.
Это код, который я использую:
public class CharacterManagerViewModel : ViewModelBase
{
public Character Character { get; set; }
private ResourceLoader loader = new ResourceLoader();
public override async void OnNavigatedTo(object parameter, NavigationMode mode, IDictionary<string, object> state)
{
if (parameter == null)
{
//Creating a default empty character
Character = new Character();
Character.Name = loader.GetString("NewCharacterName");
}
else
{
//Loading from the Model
}
}
}
Когда я вызываю метод GetString (), текущая культура - это ИТ, но каким-то образом фреймворк игнорирует это. Что я делаю неправильно?
ResourceLoader.GetForCurrentView()
- person Kevin Gosse   schedule 27.10.2015