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
目录。然后为其他受支持的语言添加一个<language>.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 标记扩展