読者です 読者をやめる 読者になる 読者になる

しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

R.swiftでNSLocalizedStringも取れるようになっていたので試してみる

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"と入力します。

f:id:llcc:20161214234041p:plain

この状態ビルドすればR.generated.swiftが生成されるので、プロジェクトに追加します。

f:id:llcc:20161214234158p:plain

これで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" = "こんにちは";を追加します。

f:id:llcc:20161214235227p:plain

この状態で起動すると、シミュレータの言語設定に合わせた文字を出力してくれます。

print(R.string.myString.myText()) // → Hello! or こんにちは