2013-02-25 3 views
12

(類似の質問があります。私がしようとしている程度の詳細を提供してください。)ストーリーボード+ベースのローカリゼーション+ .stringsファイルは実行時にローカライズされません

私は自分のアプリでうまくいったストーリーボードから始めました。それに含まれる文字列は英語です。私はフランス語のローカリゼーションを追加したかったのです。私はこれをした:

  • Base.lprojen.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に受け付けるにはどうすればよいですか?

+0

自動レイアウトにストーリーボードを変換するには、持っていました無効。 – user698970

+0

別の同様の質問に対する回答から、基本ストーリーボードでibtoolを実行し、Interface Builderで提供されているものの代わりに.stringsファイルのスターターとして使用することが推奨されました。 2つのファイルは同じです。 – user698970

+0

ここに別の変数があります:ストーリーボードには到達不能なシーンがたくさんあります。それらは初期コントローラではなく、それらにつながるセグがありません。 (私のやり方ではなく、これは良いアイデアだと思った開発者に話をしなければならないでしょう) .stringsのローカリゼーションを妨げることはありますか? – user698970

答えて

6

私はUISegmentedControlと同じ問題がありました。 iOS 6にはバグがあります。.stringsストーリーボードのローカライゼーションは、UISegmentedControlテキストとUISearchBarプレースホルダでは機能しません。 これを見るopenradar:http://openradar.appspot.com/radar?id=2159402

UILabelなどの他の要素をローカライズしようとしましたか?それはうまくいくはずです。 viewDidLoadで

[self.searchBar setPlaceholder:NSLocalizedString(@"Your string placeholder", @"Your comment for localizers")]; 

それからちょうどのLocalizable.stringsファイルを作成します。

[self.segmentedControl setTitle:NSLocalizedString(@"Title", @"Your localize comment") forSegmentAtIndex:0]; 

は、あなたが検索プレースホルダの同じことを行うことができます。ここ

+0

私はUISearchBarだけがローカライズされていないのと同じ問題を抱えていましたが、他のすべてのものはうまくいきました。下記のSusan Sabariaによって説明されている解決策は、このバグに対する優れた回避策であり、簡単にスコープタイトルに容易に拡張できます。 – ecotax

8

は、私はそれを解決する方法でありますそれは動作します。人々はiOSの7 向けの開発や高いと検索バーのための.strings形式を検索するため、これはあなたが例えばplaceholderフィールドを変換する方法である

0

/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */ 
"F3d-Ir-fni.placeholder" = "Nach Orten suchen"; 
関連する問題