15

(同様の質問があります。いくつかの質問は、私が試した結果、機能しないことがわかりました。他の質問は、質問者がこれから説明するほど詳細を提供しなかったため、答えが得られなかったと思います。)

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

  • MainStoryboard.storyboardからen.lprojに転送されるベースローカリゼーションを追加しました Base.lproj
  • InfoPlist.strings(英語)とMainStoryboard.storyboard(ベース)をに複製するフランス語のローカリゼーションを追加しましたfr.lproj
  • UISegmentedControlフランス語のいくつかの文字列(のセグメントのタイトル)を変更し ましたMainStoryboard.storyboard
  • シミュレーターで、言語をフランス語に設定します。
  • Xcodeからアプリを実行しました。

結果:これは機能しました。変更した文字列が実行中のアプリケーションに表示されました。

しかし、私はすべて空想になりたいです。.stringsファイルを使ってフランス語のローカライズをしたい。(それは単に空想の問題ではありません。フランス語のローカリゼーションは、Interface Builderを習得することを期待できない非技術的な翻訳者に引き継がれます。)だから:

  • MainStoryboard.storyboardXcodeプロジェクトナビゲータでベースを選択しました。
  • ファイルインスペクターの[ローカリゼーション]で、フランス語のローカリゼーションを「Interface BuilderCocoaTouchStoryboard」から「LocalizableStrings」に変更しました。
  • .stringsアシスタントエディタに表示されるファイルを優先して、フランス語のストーリーボードが破棄されるというXcodeの警告を受け入れました。
  • 同じ2つの編集を行いました。IBUISegmentedControl...segmentTitlesそれらはすべて;としてコメントされているので、それらが間違った文字列であることに疑問の余地はありません 。ラベルテキストはファイル内の他の場所には表示されません.strings
  • アプリの既存の(作業中の)コピーをシミュレーターから削除しました。
  • アプリを実行しました。

結果:ビューは、フランス語の文字列をロードする代わりに、ベース(元々は英語)のローカリゼーションを使用します。

これは満足のいくものではありません。シミュレーターからアプリを削除し、派生データフォルダーも削除してみました。バグは解決しません。

私が言ったように、私は.storyboardファイルを非技術的な翻訳者に引き渡すことはできません。.stringsiOSにファイルからストーリーボードのローカリゼーションを受け入れさせるにはどうすればよいですか?

4

3 に答える 3

9

これが私がそれを解決した方法です:

viewDidLoadで:

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

検索プレースホルダーについても同じことができます。

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

次に、Localizable.stringsファイルを作成するだけで機能します。

于 2013-06-25T06:52:21.153 に答える
7

私は自分UISegmentedControlのと同じ問題を抱えていました。iOS6にはバグがあることが判明しました。.stringsストーリーボードのローカリゼーションはUISegmentedControlテキストとUISearchBarプレースホルダーでは機能しません。このopenradarを参照してください:http://openradar.appspot.com/radar?id = 2159402

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

于 2013-02-26T15:36:30.177 に答える
0

iOS 7以降で開発して.stringsいて、検索バーの形式を検索している場合は、次のようにplaceholderフィールドを翻訳する必要があります。たとえば、次のようになります。

/* Class = "UISearchBar"; normalTitle = "Search for Places"; ObjectID = "F3d-Ir-fni"; */
"F3d-Ir-fni.placeholder" = "Nach Orten suchen";
于 2017-08-01T19:24:25.143 に答える