3

アプリで NSLocalizedString を使用したいのですが、常に失敗しました。私がすることは:

  • プロジェクト プロパティで 3 つのローカリゼーションを定義します (以下のスクリーンショットを参照)。
  • 新しいファイルを作成します: リソース文字列ファイル
  • file.strings が存在する場合はアプリ バンドルをチェックインします

次に、次のように NSLocalizedStrings を使用しますが、機能しません!

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
    NSString *v1 = NSLocalizedString(@"MyWindow", nil);

    //NSString *v1 = [[NSBundle mainBundle] localizedStringForKey:(@"MyWindow") value:@"" table:nil];
    [label setStringValue:v1];
}

私の 3 つの .strings ファイルでは、以下のキー/値を定義しています: "MyWindow" = "Ma Fenetre";

通常、ラベルには「MyWindows」ではなく「Ma Fenetre」と表示されます。ここからサンプル プロジェクトをダウンロードして、問題の場所を教えてください

アプリ バンドルの Resources フォルダーの内容を以下に示します。

DerivedData om$ find test/Build/Products/Debug/test.app/Contents/Resources/
test/Build/Products/Debug/test.app/Contents/Resources/
test/Build/Products/Debug/test.app/Contents/Resources//de.lproj
test/Build/Products/Debug/test.app/Contents/Resources//de.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//en.lproj
test/Build/Products/Debug/test.app/Contents/Resources//en.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//fr.lproj
test/Build/Products/Debug/test.app/Contents/Resources//fr.lproj/File.strings
test/Build/Products/Debug/test.app/Contents/Resources//MainMenu.nib

ありがとうエルフォイロス

4

4 に答える 4

36

NSLocalizedStringLocalizable.stringsデフォルトでファイルを使用します。名前を変更してFile.strings、もう一度やり直してください。

于 2012-06-02T15:27:07.253 に答える
9

.Strings ファイルに変更を加えるたびに、プロジェクトをクリーンアップし、デバイスとシミュレーターからアプリケーションを削除する必要があります。これは、ローカライズされたアプリケーションを開発する唯一の方法です。楽しいコーディングを!

于 2013-06-23T05:56:47.687 に答える
8

Adam が述べたように、ルックアップ テーブルNSLocalizedStringを使用します。Localizable.stringsカスタム テーブルを指定するには、次を使用します。

NSLocalizedStringFromTable(@"MyWindow", @"File");

ドキュメンテーション

于 2012-06-02T15:30:43.560 に答える
3

大文字と小文字を区別するファイル名に注意する必要があります: localizable.strings ではなく localizable.strings。Finder で名前を変更し、Xcode プロジェクトで参照を削除して、ローカライズ可能な文字列をプロジェクトに追加するだけです。次に、ファイル インスペクタで適切なローカリゼーション ボックスが選択されていることを確認します。よりスマートなプロセスがあるかどうかはわかりません。

于 2013-10-29T06:30:54.980 に答える