2010-08-20 2 views
1

내 응용 프로그램은 여러 언어를 지원해야하며 런타임에 언어를 전환 할 수 있어야합니다. 그 목적을 위해 나는 LocalplexExtension을 codeplex (http://wpflocalizeextension.codeplex.com/)에서 사용하고 있습니다. 저는 응용 프로그램에서 Ribbon Contorl을 사용하고 있습니다. 내가 리본 리소스로 ribbonCommands를 만들고 LableTitle 및 기타 속성 withLocalizationExtension 클래스를 바인딩하고 있습니다.코드 플렉스에서 LocalizationExtension을 사용하여 리본 컨트롤에서 지역화를 적용하는 해결 방법

<MvvmCore:RibbonCommandExtended x:Key="SwitchLanguageCommand" 
          CanExecute="RibbonCommandExtended_CanExecute" 
          Executed="RibbonCommandExtended_Executed" 
          LabelTitle="{lex:LocText Key=SwitchLanguage,Dict=LanRes}" 
          ToolTipTitle="{lex:LocText Key=SwitchLanguage,Dict=LanRes}" 
          LargeImageSource="{lex:LocImage Key=ChangeLanguage,Dict=LanRes}"/> 

그런 다음 버튼 속성을 정적 리소스로 지정합니다.

<rb:RibbonButton x:Name="EnglishButton" Command="{StaticResource SwitchToEnglishCommand}" Click="EnglishButton_Click"> 

다음은 내 RibbonCommandExtended 클래스입니다.

public class RibbonCommandExtended : RibbonCommand 
    { 
     private ICommand m_command; 
     public ICommand Command 
     { 
      get { return m_command; } 
      set 
      { 
       m_command = value; 
       if (m_command != null) 
       { 
        this.CanExecute += UsCanExecute; 
        this.Executed += UsExecuted; 
       } 
       else 
       { 
        this.CanExecute -= UsCanExecute; 
        this.Executed -= UsExecuted; 
       } 
      } 
     } 

     private void UsExecuted(object sender, ExecutedRoutedEventArgs e) 
     { 
      Command.Execute(e.Parameter); 
     } 

     private void UsCanExecute(object sender, CanExecuteRoutedEventArgs e) 
     { 
      e.CanExecute = Command.CanExecute(e.Parameter); 
     } 
    } 

내 프로그램이 시작되면 리본 컨트롤이 올바른 언어 문자열과 이미지를 선택합니다. 하지만 런타임에 언어를 변경하면 리본 컨트롤의 텍스트와 이미지가 변경된 것을 볼 수 없습니다. RibbonCommand의 LabelTitle, LargeImageSource 및 기타 모든 속성은 종속성 속성이 아니기 때문에

누군가 이미 문제를 해결 했습니까? 아니면 내 요구 사항을 충족 시키도록 내 응용 프로그램을 지역화하기 위해 LocalizationExtension이 아닌 다른 방법이 있습니까?

답변

-1

LocalizationExtension을 사용하여 응용 프로그램을 쉽게 현지화 할 수 있습니다. 그러나 아마도 우리는 지역화, 분리 된 문화 자원 및 실행 시간에 그것을 변경하는 기본 방법으로 되돌아 가야합니다. http://msdn.microsoft.com/en-us/library/ms788718.aspx을 참조하십시오. Locbaml 도구를 사용하여 여러 culture에 대해 편집 할 수있는 CVS를 생성 한 다음 다른 culture에 대한 리소스 dll 파일에 CSV를로드하고 코드별로 변경하십시오.

Thread.CurrentThread.CurrentCulture = new CultureInfo (...); 다음 프로젝트는 WPF 현지화에 대한 지침을 제공합니다. WPF 현지화 지침 백서는 다음과 같은 이점을 제공합니다. http://wpflocalization.codeplex.com/