[iOS] storyboard 上での多言語化対応と UITabBarController の各タブの title の多言語化対応
多言語化対応の基本は、情報がいっぱいあるのでここでは紹介しません。
準備するもの
- Localization した .strings ファイル
1. storyboard 上で多言語化対応する方法
準備はシンプルで、 UILabel などにキーをプロパティで指定できるようにするだけ。
準備ができたら storyboard 上から直接設定できます。
import UIKit
/**
UILabel に多言語化対応プロパティを設定
*/
extension UILabel {
@IBInspectable var localizedText:String {
set(key){
let textComps:[String] = key.components(separatedBy: ".")
self.text = NSLocalizedString(textComps[1], tableName: textComps[0], comment: "")
}
get{
return self.text!
}
}
}
/**
UIButton に多言語化対応プロパティを設定
*/
extension UIButton {
@IBInspectable var localizedText:String {
set(key){
let textComps:[String] = key.components(separatedBy: ".")
let text = NSLocalizedString(textComps[1], tableName: textComps[0], comment: "")
self.setTitle(text, for: .normal)
}
get{
return self.titleLabel!.text!
}
}
}
/**
Bar Button に多言語化対応プロパティを設定
*/
extension UIBarButtonItem {
@IBInspectable var localizedTitle: String {
set(key){
let textComps:[String] = key.components(separatedBy: ".")
self.title = NSLocalizedString(textComps[1], tableName: textComps[0], comment: "")
}
get{
return self.title!
}
}
}
/**
NavigationItem に多言語化対応プロパティを設定
*/
extension UINavigationItem {
@IBInspectable var localizedTitle: String {
set(key){
let textComps:[String] = key.components(separatedBy: ".")
self.title = NSLocalizedString(textComps[1], tableName: textComps[0], comment: "")
}
get{
return self.title!
}
}
}
すると、 storyboard のユーティリティエリアにプロパティが追加されているので、 [ファイル名].[キー]
の形式で指定できるようになります。
2. UITabBarController の各タブの title を多言語化対応する方法
こちらは、 storyboard 上から設定する方法がわからずコードで指定してます。
下記コードを、 UITabBarController 配下の各ページに追加します。
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.navigationController?.tabBarItem.title = NSLocalizedString("pageTitle", tableName: "pageFile", comment: "")
}
Author And Source
この問題について([iOS] storyboard 上での多言語化対応と UITabBarController の各タブの title の多言語化対応), 我々は、より多くの情報をここで見つけました https://qiita.com/t_enderman/items/a116fe857553f5acfff0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .