2012-09-25 58 views
1

我們正在開發一個支持多種語言的WPF應用程序。由於我們必須支持某些語言,所以開發團隊都不知道,我們同意允許用戶(管理員)輸入這些語言的文本。最好的辦法是什麼?WPF應用程序的本地化

回答

2

我已經取得了非常好的經驗與WPFLocalizationExtension

它帶有大量的功能(例如根據語言綁定到本地化的圖像資源)和最好的:它是免費的。還有一些resx編輯工具可以讓你加載和編輯你的resx本地化文件。

+0

這看起來很有前途。雖然我沒有得到它運行。你知道我能在哪裏得到樣品嗎? – TheJoeIaut

+0

是的,下載源代碼並打開解決方案\ Tests \ XamlLocalizationTest.sln提供了一些示例。我建議閱讀「文檔」。關鍵是讓ResourceDictionaries在您的程序集中工作... – SvenG

+0

並且您可以閱讀「白癡使用WPF本地化擴展指南(入門)」http://wpflocalizeextension.codeplex.com/discussions/283041 – SvenG

2

您可以按照以下步驟

1創建資源文件

添加該文件StringResources.xaml到服務目錄。示例如下:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:system="clr-namespace:System;assembly=mscorlib"> 

    <system:String x:Key="close">Close</system:String> 
</ResourceDictionary> 

您可以創建多個文件,每種語言一個。

2添加資源(調用此當你啓動應用程序)

private void SetLanguageDictionary() 
{ 
    ResourceDictionary dict = new ResourceDictionary(); 
    switch (Thread.CurrentThread.CurrentCulture.ToString()) 
    { 
     case "en-US": 
     dict.Source = new Uri("..\\Resources\\StringResources.xaml", UriKind.Relative); 
     break; 
     case "fr-CA": 
     dict.Source = new Uri("..\\Resources\\StringResources.fr-CA.xaml", UriKind.Relative); 
     break; 
     default : 
     dict.Source = new Uri("..\\Resources\\StringResources.xaml",UriKind.Relative); 
     break; 
    } 
    this.Resources.MergedDictionaries.Add(dict); 
} 

3使用的資源,這樣的 -

<Button  
    x:Name="btnLogin" 
    Click="btnLogin_Click" 
    Content="{DynamicResource login}" 
    Grid.Row="3" 
    Grid.Column="0" 
    Padding="10" /> 
+0

如何在CodeBehind中使用此DynamicResource,例如MessageBoxes?這似乎只是一個(XAML)用戶界面本地化。 – SeToY

+0

@SeTo Y你有這裏的示例: