Swift:情节提要中的本地化 - 标签未添加到 Main.strings?

Swift: Localization in Storyboard - Labels not added to Main.strings?

当我尝试本地化我的应用程序并为目标语言创建一个新的 Main.strings 文件时,我在界面构建器中创建的所有内容(标签、按钮...)都会添加到新的 Main.strings 文件(基本和语言版本),我可以相应地本地化文本。

但是当我稍后在界面生成器中向 ViewController 添加标签或按钮时,它不会自动添加到基本和语言版本的 Main.strings 文件中。

那么,我怎样才能找出 button/label 的 ObjectID 是什么,以便我可以将它添加到字符串文件中?

或者是否有另一种方法可以强制 Xcode 自动将新添加的标签和按钮添加到这些文件中?

从故事板中选择 UILabel 后,您可以在右侧面板中找到 UILabel 的对象 ID:

然后您可以在 Main.string 文件中设置如下标签文本:

"sxl-NO-5WX.text" = "Phone";

Dhaval Bhimani 的回答是本地化少量新添加的视图组件的最简单的解决方案。如果您想重新生成故事板的所有本地化,select Main.storyboard-> deselect 所有语言的本地化复选框。选中 'Delete localized resource files from disk' 复选框 现在确保您新添加的标签和按钮在那里,并通过 selecting 语言再次本地化。以防万一在那之前备份你的字符串文件

使用 ibtool 提取故事板中的字符串。

打开终端应用程序 找到您的 Base.lproj 目录 使用此行提取字符串:

ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings

ibtool 将字符串提取到 file_name.strings 后,您可以将其复制并粘贴到原始 .strings 文件

(原贴于此Is it possible to update a localized storyboard's strings?

UILabel

使用ObjectID.text

UIButton

使用ObjectID.normalTitle

示例:

/* Object ID of UILabel */
"GWb-TZ-iGk.text" = "I am label";

/* Object ID of UIButton */
"H6f-pG-K8Z.normalTitle" = "I am button";

简单的 XIB 和情节提要本地化 - 非常有效和简单的方法

此存储库作为有关如何本地化某些 UIKit 控件的示例:

UILabel, 界面按钮, UITextField 占位符, UISegmentedControl, 标签栏项目和导航栏项目的 UIBarItem, UINavigationItem, 评论 Localizable.swift 进行检查。

https://github.com/emenegro/xib-localization