如果你的程序需要提供不同語言的版本销部,比如中文和英文谓媒,那么你可能需要使用一種簡便的方法來完成國際化夸楣。
這里介紹一種使用資源文件來完成國際化的方法箫攀,具體步驟如下:
- 在
VS
中新建一個(gè)WinForm
類型的項(xiàng)目 - 打開
Resources.resx
文件磁餐,如果VS
沒有自動生成該文件的話可以自己手動創(chuàng)建一個(gè) - 在該資源文件中新增一個(gè)
FormCaption
的字符串資源违崇,設(shè)置值為你好世界
- 新建一個(gè)名為
Resources.en-US.resx
的資源文件,確保該文件位于Properties
目錄下 - 打開該資源文件诊霹,新增一個(gè)
FormCaption
的字符串資源羞延,設(shè)置值為Hello World
- 打開
Form1.cs
文件,在其構(gòu)造函數(shù)中設(shè)置Form
標(biāo)題為剛新建的字符串資源Text = Resources.FormCaption
- 編譯脾还、運(yùn)行項(xiàng)目伴箩,可以看到窗口標(biāo)題為:你好世界。打開項(xiàng)目生成目錄鄙漏,可看到生成了一個(gè)名為 en-US 的文件夾嗤谚,里面包含一個(gè)類似 WindowsFormsApp3.resources.dll 的資源文件
- 打開
Program.cs
文件,在Main
方法最開頭增加如下代碼:Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
- 再次編譯怔蚌、運(yùn)行項(xiàng)目巩步,發(fā)現(xiàn)窗口標(biāo)題變?yōu)椋?strong>Hello World,國際化工作完成桦踊。
- 可以嘗試將 en-US 改為 zh椅野,發(fā)現(xiàn)標(biāo)題又變回中文了。
補(bǔ)充說明
一定要確保所有資源文件位于
Properties
目錄下,我開始沒放那里竟闪,一直不成功只要在要國際化的窗口顯示之前調(diào)用
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("en-US");
即可實(shí)現(xiàn)顯示指定的語言-
還可使用
Resource.Embedder
將資源文件(Satellite Assemblies
)嵌入主程序集离福,這樣在項(xiàng)目生成目錄就不會生成en-US
等文件夾了,并且發(fā)布的時(shí)候也不需要這些文件夾瘫怜。需要說明的是該庫只對
.NetFramework 4.0
以上的項(xiàng)目生效术徊。該庫可通過
Nuget
添加,Github 主頁為:https://github.com/MarcStan/Resource.Embedder
-- 完成于 2019/08/29 17:19:02