0

我正在创建一个应用程序,我需要将所有支持的语言从库中列出到 tableview 中。这样用户就无需进入设置并更改语言。如果他愿意,他可以直接从应用程序更改它。我已经搜索了很多,但不知道它是否可能。所以请任何人都可以帮我解决这个问题。

提前致谢

4

3 回答 3

0
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *languages = [defaults objectForKey:@"AppleLanguages"];

这将为您提供 Apple 首选的语言。但我不知道支持的语言。可能这是您正在搜索的列表

for (NSString *language in languages) {
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:language] ;
    displayname = [locale displayNameForKey:NSLocaleIdentifier value:language];
}
于 2013-01-11T05:53:28.010 回答
0

您可以为应用程序生成不同语言的 pList 文件。

我正在向您解释本地化语言的示例代码。

NSDictionary *dictLang;

-(void)localization_language{

    NSString *errorDesc = nil;
    NSPropertyListFormat format;
    NSString *rootPath;

    if (lang == 1) {
       rootPath = [[NSBundle mainBundle] pathForResource:@"FRA" 
                                               ofType:@"plist"];
    }
    else if(lang == 0){
       rootPath = [[NSBundle mainBundle] pathForResource:@"ENG" 
                                               ofType:@"plist"];
    }

    NSData *plistXML = [[NSFileManager defaultManager] contentsAtPath:rootPath];    
    dictLang = (NSDictionary *)[NSPropertyListSerialization propertyListFromData:plistXML mutabilityOption:NSPropertyListMutableContainersAndLeaves format:&format errorDescription:&errorDesc];
    NSLog(@"PLIST retrive:%@",plistXML);    

    if (!dictLang) {
       NSLog(@"Error reading plist: %@, format: %d", errorDesc, format);
    }
}

此代码根据 lang 变量查找 pList 文件。0 代表法国,1 代表英语。

然后,从字典中设置值。

lbl1.text =[dictLang objectForKey:@"Key1"];
lbl2.text =[dictLang objectForKey:@"Key2"];

它会显示存储在 pList 文件中的值。

希望它适用于语言全球化。谢谢。

于 2013-01-11T05:56:30.027 回答
0

制作一个 Language.plist 文件并制作一个语言字典,将您的默认文本作为键

然后在Defines.h中定义这个宏

#define LocalizedString(key)     [[[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Language" ofType:@"plist"]] valueForKey:[NSString stringWithFormat:@"%d",LANGUAGE_ID]] valueForKey:key]

以编程方式设置您的全局语言 ID,并像这样使用 LocalizedString(@"Hi")

根据 lang Id 为键 hi 选择的翻译值将被显示。

于 2013-01-11T06:04:24.713 回答