日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

winform 不同语言(中文,英文等)

發(fā)布時間:2023/12/19 综合教程 22 生活家
生活随笔 收集整理的這篇文章主要介紹了 winform 不同语言(中文,英文等) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Visual Studio對于.NET程序的本地化提供了完整的支持,這里僅介紹實現(xiàn)多語言版本本地化程序的簡單步驟.
注意黑體處為關(guān)鍵點.
一.窗體本地化
對于Windows窗體,你需要做的第一步是確定你的默認(rèn)界面語言,默認(rèn)語言是指當(dāng)執(zhí)行程序無法找到已定義的本地化資源時,默認(rèn)使用的語言,由于.net使用utf-8作為默認(rèn)編碼,一般情況下在任何語言的系統(tǒng)上都能正常顯示.
本地化窗體一個關(guān)鍵的步驟是將窗體的本地化屬性(Localizable)設(shè)置為True,此時窗體代碼中自動生成的代碼部分的字符串(Text屬性)將由原來的"this.Text
= Form1"變?yōu)閞esources.ApplyResources(this, "$this")",并且窗體文件名下面會多出一個資源文件"Form1.resx",雙擊該資源文件可以看到字符串已經(jīng)生成為資源了
像往常一樣在窗體上加入你需要的控件,并設(shè)置好屬性,控件的Text屬性同樣會自動生成為資源(雙擊Form1.resx看看吧~),簡單吧,我們來看下一步,本地化窗體.
下面我們來添加英語環(huán)境下的窗體.在窗體屬性窗口中找到Language屬性(挨著Localizable),選擇"英語(美國)",現(xiàn)在我們把窗體上的各個字符串翻譯成英文,并修改窗體的默認(rèn)字體為Arial,字號8,完成后你會看到窗體文件名下面多出一個Form1.en-US.resx,這里用來保存已本地化為英文的資源.編譯程序,拷貝到英文系統(tǒng)下執(zhí)行程序看看,效果怎么樣?(什么?你沒有英文環(huán)境?好吧,后面會提供解決辦法)
現(xiàn)在你已經(jīng)成功的實現(xiàn)了中文簡體與英文美國的完美支持,如果需要其他語種的支持,選擇Language屬性列表中相應(yīng)的語種重復(fù)上述步驟即可.需要注意的是.net使用的是unicode編碼,需要用unicode編碼其他語種后輸入到界面上,否則特別像繁體字容易出現(xiàn)亂碼.
需要注意的情況:如果需要在窗體上添加刪除控件,必須把窗體語言屬性(Language)修改為默認(rèn)后才可以進(jìn)行修改.
下面我們來看一下資源文件如何處理

二.資源本地化
在工程名稱上點擊右鍵,選擇添加新項目,生成Resource1.resx文件,雙擊打開該文件,默認(rèn)為字符串資源編輯器,在這里你可以定義字符串資源,在字符串值中輸入"Hello

World"(不包含雙引號),現(xiàn)在就可以在代碼中直接用Resource1.String1來引用了,注意這里的資源也是同窗體一樣,是默認(rèn)語言下的資源,在解釋如何添加其他語言前,我們先介紹一下.net解析資源的步驟
.net資源文件名(這里是Resource1.resx)由根名稱(即Resource1),本地語言名稱(默認(rèn)情況下還沒有)及擴(kuò)展名組成,在讀取資源時,資源管理器會根據(jù)當(dāng)前環(huán)境決定需要的本地語言名稱,例如英語,然后試圖以全名讀取資源,美國英語的本地名稱為en-US(更多語言名稱可以從MSDN中查詢CultureInfo信息得到),那么資源全名為Resource1.en-US.resx,如果存在該文件,則載入該文件作為資源文件,如果沒有則使用默認(rèn)值Resource1.resx,確定好資源文件后開始查找指定的資源(例如"String1"),如果在本地資源文件中沒有找到,則向上查找上一級的本地資源文件,最終找到根名稱Resource1為止.更多信息參考文章最后所附連接.
現(xiàn)在我們來添加美國英語資源,使用項目菜單添加新項,添加一個新的資源文件,命名為Resource1.en-US.resx,雙擊打開,把Resource1.resx中的資源翻譯成英語填入其中,在代碼中添加一個窗體載入事件,在事件處理代碼中添加一行MessageBox.Show(Resource1.String1);編譯運行程序,觀察在中文簡體系統(tǒng)和英文系統(tǒng)下的顯示內(nèi)容.
不停的在不同語言系統(tǒng)環(huán)境下切換很麻煩,下面提供可以在一臺電腦上測試不同語種的解決方案.
三.切換顯示語言
C#窗體程序使用CultureInfo來管理當(dāng)前語言,這里CultureInfo分為兩種,一種決定語言格式,一種決定語言資源(這里我們僅需要后者),只需簡單的設(shè)置如下兩個變量即可改變程序顯示語言:
System.Threading.Thread.CurrentThread.CurrentCulture;
System.Threading.Thread.CurrentThread.CurrentUICulture;
在窗體初始化之前,我們設(shè)置
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
即可把程序執(zhí)行語言切換為美國英語,編譯程序試試看吧

演練:本地化Windows窗體

Visual Studio項目系統(tǒng)為本地化Windows窗體應(yīng)用程序提供相當(dāng)大的支持。下面是兩種使用Visual
Studio開發(fā)環(huán)境生成資源文件的方法:

使項目系統(tǒng)為可本地化的用戶界面元素(如窗體上的文本和圖像)生成資源文件。然后將該資源文件生成到附屬程序集中。
添加一個資源文件模板然后使用XML設(shè)計器編輯該模板。采取后一種方法的原因之一是為了生成在對話框和錯誤信息中出現(xiàn)的可本地化字符串。然后,必須編寫代碼以訪問這些資源。

本演練主題在一個Windows應(yīng)用程序項目中演示這兩種過程。

還可以將文本文件轉(zhuǎn)換為資源文件;有關(guān)更多信息,請參見文本文件格式中的資源和資源文件生成器(Resgen.exe)。

使Visual Studio生成資源文件

1.創(chuàng)建名為“WindowsApplication1”的新Windows應(yīng)用程序。有關(guān)詳細(xì)信息,請參見如何:創(chuàng)建Windows應(yīng)用程序項目。

2.在“屬性”窗口中,將窗體的Localizable屬性設(shè)置為true

Language屬性已經(jīng)設(shè)置為“(默認(rèn)值)”。

3.將Button控件從“工具箱”的“Windows窗體”選項卡拖到窗體上,然后將其Text屬性設(shè)置為Hello
World

4.將該窗體的Language屬性設(shè)置為“德語(德國)”。

5.將該按鈕的Text屬性設(shè)置為Hallo
Welt

6.將該窗體的Language屬性設(shè)置為“法語(法國)”。

7.將該按鈕的Text屬性設(shè)置為Bonjour
le Monde
。如果需要的話,可調(diào)整該按鈕的大小以容納較長的字符串。

8.保存和生成解決方案。

9.單擊“解決方案資源管理器”中的“顯示所有文件”按鈕。

資源文件出現(xiàn)在Form1.vb、Form1.cs或Form1.jsl下面。Form1.resx是默認(rèn)區(qū)域性的資源文件,它將生成到主程序集中。Form1.de-DE.resx是在德國講的德語的資源文件。Form1.fr-FR.resx是在法國講的法語的資源文件。

此外,您將看到名為Form1.de.resx和Form1.fr.resx的文件。Visual
Studio自動創(chuàng)建這些文件,以便解決Visual SourceSafe中存在的一個限制,即Visual SourceSafe不得不在保存操作期間處理將新文件添加到項目中的操作。.resx文件為空并且不包含任何資源。

10.按F5鍵或從“調(diào)試”菜單中選擇“啟動”。

現(xiàn)在將看到對話框中出現(xiàn)英語、法語或德語的問候,具體看到哪一種取決于操作系統(tǒng)的UI語言。

注意

Windows中使用的用戶界面語言是“CurrentUICulture”設(shè)置的一種功能。如果您的Windows副本裝有多語言用戶界面包(MUI),則可以在控制面板中更改用戶界面語言。有關(guān)更多信息,請參閱Windows
Server 2003, Windows XP & Windows 2000 MUI站點。如果未安裝MUI,則可以用編程方式更改當(dāng)前的UI區(qū)域性,如下所述。

下面的過程說明如何設(shè)置用戶界面區(qū)域性,以便該應(yīng)用程序顯示法語資源。在實際應(yīng)用程序中,不用這種方式硬編碼用戶界面區(qū)域性。用戶界面區(qū)域性的設(shè)置將取決于用戶設(shè)置或應(yīng)用程序設(shè)置。

設(shè)置用戶界面區(qū)域性以查看特定資源

1.在“代碼編輯器”中,在模塊開始處將下面的代碼添加到Form1聲明之前:

2.' Visual Basic

3.Imports System.Globalization

4.Imports System.Threading

5.

6.// C#

7.using System.Globalization;

8.using System.Threading;

9.

10.// Visual J#

11.import System.Globalization.*;

import System.Threading.*;

12.添加下列代碼。在Visual Basic中,調(diào)用InitializeComponent函數(shù)前應(yīng)使用New函數(shù)。在Visual
C#和Visual J#中,應(yīng)使用Form1,并且也在調(diào)用InitializeComponent函數(shù)之前。

13.' Visual Basic

14.' Sets the UI culture to French (France).

15.Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR")

16.

17.// C#

18.// Sets the UI culture to French (France).

19.Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");

20.

21.// Visual J#

22.// Sets the UI culture to French (France).

System.Threading.Thread.get_CurrentThread().set_CurrentUICulture( new CultureInfo("fr-FR"));

23.保存和生成解決方案。

24.按F5鍵或從“調(diào)試”菜單中選擇“啟動”。

現(xiàn)在該窗體將始終以法語顯示。如果早已更改了該按鈕的大小以容納較長的法語字符串,則請注意,在法語資源文件中也已經(jīng)保持了該按鈕的大小。

手動向項目中添加資源文件并編輯它們

1.在“項目”菜單上單擊“添加新項”。

2.在“模板”框中選擇“程序集資源文件”模板。在“名稱”框中鍵入文件名“WinFormStrings.resx”。WinFormStrings.resx文件將包含英語的后備資源。每當(dāng)應(yīng)用程序找不到更適合于用戶界面區(qū)域性的資源時,就將訪問這些資源。

該文件被添加到“解決方案資源管理器”中的項目中,并在XML設(shè)計器內(nèi)的“數(shù)據(jù)”視圖里自動打開。

3.在“數(shù)據(jù)表”窗格中選擇“data”。

4.在“數(shù)據(jù)”窗格中,單擊一個空行,并在“名稱”列中輸入strMessage,在“值”列中輸入Hello
World
。

無需指定字符串的類型或MIME類型;它們用于對象。類型說明符保留所保存對象的數(shù)據(jù)類型。如果對象由二進(jìn)制數(shù)據(jù)組成,則MIME類型說明符保持所存儲的二進(jìn)制信息的基類型(base64)。

5.在“文件”菜單上,單擊“保存WinFormStrings.resx”。

6.再執(zhí)行步驟1-5兩次以創(chuàng)建兩個分別名為WinFormStrings.de-DE.resx和WinFormStrings.fr-FR.resx的資源文件,并且這兩個文件具有在下表中指定的字符串資源。WinFormStrings.de-DE.resx文件將包含特定于在德國講的德語的資源。WinFormStrings.fr-FR.resx文件將包含特定于在法國講的法語的資源。

資源文件名

名稱

WinFormStrings.de-DE.resx

strMessage

Hallo Welt

WinFormStrings.fr-FR.resx

strMessage

Bonjour le Monde

訪問手動添加的資源

1.在“代碼編輯器”中,在代碼模塊的開始處導(dǎo)入System.Resources命名空間。

2.' Visual Basic

3.Imports System.Resources

4.

5.// C#

6.using System.Resources;

7.

8.// Visual J#

import System.Resources.*;

9.在“設(shè)計”視圖中,雙擊該按鈕以顯示其Click事件處理程序的代碼并添加下面的代碼。ResourceManager構(gòu)造函數(shù)帶兩個參數(shù)。第一個參數(shù)是資源的根名稱,即不帶區(qū)域性和.resx后綴的資源文件的名稱。第二個參數(shù)是主程序集。

在本演練中,不聲明任何命名空間,因此ResourceManager構(gòu)造函數(shù)的第一個參數(shù)可以采用ProjectName.ResourceFileRootName的形式。但是,在實際的應(yīng)用程序中,您應(yīng)設(shè)置DefaultNamespace屬性。在該情況下,您將需要通過資源文件的完全限定的根名稱(包括其命名空間)聲明資源管理器。例如,如果默認(rèn)命名空間為MyCompany.MyApplication.MyComponent,則ResourceManager構(gòu)造函數(shù)的第一個參數(shù)可以為MyCompany.MyApplication.MyComponent.WinFormStrings。

' Visual Basic

' Declare a Resource Manager instance.

Dim LocRM As New ResourceManager("WindowsApplication1.WinFormStrings", GetType(Form1).Assembly)

' Assign the string for the "strMessage" key to a message box.

MessageBox.Show(LocRM.GetString("strMessage"))

// C#

// Declare a Resource Manager instance.

ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",typeof(Form1).Assembly);

// Assign the string for the "strMessage" key to a message box.

MessageBox.Show(LocRM.GetString("strMessage"));

// Visual J#

// Declare a Resource Manager instance.

ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",

System.Type. GetType("WindowsApplication1.Form1").get_Assembly());

// Assign the string for the "strMessage" key to a message box.

MessageBox.Show(LocRM.GetString("strMessage"));

注意

默認(rèn)情況下,ResourceManager對象區(qū)分大小寫。如果希望執(zhí)行不區(qū)分大小寫的查找(例如使“TXTWELCOME”與“txtWelcome”檢索相同的資源),則可以將資源管理器的IgnoreCase屬性設(shè)置為true。但是,為了提高性能,最好始終為資源名稱指定正確的大小寫。如果執(zhí)行不區(qū)分大小寫的資源查找,則可能會導(dǎo)致性能問題。

10.生成并運行窗體。單擊按鈕。

消息框?qū)@示適合于用戶界面區(qū)域性設(shè)置的字符串;或者如果它不能找到該用戶界面區(qū)域性的資源,它將顯示來自后備資源的字符串。

總結(jié)

以上是生活随笔為你收集整理的winform 不同语言(中文,英文等)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。