Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于如何组织用于.net应用本地化的非字符串资源,是否有任何指导原则?_C#_.net_Localization_Internationalization - Fatal编程技术网

C# 对于如何组织用于.net应用本地化的非字符串资源,是否有任何指导原则?

C# 对于如何组织用于.net应用本地化的非字符串资源,是否有任何指导原则?,c#,.net,localization,internationalization,C#,.net,Localization,Internationalization,假定 我试过使用搜索引擎,但没用 我发现,除非两个resx文件都在同一个文件夹中,否则由于某种原因,整个区域性切换机制不起作用。因此,这就扼杀了我的想法,即创建一个名为de的子文件夹,其中包含resX和所有链接的资源 My.dll - Resources - MyResources.resx embeds MyFile.ext with key MyFile - MyResources.de.resx should embed MyFile.de.ext with ke

假定

我试过使用搜索引擎,但没用

我发现,除非两个resx文件都在同一个文件夹中,否则由于某种原因,整个区域性切换机制不起作用。因此,这就扼杀了我的想法,即创建一个名为
de
的子文件夹,其中包含resX和所有链接的资源

My.dll 
- Resources
  - MyResources.resx
    embeds MyFile.ext with key MyFile
  - MyResources.de.resx
    should embed MyFile.de.ext with key MyFile
对于
de
版本,我复制粘贴中性(
en-US
)版本。然后,我必须手动删除
en-US
[Res],添加
de
[Res],然后为每个非字符串资源(例如图像、csv或其他文件)重命名

应该这样做吗

我发现,除非两个resx文件都在同一个文件夹中,否则整个 由于某种原因,文化转换机制不起作用。以便 让一个名为de的子文件夹包含resX和 所有相关资源

My.dll 
- Resources
  - MyResources.resx
    embeds MyFile.ext with key MyFile
  - MyResources.de.resx
    should embed MyFile.de.ext with key MyFile
没错。这是因为当您将.RESX文件移动到其他文件夹时,VS会自动为.RESX生成的类生成命名空间名称,作为.RESX文件的完整路径。即,如果LocResources.resx位于$PROJECT$\MyResources\de\文件夹中,则自动生成的类完整类型名称将为$PROJECT\u BASE\u NAMESPACE$.MyResources.de.LocResources

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

这里的关键2是使用基于附属程序集(默认)的本地化,ResourceManager按其(静态)全名加载资源,但从每种语言的不同附属程序集加载资源


因此,如果将xxx.de.resx移出存储所有.resx的文件夹,则此资源的命名空间(和嵌入的资源名称)将更改,ResourceManager将无法在附属程序集中找到它。

Aha!我忘记了-在类型的全名中嵌入文件夹名称。谢谢有关于组织内容文件的指南的链接吗?我不记得有,但是定义它很容易:当你将一个资源文件(图像等)添加到.resx中时,VS将该文件存储在Resources文件夹中,这些文件对于所有语言都应该有唯一的名称。因此:不要将.resx文件存储在资源项目文件夹中(以免弄乱.resx和资源),并在项目中保持资源名称的唯一性。