我有一个包含 14 个翻译和 12 个文件的解决方案,“资源”文件夹有点失控。有没有办法将翻译后的文件放在不同的文件夹中,以便我可以更轻松地访问母版英文文件?
我注意到您可以通过设置自定义工具命名空间来更改生成设计器文件的命名空间,但我还不知道如何从不同的文件夹中获取翻译。我玩弄了使用链接来制作“快捷方式”文件夹和“真实”文件夹的想法,但是您不能链接到项目结构中的文件,也不能在项目结构之外两次链接到同一个文件.我考虑过根据语言更改 ResourceManager 使用的 namespace ,但这会破坏回退行为。
有什么方法可以管理它,使其不再是解决方案资源管理器中的一大堆文件?
最佳答案
假设您想将所有已翻译的 .resx 文件放在 Translations
文件夹中,如下所示(请注意,我保留了默认 和en 根文件夹中的版本):
然后您需要做的就是编辑 MSBuild 项目文件(从 Visual Studio 中,右键单击项目节点,“卸载项目”,然后“编辑 xxx.csproj”),然后重新配置此文件夹中的每个 Resx 文件像这样:
之前:
<ItemGroup>
...
<EmbeddedResource Include="Resource1.en.resx" />
<EmbeddedResource Include="Translations\Resource1.fr.resx" />
<EmbeddedResource Include="Resource1.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resource1.Designer.cs</LastGenOutput>
</EmbeddedResource>
...
</ItemGroup>
之后:
<ItemGroup>
...
<EmbeddedResource Include="Resource1.en.resx" />
<EmbeddedResource Include="Translations\Resource1.fr.resx">
<ManifestResourceName>$(TargetName).%(Filename)</ManifestResourceName> <!-- add this for all .resx files in a custom folder -->
</EmbeddedResource>
<EmbeddedResource Include="Resource1.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resource1.Designer.cs</LastGenOutput>
</EmbeddedResource>
...
</ItemGroup>
它的作用是指示底层 MSBuild 任务使用您指定的 list 名称,而不是自动生成 list 名称。自动生成的总是使用 RESX 所在的文件夹布局,这不是我们想要的。
编译完成后,最终的附属ConsoleApplication1.resources.dll
文件会像往常一样放在fr
文件夹中,但其内容和resx一样文件放在根文件夹中。
关于.net - 将翻译后的 resx 文件放在 Visual Studio 中的不同文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33007969/