英语桌面C#.net应用程序中的阿拉伯语本地化

我正在构建一个企业C#.net应用程序,要求是将有阿拉伯语和英语版本。 客户可以选择2个选项,可以将英语和阿拉伯语一起用于标签和说明,也可以在开始时使用英语和阿拉伯语进行combobox选择并继续使用该语言。 我想节省我的时间,并希望我可以建立一个英文版本,阿拉伯语必须自动翻译。

提前致谢。

首先,您不需要选择任何内容,如果有人在他/她的操作系统中设置了阿拉伯语区域设置,则会选择它。 要检测使用的语言(如果您需要此信息,通常不需要),您只需阅读System.Globalization.CultureInfo.CurrentUICulture属性。

但是,在WinForms中,您实际上可以使用内置的本地化支持。 为此,您需要将Form Localizable属性切换为true。 假设您提供了阿拉伯字符串,则完成英语布局并将翻译放在适当的位置 ,您需要将Form的Language属性从(默认)切换为阿拉伯语。 这是最简单的方法。 在阿拉伯语中,您还需要将Form的RightToLeft属性切换为Yes,将RightToLeftLayout切换为True。
如果您正确执行此操作,您将看到该表单已镜像。 这是理想的情况,不要惊慌。

更糟糕的是,您偶尔需要显示消息框。 这里的问题是,根据您使用的语言类型,您实际上需要以不同的方式执行此操作,因为阿拉伯语(和其他RTL语言)要求使用RTLReading常量:

 if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) { MessageBox.Show(text, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading); } else { MessageBox.Show(text, caption, MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); } 

这是在高层……

您可以使用2个资源文件,一个使用英语,一个使用阿拉伯语,当您选择语言时,应用程序会选择要使用的资源文件。