0

Localizing Xamarin.Forms Apps with RESX Resource Files에서 문자열, 이미지 등을 번역 할 수 있습니다. 당신은 시간의 대부분을 수행 할 수 있습니다 여기에XAML에서 유형 인수 지역화 (예 : x : 문자열)

<Picker x:Name="IndustryTypePicker1" SelectedIndex="{Binding Industry}" HorizontalOptions="FillAndExpand"> 
    <Picker.Items> 
     <x:String>1</x:String> 
     <x:String>2</x:String> 
    </Picker.Items> 
</Picker> 

우리가 <x:String> 태그를 사용

<Label Text="{i18n:Translate NotesLabel}" /> 

지금 나는 Picker 사용하고 싶습니다. 이러한 형식 인수는 XAML에서 어떻게 지역화 될 수 있습니까? 또는 이것은 코드에서만 가능합니까?

답변

1

나는 시도하지 않은,하지만이 일할 수 :

<Picker> 
    <Picker.Items> 
    <i18n:TranslateExtension Text="1" /> 
    <i18n:TranslateExtension Text="2" /> 
    </Picker.Items> 
</Picker> 

이가 XamlC와 함께 작동하도록하려면에서 TranslateExtension의 서명을 수정해야 할 수도 있습니다 :

public class TranslateExtension : IMarkupExtension 

을 to :

public class TranslateExtension : IMarkupExtension<string> 

그리고 새 인터페이스 인

string IMarkupExtension<string>.ProvideValue(IServiceProvider serviceProvider) 
{ 
    ... 
    return translation;  
} 

object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) 
{ 
    return (this as IMarkupExtension<string>).ProvideValue(serviceProvider); 
} 
+0

이제 귀하의 접근 방법을 시도해 보았습니다. 'IMarkupExtension.ProvideValue (IServiceProvider serviceProvider)'와'객체 IMarkupExtension.ProvideValue (IServiceProvider serviceProvider) '에서 피커의 첫 번째 번역 항목이 반환되면'System.Reflection.TargetInvocationException'을 얻습니다. – testing

+0

컨텍스트가없는 예외는 도움이되지 않습니다. 버그처럼 보일 수도 있습니다. 그 파일을 bugzilla에 보내면 우리는 그것을 보겠습니다. –

+0

이제 새로운 프로젝트를 만들었고 여기에'System.ArgumentException : 'ProjectName.TranslateExtension'유형의 객체를 'System.String'유형으로 변환 할 수 없습니다 .' 나는 또한 [UsingResxLocalization] (https://github.com/xamarin/xamarin-forms-samples/tree/master/UsingResxLocalization) 예제로 시도했지만 동일한 오류 메시지가 나타납니다. – testing