Xamarin Forms Picker - iOS 上的“完成”文本

Posted

技术标签:

【中文标题】Xamarin Forms Picker - iOS 上的“完成”文本【英文标题】:Xamarin Forms Picker - "Done" text on iOS 【发布时间】:2016-12-05 10:32:43 【问题描述】:

我有一个关于 Xamarin 表单选取器控件 (https://developer.xamarin.com/api/type/Xamarin.Forms.Picker/) 的问题。 ios 选择器右上角的“完成”按钮似乎无法翻译。

为了进一步说明这个问题,我附上了一张截图。您还可以看到设备本身的语言对“完成”标签没有影响。您可以看到这一点,因为设备设置为荷兰语,这可以通过查看图像左上角的“Geen simkaart”文本来验证。

我是否遗漏了 API 中的某些内容,或者是否可以使用自定义渲染器翻译文本?

截图:https://s15.postimg.org/hhbbd2w9n/IMG_0005_masked.png

【问题讨论】:

【参考方案1】:

“完成”按钮是 UIBarButtonSystemItem.Done 样式,这意味着当您在 iOS 上切换语言时它应该会自动翻译,因为您已根据 Xamarin 文档在 Localizable.strings 中提供了翻译字符串:https://developer.xamarin.com/guides/ios/advanced_topics/localization_and_internationalization/#platform

因此,您可以在 Info.Plist 中添加其他语言:

<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleLocalizations</key>
<array>
  <string>dk</string>
</array>

然后对于基础语言,您需要在参考资料中添加一个Base.lproj 目录。然后为其他受支持的语言添加一个&lt;language&gt;.lproj 文件夹,在本例中为dk.lproj

在每个文件夹中都有一个名为Localizable.strings 的新文件。然后按以下格式添加语言的键:

"key"="localized-value";

基础将是您在 Info.Plist 中添加的 CFBundleDevelopmentRegion 中定义的语言代码。

我可能只对系统按钮执行此操作,例如完成、添加、删除等。对于其他按钮和字符串,我会使用 Resx 文件或类似文件,可以在您支持的平台之间共享。

【讨论】:

【参考方案2】:

按钮文本“完成”已被系统翻译:

https://developer.apple.com/documentation/uikit/uibarbuttonsystemitem/uibarbuttonsystemitemdone

要使翻译工作,您需要做的就是在 info.plist 文件中设置支持的语言。无需提供实际翻译。

<key>CFBundleLocalizations</key>
<array>
  <string>en</string>
  <string>ro</string>
</array>

【讨论】:

以上是关于Xamarin Forms Picker - iOS 上的“完成”文本的主要内容,如果未能解决你的问题,请参考以下文章

我们如何处理 Xamarin Forms Picker 的完成按钮单击事件?

Xamarin.forms--------------Picker

Xamarin.Forms.Picker 内容在 UWP 中重复

Picker.Items 中使用的 Xamarin.Forms 标记扩展

Xamarin.Forms 中 Picker 的自定义渲染器

Xamarin Forms - 在页面加载时使用异步数据加载 Picker 控件