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

标签 xaml xamarin localization internationalization xamarin.forms

Localizing Xamarin.Forms Apps with RESX Resource Files可以翻译字符串、图像等。大多数时候你都可以这样做:

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

现在我想使用Picker :

<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>标签。如何在 XAML 中本地化这些类型参数?或者这只能在代码中实现?

最佳答案

我没有尝试过,但这可行:

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

要使其与 XamlC 一起使用,您可能需要修复 TranslateExtension 的签名:

public class TranslateExtension : IMarkupExtension

至:

public class TranslateExtension : IMarkupExtension<string>

并实现新接口(interface):

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

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

关于xaml - 本地化 XAML 中的类型参数(例如 x :String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39491246/

相关文章:

ios - 在 Xamarin 中隐藏后退按钮文本

c# - 在 WPF DataGrid 的单个单元格上设置删除线的最佳方法?

安卓语言选择

c# - wpf-单击按钮时动态创建新文本框和文本 block 并将其添加到网格行

c# - DataGrid 的意外行为

xamarin - 使用 Xamarin.Studio 构建 Xamarin.Android 项目时出错

Android MVVM Cross v3 - 如何创建具有交替行颜色的 ListView

ios - 你能检测到 UIViewController 何时被关闭或弹出吗?

php - Laravel 功能测试与区域设置

android - Google Play 控制台中翻译服务的 CSV 示例