(類似の質問があります。私がしようとしている程度の詳細を提供してください。)ストーリーボード+ベースのローカリゼーション+ .stringsファイルは実行時にローカライズされません
私は自分のアプリでうまくいったストーリーボードから始めました。それに含まれる文字列は英語です。私はフランス語のローカリゼーションを追加したかったのです。私はこれをした:
- は
Base.lproj
へen.lproj
からMainStoryboard.storyboard
を転送した基地局在を、追加しました。 - に
InfoPlist.strings
(英語) とMainStoryboard.storyboard
(ベース)をクローンしたフランス語のローカライゼーションを追加しました。 - フランス語
MainStoryboard.storyboard
の2つの文字列(UISegmentedControl
のセグメントのタイトル)を変更しました。 - シミュレータで言語をフランス語に設定します。
- Xcodeからアプリケーションを実行します。
結果:これは機能しました。実行中のアプリケーションで変更された文字列が表示されました。
しかし、私はすべて空想的になりたいです。私は.strings
ファイルを使用してフランス語のローカリゼーションを行いたいと思います。 (それはちょうど空想であることの問題ではありません。フランス語のローカライズは、Interface Builderのをマスターすることは期待できない非技術系翻訳者に引き渡されます。)ので:
- は、Xcodeのプロジェクト でベース
MainStoryboard.storyboard
を選択しますナビゲータ。 - ファイルインスペクタのローカリゼーションで、 ローカリゼーションを "Interface Builder Cocoa Touch Storyboard"から "Localizable Strings"に変更しました。
- 受け入れXcodeの警告では、フランス語のストーリーボードは、 の代わりにアシスタントエディタに表示される
.strings
ファイルを捨てると警告されています。 - 同じ2つの編集を行いました。それらがすべて
IBUISegmentedControl...segmentTitles
とコメントされているので、間違った文字列である 文字列の問題はありません。ラベルのテキストは は.strings
ファイルのどこにも表示されません。 - アプリの既存の(作業中の)コピーをシミュレータから削除しました。
- アプリを実行します。
結果:ビューではなく、フランス語の文字列をロードする、ベース(もともと英語)ローカライズを使用しています。
これは満足できるものではありません。私は、シミュレータからアプリを削除しようとし、派生データフォルダを削除しようとしました。バグは存続します。
私が言ったように、私は.storyboard
ファイルを技術者以外の翻訳者にすることはできません。 .strings
ファイルからストーリーボードのローカリゼーションをiOSに受け付けるにはどうすればよいですか?
自動レイアウトにストーリーボードを変換するには、持っていました無効。 – user698970
別の同様の質問に対する回答から、基本ストーリーボードでibtoolを実行し、Interface Builderで提供されているものの代わりに.stringsファイルのスターターとして使用することが推奨されました。 2つのファイルは同じです。 – user698970
ここに別の変数があります:ストーリーボードには到達不能なシーンがたくさんあります。それらは初期コントローラではなく、それらにつながるセグがありません。 (私のやり方ではなく、これは良いアイデアだと思った開発者に話をしなければならないでしょう) .stringsのローカリゼーションを妨げることはありますか? – user698970