是否有可能更新本地化故事板的string?
我本地化了我的应用程序的一部分,创build一个base.lproj故事板和3个string文件。 这是一个月前,之后,我添加了新的视图控制器的应用程序,但这个控制器的button和标签不出现在string文件
是否有可能更新这3个故事板附加的string文件或我必须添加新的string翻译编程使用NSLocalizableString和Localizable.strings?
有两个选项:
选项1
Xcode可以通过将文件转换为[Interface Builder Cocoa Touch Storyboard]文件types或[Localizable Strings]文件types来“重新加载”文件。
- 从Project Navigator中select您的基本故事板文件
- 在文件检查器中find本地化部分
- 如果您的文件当前是[Localizable Strings],请将其更改为[Interface Builder Cocoa Touch Storyboard],反之亦然。
- Xcode应该已经将您的故事板转换为当前版本,同时保留您以前的本地化工作。 在这里,您可以将文件更改回原来的文件types,如果你愿意。
选项2
使用ibtool提取故事板中的string。
- 打开terminal应用程序
- find您的Base.lproj目录
-
使用这一行来提取string:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings
-
在ibtool将string提取到file_name.strings之后,可以将其复制并粘贴到原始.strings文件中
访问以获取更多信息: https : //conyac.cc/business/columns/localization_guide_ios
您可以在本地化文件中手动添encryption钥。 您可以通过在故事板编辑器上select关键对象。 让我们看一下身份检查器中的Object-ID
。 这看起来像"nwc-b2-19c"
在您的本地化更新或添加翻译。 例如 :
"nwc-b2-19c.title" = "Translated title";
结帐BartyCrouch ,它完美地解决了你的问题。 它也是开源的 , 积极维护 ,可以很容易地安装和集成到您的项目。
通过Homebrew 安装 BartyCrouch:
$ brew install bartycrouch
逐步更新 Storyboard / XIBstring文件:
$ bartycrouch interfaces -p "/absolute/path/to/project"
这将做你正在寻找的。
为了保持 Storyboards / XIBsstring文件随着时间的推移而更新,我强烈build议添加一个构build脚本(关于如何在这里添加构build脚本的说明):
if which bartycrouch > /dev/null; then # Incrementally update all Storyboards/XIBs strings files bartycrouch interfaces -p "$PROJECT_DIR" # Add new keys to Localizable.strings files from NSLocalizedString in code bartycrouch code -p "$PROJECT_DIR" -l "$PROJECT_DIR" -a -s else echo "warning: BartyCrouch not installed, download it from https://github.com/Flinesoft/BartyCrouch" fi
除了增量更新Storyboards / XIBsstring文件外,还将确保Localizable.strings
文件保持使用NSLocalizedString
在代码中新添加的键的更新 。
确保在GitHub上检出BartyCrouch以获取更多信息。
这不是每个人都需要的,但是在terminal上不需要额外的工具,而且很容易进行小的手动修改。 (当你想自动化你的过程时不要考虑这个。)
第0步:故事板语言设置
- 基地(英文文本)
- 英文(由于基本文件为英文,因此本地化的string文件不存在)
- 其他语言(可本地化的string文件)
这一步只做一次。
现在,当我向故事板添加内容时,我执行以下操作
第1步:添加英文本地化的string文件
只需标记英文订单项。
这创build了一个全新的英文本地化的string文件与所有的行
第2步:将新订单项复制到其他语言文件
并翻译它们
第3步:取消标记英文,删除相应的可本地化的string文件
该文件仅用于获取新的订单项
这是一个简单而快速的过程,一切都在故事板编辑器中完成
最后,我的解决scheme是(基本但有效)复制以前的翻译,并将其粘贴到通过取消选中并检查本地化语言框创build的新文件中。
这在一些像我的情况下是有用的,当你只需要改变一个或两个文本。
我认为最好的方法是使用内置的导出/导入本地化:
- 在Project Navigator中select你的项目文件夹
- select编辑器>导出为本地化,
- 所有的翻译留在他们的地方和XCode自动添加错过的string。 另外,在导入之前,您可以在XLIFF Editor中编辑.xliff(例如online – http://xliff.brightec.co.uk ),然后您不需要在XCode中执行此操作。
- 然后编辑器>导入本地化并select保存的.xliff文件。
PS如果您不想在XLIFF编辑器中编辑并跳过第3步,则XCode不能保存新的string。 在这种情况下,在XLIFF编辑器中打开.xliff,重新保存而不更改并导入新文件。
这是一个从storyboard和xib中提取string的脚本,并将它们与现有的翻译合并。
要在构build项目时自动运行脚本,请将该脚本放入项目根目录,然后使用以下行将运行脚本阶段添加到项目设置中的目标构build阶段。
./mergegenstrings.py PathToSourceDir
或者,您可以在需要时手动运行terminal上的脚本。
脚本运行ibtool
正如Tha Leang所回答的那样。 它还运行genstrings
string来提取和合并源代码中用NSLocalizedString
标记的string。 该脚本基于这篇文章中的一个脚本 ,它在运行genstrings
之后合并string。
有一个应用程序是来自Apple的命令行工具,名为AppleGlot ,支持增量本地化。 我还没有尝试过,但它看起来就像你search的工具(前一段时间)。
这是我简单的方法来更新故事板或xib到本地化string的新文本
1-使用此脚本http://tredje.se/dev/trouble/?x=entry:entry150917-204052
2- select您要更新的本地化string ,并将您的语言string从“本地化string”切换到“界面生成器故事板”
3-切换回来:)
完成。
我有一个巨大的故事板,那里有很多的string。 两种语言基础英语和另一种阿拉伯语。 任务是添加一些字段和标签的故事板,并添加本地化他们没有任何脚本和NSLocalizableStrings。
接下来帮助我:
0)确保,你有混帐防止意想不到的变化。
- 转到xcode的目标屏幕,然后按
Editor
– >Export For Localization...
将ar.xliff文件保存在某个地方。 - 下载XLIFF Edtior 。
- 打开ar.xliff文件并进行更改。
- 在xcode中导入这个文件。 完成! 您已更新故事板string文件。
您可以取消选中该语言的checkbox。 当用“你想删除Main.storyboard的英文本地化吗? 对话框中,选中“从磁盘删除本地化的资源文件”选项。 那么该string文件将被删除。 再次勾选checkbox添加新的string文件,您将获得所有新增文本的最新文件。