Windows 表單編程 演練:本地化 Windows 表單 (本地化經典例子)

來源:互聯網
上載者:User
Windows 表單編程
演練:本地化 Windows 表單

Visual Studio 項目系統為本地化 Windows 表單應用程式提供相當大的支援。下面是兩種使用 Visual Studio 開發環境產生資源檔的方法:

  • 使項目系統為可本地化的使用者介面元素(如表單上的文本和映像)產生資源檔。然後將該資源檔產生到附屬組件中。

  • 添加一個資源檔模板然後使用 XML 設計器編輯該模板。採取後一種方法的原因之一是為了產生在對話方塊和錯誤資訊中出現的可本地化字串。然後,必須編寫代碼以訪問這些資源。

本演練主題在一個 Windows 應用程式項目中示範這兩種過程。

還可以將文字檔轉換為資源檔;有關更多資訊,請參見和。

使 Visual Studio 產生資源檔
  1. 建立名為“WindowsApplication1”的新 Windows 應用程式。有關詳細資料,請參見如何:建立 Windows 應用程式項目。

  2. 在“屬性”視窗中,將表單的 Localizable 屬性設定為 true

    Language 屬性已經設定為“(預設值)”。

  3. Button 控制項從“工具箱”的“Windows 表單”選項卡拖到表單上,然後將其 Text 屬性設定為 Hello World

  4. 將該表單的 Language 屬性設定為“德語(德國)”。

  5. 將該按鈕的 Text 屬性設定為 Hallo Welt

  6. 將該表單的 Language 屬性設定為“法語(法國)”。

  7. 將該按鈕的 Text 屬性設定為 Bonjour le Monde。如果需要的話,可調整該按鈕的大小以容納較長的字串。

  8. 儲存和產生解決方案。

  9. 單擊“方案總管”中的“顯示所有檔案”按鈕。

    資源檔出現在 Form1.vb、Form1.cs 或 Form1.jsl 下面。Form1.resx 是預設區域性的資源檔,它將產生到主程式集中。Form1.de-DE.resx 是在德國講的德語的資源檔。Form1.fr-FR.resx 是在法國講的法語的資源檔。

    此外,您將看到名為 Form1.de.resx 和 Form1.fr.resx 的檔案。Visual Studio 自動建立這些檔案,以便解決 Visual SourceSafe 中存在的一個限制,即 Visual SourceSafe 不得不在儲存操作期間處理將新檔案添加到項目中的操作。.resx 檔案為空白並且不包含任何資源。

  10. 按 F5 鍵或從“調試”菜單中選擇“啟動”。

    現在將看到對話方塊中出現英語、法語或德語的問候,具體看到哪一種取決於作業系統的 UI 語言。

    注意

    Windows 中使用的使用者介面語言是“CurrentUICulture”設定的一種功能。如果您的 Windows 副本裝有多語系使用者介面 (MUI) 套件 (MUI),則可以在控制台中更改使用者介面語言。有關更多資訊,請參閱 網站。如果未安裝 MUI,則可以用編程方式更改當前的 UI 文化特性,如下所述。

    下面的過程說明如何設定使用者介面地區性,以便該應用程式顯示法語資源。在實際應用程式中,不用這種方式寫入程式碼使用者介面地區性。使用者介面地區性的設定將取決於使用者佈建或應用程式設定。

設定使用者介面地區性以查看特定資源
  1. 在“代碼編輯器”中,在模組開始處將下面的代碼添加到 Form1 聲明之前:

      複製代碼
    ' Visual BasicImports System.GlobalizationImports System.Threading// C#using System.Globalization;using System.Threading;// Visual J#import System.Globalization.*;import System.Threading.*;

  2. 添加下列代碼。在 Visual Basic 中,調用 InitializeComponent 函數前應使用 New 函數。在 Visual C# 和 Visual J# 中,應使用 Form1,並且也在調用 InitializeComponent 函數之前。

      複製代碼
    ' Visual Basic' Sets the UI culture to French (France).Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR")// C#// Sets the UI culture to French (France).Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");// Visual J#// Sets the UI culture to French (France).System.Threading.Thread.get_CurrentThread().set_CurrentUICulture( new CultureInfo("fr-FR"));

  3. 儲存和產生解決方案。

  4. 按 F5 鍵或從“調試”菜單中選擇“啟動”。

    現在該表單將始終以法語顯示。如果早已更改了該按鈕的大小以容納較長的法語字串,則請注意,在法語資源檔中也已經保持了該按鈕的大小。

手動向項目中添加資源檔並編輯它們
  1. 在“項目”菜單上單擊“添加新項”。

  2. 在“模板”框中選擇“程式集資源檔”模板。在“名稱”框中鍵入檔案名稱“WinFormStrings.resx”。WinFormStrings.resx 檔案將包含英語的後備資源。每當應用程式找不到更適合於使用者介面地區性的資源時,就將訪問這些資源。

    該檔案被添加到“方案總管”中的項目中,並在 XML 設計器內的“資料”視圖裡自動開啟。

  3. 在“資料表”窗格中選擇“data”。

  4. 在“資料”窗格中,單擊一個空行,並在“名稱”列中輸入 strMessage,在“值”列中輸入 Hello World

    無需指定字串的類型或 MIME 類型;它們用於對象。類型說明符保留所儲存對象的資料類型。如果對象由位元據組成,則 MIME 類型說明符保持所儲存的二進位資訊的基底類型 (base64)。

  5. 在[檔案] 功能表上,單擊“儲存 WinFormStrings.resx”。

  6. 再執行步驟 1-5 兩次以建立兩個分別名為 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. 在“代碼編輯器”中,在代碼模組的開始處匯入 System.Resources 命名空間。

      複製代碼
    ' Visual BasicImports System.Resources// C#using System.Resources;// Visual J#import System.Resources.*;

  2. 在“設計”視圖中,雙擊該按鈕以顯示其 Click 事件處理常式的代碼並添加下面的代碼。ResourceManager 建構函式帶兩個參數。第一個參數是資源的根名稱,即不帶地區性和 .resx 尾碼的資源檔的名稱。第二個參數是主程式集。

    在本演練中,不聲明任何命名空間,因此 ResourceManager 建構函式的第一個參數可以採用 ProjectName.ResourceFileRootName 的形式。但是,在實際的應用程式中,您應設定 DefaultNamespace 屬性。在該情況下,您將需要通過資源檔的完整根名稱(包括其命名空間)聲明資源管理員。例如,如果預設命名空間為 MyCompany.MyApplication.MyComponent,則 ResourceManager 建構函式的第一個參數可以為 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"));

    注意

    預設情況下,ResourceManager 對象區分大小寫。如果希望執行不區分大小寫尋找(例如使“TXTWELCOME”與“txtWelcome”檢索相同的資源),則可以將資源管理員的 屬性設定為 true。但是,為了提高效能,最好始終為資源名稱指定正確的大小寫。如果執行不區分大小寫資源尋找,則可能會導致效能問題。

  3. 產生並運行表單。單擊按鈕。

    訊息框將顯示適合於使用者介面地區性設定的字串;或者如果它不能找到該使用者介面地區性的資源,它將顯示來自後備資源的字串。

 Reference from :
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_mancli/html/9a96220d-a19b-4de0-9f48-01e5d82679e5.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.