使用ReSharper 8.2 SDK在C#中使用上下文操作自定义本地化重构

时间:2014-05-19 08:22:48

标签: c# xml resharper resharper-8.0 resharper-sdk

.NET 4.0 C#项目的本地化基本上如下:

  1. MyCompany.Resources.dll包含两个RESX文件:A.resxB.resx及其本地化版本(A_de.resxB_hu.resx等)。这些文件由通常的RESX xml elemens组成,如<data name="key" xml:space="preserve"><value>value</value></data>

  2. MyCompany.Common.dll包含一个公共(单例)类MyCompanyResourceManager,其中有两种方法可以按键访问A.resxB.resx中的本地化值,例如{{1} }和GetA(string key)

  3. 只要C#代码中有一个需要本地化的字符串,我们手动使用XML编辑器(Visual Studio)打开GetB(string key)A.resx资源编辑器搞砸了xml中的内容,使用新密钥在XML文档中添加新的B.resx标记,在C#代码中,我们手动通过调用{替换字符串{1}}(或<data>)。

  4. 这项工作可以通过ReSharper中的代码片段和实时模板加速,但我觉得需要一个更好的解决方案来实现这个&#34;工作流程&#34; (而不是本地化机制,不能改变:))。这就是为什么要编写一个ReSharper插件来执行重复部分的原因。我想要实现的目标:

    • 当插入符号位于C#代码中的字符串文字时,提供上下文操作MyCompanyResourceManager.Instance.GetA(...)GetB(...)
    • 当我选择其中任何一个时,弹出一个对话框以提示用户在RESX中使用该密钥
    • 将新的Localize in A标记放在相应的RESX文件中,并使用适当的方法调用字符串文字。如果需要,导入Localize in B类的命名空间,并在需要时引用其程序集。 (引用程序集不是必须的,因为可以假设<data>在任何地方都被引用)
    • 打开所选的RESX文件以查看更改

    可选功能(使插件更广泛使用):

    • 设置页面指定RESX文件(甚至两个以上),相应的方法调用以及包含这些方法的类
    • 在提示密钥之前,在所选的RESX文件中搜索字符串文字,以防它已经本地化

    我的问题/问题:

    • 我有点迷失在ReSharper SDK reference及其不完整的文档中,所以关于可用类/接口的全面材料/教程会很棒(如果有的话)
    • 如何使用ReSharper API在Visual Studio中打开项目/解决方案文件?
    • 如何使用ReSharper API处理XML文件?示例上下文操作是反向字符串操作,因此访问插入符号下的文字是可以的。
    • 我应该为此方案使用上下文操作还是重构?
    • 如何从上下文操作开始重构?
    • 从哪里开始,应该很好地理解该任务的API?

    提前致谢!

0 个答案:

没有答案