Mat*_*ias 12 iphone localization interface-builder uilabel localizable.strings
谷歌搜索,但没有找到解决方案:
基本上,我有一个Localizable.strings设置,我在我的代码中使用.但是,如果我能以某种方式在我的XIB中引用这些值,那将是非常甜蜜的,这样我就可以避免每种语言创建一个烦人的XIB ...
这可能吗?
Ibr*_*rim 10
我向你展示了这种敏捷的方式
1.创建UILabel的子类
class LozalizedLabel : UILabel {
@IBInspectable var keyValue: String {
get {
return self.text!
}
set(value) {
self.text = NSLocalizedString(value, comment: "")
}
}
}
Run Code Online (Sandbox Code Playgroud)
2.在IB中将类设置为LocalizedLabel
3.直接在IB中输入Localizable.strings中的密钥
现在,Voila花费更少的时间来创建无用的IBOutlets,只是为了使它成为可本地化的UILabel.
注意 这不会使本地化字符串显示在界面构建器中,而只是"键".因此,在构建TextView时,请记住相应地设置约束
没有办法Localizable.strings直接使用Interface Builder设置.
您可能想要翻译NIB的原因是因为每种语言的单词长度可能不同.因此允许您更改每种语言的笔尖布局.
你可以用你的viewDidLoad方法设置它们UIViewController.
- (void) viewDidLoad {
[supper viewDidLoad];
self.someLabel.text = NSLocalizedString(@"Some Label", @"Some label on some view.");
}
Run Code Online (Sandbox Code Playgroud)
NSLocalizedString具有易于实现的优点.风险在于您可能忘记为新的Gui元素添加条目.
您可以使用itool从原始xib文件转储字符串,转换这些转储的字符串,然后将转换后的字符串加载到other-language-xib文件中.
与此相比,这样做有一些优势NSLocalizedString.
创建XIB时,将其设置为本地化(如前所述),然后itool针对此原始xib 运行以提取字符串.将字符串文件转换为所需的语言,然后将转换加载到本地化的xib中.
如果你谷歌,ibtool --generate-strings-file你应该找到一些教程和例子.
语法应类似于:
#dump original xib to a $xibfile.strings file:
ibtool --generate-strings-file Resources/English.lproj/$xibfile.strings Resources/English.lproj/$xibfile.xib
# offline: translate the $xibfile.xib, place it into the correct lproj folder
# then: merge translated $xibfile.strings with original xib to create localized xib
ibtool --strings-file Resources/de.lproj/$xibfile.strings --write Resources/de.lproj/$xibfile.xib Resources/English.lproj/$xibfile.xib
Run Code Online (Sandbox Code Playgroud)
$xibfile.strings在Resources/English.lproj目录中将包含原始(英语)字符串.翻译 $xibfile.strings必须进入适当的xx.lproj目录.
如果将构建脚本添加到xcode,则将在每次构建时调用转换的加载.
| 归档时间: |
|
| 查看次数: |
13811 次 |
| 最近记录: |