我需要考虑以下几点(如果我漏掉了一些显而易见的东西,请告诉我):
- 字符串(菜单、文本)
- 输入数据(解析浮点数、日期等)
- 应该很容易地添加对另一种语言的支持
对于字符串,你应该将字符串与代码分开(使用一个XML/DLL文件来将字符串ID转换为实际字符串是一种方法)。但是,你需要确保支持某些语言的双字节字符(如果你使用C/C++的话,这很重要)。
对于输入数据,你需要有不同的区域设置。在Java中,这相对容易,如果你使用C#,那么也可能很容易。在C/C++中,我不太清楚。基本思想是根据当前选择的区域设置,输入解析器应该是不同的。因此,每个字段(文本字段、文本框等)必须有一个抽象解析器,然后根据区域设置(从右到左、双字节等)由不同的类来实现。
查看Java实现的详细信息。它非常实用。
你绝对需要使用.NET ResourceManager和resx文件xml格式,但是有许多方法可以使用它。
这实际上取决于你想要实现什么。对我来说,我想要一个单一的xml资源文件(每种支持的语言一个),任何人都可以修改它。我创建了一个帮助类,将全局资源文件加载到ResourceManager中(仅一次),并且我有一个帮助函数,为给定名称提供所需的资源。这种方法的唯一缺点是我无法利用资源对属性的动态绑定。
我发现这比为每个表单使用多个或嵌入式资源文件更好、更容易管理。此外,完全相同的方法也可以在ASP.NET应用程序中使用。我还发现这种方法意味着外包资源翻译和向客户提供语言包更加可管理。