ResourceLoader returns ViewModel 中的语言错误
ResourceLoader returns wrong language inside ViewModel
我正在使用 Template10 制作一个 UWP 应用程序,目前我的项目中有这个文件夹结构用于本地化:
Localization
|_en
| |_Resources.resw
|_it-IT
|_Resources.resw
应用默认语言是en,我现在的文化是it-IT。
资源文件正确且行为在整个应用程序中保持一致,始终首先显示意大利语版本。
我在 View 的代码后面使用 ResourceLoader class 就好了,但只要我在 ViewModel 中使用它,它总是 returns 英文本地化,即使它没有存在(= 空字符串,尽管它存在于意大利语文件中)。
我在 VM 中使用它是因为我正在创建一个新角色并给它一个默认名称 ("No name"),作为用户的占位符,将名称绑定到视图中。
这是我使用的代码:
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() 方法时,当前的文化是 it-IT 但框架以某种方式忽略了它。
我做错了什么?
我找到了问题的根源:
在模型内部,为了简单起见,我在代码中使用了一种方法,我从应用程序中包含的 XML 个文件中为 "Character" 对象加载了一些数据。
在该方法中,我将区域性更改为 InvariantCulture 以确保格式独立于用户的格式。
在该方法的最后,我将其改回用户的文化,但有些地方出了问题。
这个问题发生在我进行双重交换之后,它会在之后反映到整个软件,即使是来自视图的本地化字符串也是如此。
这个问题不依赖于 ViewModel,我会解决这个问题,如果我找不到任何东西,我会 post 一个新问题。
我正在使用 Template10 制作一个 UWP 应用程序,目前我的项目中有这个文件夹结构用于本地化:
Localization
|_en
| |_Resources.resw
|_it-IT
|_Resources.resw
应用默认语言是en,我现在的文化是it-IT。 资源文件正确且行为在整个应用程序中保持一致,始终首先显示意大利语版本。
我在 View 的代码后面使用 ResourceLoader class 就好了,但只要我在 ViewModel 中使用它,它总是 returns 英文本地化,即使它没有存在(= 空字符串,尽管它存在于意大利语文件中)。
我在 VM 中使用它是因为我正在创建一个新角色并给它一个默认名称 ("No name"),作为用户的占位符,将名称绑定到视图中。
这是我使用的代码:
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() 方法时,当前的文化是 it-IT 但框架以某种方式忽略了它。 我做错了什么?
我找到了问题的根源: 在模型内部,为了简单起见,我在代码中使用了一种方法,我从应用程序中包含的 XML 个文件中为 "Character" 对象加载了一些数据。
在该方法中,我将区域性更改为 InvariantCulture 以确保格式独立于用户的格式。 在该方法的最后,我将其改回用户的文化,但有些地方出了问题。
这个问题发生在我进行双重交换之后,它会在之后反映到整个软件,即使是来自视图的本地化字符串也是如此。
这个问题不依赖于 ViewModel,我会解决这个问题,如果我找不到任何东西,我会 post 一个新问题。