我想创建本地化的应用程序,并希望实现语言切换器(例如特殊按钮)。我使用Visual Studio 2010 express(VB.NET)。
我用一个标签和一个按钮创建了简单的测试应用程序。我将表单的属性“Localizable”设置为“True”,并以2种语言编辑组件的文本(默认为英语和俄语)。
我知道需要添加
Imports System.Threading.Thread
Imports System.Globalization
在Form1.vb的开头然后使用
Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru")
启用俄语本地化。 但是,如果我把这一行放入Button_Click事件,它不会改变语言。是否可以在按钮点击或组合框更改等事件之间切换语言?
提前谢谢!
答案 0 :(得分:2)
是的,您可以在Button Click事件或更改事件上实现本地化。您可以将文化设置为
Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru-RU")
这些链接可以为您提供帮助:Globalizing and Localizing Windows Application,Walkthrough: Localizing Windows Forms,Localizing Applications
答案 1 :(得分:0)
首先更改CurrentUICulture,然后强制将新文化的资源应用于所有控件。
此代码示例循环遍历Me.Controls
,但您也应循环子容器(面板等)。
这样做会改变字符串,位置,大小等。
System.Threading.Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES")
Dim res As ComponentResourceManager = New ComponentResourceManager(Me.GetType)
For Each aControl As Control In Me.Controls
res.ApplyResources(aControl, aControl.Name)
Next
EDITED:您还可以使用以下方法更改线程的默认文化:
CultureInfo.DefaultThreadCurrentCulture = New CultureInfo("es-ES")
这样做,您在运行时创建的所有新表单都将使用这个新的CultureInfo。