言語を指定してリソースファイルから文字列を取得する

iOSに設定された言語に対応したリソースから文字列を取得するのであれば
こんな感じで簡単ですね。
NSLocalizedString(@”res_key”, nil)

さて、これをiOSの言語設定によらず、プログラム内で指定した言語のリソースファイルから文字列を取得するにはどうすればよいか?
一般的にはこんな事は不要なんだと思いますが、私自身必要に迫られましたので、メモとして残しておきます。

下記の手順で取得できます。
・言語に対応したリソースをNSBundleの形で取得する
・NSBundleから localizedStringForKey を使って文字列を取得

//リソースファイルのフルパスを見ると"ja.lproj" のようにかかれていますので
//対応する言語の識別子を設定する
NSString* lang = @"ja";

//バンドルを取得
NSString *path = [[NSBundle mainBundle ] pathForResource:lang ofType:@"lproj" ];
NSBundle *bundle = [NSBundle bundleWithPath:path];

//文字列の取得
// この例では"res_key"として設定されている文字列を求めています
NSString *text = [bundle localizedStringForKey:@"res_key" 
                  value:@"undefined" table:nil];

こんなの需要ありますかね??

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です