我刚刚开始在 XCode 5 中查看IOS Apps的本地化,并且我尝试添加意大利语本地化:
Xcode 5自动生成带有单个条目的 Main.strings 文件,这是我放在 Main.storyboard 文件中的唯一标签:
/* Class = "IBUILabel"; text = "Label"; ObjectID = "PeT-4z-NSf"; */
"PeT-4z-NSf.text" = "Etichetta";
如果我稍后修改了 Main.storyboard 文件,在视图中添加了一个新按钮,那么如果可能的话,如何判断 Xcode 5 添加缺少的本地化字符串到 Main.strings 文件?我应该通过查看 Interface Builder 中的对象ID 字段手动添加新条目(它可以工作,但我不知道这是否是它的意思更新故事板的本地化)?我可以在 Main.storyboard 文件上运行类似 genstrings 的内容来提取所有标签的文本,并将新的文本添加到本地化的 Main.strings 文件?
答案 0 :(得分:19)
结帐 BartyCrouch ,它完美地解决了您的问题。此外,它还是开源,积极维护,并且可以在您的项目中轻松安装和集成。
通过Homebrew安装 BartyCrouch:
brew install bartycrouch
或者,通过Mint安装:
mint install Flinesoft/BartyCrouch
逐步更新您的Storyboards / XIBs字符串文件:
$ bartycrouch update
这将完全符合您的要求。
为了保持您的Storyboards / XIBs Strings文件随时更新我强烈建议您添加构建脚本(有关如何添加构建脚本的说明{{3} }):
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
代码中新添加的密钥并显示警告重复键或空值。
请务必在here上查看BartyCrouch以获取更多信息。
答案 1 :(得分:16)
Xcode没有自动更新的文件(至少5.x版本没有)是应用程序的Localizable Strings
。您可以按以下方式从Main.storyboard
构建一个新文件:
在项目导航器(最左侧窗格)中,单击Main.storyboard
文件。在“实用工具”窗格(最右侧窗格)中,单击显示文件检查器图标。它是下图中最左边的蓝色图标:
在将出现的右侧窗格中,其中一个部分将为本地化:
取消选中English (Localizable Strings)
行,然后在弹出的窗口中选中从磁盘删除本地化资源文件,然后点击删除按钮(您执行此操作)不必检查删除,在这种情况下,Xcode将要求您在下次构建时覆盖它的权限。)
然后再次检查English (Localizable Strings)
以从头开始构建它。
答案 2 :(得分:5)
使用Xcode 6,以下对我有用:
我改变了语言的本地化来自" Localizable Strings"到" Interface Builder ......"像在the SO question posted by h.orim建议的那样。但是设置没有改变,它仍然设置为" Localizable Strings"。现在的下一步是再次执行此操作,因此Xcode将找到它刚刚创建的Storyboard并显示一个提示,询问是否应该使用或替换它。现在点击"使用文件"而不是"替换"否则会再次发生同样的事情。
现在您应该拥有所需语言的本地化故事板。现在切换回" Localizable Strings"您将拥有一个文件,其中包含故事板中使用的所有当前字符串,并且您之前的翻译仍然存在。
答案 3 :(得分:4)
您可以使用名为UpdatStoryboardStrings的脚本!
在此处获取:https://github.com/AppliedIS/iOSL10n
使用说明:http://blog.appliedis.com/2013/05/22/localization-of-an-xcode-ios-app-part-2/
答案 4 :(得分:4)
另一种方法是通过在故事板上选择要翻译的字段来手动完成。转到“Identity Inspector”并复制对象ID(类似于HP8-op-SmX)。
之后,打开storyboard langage文件(Main.strings,大多数情况下)并超过Object ID。根据您的需要,您只需添加.text或.placeholder。
"HP8-op-SmX.placeholder" = "My translated placeholder text";
"HP9-op-VvD.text" = "My translated text";
保存,清洁&建立。这有点痛苦但如果你只需要翻译一些东西就可以节省很多时间。
答案 5 :(得分:2)
使用Xcode 6+,理想情况下开发人员不必手动管理字符串文件。使用XLIFF导出自动收集要发送给翻译人员的开发语言字符串,然后使用XLIFF导入更新带翻译的字符串文件。
另一种选择是直接使用ibtool --export-strings-file
。
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/ibtool.1.html
答案 6 :(得分:0)
有两种选择:
选项1
Xcode可以通过将文件转换为[Interface Builder Cocoa Touch Storyboard]文件类型或[Localizable Strings]文件类型来“重新加载”文件。
从项目浏览器中选择基本情节提要文件 在文件检查器中找到“本地化”部分 如果文件当前是[Localizable Strings],请将其更改为[Interface Builder Cocoa Touch Storyboard],反之亦然。 Xcode应该将您的情节提要板转换为当前版本,同时保留您以前的本地化工作。如果需要,您可以在此处将文件更改回原始文件类型。
选项2
使用ibtool提取情节提要中的字符串。
打开终端应用程序 找到您的Base.lproj目录 使用此行提取字符串:
ibtool MainStoryboard.storyboard --generate-strings-file file_name.strings ibtool将字符串提取到file_name.strings之后,您可以将其复制并粘贴到原始.strings文件中
答案 7 :(得分:0)