9

Xcode 4.6、ターゲットiOS 6、SDK iOS 6.1

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

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

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

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

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

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

自動レイアウトへの変換は効果がありませんでした。シミュレーターからアプリを削除しても効果はありませんでした。DerivedProductsディレクトリを削除しても効果はありませんでした。スタックオーバーフローは、Xcodeの代わりにibtoolを使用して.stringsファイルを生成することを提案しました。生成された2つのファイルは同一です。

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

4

4 に答える 4

4

ローカライゼーション文字列設定を使用して、英語ローカライズ チェックボックスを有効にします。

ローカリゼーション設定

ビルド フォルダー (⌥⇧⌘K) を消去して再ビルドします。

于 2013-07-06T22:47:09.380 に答える
3

すでに解決されていることを願っています。私は同じ問題を抱えていました(イタリア語の翻訳で)、次のように解決しました:

1) it.lproj 内のファイル Localizable.string

2) 必要な場所で NSLocalizedString (@ "TEST", @ "comment") メソッドを使用する

3) ビルド フェーズに Localizable.string を追加 -> バンドル リソースをコピー 最後のステップは、iOS 5.1 では必要ありません。

[質問] の Cocoanetics の回答のおかげで解決しました:ベースの国際化と複数のストーリーボードが正しく機能しない

于 2013-05-28T11:14:12.033 に答える
1

これを機能させるには、文字列ファイルをストーリーボードに変換してから文字列ファイルに戻す必要がありました。ばかげている。Apple は、より信頼性の高い開発者ツールを作成することについて、Microsoft から 1 つまたは 2 つのことを学ぶことができます。

于 2016-10-18T03:59:02.830 に答える