gpt4 book ai didi

iphone - UIBarButtonSystemItem 可本地化

转载 作者:太空狗 更新时间:2023-10-30 03:48:26 25 4
gpt4 key购买 nike

如何使 UIBarbuttonItem 本地化?

我的实现:

UIBarButtonItem         *cancelButton = [[UIBarButtonItem alloc]                                              initWithBarButtonSystemItem:UIBarButtonSystemItemDone                                             target:self                                             action:@selector(cancel)];

本来以为是自动的,因为做成这样看起来很容易,结果好像不是。

EDIT1:官方 Apple dox 表示取消、完成、编辑、保存按钮已本地化,但不确定如何制作。

最佳答案

好吧,我想我知道发生了什么。

UIKit 根据 [[NSBundle mainBundle] preferredLocalizations] 的值决定用哪种语言显示字符串。这背后的想法是尽可能使用翻译后的资源,否则就使用英语。例如,如果您不提供应用的芬兰语翻译,并且在“设置”->“通用”->“国际”->“语言”中选择了芬兰语,则您的应用将为英语。它可能有点复杂(UIKit 可能会按照 Settings.app 中显示的顺序遍历所有语言列表,试图找到你的应用程序具有翻译的第一种语言),但重点是。

以上内容可能过于明显,不容错过关键的细微差别。由上述算法确定的语言用于应用程序的整个 UI。例如,如果应用程序包不包含 sk.lproj,则斯洛伐克语不会显示任何内容。事实上,它确实有意义,因为否则 UI 的某些部分将使用斯洛伐克语,而其他部分将使用英语。

打开已编译的应用程序包,查看其中有哪些 *.lproj 文件夹。 [[NSBundle mainBundle] preferredLocalizations] 将返回相同的集合,根据用户偏好排序。所有可本地化的字符串,包括系统栏按钮项目,都将以其中一种语言显示。如果您不支持俄语,即使在 Settings.app 中选择了俄语,整个 UI 也会以另一种语言显示。

如果您的应用确实是这种情况,则有两件正确的事情和一件错误的事情要做:

  • 正确:为您的应用中显示的每个字符串提供斯洛伐克语翻译,将任何包含文本的 Nib 也翻译成斯洛伐克语;
  • 正确:如果您不能(或不需要)支持斯洛伐克语,则完全忽略它;
  • 错误:选择任何字符串文件或任何 nib,打开 Xcode 的检查器,单击“添加本地化…”(如果该按钮被禁用,请先单击“使文件本地化”),键入“sk”,单击“添加”并构建该项目。这将使 UIKit 认为您的应用已翻译成斯洛伐克语,并且当在 Settings.app 中选择它时,系统栏按钮项目将自动显示为斯洛伐克语。

如果您看到不同的行为,则项目/构建/构建的应用可能有问题。例如,我注意到当您将文件本地化时,其未本地化的副本不会从之前构建的应用程序包中删除。

关于iphone - UIBarButtonSystemItem 可本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com