2

我想创建本地化的应用程序并想实现一个语言切换器(例如特殊按钮)。我使用 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 事件中,它不会更改语言。是否可以在按钮单击或组合框更改等事件中切换语言?

先感谢您!

4

2 回答 2

3

是的,您可以在按钮单击事件或更改事件上实现本地化。您可以将文化设置为

Thread.CurrentThread.CurrentUICulture = New CultureInfo("ru-RU")

这些链接将帮助您:全球化和本地化 Windows 应用程序演练:本地化 Windows 窗体本地化应用程序

于 2013-01-20T17:17:17.543 回答
0

这是一个可能的解决方法:https ://social.msdn.microsoft.com/Forums/en-US/72f70870-0c0c-4eb1-886b-9db9917d080a/form-support-multilanguage-at-runtime-in-windows-based-应用程序#8c775cc0-5e5e-4551-b5d1-52bb5c1663e8

首先更改 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

已编辑:您还可以使用以下方法更改线程的默认文化:

CultureInfo.DefaultThreadCurrentCulture = New CultureInfo("es-ES")

这样做,您在运行时创建的所有新表单都将使用这个新的 CultureInfo。

于 2015-06-03T14:30:30.827 回答