是否可能更新这三个 storyboard 相关的字符串文件,或者我必须使用 NSLocalizableString 和 Localizable.strings 在编程中添加新的字符串翻译呢?
Xcode可以通过将文件转换为[Interface Builder Cocoa Touch Storyboard]文件类型或[Localizable Strings]文件类型来“重新加载”文件。
使用ibtool提取故事板中的字符串。
打开终端应用程序
找到您的Base.lproj目录
使用此行来提取字符串:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
在ibtool将字符串提取到file_name.strings之后,您可以将其复制并粘贴到原始.strings文件中
有关更多信息,请访问:https://conyac.cc/business/columns/localization_guide_ios
看看 ReMafoX,它是一款完美解决问题的Mac应用程序。它可以被轻松安装和集成到您的项目中,观看这个视频以获取详细步骤。
或者,如果你喜欢一个没有图形用户界面的开源CLI工具,也可以使用BartyCrouch。
通过Homebrew安装BartyCrouch:
brew install bartycrouch
或者,通过Mint安装:
mint install Flinesoft/BartyCrouch
增量更新您的Storyboards/XIBs字符串文件:
$ bartycrouch update
这将恰好做到你想要的。
为了随时间的推移保持故事板/XIB字符串文件更新,我强烈建议添加一个构建脚本(如何添加构建脚本的说明在这里):
if which bartycrouch > /dev/null; then
bartycrouch update -x
bartycrouch lint -x
else
echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch"
fi
除了增量更新您的故事板/XIB字符串文件之外,这还将确保使用NSLocalizedString
在代码中新增键时,您的Localizable.strings
文件得到更新,并显示重复键或空值的警告。
请务必在GitHub上查看BartyCrouch或这篇详细文章获取更多信息。
您可以在本地化文件中手动添加密钥。您可以通过在Storyboard编辑器上选择它来找到密钥对象。让我们看一下身份验证器中的Object-ID
。它看起来像这样:"nwc-b2-19c"
在本地化更新或添加翻译。例如:
"nwc-b2-19c.title" = "Translated title";
这个方法不适用于所有人,但在终端中不需要额外的工具,并且对于小的手动更改非常简单。(如果要自动化处理请勿考虑此方法。)
步骤0:设置Storyboard语言
此步骤只需执行一次。
现在,当我向Storyboard添加内容时,按照以下步骤操作:
步骤1:添加英文本地化字符串文件
只需选择“English”即可。
这将创建一个完全新的英文本地化字符串文件,其中包含所有行。
步骤2:复制新的行到其他语言的文件中
并进行翻译。
步骤3:取消选择英文,删除相应的本地化字符串文件
该文件仅用于获取新的行。
这是一个简单且快速的过程,所有步骤都在Storyboard编辑器中完成。
编辑:
此方法非常适用于小型Storyboard。例如,我有一个基于选项卡的项目,每个选项卡都有一个Storyboard。
搜索“storyboard reference”以查找教程。
好的例子:Xcode中的Storyboard参考,在哪里使用?
因此,每个小型Storyboard只需要本地化几个字符串。
最终,我的解决方案是(简单但有效的)复制之前的翻译,并将它们粘贴到通过取消和选择本地化语言框创建的新文件中。
在某些情况下,这将非常有用,比如像我的情况一样,只需要更改一个或两个文本。
我认为最好的方法是使用内置的导出/导入本地化功能:
附:如果您不想在 XLIFF 编辑器中进行编辑并跳过第3步,则 XCode 可能未保存新字符串。在这种情况下,打开 XLIFF 编辑器中的 .xliff 文件,重新保存但不做更改,然后导入新文件。
/* Class = "UILabel"; text = "a basic text"; ObjectID = "HFW-aN-MTb"; */
,但是新标签没有在 Main.strings 文件中创建。然后我编辑了 .xliff 文件以添加新标签的翻译。我再次导入它。现在,新标签被插入到 Main.strings 文件中。 - duthen我有一个包含许多字符串的大型故事板。其中两种语言基础为英语和阿拉伯语。任务是在故事板中添加一些字段和标签,并为它们添加本地化,而不需要任何脚本和NSLocalizableStrings。
以下是对我有帮助的步骤:
第一步:确保您使用git以防止意外更改。
Editor
-> Export For Localization...
。将ar.xliff文件保存在某个地方。