有没有更好的方法来管理本地化字符串?

时间:2013-01-14 17:11:43

标签: c# .net localization resourcemanager

我在一个产品上工作,我们不得不担心本地化问题。目前,这是我必须使用(或添加)本地化字符串时的工作流程:

  1. 搜索resources.resx文件(包含数百个项目)
  2. 如果找到,则复制名称。否则,添加新字符串并复制名称
  3. 然后,使用ResourceFactory.ResourceMgr.GetString("MY_MAGIC_STRING")(其中ResourceMgr只是ResourceManager的静态字段)
  4. 任何琴弦的这3个步骤都是一个真正的痛苦。是否有任何模式或方法可以使此过程更容易?

2 个答案:

答案 0 :(得分:5)

自动生成的文件可以更方便地使用 - 将RESX文件的“自定义工具”设置为PublicResXFileCodeGenerator

代码如下:

using MyProject.Resources;
...
localizedText = Resources.SomeReasonableName;

附注:

  • 拥有多个RESX文件以及自动生成的ID具有智能感知的额外好处,可为您提供合理数量的选择。
  • 取决于如何处理翻译,您最好不要担心RESX文件中的重复文本(除了OK /取消种类的字符串)。在翻译时处理重复的字符串可能更容易。

答案 1 :(得分:0)

这个Java解决方案可能会给你一些想法: http://rodionmoiseev.github.com/c10n/

我们的想法是使用接口方法上的注释将翻译存储在源代码本身中。然后,通过使用特殊实用程序,您可以动态创建代理(动态实现接口的类),这些代理在调用接口方法时将返回本地化字符串值。

这样,"MY_MAGIC_STRING"会被MyMagicString()方法调用所取代,这会为您提供一些拼写/类型安全性,并使其更加友好地重构。