2

新しいココア アプリケーションを作成した後、ローカライズ文字列ファイル localizeFile.strings(英語) と localizeFile.strings(スペイン語) を追加しました。

localizeFile.strings(English) ファイルに "TITLE" = "Hello!"; を追加しました。

localizeFile.strings(Spanish) ファイルに "TITLE" = "Hola!"; を追加しました。

私のクラスでは、次のステートメントを使用して、アクションでローカライズされた英語のテキストにアクセスしようとしていました

-(IBAction)english:(id)sender
{
   // NSString *engText = [[NSBundle mainBundle] localizedStringForKey:@"TITLE" value:@"" table:nil];
    NSString *engText = NSLocalizedString(@"TITLE", nil);
    NSLog(@"engText %@",engText);
    [displayText setStringValue:engText];
}

-(IBAction)spanish:(id)sender
{
    NSString *spanText = NSLocalizedString(@"TITLE", nil);
      NSLog(@"spanText %@",spanText);
    [displayText setStringValue:spanText];
}

ここで、displayText は NSTextField であり、同じウィンドウ内の 2 つのアクションです。

ボタンをクリックすると、コンソールで engText Hello の代わりに engText TITLE が表示されます。

ローカライズされた文字列を取得する方法を教えてもらえますか?助けてください

4

1 に答える 1

3

アプリケーションが localizeFile.strings を認識していないようです。アプリケーションの言語を宣言しましたか? 作成プロファイルにコピー ルールはありますか?

編集

ここで言語を追加できます (赤い矢印): ここに画像の説明を入力

2回目の編集

システム レベルで設定されていない言語を使用する場合は、次の操作を実行できます。

    // Assume you have defined constants, e.g. 1 - English, 2 - Espanol, 3 - ....
    switch (language) {
        case kLangEn: // =1
            path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
            break:
        case kLangEs: // =2
            path = [[NSBundle mainBundle] pathForResource:@"es" ofType:@"lproj"];
            break:
           // etc.
    }
    NSBundle *languageBundle = [NSBundle bundleWithPathath];
    NSString *str = [languageBundle localizedStringForKey:key value:@"" table:nil];
于 2012-04-16T06:57:37.043 に答える