저는 현재 현지화의 특별한 경우에 어려움을 겪고 있습니다. WPF 응용 프로그램을 지역화하는 여러 가지 방법에 대해 읽었으며 "locbaml"에 의해 생성 된 위성 어셈블리를 사용하기로 결정했습니다. http://msdn.microsoft.com/en-us/library/bb613547%28v=vs.110%29.aspx
그래서 나는이 리소스 사전이 :리소스 사전에 locbaml 사용
<ResourceDictionary x:Uid="ResourceDictionary_1" 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:Uid="system:String_1" x:Key="TestKey">Development</system:String>
</ResourceDictionary>
을 내가 app.xaml 내에서 병합 :
여기에 설명 된대로 은 C#을 -code에서 문자열을 지역화 할 수 있도록하기 위해 나는 resourcedictionaries를 사용하기로 결정this.Message = (string)Application.Current.FindResource("TestKey");
그리고 :
Application x:Uid="Application_1" x:Class="LocalizationIssue.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary x:Uid="ResourceDictionary_1">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary x:Uid="ResourceDictionary_2" Source="Localization.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
이 그런 일을 저를 활성화해야 않습니다. 응용 프로그램을 실행하면 "개발"을 볼 수 있습니다. 샘플 프로젝트에는 두 개의 TextBlock이 있습니다. TextBlock의 TextProperty는 "Message"라는 속성에 바인딩됩니다. 다른 하나는 "StaticDevelopment"로 정적으로 설정됩니다. 그래서 MainWindow.xaml은 다음과 같습니다
<Window x:Uid="Window_1" x:Class="LocalizationIssue.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel x:Uid="StackPanel_1">
<TextBlock x:Uid="TextBlock_1" FontSize="20" Text="{Binding Message}" VerticalAlignment="Center" HorizontalAlignment="Center" />
<TextBlock x:Uid="TextBlock_2" FontSize="20" Text="StaticDevelopment" VerticalAlignment="Center" HorizontalAlignment="Center" />
</StackPanel>
</Window>
가 그럼 난 locbaml 위성 어셈블리를 생성하기위한 모든 단계를 따라 여기에 설명 된대로 : http://msdn.microsoft.com/en-us/library/ms746621%28v=vs.110%29.aspx
예 : 1. 어셈블리 정보도 파일을 프로젝트 (하고 UICulture 추가)
2. UID를 만들기 : LocalizationIssue.csproj
3. CSV 파일을 만듭니다 updateuid : msbuild를/t locbaml/구문 분석 LocalizationIssue.resources.dll /out:loc.csv
4. loc.csv
에 값을 번역 5. 위성 만들기 : locbaml/generate LocalizationIssue.resources.dll/t 트랜스 포메이션 : loc.csv/out : c : \/cul : en-US
이제 UI culture를 프랑스어로 전환하면 바인딩이있는 TextBlock의 영어 번역이 표시되지만 다른 텍스트 블록의 현지화 된 값은 표시됩니다.
내가 잘못하고있는 아이디어가 있습니까? "locbaml"- 접근 방식에 대한 귀하의 경험은 무엇입니까? 우리는 resx-file로 전통적인 방식으로 가야할까요? 모든 입력에 대한
감사합니다;) 새로운 파일로