2013-10-10 2 views
1

Я пытаюсь найти массив всех языков, написанных специально на английском языке. Я прочитал несколько вопросов по этой теме, и я заметил эту строку кода:массив всех языков на английском языке - iOS

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

«языки» массив-объект хранит всю охват языков строку, но проблема в том, что она написана на языке, который определен в мой iPhone. Я хочу, чтобы это было на английском языке для всех устройств.

Есть ли способ сделать это?

ответ

1

Принудительно использовать язык по умолчанию «en», затем запросить список языков и вернуть его к предыдущему. Что-то вроде этого (не тестировался мысли)

NSArray *languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    //your query here 

    //restore the previous 
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
+0

Это хорошая идея, но после того, как я использую: [[NSUserDefaults standardUserDefaults] setObject: [NSArray arrayWithObjects: @ "en", nil] forKey: @ "AppleLanguages"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSArray * englishArray = [[NSUserDefaults standardUserDefaults] objectForKey: @ "AppleLanguages"]; «englishArray» имеет только один объект и даже не на английском языке. У вас есть идея, почему? Благодарю. –

0
NSArray *localIdentifiers = [NSLocale availableLocaleIdentifiers]; 
    NSMutableArray *lanuages = [[NSMutableArray alloc]init]; 

    for (int i = 0; i < [localIdentifiers count]; i++) { 

     [lanuages addObject:[[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[localIdentifiers objectAtIndex:i]]]; 
    } 
    NSLog(@"%@", lanuages); 

Попробуйте это или Вы можете использовать другой метод

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

    for (int i = 0; i < [languages count]; i++) { 

     NSLog(@"%@", [[NSLocale currentLocale] displayNameForKey:NSLocaleIdentifier value:[languages objectAtIndex:i]]); 

    } 
+0

Первый способ печатает данные данных (я думаю), а не строки. Второй метод ничего не делает, все еще печатает языки на языке по умолчанию устройства. –

Смежные вопросы