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

    文檔首頁>>DevExpress WinForm中文手冊>>使用附屬資源程序集本地化WinForms控件

    使用附屬資源程序集本地化WinForms控件


    立即下載DevExpress WinForms

    本文檔演示了使用附屬資源程序集(包含已翻譯資源的庫)本地化 .NET 應(yīng)用程序的最常見方法,這些程序集是 .NET Framework 提供的標(biāo)準(zhǔn)本地化機(jī)制,用于構(gòu)建多語言應(yīng)用程序。

    提示:您也可以使用自定義本地化程序來翻譯應(yīng)用程序,但是有些控件只有附屬程序集才能翻譯(例如,XtraReports中的Search對話框)。我們建議您使用附屬程序集來翻譯應(yīng)用程序,另外請注意,如果使用自定義本地化程序則忽略附屬程序集。

    獲取附屬組件

    在大多數(shù)情況下,沒有必要手動翻譯所有特定于語言的資源,因?yàn)镈evExpress包含針對各種語言和文化的附屬程序集。

    統(tǒng)一組件安裝程序包括某些語言(DE、ES、JA)的資源程序集,這些資源不會自動安裝,您可以自行決定安裝它們。

    提示:本地化的資源可能不完整,可以導(dǎo)航到DevExpress Localization Service 下載其他語言的社區(qū)來源翻譯,此服務(wù)允許您修改現(xiàn)有的翻譯,并編譯和下載附屬程序集。

    DevExpress VCL圖表控件

    提示:確保附屬程序集的主要版本(例如,v23.1)與項(xiàng)目中DevExpress庫的主要版本匹配。

    添加附屬程序集到您的應(yīng)用程序

    將包含附屬程序集的文件夾(例如,es)復(fù)制到應(yīng)用程序的EXE文件目錄。

    例如,要包含 German assemblies,請將名為de的文件夾從\Bin\Framework\目錄復(fù)制到應(yīng)用程序的EXE文件目錄(通常是Bin\ Debug\子目錄),您可以更改Output path項(xiàng)目來選擇另一個位置。

    output

    提示:附屬程序集必須放置在名稱與這些程序集目標(biāo)的區(qū)域性名稱相匹配的文件夾中。例如,如果附屬程序集針對中立的 German culture (“de”),則它們必須放置在“de”文件夾中(而不是“de-DE”或任何其他文件夾)。

    下圖說明了在應(yīng)用程序的目錄中放置附屬程序集的位置:

    流程圖

    提示:

    除了將附屬程序集復(fù)制到應(yīng)用程序的文件夾中,還可以將它們安裝到gac中。請注意,如果存在具有相同名稱的不同資源程序集則一個位于應(yīng)用程序EXE文件附近,另一個安裝在GAC中—來自GAC的程序集將具有更高的優(yōu)先級。

    將應(yīng)用程序與附屬組件一起部署到最終用戶的機(jī)器上。當(dāng)啟動時,程序自動確定操作系統(tǒng)的區(qū)域性,加載相應(yīng)的資源程序集,并相應(yīng)地翻譯顯示文本。

    下圖演示了德語本地化的 Print PreviewReport Designer

    本地化
    本地化

    選擇與系統(tǒng)文化不同的文化

    將所需區(qū)域性的縮寫分配給CurrentThread.CurrentUICulture和CurrentThread.CurrentCulture屬性,手動指定應(yīng)用程序的區(qū)域性(無論目標(biāo)操作系統(tǒng)是什么)。

    請注意,雖然您可以為CurrentUICulture屬性(例如,“de”)使用短區(qū)域性縮寫(中性區(qū)域性),但CurrentCulture屬性需要設(shè)置為特定的區(qū)域性(例如,“de- de”)。

    以下示例代碼設(shè)置應(yīng)用程序的德語區(qū)域設(shè)置:

    C#:

    、using System.Globalization;
    using System.Threading;
    // ...
    
    static void Main() {
    // Create a new object, representing the German culture.
    CultureInfo culture = CultureInfo.CreateSpecificCulture("de-DE");
    
    // The following line localizes the application's user interface.
    Thread.CurrentThread.CurrentUICulture = culture;
    
    // The following line localizes data formats.
    Thread.CurrentThread.CurrentCulture = culture;
    
    // Set this culture as the default culture for all threads in this application.
    // Note: The following properties are supported in .NET Framework 4.5+:
    CultureInfo.DefaultThreadCurrentCulture = culture;
    CultureInfo.DefaultThreadCurrentUICulture = culture;
    
    // Note that the above code should be added BEFORE calling the Run() method.
    Application.Run(new Form1());
    }

    VB.NET:

    Imports System.Globalization
    Imports System.Threading
    ' ...
    
    Shared Sub Main()
    ' Create a new object, representing the German culture.
    Dim Culture = CultureInfo.CreateSpecificCulture("de-DE")
    
    ' The following line localizes the application's user interface.
    Thread.CurrentThread.CurrentUICulture = Culture
    
    ' The following line localizes data formats.
    Thread.CurrentThread.CurrentCulture = Culture
    
    ' Set this culture as the default culture for all threads in this application.
    ' Note: The following properties are supported in .NET Framework 4.5+:
    CultureInfo.DefaultThreadCurrentCulture = Culture
    CultureInfo.DefaultThreadCurrentUICulture = Culture
    
    ' Note that the above code should be added BEFORE calling the Run() method.
    Application.Run(New Form1())
    End Sub

    提示:如果您打算允許最終用戶從多個預(yù)定義區(qū)域性中進(jìn)行選擇,請?jiān)诩虞d表單之前執(zhí)行此代碼,雖然可以動態(tài)地分配CurrentCulture和CurrentUICulture屬性,但是沒有重載所有資源的通用方法。

    故障處理

    我的應(yīng)用程序未本地化。

    要使用附屬資源程序集,請將它們放置在適當(dāng)?shù)奈恢?,以便公共語言運(yùn)行庫(CLR)可以輕松地找到它們。在某些情況下,應(yīng)用程序可能無法定位附屬程序集,如果是這種情況,您可以使用標(biāo)準(zhǔn)的.NET Fuslogvw.exe實(shí)用程序檢查它在哪里查找程序集。閱讀MSDN中的以下主題以了解更多信息:

    我的應(yīng)用程序中的某些項(xiàng)目未本地化。

    發(fā)生這種情況可能是因?yàn)樘囟▍^(qū)域性的附屬程序集不完整,您可以使用DevExpress本地化服務(wù)翻譯缺失的字符串。

    我的安全權(quán)限禁止運(yùn)行該應(yīng)用程序。

    ecurityPermission必須設(shè)置為ControlThread才能更改Thread.CurrentThread的區(qū)域性。注意,操作線程是危險的,因?yàn)榕c線程相關(guān)的安全狀態(tài)。因此,只有在必要的時候才應(yīng)該給值得信賴的代碼權(quán)限。應(yīng)用程序不能在半受信任代碼中更改線程區(qū)域性

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    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); })();