2011-02-15 6 views
13

내 앱을 기본 영어뿐만 아니라 일본어로 현지화하는 데 사기성이없는 방법을 찾고 있습니다. 유일한 요구 사항은 지정된 언어로 시작할 수 있다는 것입니다. 우리는 clunky하고 복잡하며 에러가 발생하기 쉬운 LocBaml을 사용하고 있었고 빌드 프로세스를 상당히 어렵게 만들었습니다. 내가 리소스 파일 (Strings.resx, Strings.ja.resx)에 다시 모든 것을 이동하고 그냥이 같은 정적 바인딩하고 고려하고WPF를 지역화하기 위해 표준 resx + 정적 바인딩을 사용하지 않는 이유가 있습니까?

:

다음
<TextBlock Text="{x:Static resx:MyWindow.MessageText}" /> 

발사 시간에 어떤 언어를 찾는 사람들 원하는 그것에서 문자열을 가져옵니다 자원 스위칭 :

public static void Main(string[] args) 
{ 
    if (args[0] == "-lang") 
    { 
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(args[i + 1]); 
    } 

    App app = new App(); 
    app.InitializeComponent(); 
    app.Run(); 
} 

이 간단하고 유일하고 진정한 단점 것 우리는 우리가 할 이제까지를 원할 것입니다 무언가가 아니다 런타임에서 전환 할 수 있다는 것입니다.

http://wpflocalization.codeplex.com/

http://www.wpftutorial.net/LocalizeMarkupExtension.html

그들은 청소기 XAML 제공하고 디자인 타임에 조금 더 좋은 보이지만, 난 당신을 허용 외에 어떤 기능 차이를 볼 수 없습니다 : 나는이 같은 몇 가지 현지화 확장을 보았다 런타임시 언어 변경 내가 여기서 뭔가를 놓치고 있습니까? 아니면 쉽고 편한 길로 가야합니까? 총 합계는 현지화가 필요한 ~ 100 개의 문자열만을 포함합니다. 가장 간단한 경로가 여기에 가장 적합하다고 생각합니다. 특히 앱의 상대적 단순성을 고려하면 특히 그렇습니다.

답변

6

나는 확실히 resx 경로를 권하고 싶습니다. 나는 방금 다양한 언어로 현지화 될 대형 wpf 응용 프로그램을 작성했으며 (현재 en_GB 및 it_IT가 있지만 더 많은 로케일이 곧 출시 될 예정 임) 완벽하게 작동합니다.

일부 단점

고려해야 할 :

  • 당신이 언급 한 것처럼,이 여전히 약간의 작업이 마크 업을 사용하여 을 달성 할 수 있지만 당신이 (동적 스위치 언어 를 원한다면 그것은 정말 훌륭한 솔루션이 아니다 확장). 당신은 당신은 꽤 많이 locBaml은 으로 내가 '까지로 현지화 문자열 (제한됩니다 오버 헤드
  • 의 작은 비트를 추가 당신의 RESX 선행에 자원을 배치해야 locBaml 접근 반대로
  • m을 알고, 당신은 꽤 많이 ) 우리면 locBaml 훨씬 날조 단점으로 RESX 접근의 작은 무승부 백업에서

모든 요소의 속성을 지역화 할 수 있습니다.

한가지주의 할 점은 전체 빌드 프로젝트에서 locBaml 접근 방식을 사용하지 않았기 때문입니다. 나는 너와 같은 상황에 있었고 두 가지 접근법을 모두 조사해야했다. 뒤늦은 지혜로 볼 때 그것은 분명히 우리에게 올바른 결정이었습니다.

+0

감사합니다. 믿어주세요. 전체 빌드 프로젝트에서 LocBaml을 사용하지 않아도 돼서 기쁘게 생각합니다. resx로 이미지를 현지화 할 수 있는지 알고 있습니까? 나는 우리가 그들을 지역화 할 필요가 없을 것이라고 생각하지만, 단지 그것을 넣을 필요가 없다. ... – Stevoman

+1

@Baconcheese - 나는 resx에 URL을 추가하고, Uri 객체를 사용한다. url은 속성으로 Uri를 노출한다. ViewModel에 이미지 바인딩이 있습니다. –

+0

우수합니다. 감사합니다. – Stevoman

5

WPF localization extension을 사용합니다. 현지화 된 문자열의 런타임 전환 및 디자인 타임보기 기능을 제공합니다.

resx 사용에 대한 좋은 점은 좋은 대체 기능 (예 :de-DE, de, default 리소스). 또한 locBaml에는 CSV 파일을 사용하는 데 따르는 모든 문제 (예 : 쉼표가 포함 된 문자열을 이스케이프해야 함)가있는 단점이 있습니다. 또한 강력한 이름의 서명 된 어셈블리는 도구를 실행 한 후에 사임해야합니다.

관련 문제