(同様の質問があります。いくつかの質問は、私が試した結果、機能しないことがわかりました。他の質問は、質問者がこれから説明するほど詳細を提供しなかったため、答えが得られなかったと思います。)
私は自分のアプリでうまく機能するストーリーボードから始めました。含まれている文字列は英語です。フランス語のローカリゼーションを追加したかったのです。これは私がしました:
MainStoryboard.storyboard
からen.lproj
に転送されるベースローカリゼーションを追加しましたBase.lproj
。InfoPlist.strings
(英語)とMainStoryboard.storyboard
(ベース)をに複製するフランス語のローカリゼーションを追加しましたfr.lproj
。UISegmentedControl
フランス語のいくつかの文字列(のセグメントのタイトル)を変更し ましたMainStoryboard.storyboard
。- シミュレーターで、言語をフランス語に設定します。
- Xcodeからアプリを実行しました。
結果:これは機能しました。変更した文字列が実行中のアプリケーションに表示されました。
しかし、私はすべて空想になりたいです。.strings
ファイルを使ってフランス語のローカライズをしたい。(それは単に空想の問題ではありません。フランス語のローカリゼーションは、Interface Builderを習得することを期待できない非技術的な翻訳者に引き継がれます。)だから:
MainStoryboard.storyboard
Xcodeプロジェクトナビゲータでベースを選択しました。- ファイルインスペクターの[ローカリゼーション]で、フランス語のローカリゼーションを「Interface BuilderCocoaTouchStoryboard」から「LocalizableStrings」に変更しました。
.strings
アシスタントエディタに表示されるファイルを優先して、フランス語のストーリーボードが破棄されるというXcodeの警告を受け入れました。- 同じ2つの編集を行いました。
IBUISegmentedControl...segmentTitles
それらはすべて;としてコメントされているので、それらが間違った文字列であることに疑問の余地はありません 。ラベルテキストはファイル内の他の場所には表示されません.strings
。 - アプリの既存の(作業中の)コピーをシミュレーターから削除しました。
- アプリを実行しました。
結果:ビューは、フランス語の文字列をロードする代わりに、ベース(元々は英語)のローカリゼーションを使用します。
これは満足のいくものではありません。シミュレーターからアプリを削除し、派生データフォルダーも削除してみました。バグは解決しません。
私が言ったように、私は.storyboard
ファイルを非技術的な翻訳者に引き渡すことはできません。.strings
iOSにファイルからストーリーボードのローカリゼーションを受け入れさせるにはどうすればよいですか?