C# 如何最好地将整个应用程序本地化为多种不同的语言?
我正在使用VisualStudio(2005年及以后)。我正在尝试制作一个应用程序,用户可以更改所有菜单、输入格式等的语言。如果我认为.Net中有一些完整的功能可以帮助我解决这个问题,那么我将如何继续这样做呢 我需要考虑以下几点(如果我遗漏了一些明显的东西,请填写)C# 如何最好地将整个应用程序本地化为多种不同的语言?,c#,.net,localization,C#,.net,Localization,我正在使用VisualStudio(2005年及以后)。我正在尝试制作一个应用程序,用户可以更改所有菜单、输入格式等的语言。如果我认为.Net中有一些完整的功能可以帮助我解决这个问题,那么我将如何继续这样做呢 我需要考虑以下几点(如果我遗漏了一些明显的东西,请填写) 字符串(菜单、文本) 输入数据(分析浮动、日期等) 应该很容易添加对另一种语言的支持 对于字符串,您应该将字符串与代码分开(使用XML/DLL将字符串ID转换为实际字符串是一种方法)。但是,您确实需要确保支持某些语言的双字节字符(
- 字符串(菜单、文本)
- 输入数据(分析浮动、日期等)
- 应该很容易添加对另一种语言的支持
查看Java实现,了解它们是如何实现的。它非常实用。我无论如何都不是.NET的专家,但本地化从来没有像“交换字符串值”或“更改日期格式”那样简单。还有很多需要考虑的因素,比如布局、适当的文本放置 以汉语为例。你阅读的方式是从上到下,而不是从左到右。如果正确本地化,应用程序应该考虑到这一点
如果你正在处理Windows窗体,这似乎是一个好的开始。经典的方法是:设计应用程序时不使用母语,而是使用本地化工具,并将初始化开发为一种语言(例如英语)。因此,你每天晚上都会构建应用程序并将其本地化为英语;如果没有本地化步骤,它将无法使用。做好这一点,就可以用任何其他语言的资源替换初始示例本地化的资源。从一开始就考虑非罗马文字。使用一个总是需要本地化的无语言应用程序比使用特定语言的应用程序要干净得多,因为特定语言的应用程序需要减去母语并添加替换语。您肯定需要使用.NET ResourceManager和resx文件xml格式,然而,有许多方法可以使用它 这真的取决于你想要实现什么。对我来说,我想要一个可以被任何人修改的xml资源文件(针对每种支持的语言)。我创建了一个helper类,该类将全局资源文件加载到ResourceManager中(仅一次),并且我有一个helper函数,该函数为给定名称提供所需的资源。这种方法的唯一缺点是我无法利用资源到属性的动态绑定
我发现对于每个表单,这比多个或嵌入的资源文件更好、更容易管理。此外,在ASP.NET应用程序中也可以使用完全相同的方法。我还发现,这种方法意味着将资源的翻译外包给客户和将语言包发送给客户更容易管理 Microsoft推荐的方法是使用附属程序集,如中所述。如果您使用ResourceManager加载资源,.NET将加载当前UICulture的正确资源。这默认为用户在Windows中的当前UI语言设置
可以通过Visual Studio或外部工具WinRes.exe本地化Windows窗体。介绍WinRes以及如何使用Visual Studio对表单进行本地化。非常有趣。我会在战争结束后尽快调查这些链接。