gpt4 book ai didi

c# - GetResourceSet 不加载回退值

转载 作者:太空狗 更新时间:2023-10-29 17:56:09 27 4
gpt4 key购买 nike

我有两个文件:Resources.resx 和 Resources.de.resx。

enter image description here

Resources.de.resx 仅包含一个翻译后的值。我正在使用以下方法加载所有资源键/值:

        ResourceSet resourceSet = Resources.ResourceManager.GetResourceSet(Thread.CurrentThread.CurrentCulture, true, true);

当我第一次加载资源集时,我的 Thread.CurrentThread.CurrentCulture.Name 是空字符串,Thread.CurrentThread.CurrentCulture.NativeName = "Invariant Language (Invariant Country)", Thread.CurrentThread.CurrentCulture.LCID = 127。

因此,资源集有 200 个键,其值按预期从 Resources.resx 加载。然后,我使用以下通过单击按钮触发的代码切换当前文化:

        Thread.CurrentThread.CurrentCulture = new CultureInfo("de");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;

当我现在加载资源集时,资源集中只有一个键。它是来自 Resources.de.resx 的翻译 key 。但我仍然希望有 200 个键,只有一个项目翻译成德语 (de)。

当前德语(德)文化的父文化与我第一次调用获取资源集的方法时相同的不变语言文化。基本上,由于某些原因,回退似乎不起作用。你能告诉我我做错了什么吗?

最佳答案

您必须从不变文化中获取所有键,然后才能查找所有翻译。所以回退有效。

查找到的资源可以存储在字典中。

var keys = Resources.ResourceManager
.GetResourceSet(CultureInfo.InvariantCulture, true, true)
.Cast<DictionaryEntry>()
.Select(entry => entry.Key)
.Cast<string>();

var enUsResources = keys.ToDictionary(
key => key,
key => Resources.ResourceManager.GetString(key, CultureInfo.GetCultureInfo("de")));

关于c# - GetResourceSet 不加载回退值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786931/

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