[英]How to pod Localized interface files(XIB, Storyboard) as xcode project structure and make internationalization work?
當cocoapods1.0.0.β.1 發生更改時 ,請說“使用Base Internationalization的本地化接口文件(XIB,情節提要)-Base.lproj / Main.xib和en.lproj / Main.strings表示為名為Main的變體組。 “ xib”以及cocoapods 1.0.0.beta.1“特殊情況接口文件,用於在使用Base Internationalization時使用XIB或Storyboard名稱作為變量組。
我參考該演示,並使用resource_bundles在podspec上組織我的資源。
s.resource_bundles = {
'Resources' => ['LocalizationDemo/LocalizationDemo/Resources/**/*.{lproj,storyboard}']
}
我的cocoapods版本是1.0.1,但是目錄結果是
-Resources
--en.lproj
---LocalizationDemo.strings
--LocalizationDemo.storyboard
--de.lproj
---LocalizationDemo.strings
這不是我期望的結果目錄,接口國際化也不起作用。 有人告訴我正確的用法或演示嗎?
添加:我先通過xcode使用導入/導出本地化功能,然后再轉貼到其他項目。 我希望它可以直接通過導入的xliff文件工作,而不是添加IBOutlet或UI控件的子類。
您應該為XIB OR Storyboard
Views
使用的controls
編寫類,並將這些類分配給相應的控件類型,如下所示-
class LocalizedTextField: UITextField {
override func drawPlaceholderInRect(rect: CGRect) {
let localizedPlaceHolder = self.placeholder!.localized
self.placeholder = localizedPlaceHolder
super.drawPlaceholderInRect(rect)
}
}
class LocalizedLabel : UILabel {
override func awakeFromNib() {
if let text = text {
self.text = text.localized
self.bounds.size.width = CGFloat.max
self.sizeToFit()
}
}
}
class LocalizedButton : UIButton {
override func awakeFromNib() {
for state in [UIControlState.Normal, UIControlState.Highlighted, UIControlState.Selected, UIControlState.Disabled, UIControlState.Focused] {
if let title = titleForState(state) {
setTitle(title.localized, forState: state)
}
}
}
}
extension String {
var localized: String {
let localizedValue = NSLocalizedString(self, tableName: nil, bundle: NSBundle.mainBundle(), value: "", comment: "")
if localizedValue == "" {
return self
}
else
{
return localizedValue
}
return self
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.