有一个Xcode7 beta
名为as的新控件Storyboard Reference
.下面是它的图像.
它的描述如下
为外部故事板中的视图控制器提供占位符.连接到此占位符的Segues将在运行时实例化引用的视图控制器.
所以问题是
我刚开始看看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)
如果我稍后修改Main.storyboard文件向视图中添加一个新按钮,那么如果可能的话,我应该如何告诉Xcode 5将缺少的本地化字符串添加到Main.strings文件中?我应该通过查看Interface Builder中的对象ID字段手动添加新条目(它可以工作,但我不知道这是否是更新故事板本地化的意义)?我可以在Main.storyboard文件上运行类似genstrings的东西来提取所有标签的文本并将新的文本添加到本地化的Main.strings文件中吗?
在我的项目的"运行脚本"构建阶段,如果我在构建阶段的"运行脚本"的文本框中输入脚本,一切都有效.
但是为了使编辑/差异等更容易,我想我会将脚本保存为文件作为项目的一部分,只需填写文本框中的路径:
例如:我在文本框中粘贴以下路径.
/Users/superman/Documents/Projects/SomeProject/scriptname.sh
Run Code Online (Sandbox Code Playgroud)
但是当我尝试构建它时,我得到一个"Permission Denied"消息.
我该怎么做才能解决这个问题?如果我剪切/粘贴实际代码,那么它只是"工作".我的用户帐户是管理员帐户.没有人使用我的机器.
我正在使用基本国际化的XIB/Storyboard文件和使用XLIFF文件进行翻译的"导出本地化"方法.
我有一些标签,按钮等具有应翻译的文本,但我也有标签,我们使用一些占位符文本(如全名),以便您可以看到填充数据时视图的样子,但这些标签总是以编程方式来自插座.
有没有办法将此标签的.text属性标记为在XIB中设置为不可本地化,以便它不会在XLIFF(或生成的.strings)文件中结束.
我知道我可以删除文本 - 我还想过有一个前缀(比如@"!DNL!")意味着翻译不应该本地化,但我希望只有一种标准的方法来做到这一点.
当我尝试本地化我的应用程序并为目标语言创建一个新的Main.strings文件时,我在界面构建器(标签,按钮,...)中创建的所有内容都会添加到新的Main.strings文件中(基本和语言)我可以相应地本地化文本.
但是当我稍后在界面构建器中向ViewController添加标签或按钮时,它不会自动添加到Main.strings文件中以获取基本和语言版本.
那么,我怎样才能找出按钮/标签的ObjectID是什么,以便我可以将它添加到字符串文件中?
或者是否有另一种方法可以强制Xcode自动将新添加的标签和按钮添加到这些文件中?
我是原生iOS开发的新手,并且一直在玩本地化的故事板.
我通过更新故事板的文件来本地化我的故事板中的文本UILabel
和UIButton
对象Main.strings
:
// UIButton:
"cEx-Yi-RY8.normalTitle" = "Done";
// UILabel:
"1l2-H9-hRc.text" = "Safety information!";
Run Code Online (Sandbox Code Playgroud)
我怎么做同样的UITabBarItem
?我试过了:
//UITabBarItem:
"oSH-y1-hFoB.title" = "Scan";
Run Code Online (Sandbox Code Playgroud)
但它不起作用:(
我不明白为什么......我可以看到可以在UITabBarController中手动更新文本:
- (void)viewDidLoad
{
//...
item.title = NSLocalizedString(@"scan", nil);
}
Run Code Online (Sandbox Code Playgroud)
但后来我必须将这些翻译放在一个单独的Localizable.strings
文件中,这似乎很蹩脚.
另一方面,至少翻译Localizable.strings
有些可读,"scan" = "Scan";
而不是"oSH-y1-hFoB.title" = "Scan";
......
仍然......我没有关注为什么有些东西在Interface Builder中工作,但其他东西没有,你必须手动完成.
我讨厌必须添加所有这些样板代码来做重复的事情,比如在UI中本地化文本,当框架应该只能为我做.(如果它可以为UIButton做,为什么不是UITabBarItem ...)
或者我只是忽略了什么?
我的xib上有一些标签.其中一些不需要本地化.当我通过ibtool生成字符串文件时,所有标签内容都包含在结果文件中.如何在生成字符串时从本地化中排除IB中的某些UI对象?
我的故事板有中文(简体)本地化。
最初,生成 .strings 文件时,它包含我在每个场景中输入的标题/标签的每个文本。像这样:
/* 类 = "UINavigationItem"; 标题="????"; ObjectID = "03c-Su-3Ya"; */ "03c-Su-3Ya.title" = "????";
/* 类 = "UIButton"; normalTitle = "按钮"; ObjectID = "1dN-RP-fnm"; */ "1dN-RP-fnm.normalTitle" = "按钮";
/* 类 = "UIButton"; normalTitle = "??"; ObjectID = "1yV-zN-VyH"; */ "1yV-zN-VyH.normalTitle" = "??";
/* 类 = "UIButton"; normalTitle = "??"; ObjectID = "26S-O2-95j"; */ "26S-O2-95j.normalTitle" = "??";
但是当我向其中添加新的视图控制器和新文本时。我注意到 .strings 文件不会自动更新。我每次都必须生成这个文件吗?或者有没有办法刷新它的内容?
请帮忙。提前致谢!
localization ×6
ios ×5
xcode ×5
storyboard ×2
uistoryboard ×2
xib ×2
build ×1
ios7 ×1
objective-c ×1
run-script ×1
swift ×1
xcode5 ×1
xcode7 ×1