Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何最好地将整个应用程序本地化为多种不同的语言?_C#_.net_Localization - Fatal编程技术网

C# 如何最好地将整个应用程序本地化为多种不同的语言?

C# 如何最好地将整个应用程序本地化为多种不同的语言?,c#,.net,localization,C#,.net,Localization,我正在使用VisualStudio(2005年及以后)。我正在尝试制作一个应用程序,用户可以更改所有菜单、输入格式等的语言。如果我认为.Net中有一些完整的功能可以帮助我解决这个问题,那么我将如何继续这样做呢 我需要考虑以下几点(如果我遗漏了一些明显的东西,请填写) 字符串(菜单、文本) 输入数据(分析浮动、日期等) 应该很容易添加对另一种语言的支持 对于字符串,您应该将字符串与代码分开(使用XML/DLL将字符串ID转换为实际字符串是一种方法)。但是,您确实需要确保支持某些语言的双字节字符(

我正在使用VisualStudio(2005年及以后)。我正在尝试制作一个应用程序,用户可以更改所有菜单、输入格式等的语言。如果我认为.Net中有一些完整的功能可以帮助我解决这个问题,那么我将如何继续这样做呢

我需要考虑以下几点(如果我遗漏了一些明显的东西,请填写)

  • 字符串(菜单、文本)
  • 输入数据(分析浮动、日期等)
  • 应该很容易添加对另一种语言的支持

对于字符串,您应该将字符串与代码分开(使用XML/DLL将字符串ID转换为实际字符串是一种方法)。但是,您确实需要确保支持某些语言的双字节字符(如果您使用C/C++,这是相关的)

对于输入数据,您需要的是具有不同的区域设置。在Java中,这是相对容易的,如果你使用C语言,这可能也很容易。在C/C++中,我真的不知道。基本思想是,输入解析器应该根据当时选择的语言环境而有所不同。因此,每个字段(textfield、textbox等)必须有一个抽象解析器,然后根据区域设置(从右到左、双字节等)由不同的类实现


查看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对表单进行本地化。

非常有趣。我会在战争结束后尽快调查这些链接。