2012-12-15 17 views
2

在我的应用程序(可能还有很多其他应用程序)中,我想使用本地化。 但是,我不知道什么是管理几乎相同的字符串的最佳方式。如何管理C#/ WPF中看起来相似的本地化字符串?

一些问题:

  1. 当一个按钮“编辑”作为菜单名称,菜单项的名字,我应该让两个资源字符串(同等价值“编辑”),或者只有1?
  2. 当屏幕上有一个编辑按钮,并且我想使用Alt键时,字符串需要是“_Edit”,我应该为此创建一个单独的资源字符串吗?
  3. 如果还有一个显示新页面的按钮,那么(对于我的约定),该值应该是“_Edit ...”?

回答

3

这不是一个快速的答案话题(本地化),但我会尽力至少回答您的问题:

1)是的,即使不是强制性的,最好保持分隔每个文本。如果你改变其中一个,你就不会冒险去改变它们(也许用不同的语言,它们必须根据它们的上下文而用不同的东西来翻译)。

2)绝对是的。想象一下你有这些字符串:_Edit_Mark as read。例如,在意大利语中,它们将被翻译为_ModificaSegna come già letto。对于这两种字符串,您都不能在同一封信中添加“_”,这是翻译人员应该关注的问题。

3)我建议不要。至于1)尽量保持不同的字符串分开(出于同样的原因,我之前说过)。如果您想节省翻译费用(谁不需要?),您可以编写一个程序来预分析字符串,以产生一个“标准化”输出给翻译人员(它会在可能的情况下删除重复项并合并相似的字符串)。但是你应该让你的程序不知道细节。

总结:不,不要尝试在程序内合并(类似)字符串。如果你真的需要它,那么它将通过一个外部程序来完成(它甚至可以考虑来自不同模块的字符串,因此它会做得更好),并且只在适用时(对于情况3是可能的,对于情况1和2绝对不)。

+0

感谢您的精心解答......我认为您的观点非常真实。我可能也会选择3,因为我不需要为本地化付费。我使用“志愿者”进行翻译,因为我的项目本身也是一个“爱好项目”,虽然它的规模相当大。 –

+1

@MichelKeijzers我同意,即使没有这些细节,国际化也很复杂。至少你会移动复杂的地方(如果)需要。 –

3

是的,你应该制作单独的资源字符串。您正在使用“编辑”这个词在英文中描述应用程序中的不同动作。然而,在另一种语言中,这些行为可能用不同的词语来描述(一种可能是“编辑”,而另一种可能是“改变”)。 所以你需要为你的菜单和按钮分配不同的字符串。

2

1)你应该有利于抽象解耦:你有两个概念:一个“版”和行动“编辑”,所以是有意义的有两个单独的字符串,因为在英文以外的其他语言中,“编辑/编辑”不能被接受。

2)在这里,你只有一个概念,两种不同的格式,所以只有一个字符串和一个转换规则(“_”+ myString)有意义。

3)它取决于:这个按钮所触发的动作是否与上面的概念完全相同:如果是,请使用相同的字符串,如果不使用两个。

所有这些都是一般考虑和你当然应该使其适应您的需求:

  • 如果你真的要支持无语言前期然后按照这些原则,他们应该已经在本地化过程中自然出现过程

  • 如果你期待的是在未来的某个地方可能要支持非英语另一种语言,你有很多现在,那么你可能不会花太多时间试图完美地完成任务,因为有很多的机会,它将是无为的,时间可以花费更好的增强或增加核心功能

相关问题