是否有可能更新本地化故事板的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来“重新加载”文件。

  1. 从Project Navigator中select您的基本故事板文件
  2. 在文件检查器中find本地化部分
  3. 如果您的文件当前是[Localizable Strings],请将其更改为[Interface Builder Cocoa Touch Storyboard],反之亦然。
  4. Xcode应该已经将您的故事板转换为当前版本,同时保留您以前的本地化工作。 在这里,您可以将文件更改回原来的文件types,如果你愿意。

选项2

使用ibtool提取故事板中的string。

  1. 打开terminal应用程序
  2. find您的Base.lproj目录
  3. 使用这一行来提取string:

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

  4. 在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的新文件中。

这在一些像我的情况下是有用的,当你只需要改变一个或两个文本。

我认为最好的方法是使用内置的导出/导入本地化:

  1. 在Project Navigator中select你的项目文件夹
  2. select编辑器>导出为本地化,
  3. 所有的翻译留在他们的地方和XCode自动添加错过的string。 另外,在导入之前,您可以在XLIFF Editor中编辑.xliff(例如online – http://xliff.brightec.co.uk ),然后您不需要在XCode中执行此操作。
  4. 然后编辑器>导入本地化并select保存的.xliff文件。

PS如果您不想在XLIFF编辑器中编辑并跳过第3步,则XCode不能保存新的string。 在这种情况下,在XLIFF编辑器中打开.xliff,重新保存而不更改并导入新文件。

这是一个从storyboard和xib中提取string的脚本,并将它们与现有的翻译合并。

要在构build项目时自动运行脚本,请将该脚本放入项目根目录,然后使用以下行将运行脚本阶段添加到项目设置中的目标构build阶段。

 ./mergegenstrings.py PathToSourceDir 

或者,您可以在需要时手动运行terminal上的脚本。

脚本运行ibtool正如Tha Leang所回答的那样。 它还运行genstringsstring来提取和合并源代码中用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)确保,你有混帐防止意想不到的变化。

  1. 转到xcode的目标屏幕,然后按Editor – > Export For Localization...ar.xliff文件保存在某个地方。
  2. 下载XLIFF Edtior 。
  3. 打开ar.xliff文件并进行更改。
  4. 在xcode中导入这个文件。 完成! 您已更新故事板string文件。

您可以取消选中该语言的checkbox。 当用“你想删除Main.storyboard的英文本地化吗? 对话框中,选中“从磁盘删除本地化的资源文件”选项。 那么该string文件将被删除。 再次勾选checkbox添加新的string文件,您将获得所有新增文本的最新文件。