2012-01-26 7 views
1

私のプログラム内の一部の画面では、ローカライズされた文字列が機能し、一部では機能しません。私がやった何 (Xcodeの4.2)XCode 4.2(IOS-IPhone dev)で文字列をローカライズ

  1. 追加されたフォルダ内のLocalizable.strings "リソース" @interfaceのClassViewController内部の私の.hファイルで

  2. 、: UIViewController {}はIを添加:.hファイルでも

    IBOutlet UILable *labelName; 
    
  3. を、私は

    を添加しました.mファイルで
    property (nonatomic, assign) IBOutlet UILabel *labelName; 
    
  4. 、私が追加:

    @synthetize labelName; 
    
  5. をさらに.mファイルで、Iは、内側追加 " - (FOID)のdealloc":

    [labelName release]; 
    
  6. In - (void)viewDidLoad私は以下を追加しました:

    self.labelName.text = [NSString stringWithFormat:@"KEY"]; 
    
  7. Finall y、xibファイル(インターフェイスマネージャを使用)で、ラベルオブジェクトを変数にリンクしました。

このように、この方法は一部の画面では有効であり、他の画面では機能しません。何か案が?

ソリューション:

愚かな過ちを何。テキストを入力する行は次のようになります。代わりに

NSLocalizedString(@"KEY", nil); 
+0

ローカライズされた文字列をロードするには、[NSLocalizedString](http://developer.apple.com/library/mac/#documentation/cocoa/reference/foundation/miscellaneous/foundation_functions/reference/reference.html)または別名を使用します。 –

答えて

4

使用:ドキュメントから

self.labelName.text = NSLocalizedString(@"KEY", ""); 

  • :NSLocalizedString
  • 説明:NSStringの* NSLocalizedString(NSString *キー、NSString *コメント)
  • 可用性:iOS版(2.0以降)
  • 要約:文字列のローカライズされたバージョンを返します。
+0

うわー、なんて愚かな間違い...私はいくつかの画面で正しい方法を持っていました。ありがとう – mrmuggles

0

この行は何を想像していますか?

self.labelName.text = [NSString stringWithFormat:@"KEY"]; 

それは、この書き込みと機能的に同等だからです:

self.labelName.text = @"KEY"; 

をしかし、私はあなたが書くために何を意味するのか、この代わりにしたことを疑う:ビンスが指摘したように

self.labelName.text = NSLocalizedString(@"KEY", @"description"); 
1

、必要にNSLocalizedString関数を使用します。この場合、6のコードは次のようになります。

self.labelName.text = NSLocalizedString(@"The key for this label",@"Some comment"); 

これはうまくいくはずです。

あなたが次の操作を行うことができます のXCode-4.2
1

: "フェーズを構築する" を選択後、 "ターゲット"

    1. クリックし
    2. 選択コピーを追加」を選択します& "ビルドフェーズを追加"ファイル "。
    3. "ファイルをコピーする(intアイテム)"(ここで、 'int'は以前に作成されたアイテムの数に応じて1または2または3などとなります)。 "Destination"を "Resources"に設定します。
    4. '+' &作成した '.string'ファイル(例:localization.string)を選択してください。

    これはうまくいくと思います。

  • 関連する問題