英语桌面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个资源文件,一个使用英语,一个使用阿拉伯语,当您选择语言时,应用程序会选择要使用的资源文件。
- 从WinForms应用程序发送带附件的电子邮件?
- 为什么Math.Exp在32位和64位之间给出不同的结果,具有相同的输入,相同的硬件
- 如何从ServiceController确定Windows.Diagnostics.Process
- Xamarin.Forms – XamlCompilation MissingMethodException
- using关键字和IDisposable接口之间有什么关系?
- 为什么C#和VB有generics? 他们提供了什么好处? generics,FTW
- List .IndexOf()如何执行自定义对象的比较?
- SwitchToThread与睡眠(1)
- 以编程方式比较word文档