1

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

  1. MyCompany.Resources.dll包含两个 RESX 文件:A.resx以及B.resx它们的本地化对应文件(A_de.resxB_hu.resx等)。这些文件由通常的 RESX xml 元素组成,例如<data name="key" xml:space="preserve"><value>value</value></data>

  2. MyCompany.Common.dll包含一个公共(单例)类,该类MyCompanyResourceManager具有两种方法,用于通过键访问本地化值,例如A.resx和。B.resxGetA(string key)GetB(string key)

  3. 无论 C# 代码中有什么字符串需要本地化,我们手动打开A.resx或者B.resx使用 XML 编辑器(Visual Studio 资源编辑器搞砸了 xml 中的某些内容),<data>使用新键向 XML 文档添加新标签,在 C# 代码中,我们手动将字符串替换为对MyCompanyResourceManager.Instance.GetA(...)(or GetB(...)) 的调用。

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

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

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

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

我的问题/疑问:

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

提前致谢!

4

0 回答 0