17

グーグルで検索しましたが、解決策が見つかりませんでした:

基本的に、コードで使用しているLocalizable.stringsを設定しています。ただし、どういうわけかXIBでもこれらの値を参照できれば、言語ごとに1つの煩わしいXIBを作成する必要がなくなるので、とても便利です...

これは可能ですか?

4

9 に答える 9

18

UILabel のサブクラスを実装し、ペン先から初期化されるときにローカライズされた値を自動的に取得することができます。次に、XIB でトークン (または必要に応じて英語のテキスト) を設定し、UILabel にこの値からローカライズされたテキストを取得させます。

于 2011-09-14T09:01:35.207 に答える
5

Localizable.stringsInterface Builderから直接設定する方法はありません。

NIB を翻訳する理由は、単語の長さが各言語で異なる可能性があるためです。したがって、言語ごとに nib のレイアウトを変更できます。

viewDidLoadのメソッドでそれらを設定できるものUIViewController

- (void) viewDidLoad {
   [supper viewDidLoad];

   self.someLabel.text = NSLocalizedString(@"Some Label", @"Some label on some view.");
}
于 2011-09-14T08:57:37.970 に答える
5

NSLocalizedString導入しやすいメリットがあります。リスクは、新しい Gui 要素のエントリを追加するのを忘れる可能性があることです。

を使用itoolして、元の xib ファイルから文字列をダンプし、これらのダンプされた文字列を翻訳してから、翻訳された文字列を other-language-xib ファイルにロードできます。

と比較して、このようにすることにはいくつかの利点がありますNSLocalizedString

  • 翻訳と文字列の長さに関するすべての考慮事項は引き続き適用されますが、元の xib のみに触れる必要があり、他の言語はスクリプトで更新できます。
  • 既に翻訳されている要素と、ダンプされたファイルからの各 UIElement のさまざまな状態が表示されます。
  • 翻訳者に送信する単一文字列ファイルが増えますが、翻訳が必要な部分、完了した部分について概要を把握しておく方が簡単です。
  • GUI 英語の xib に加えられた変更は、ローカライズされた xib に適用されます。基本的には、元の xib を翻訳された文字列とマージしています。

XIB を作成するときは、(以前のように) ローカライズされるように設定し、itoolこの元の xib に対して実行して文字列を抽出します。文字列ファイルを目的の言語に翻訳し、その翻訳をローカライズされた xib にロードします。

グーグルでibtool --generate-strings-file検索すると、いくつかのチュートリアルと例が見つかるはずです。

構文は次のようになります。

  #dump original xib to a $xibfile.strings file:
  ibtool --generate-strings-file Resources/English.lproj/$xibfile.strings Resources/English.lproj/$xibfile.xib
  # offline: translate the $xibfile.xib, place it into the correct lproj folder
  # then: merge translated $xibfile.strings with original xib to create localized xib
  ibtool --strings-file Resources/de.lproj/$xibfile.strings --write Resources/de.lproj/$xibfile.xib Resources/English.lproj/$xibfile.xib

$xibfile.stringsResources/English.lproj ディレクトリには、元の (英語) 文字列が含まれます。翻訳 $xibfile.stringsされたものは、適切なxx.lprojディレクトリに配置する必要があります。

ビルドスクリプトを xcode に追加すると、ビルドごとに翻訳のロードが呼び出されます。

于 2011-09-14T10:24:45.760 に答える
4

IB は Localizable.strings の文字列を使用できませんが、 Base Internationalizationという別のオプションがあります。

つまり、必要な言語ごとに xib/storyboard に添付された個別の .strings ファイルを作成できます。その結果、各言語の独自の翻訳を含む xib が表示されます。したがって、Localizable.strings にある値の一部を複製できますが、コードを使用して設定したり xib ファイルをコピーしたりするよりも明確な方法です。

Base Internationalization については、Apple のドキュメントを参照してください。

于 2015-01-05T18:08:11.787 に答える
1

コードでこれを行うことができます:

    label.text = NSLocalizedString(@"key", @"comment");

しかし、ペン先全体をローカライズする以外に、ペン先だけでそれを行う方法はないと思います。私は確かに過去に別の方法を見つけていません。

于 2011-09-14T08:56:48.610 に答える
0

Apple がサポートする .xib ファイルのローカライズ方法。これにより、言語/国ごとにテキストとレイアウトをローカライズできます。

ここに画像の説明を入力

于 2015-05-14T15:20:27.323 に答える