gpt4 book ai didi

xaml - ResourceLoader 在 ViewModel 中返​​回错误的语言

转载 作者:行者123 更新时间:2023-12-03 10:44:29 25 4
gpt4 key购买 nike

我正在使用 Template10 制作 UWP 应用程序,目前我的项目中有这个文件夹结构用于本地化:

Localization
|_en
| |_Resources.resw
|_it-IT
|_Resources.resw

默认的应用程序语言是 en,而我目前的文化是 it-IT。
资源文件是正确的,并且通过应用程序的行为是一致的,总是首先显示意大利语版本。

我在 View 后面的代码中使用 ResourceLoader 类就好了,但只要我在 ViewModel 中使用它,它总是返回英文本地化,即使它不存在(= 空字符串,虽然它存在于意大利语文件中) .

我在 VM 中使用它是因为我正在创建一个新角色并给它一个默认名称(“无名称”),作为用户的占位符,将名称绑定(bind)到 View 中。

这是我使用的代码:

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,但不知何故框架忽略了它。
我究竟做错了什么?

最佳答案

我找到了问题的根源:
在模型内部,为了简单起见,在我删减了代码的方法中,我从应用程序中包含的 XML 文件中为“Character”对象加载了一些数据。

在该方法中,我将文化更改为 InvariantCulture 以确保格式独立于用户的格式。
在该方法结束时,我将其更改回用户的文化,但出现了一些问题。

该问题发生在我进行双重交换之后,并且随后反射(reflect)到整个软件,即使对于来自 View 的本地化字符串也是如此。

这个问题不依赖于 ViewModel,我会解决这个问题,如果我找不到任何东西,我会发布一个新问题。

关于xaml - ResourceLoader 在 ViewModel 中返​​回错误的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com