gpt4 book ai didi

c# - 是否有关于如何为 .net 应用程序本地化组织非字符串资源的指南?

转载 作者:太空宇宙 更新时间:2023-11-03 14:14:22 26 4
gpt4 key购买 nike

假设

My.dll 
- Resources
- MyResources.resx
embeds MyFile.ext with key MyFile
- MyResources.de.resx
should embed MyFile.de.ext with key MyFile

我试过使用搜索引擎但无济于事。

我发现除非两个 resx 文件都在同一个文件夹中,否则整个区域性转换机制出于某种原因将无法工作。因此,我想拥有一个名为 de 的子文件夹,其中包含 resX 和所有链接的资源,这打消了我的想法。

My.dll
- Resources
- MyResources.resx
- MyResources.de.resx
- en-US
- all en-US non-string resources
- de
- all de non-string resources

对于 de 版本,我复制粘贴了中性 (en-US) 版本。然后,我必须手动删除 en-US [Res],添加 de [Res],然后为每个非字符串资源(例如图像、csv 或其他文件)重命名)

这是应该如何完成的吗?

最佳答案

I find that unless both resx files are in the same folder, the whole culture switching mechanism doesn't work for some reason. So that killed my idea to have a subfolder called de containing the resX and all linked resources.

没错。这是因为当您将 .RESX 文件移动到其他文件夹时,VS 自动生成 .resx 生成的类的命名空间名称作为 .RESX 文件的完整路径。 IE。如果 LocResources.resx 位于 $PROJECT$\MyResources\de\文件夹中,则自动生成的类完整类型名称将为 $PROJECT_BASE_NAMESPACE$.MyResources.de.LocResources。

这里的关键 1 是每个 .RESX 的嵌入式资源名称将等于其代码隐藏类型全名 + '.resources'。

这里的关键 2 是使用基于卫星程序集的本地化(默认),ResourceManager 通过其(静态)全名加载资源,但每种语言都来自不同的卫星程序集。

因此,如果您将 xxx.de.resx 移出存储所有 .RESX 的文件夹,此资源的命名空间(和嵌入式资源 名称)将被更改,ResourceManager 将无法在其中找到它卫星组件。

关于c# - 是否有关于如何为 .net 应用程序本地化组织非字符串资源的指南?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6936821/

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