我通过为它创建一个 base.lproj 故事板和 3 个字符串文件来本地化我的应用程序的一部分。一个月前,在那之后我向应用程序添加了新的视图控制器,但是这个控制器的按钮和标签没有出现在字符串文件中
是否可以更新这 3 个故事板附加的字符串文件,或者我必须使用 NSLocalizableString 和 Localizable.strings 以编程方式添加新的字符串翻译?
我通过为它创建一个 base.lproj 故事板和 3 个字符串文件来本地化我的应用程序的一部分。一个月前,在那之后我向应用程序添加了新的视图控制器,但是这个控制器的按钮和标签没有出现在字符串文件中
是否可以更新这 3 个故事板附加的字符串文件,或者我必须使用 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
查看BartyCrouch,它完美地解决了您的问题。它也是开源的,积极维护,可以很容易地安装和集成到您的项目中。
通过Homebrew安装BartyCrouch :
brew install bartycrouch
或者,通过Mint安装它:
mint install Flinesoft/BartyCrouch
逐步更新您的 Storyboards/XIBs 字符串文件:
$ bartycrouch update
这将完全符合您的要求。
为了让您的 Storyboards/XIBs 字符串文件随着时间的推移而更新,我强烈建议添加一个构建脚本(有关如何在此处添加构建脚本的说明):
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
除了增量更新您的 Storyboards/XIBs 字符串文件之外,这还将确保您的Localizable.strings
文件使用代码中新添加的键保持更新NSLocalizedString
,并显示重复键或空值的警告。
请务必查看GitHub 上的 BartyCrouch或此详细文章以获取更多信息。
您可以在本地化文件中手动添加密钥。您可以通过在情节提要编辑器上选择关键对象来找到它。让我们看一下Object-ID
身份检查器。它看起来像"nwc-b2-19c"
在您的本地化更新或添加翻译。例如 :
"nwc-b2-19c.title" = "Translated title";
这并不适合所有人,但它不需要终端中的其他工具,并且很容易进行小的手动更改。(当你想自动化你的过程时不要考虑这个。)
步骤 0:故事板语言设置
此步骤只进行一次。
现在,当我向情节提要添加一些内容时,我会执行以下操作
第 1 步:添加英文本地化字符串文件
只需标记英文行项目。
这将创建一个包含所有行的全新英文本地化字符串文件
第 2 步:将新行项目复制到其他语言文件中
并翻译它们
第三步:取消标记英文,去掉对应的localizable strings文件
该文件仅用于获取新订单项
这是一个简单快速的过程,一切都在故事板编辑器中完成
编辑:
这个过程非常适用于小型故事板。例如,我有一个基于选项卡的项目,并且每个选项卡都有一个情节提要。
搜索“故事板参考”以查找教程。
很好的例子:Xcode 中的 Storyboard 参考,我们应该在哪里使用它?
所以每个小故事板只有几个要本地化的字符串。
最后,我的解决方案是(基本但有效)复制以前的翻译并将它们粘贴到通过取消选中并选中本地化语言框创建的新文件中。
当您只需要更改一两个文本时,这在像我这样的某些情况下会很有用。
我认为最好的方法是使用内置的导出/导入本地化:
PS 如果您不想在 XLIFF 编辑器中编辑并跳过第 3 步,XCode 无法保存新字符串。在这种情况下,在 XLIFF 编辑器中打开 .xliff,重新保存而不进行更改并导入新文件。
我有一个巨大的故事板,那里有很多字符串。两种语言以英语和另一种阿拉伯语为基础。任务是在情节提要中添加一些字段和标签,并在没有任何脚本和 NSLocalizableStrings 的情况下为它们添加本地化。
接下来对我有帮助:
第一:确保你有 git 来防止意外的变化。
Editor
-> Export For Localization...
。将ar.xliff文件保存在某处。Apple有一个名为AppleGlot的命令行工具应用程序,它支持增量本地化。我还没有尝试过,但它看起来与您搜索的工具完全一样(前段时间)。
Xlifftool 可作为 Mac 应用程序使用,并且运行良好。它显示了 info.plist 中的所有可翻译字符串和对象、可本地化的字符串和情节提要。
在这里为 mac 获取它:https ://itunes.apple.com/lv/app/xlifftool/id1074282695?mt=12
第 1 步:在 Xcode 中,在项目导航器中选择您的项目文件夹。然后选择 Editor/Export for Localization...
您的可翻译字符串将包含在您选择用于 Xcode 本地化的语言下的 xliff 文件中。
第 2 步:使用 xlifftool 打开该文件并翻译或更新您之前完成的翻译。
第 3 步:然后使用 Editor/Import Localizations 上传回您的项目...
选项 1 Xcode 可以通过将文件转换为文件类型或文件类型
来“重新加载”文件。[Interface Builder Cocoa Touch Storyboard]
[Localizable Strings]
从Project Navigator中选择您的基本故事板文件在File Inspector中
找到Localization部分。如果您的文件当前是,请将其更改为,反之亦然。
Xcode 应该已将您的故事板转换为当前版本,同时保留您旧的本地化工作。如果您愿意,您可以在此处将文件更改回原始文件类型。[Localizable Strings]
[Interface Builder Cocoa Touch Storyboard]
选项 2
用于ibtool
提取情节提要中的字符串。
打开终端应用程序
找到您的Base.lproj
目录
使用此行提取字符串:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
在 ibtool 将字符串提取到 后file_name.strings
,您可以将其复制并粘贴到您的原始.strings
文件中。
添加新语言进行本地化。一个你不需要的。
例如,它将生成说 Indonesia.strings,其中将包含您需要的所有情节提要按钮名称等,将它们全部复制并粘贴到您拥有的所有其他 language.string 文件中。
这是我将新文本从情节提要或 xib 更新为本地化字符串的简单方法
1-使用这个脚本http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2-选择您要更新的本地化字符串并将您的语言字符串从“本地化字符串”切换到“界面构建器故事板”
3-切换回来:)
完毕。