2012-03-05 20 views
0

en.lprojとfr.lprojという名前のローカライズされた2つのディレクトリを作成しました。私はそれらのローカライズされたディレクトリに同じ名前like.pngを持つ2つの異なるイメージを配置します。実行時にローカライズされたイメージを変更する方法

今、私は2つの行 "英語"と "フランス語"のテキストをそれぞれ持つテーブルView Controllerを作成しました。

最初または2番目の行を選択した後、バンドルパスを取得して、実行時に私のアプリケーションのローカライズされたテキスト全体を変更しています。

コード:上記のコードを

-(NSString*) languageSelectedStringForKey:(NSString*) key 
{ 

    NSString *path; 
    NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; 
    if([[userDefault valueForKey:@"language_Selected"] intValue] == 0) 
     path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"]; 
    else if([[userDefault valueForKey:@"language_Selected"] intValue] == 1) 
     path = [[NSBundle mainBundle] pathForResource:@"fr" ofType:@"lproj"]; 

    NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
    NSString* str=[[languageBundle localizedStringForKey:key value:@"" table:nil] retain]; 
    return str; 
} 

動的に私はアプリを実行しているの言語を変更することができます。 しかし、そのバンドルからイメージを取得するには?

おかげ

+0

パスを変数にしてパスを使用してイメージを取得すると、パスはすでに上記のコードから動的になります。応答のために –

+0

ありがとう。 。 :) ..それを得ました、それは動作します –

+0

質問を下に投票する理由は何ですか? –

答えて

1

はおそらく、あなたはすべての画像、テキストや他の文化に依存する内容が含まれている画像のみを変更する必要はありません。これらのイメージの場合、指定言語のイメージパスを含むファイルをlocalizable.stringsファイルに追加し、ハードコードされたパスの代わりにこのパスを使用することができます。

つまり、多くの場合、.xibの一部としてUIに画像が含まれています。これらの場合に必要なのは、xibをローカライズするだけです(つまり、言語ごとに.xibの異なるバージョンを作成します - これはプロパティパネルの言語コントロールを使用してXCodeで行うことができます)。各言語バージョンInterface Builderを使用して.xibファイルを開きます。

関連する問題