如何在Xcode 5中修改故事板后同步本地化的故事板的字符串

Gia*_*nzi 40 localization interface-builder uistoryboard ios7 xcode5

我刚开始看看IOS Apps在XCode 5中的本地化,我试图添加一个意大利语本地化: 添加意大利语本地化

Xcode 5自动生成带有单个条目的Main.strings文件,这是我在Main.storyboard文件中放置的唯一标签:

/* Class = "IBUILabel"; text = "Label"; ObjectID = "PeT-4z-NSf"; */
"PeT-4z-NSf.text" = "Etichetta";
Run Code Online (Sandbox Code Playgroud)

XCode 5生成了文件

如果我稍后修改Main.storyboard文件向视图中添加一个新按钮,那么如果可能的话,我应该如何告诉Xcode 5将缺少的本地化字符串添加到Main.strings文件中?我应该通过查看Interface Builder中的对象ID字段手动添加新条目(它可以工作,但我不知道这是否是更新故事板本地化的意义)?我可以在Main.storyboard文件上运行类似genstrings东西来提取所有标签的文本并将新的文本添加到本地化的Main.strings文件中吗?

Jee*_*hut 20

结帐BartyCrouch,它完美地解决了您的问题.它也是开源的,积极维护的,可以轻松安装和集成到您的项目中.


通过Homebrew 安装 BartyCrouch :

brew install bartycrouch
Run Code Online (Sandbox Code Playgroud)

或者,通过Mint安装它:

mint install Flinesoft/BartyCrouch
Run Code Online (Sandbox Code Playgroud)

逐步更新 Storyboards/XIBs Strings文件:

$ bartycrouch update
Run Code Online (Sandbox Code Playgroud)

这将完全符合您的要求.


为了使 Storyboards/XIBs Strings文件随时间更新,我强烈建议您添加构建脚本(有关如何在此处添加构建脚本的说明):

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
Run Code Online (Sandbox Code Playgroud)

除了逐步更新Storyboards/XIBs Strings文件之外,还将确保您的Localizable.strings文件使用代码中新添加的密钥保持更新,NSLocalizedString并显示重复键或空值的警告.

请务必在GitHub上查看BartyCrouch以获取更多信息.


Rah*_*hav 18

Xcode没有自动更新的文件(至少5.x版本没有)是应用程序的Localizable Strings.您可以Main.storyboard按如下方式构建一个新文件:

在项目导航器(最左侧窗格)中单击该Main.storyboard文件.在"实用工具"窗格(最右侧窗格)中,单击" 显示文件"检查器图标.它是下图中最左边的蓝色图标:

文件检查器是最左侧的图标.

在将出现的右窗格中,其中一个部分将是" 本地化":

本地化部分

取消选中该English (Localizable Strings)行,在弹出的窗口中选中" 从磁盘删除本地化资源文件",然后单击" 删除"按钮(您不必检查删除,在这种情况下,Xcode会要求您在构建时覆盖它的权限下一个).

然后English (Localizable Strings)再次检查以从头开始构建它.

  • 这意味着如果你本地化除英语之外的其他语言,一切都将被删除,一旦你"重新添加",所有的翻译都将被故事板中的翻译所覆盖. (16认同)

oli*_*k79 6

使用Xcode 6,以下为我工作:

我将语言的本地化从"Localizable Strings"更改为"Interface Builder ...",就像h.orim发布的SO问题中所建议的那样.但是设置没有改变,它仍然被设置为"Localizable Strings".现在的下一步是再次执行此操作,因此Xcode将找到它刚刚创建的Storyboard并显示一个提示,询问是否应该使用或替换它.现在点击"使用文件"而不是"替换",否则会再次发生同样的情况.

现在,您应该拥有所需语言的本地化Storyboard.现在切换回"Localizable Strings"后,您将拥有一个文件,其中包含故事板中使用的所有当前字符串,并且您之前的翻译仍然存在.


try*_*ryp 6

另一种方法是通过在情节提要上选择要翻译的字段来手动完成。转到“身份检查器”并复制对象 ID(类似于 HP8-op-SmX)。

身份检查员

之后,打开故事板语言文件(Main.strings,大多数情况下)并通过对象 ID。根据您的需要,您只需添加 .text 或 .placeholder。

   "HP8-op-SmX.placeholder" = "My translated placeholder text";
   "HP9-op-VvD.text" = "My translated text";
Run Code Online (Sandbox Code Playgroud)

保存、清理和构建。这有点痛苦,但如果您只需要翻译很少的东西,可以节省很多时间。


小智 4

为此,您可以使用名为 UpdatStoryboardStrings 的脚本!
在这里获取: https: //github.com/AppliedIS/iOSL10n
使用说明:http://blog.appliedis.com/2013/05/22/localization-of-an-xcode-ios-app-part-2 /

  • 本来应该是微不足道的事情却必须使用外部工具,这绝对是荒谬的 (24认同)
  • 危险的脚本,它搞乱了我的项目 (2认同)