我需要向服务器发送特定字符串的本地化列表。
也就是说,如果我的应用程序有一个名为Foo的字符串,在英语中被本地化为 @"Foo",在俄语中被本地化为 @"Фу",那么我想发送这样的列表到服务器:
- String Foo:
- English: "Foo"
- Russian: "Фу"
我认为我需要做的是:
- 枚举每种语言我的应用程序所本地化的字符串
- 获取每种语言中Foo的本地化版本
我如何完成(1)和(2)?
我需要向服务器发送特定字符串的本地化列表。
也就是说,如果我的应用程序有一个名为Foo的字符串,在英语中被本地化为 @"Foo",在俄语中被本地化为 @"Фу",那么我想发送这样的列表到服务器:
我认为我需要做的是:
我如何完成(1)和(2)?
您可以通过将English.lproj/Localizable.strings读取为字典并提取其键来检索所有字符串键:
NSString *stringsPath = [[NSBundle mainBundle] pathForResource:@"Localizable" ofType:@"strings"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:stringsPath];
为了得到每个语言的翻译,您可以针对每个英文关键字迭代遍历语言,并使用NSLocalizedStringFromTableInBundle
函数:for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]) {
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:language ofType:@"lproj"]];
NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"Testing", @"Localizable", bundle, nil));
}
pathForResource
的第一次调用将返回当前本地化的路径,而不一定是英语(例如,如果您的模拟器/设备设置为德语,则会获取到 de.lproj/Localizable.strings
的路径)。 - Alessandro
NSLocalizedStringFromTable
吗?http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html%23//apple_ref/c/macro/NSLocalizedStringFromTableInBundle - joshpaul