LoginSignup
25
31

More than 5 years have passed since last update.

Storyboardで消耗しないためのTipsその2 - Storyboardの変更を翻訳stringsファイルを追従させるまともな方法

Posted at

Storyboardを変更してもstringsファイルが追従してくれない問題について
http://qiita.com/kenmaz/items/5e749f37e7095e0d54f2#storyboardの変更をstringsに反映する
で解決策を書きましたが、やや不安定な挙動だった&Xcode8.2.1の時点でこのテクニックは使えなくなったようです。

そこで他に解決策がないか調べたところ、より単純でまともな解決策が見つかりました。

XLIFFをexportしてimportするだけでOK

Storyboardを変更したらXLIFFをexportして、.xliffを修正した後にimportするだけで、Storyboardの変更に翻訳済みstringがうまくマージされてくれます。至って単純です。

検証環境

Xcode8.2.1(8C1002)

手順

LabelがひとつだけあるStoryboardを作成し、Localizationの設定でJapaneseを追加しておきます。この時点ではMain.strings (Japanese)は空です。
スクリーンショット 2017-01-11 12.03.28.png

おもむろにメニューから Editor > Export for Localization..を選択してja.xliffファイルを生成します。xliffを開くと、Labelキーが見つかるので、適当に翻訳文字列を記述して保存します。
スクリーンショット 2017-01-11 12.04.04.png

Xcodeに戻ってEditor > Import Localizationsを選択してja.xliffをインポートします。するとMain.strings (Japanese)に翻訳キーと文字列が追加されます。
スクリーンショット 2017-01-11 12.04.45.png

次にStoryboardに変更を加えます。Label2を追加します。
スクリーンショット 2017-01-11 12.05.00.png

先程と同様にja.xliffをエクスポートすると、既存の翻訳文字列(Label=ラベルです)が維持されたまま、Label2キーが追加されていることがわかります。
スクリーンショット 2017-01-11 12.05.34.png

ja.xliffで新たな翻訳Label2=ラベル2ですを追記し、Xcodeにインポートし直します。Main.strings (Japanese)に翻訳が追加されます。Storyboardの変更にstringが追従できていますね。
スクリーンショット 2017-01-11 12.06.17.png

要素が削除されてもきちんと追従してくれます。Labelを削除して見ましょう。
スクリーンショット 2017-01-11 12.06.27.png

ja.xliffをエクスポートすると、削除したLabelに対応する翻訳設定も削除されていることがわかります。
スクリーンショット 2017-01-11 12.06.56.png

何も変更を加えずにja.xliffをインポートすると、Main.strings (Japanese)からもLabel=ラベル1ですが削除されていることが確認できます。削除にも追従できていますね。
スクリーンショット 2017-01-11 12.07.18.png

きちんとPreviewもできています。
スクリーンショット 2017-01-11 12.07.58.png

所感

いつからこういう挙動になってくれたのかは不明ですが、これでまともなStoryboardの翻訳作業ができそうです。
とはいえAndroid Studioなど比べるとまだまだこういう点は弱いので、Xcodeには頑張って欲しいところです。

25
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
31