NSLocalizedString作为NSDictionary的关键

时间:2011-10-22 16:28:08

标签: iphone ios localization nsdictionary

我在这个论坛中读到可以使用NSLocalizedString作为NSDictionary的密钥。

这是我的NSDictionary:

LABELS = [[NSDictionary  alloc] initWithObjectsAndKeys:
NSLocalizedString(@"Threshold 0", @"Description for threshold 0") , @"threshold_0",
NSLocalizedString(@"Threshold 1", @"Description for threshold 1"), @"threshold_1",
NSLocalizedString(@"Threshold 2", @"Description for threshold 2"), @"threshold_2",
NSLocalizedString(@"Threshold 3", @"Description for threshold 3"), @"threshold_3",
NSLocalizedString(@"Threshold 4", @"Description for threshold 4"), @"threshold_4",
          nil];

这是试图访问NSDictionary的代码:

NSString *key = [NSString stringWithFormat: @"threshold_%d",{MY_VARIABLE}];
NSString *text = [LABELS objectForKey: key];

{MY_VARIABLE}可以保存0到4之间的值。

我有三个本地化(意大利语,法语,西班牙语)。我生成并翻译了所有“Localizable.strings”文件(在it.lproj,fr.lproj和es.lproj文件夹中)但是,当应用程序执行时,我只看到主翻译,例如:阈值0,阈值1 ,. ..

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在模拟器中构建并运行您的应用。在Finder中打开〜/ Library / Application Support / iPhoneSimulator / your-ios-version / Applications / your-app-id /.

然后右键单击.app文件并选择“显示包内容”并查看本地化字符串是否属于它们所在的位置。

很可能本地化资源不属于您的目标。这些设备也区分大小写,因此“Localizable.strings”是正确的,而“localizable.strings”则不是。

如果文件存在但仍然无效,请打开BBEdit中的文件并确保编码为little-endian UTF-16。 (或者,您可以使用Terminal.app并键入“file path-to-strings-file”来查看编码类型。)