R.swiftがいつの間にかNSLocalizedStringにも対応されていたので動かしてみました。
R.swiftとは
R.swiftとはStoryboardや画像などの取得を便利にするライブラリです。
Storyboardの取得はUIStoryboard(name: "Main", bundle: nil)
のように文字列で指定しますが、R.swiftを使うとR.storyboard.main
と変数として取得する事ができます。
以前記事を書いたので、宜しければ併せてご参照下さい。
R.swiftを使ってStoryboard名や画像名のTypoを0にする - Qiita
準備
CocoaPodsを使ってインストールします。
platform :ios, ’10.0’ target 'MyApp' do use_frameworks! pod “R.swift” end
次にBuild PhasesでRun scriptを追加して"$PODS_ROOT/R.swift/rswift" "$SRCROOT"
と入力します。
この状態ビルドすればR.generated.swift
が生成されるので、プロジェクトに追加します。
これでRという構造体を通してStoryboardなどを取得できるようになりました。
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() R.storyboard.main.instantiateInitialViewController() } }
NSLocalizedStringを取得してみる
MyString.strings
を追加して、以下のようにテキストを記入しました。
"MyText" = "Hello!";
ビルドするとR.generated.swift
に先程の文字が追加されていました。
print(R.string.myString.myText()) // → Hello!
MyString2.strings
ファイルを作って、"myText2" = "Hello world!";
を追加したら以下のようになりました。
print(R.string.myString.myText()) // → Hello! print(R.string.myString2.myText2()) // → Hello world!
複数言語対応も試してみます。
MyString.strings
を英語用と日本語用を作って、英語用には"MyText" = "Hello!";
、日本語用には"MyText" = "こんにちは";
を追加します。
この状態で起動すると、シミュレータの言語設定に合わせた文字を出力してくれます。
print(R.string.myString.myText()) // → Hello! or こんにちは