0

短いリージョンコード(en_US)を長い文字列に簡単に変更できます...しかし、他の方向にも移動する簡単な方法はありますか?

[displayInEnglish displayNameForKey:NSLocaleIdentifier value:regionCountryCode];

「en_US」は「English(UnitedStates)」になります。

「英語(米国)」は「en_US」になります。

現在、短いリージョンコードをデータベースに保存していますが、集計結果を表示するときは、長い文字列をユーザーに表示する必要があります。

または、長い文字列をデータベースに直接保存する必要があります...後でそれらを「変換」することさえ心配する必要はありませんか?

各国の「ドル合計」を表示しようとしています。

あなたがユーザーだった場合...(通貨合計リストの場合)どちらを表示したいですか?

  • 「フランス語」の合計
  • 「フランス」合計
  • 「フランス語(フランス)」合計
  • 「fr_Fr」の合計?
4

2 に答える 2

1

1つのオプションは、自分でマップを作成して保存することです。必要なすべてのコードがあり、それらをより長い文字列に変換できるので、より長い文字列を格納するだけです=>コードマッピング:

NSMutableDictionary * nameToCode = [NSMutableDictionary dictionary];
NSArray * codes = [NSArray arrayWithObjects:@"en_US", @"en_GB", @"fr_FR", @"pt_PT"];
NSLocale * english = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];

for (NSString * code in codes) {
  NSString * displayName = [english displayNameForKey:NSLocaleIdentifier value:code];
  [nameToCode setObject:code forKey:displayName];
}

次に、次のことができます。

NSString * code = [nameToCode objectForKey:@"French (France)"];
于 2010-05-20T20:16:47.187 に答える
0

David (彼は私よりタイプが速い) に同意します: ルックアップ テーブルを作成します。単純。安いです。素早い。すでに displayInEnglish を呼び出していることがわかっている場合は、不要なエントリを含む大きなテーブルを構築するのではなく、キャッシュとして構造化してください。

于 2010-05-20T20:26:03.963 に答える