在XAML中本地化类型参数(例如x:String)

在XAML中本地化类型参数(例如x:String),xaml,xamarin,localization,internationalization,xamarin.forms,Xaml,Xamarin,Localization,Internationalization,Xamarin.forms,一个人可以翻译字符串、图像等。大多数情况下,您都可以这样做: <Label Text="{i18n:Translate NotesLabel}" /> 这里我们使用标记。如何在XAML中本地化这些类型参数?或者这只能在代码中实现吗?我还没有尝试过,但这可能会奏效: 要使其与上的XamlC一起工作,您可能必须从以下位置修复TranslateExtension的签名: 公共类TranslateExtension:IMarkupExtension 致: 公共类TranslateEx

一个人可以翻译字符串、图像等。大多数情况下,您都可以这样做:

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

这里我们使用
标记。如何在XAML中本地化这些类型参数?或者这只能在代码中实现吗?

我还没有尝试过,但这可能会奏效:


要使其与上的
XamlC
一起工作,您可能必须从以下位置修复
TranslateExtension
的签名:

公共类TranslateExtension:IMarkupExtension
致:

公共类TranslateExtension:IMarkupExtension
并实现新的接口:

string IMarkupExtension.ProvideValue(IServiceProvider服务提供者)
{
...
返回翻译;
}
对象IMarkupExtension.ProviderValue(IServiceProvider服务提供者)
{
return(作为IMarkupExtension)。ProvideValue(serviceProvider);
}

现在我尝试了你的方法。在这里,当选择器的第一个翻译项在
字符串IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
对象IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)处返回时,我得到了
System.Reflection.targetingException
。没有上下文的异常没有帮助。它可能看起来像一只虫子。请将该文件归档到bugzilla,我们将对其进行查看现在我创建了一个新项目,在这里我得到了
System.ArgumentException:类型为“ProjectName.TranslateExtension”的对象无法转换为类型为“System.String”。
我也尝试了该示例,并得到了相同的错误消息。你好,Stephane。在XF的最新版本中,这种翻译似乎工作得很好。唯一缺少的是在XAML中转换为
String
。我该怎么做?
<Picker x:Name="IndustryTypePicker1" SelectedIndex="{Binding Industry}" HorizontalOptions="FillAndExpand">
    <Picker.Items>
        <x:String>1</x:String> 
        <x:String>2</x:String>
    </Picker.Items>
</Picker>