如何将所有支持的语言从iphone库列入应用程序

时间:2013-01-11 05:43:28

标签: iphone ios5 nslocalizedstring

我正在创建一个应用程序,我需要将所有支持的语言从库列入tableview。因此,用户无需转到设置并更改语言。如果他愿意,他可以直接从app更改它。我搜索了很多,但不知道它是否可能。所以任何人都可以帮助我。

提前致谢

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分: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文件中的值。

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

答案 2 :(得分: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将显示。