• <menu id="w2i4a"></menu>
  • logo DevExpress WinForm中文手冊(cè)

    文檔首頁>>DevExpress WinForm中文手冊(cè)>>如何在多文化應(yīng)用程序中為非基于表單的接口啟用RTL模式

    如何在多文化應(yīng)用程序中為非基于表單的接口啟用RTL模式


    立即下載DevExpress WinForms

    您的應(yīng)用程序可能包含顯示自定義字符串和圖像的視覺元素,這些元素不存儲(chǔ)在表單資源中(例如,硬編碼字符串,消息框,DXPopupMenu等),把這些元素調(diào)整為從右到左模式還包括一個(gè)本地化步驟。

    消息框

    其字符串不存儲(chǔ)在表單資源中的典型元素是Message Box。與標(biāo)準(zhǔn)的MessageBox不同,當(dāng)檢測(cè)到RTL模式時(shí),XtraMessageBox會(huì)自動(dòng)調(diào)整(鏡像)其布局(對(duì)于標(biāo)準(zhǔn)的MessageBox需要啟用一個(gè)特殊的標(biāo)志),所以創(chuàng)建RTL-ready XtraMessageBox時(shí)要做的兩件事是:

    • 翻譯消息框的自定義文本和標(biāo)題(如下面的演練所示)。
    • 本地化標(biāo)準(zhǔn)按鈕的文本(OK, Cancel, Yes, No,等等),此任務(wù)對(duì)于顯示某些內(nèi)置可本地化資源的所有DevExpress控件都是通用的,并且在本地化文檔中有介紹。

    在下圖中,您可以看到顯示默認(rèn)區(qū)域性的 XtraMessageBox。

    默認(rèn)

    啟用RTL模式的本地化XtraMessageBox。

    本地化

    DXPopupMenu

    DXPopupMenu在RTL模式下自動(dòng)反轉(zhuǎn)其項(xiàng)目的布局,您只需要將自定義文本翻譯為目標(biāo)語言,如下所示:

    下面的演練演示了如何在XtraMessageBox中本地化自定義文本,所示的文本本地化方法也適用于DXPopupMenu中的文本、硬編碼字符串等。

    演練:如何在XtraMessageBox中本地化自定義字符串

    雖然表單和控件中的字符串和圖像應(yīng)使用基于表單的資源進(jìn)行本地化,但非基于表單的用戶界面字符串和圖像(例如消息框中的字符串)必須使用項(xiàng)目資源進(jìn)行本地化,要使用基于非表單的資源文件為消息框提供特定于區(qū)域性的文本,請(qǐng)按照以下步驟操作。

    1.在Visual Studio菜單欄中,調(diào)用 Project 菜單,然后單擊Add New Item,使用Add New Item對(duì)話框,創(chuàng)建一個(gè)新的資源文件,然后命名為Messages.resx,該文件用于默認(rèn)語言。

    菜單
    菜單

    2.使用默認(rèn)區(qū)域性所需的字符串值填充數(shù)據(jù)表。

    字符串值

    3.為本地化的應(yīng)用程序版本添加另一個(gè)新的資源文件并將文件命名為Messages.he.resx,文件名包含一個(gè)后綴,該后綴指定資源文件對(duì)應(yīng)的區(qū)域性。

    文件包

    4.使用 Solution Explorer window打開創(chuàng)建的文件,并用適當(dāng)?shù)淖址畛鋽?shù)據(jù)表。

    數(shù)據(jù)表

    5.要在調(diào)用 XtraMessageBox 時(shí)使用本地化字符串,請(qǐng)參閱以下代碼。

    C#:

    using System.Resources;
    //...
    private void button_Click(object sender, EventArgs e) {
    ResourceManager RM = new ResourceManager("WindowsFormsApplication1.Messages", typeof(Form1).Assembly);
    
    XtraMessageBox.Show(
    this.LookAndFeel,
    RM.GetString("strDiscardChangesMessage"),
    RM.GetString("strDiscardChangesCaption"),
    MessageBoxButtons.YesNoCancel
    );
    }

    VB.NET:

    Imports System.Resources
    '...
    Private Sub Button_Click(sender As Object, e As EventArgs)
    Dim RM As New ResourceManager("WindowsFormsApplication1.Messages", GetType(Form1).Assembly)
    
    XtraMessageBox.Show(Me.LookAndFeel, RM.GetString("strDiscardChangesMessage"), RM.GetString("strDiscardChangesCaption"), MessageBoxButtons.YesNoCancel)
    End Sub

    6.完成這些步驟后,如果應(yīng)用程序在使用 Hebrew的操作系統(tǒng)上運(yùn)行,則會(huì)自動(dòng)翻譯消息框中的自定義文本。

    hebrew

    7.本地化內(nèi)置按鈕標(biāo)題,如通過附屬資源程序集本地化WinForms控件文檔中所述,這種方法可以幫助您本地化DevExpress控件的所有內(nèi)置字符串資源。

    本主題中描述的方法涉及使用本地化服務(wù)來獲取附屬資源程序集,下載程序集時(shí),找到一個(gè)根據(jù)所需區(qū)域性的縮寫命名的文件夾(例如,他代表希伯來文化),然后將其復(fù)制到應(yīng)用程序可執(zhí)行文件所在的目錄中,不需要編寫任何代碼,因?yàn)閼?yīng)用程序會(huì)自動(dòng)確定當(dāng)前區(qū)域性,并在啟動(dòng)時(shí)加載適當(dāng)?shù)某绦蚣?。下圖顯示了完全翻譯后的消息框。

    翻譯后

    要測(cè)試控件和其他可視元素(包括XtraMessageBox)如何轉(zhuǎn)換為特定區(qū)域性,可以在應(yīng)用程序啟動(dòng)時(shí)手動(dòng)啟用該區(qū)域性。

    C#:

    using System.Globalization;
    using System.Threading;
    
    Thread.CurrentThread.CurrentCulture = new CultureInfo("he");
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("he");

    VB.NET:

    Imports System.Globalization
    Imports System.Threading
    
    Thread.CurrentThread.CurrentCulture = New CultureInfo("he")
    Thread.CurrentThread.CurrentUICulture = New CultureInfo("he")
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();