.NET 4.0 C#项目的本地化基本上如下:
MyCompany.Resources.dll
包含两个RESX文件:A.resx
和B.resx
及其本地化版本(A_de.resx
,B_hu.resx
等)。这些文件由通常的RESX xml elemens组成,如<data name="key" xml:space="preserve"><value>value</value></data>
MyCompany.Common.dll
包含一个公共(单例)类MyCompanyResourceManager
,其中有两种方法可以按键访问A.resx
和B.resx
中的本地化值,例如{{1} }和GetA(string key)
。
只要C#代码中有一个需要本地化的字符串,我们手动使用XML编辑器(Visual Studio)打开GetB(string key)
或A.resx
资源编辑器搞砸了xml中的内容,使用新密钥在XML文档中添加新的B.resx
标记,在C#代码中,我们手动通过调用{替换字符串{1}}(或<data>
)。
这项工作可以通过ReSharper中的代码片段和实时模板加速,但我觉得需要一个更好的解决方案来实现这个&#34;工作流程&#34; (而不是本地化机制,不能改变:))。这就是为什么要编写一个ReSharper插件来执行重复部分的原因。我想要实现的目标:
MyCompanyResourceManager.Instance.GetA(...)
和GetB(...)
Localize in A
标记放在相应的RESX文件中,并使用适当的方法调用字符串文字。如果需要,导入Localize in B
类的命名空间,并在需要时引用其程序集。 (引用程序集不是必须的,因为可以假设<data>
在任何地方都被引用)可选功能(使插件更广泛使用):
我的问题/问题:
提前致谢!