質問: DB内の初期データのローカライズについて教えてください。 先日初めてアプリ(日本語のみ)をリリースしたのですが、やはり英語くらいは対応しておくかと考え始めました。画面へ表示する文言等のローカライズの方法はなんとなく分かるのですが、DB内の初期データ(マスタデータ)をどうしたらいいか、壁にぶち当たってしまいました。 自分で思いついたのは、初回起動時に言語設定で条件分岐してレコードを上書きする、というものです。 これは正確にはローカライズとは言えないとは思いますが(可変でない為)、特に問題はないと考えています。 ただ方法として最適なのか分からず、もっと他にスマートな方法がないかお知恵を貸していただけないかと書き込んだ次第です。 なにか良いアイデアがありましたらご回答を頂けますと大変助かります。よろしくお願いいたします。
回答: iOSのローカライズの仕組みは、文字列だけでなくファイルならなんでも言語環境ごとに使い分けることができます。(Assetsが使われる前は画像なども同じ方法でローカライズされていました。) 下記のようにDBもしくは元データのファイルにローカライズを設定します。 !画像の説明をここに入力 この状態で次のようにファイルパスを取得すると、言語環境に応じて、日本語環境ならJapaneseのファイルを、それ以外の環境ならBaseのファイルのパスが返ってきます。 ``` let path = NSBundle.mainBundle().pathForResource("DB.sqlite", ofType: nil) ``` このようにして読み込むファイルを言語環境で切り替えるのが簡単だと思います。