Chris Marshall
Chris Marshall

Reputation: 5332

iPhone/iOS: How Do I Tell What Localization The Phone is Using At Runtime?

I'm having a difficult time localizing an app. It needs to be localized into Farsi (Iranian Persian). Not only that, it needs to use the Solar Calendar, when fa_IR is selected as a localization.

The OS has a Persian calendar. It's no problem for me to use it, but I need to know that the fa_IR localization has been selected. To add insult to injury, I can't test this locale in the US, as it seems that AT&T doesn't allow it as a localization. I have to send it to Iran, which is a royal PItA.

I'm having the devil of a time finding out the localization at runtime. There's a bunch of stuff for accessing the bundle flags, but I can't find anything for getting runtime info.

I'm pretty damn green at iOS programming, so I still need to determine which M to RTFM. I've been searching the docs with many keywords, to no avail.

Can anyone help with what seems to be an absurdly easy question?

Upvotes: 6

Views: 1593

Answers (2)

Erik B
Erik B

Reputation: 42614

NSArray *localizations = [[NSBundle mainBundle] preferredLocalizations];
for (NSString *string in localizations) {
    NSLog(@"Localization: %@", string);
}

The above code should be helpful in finding the current localization.

NSLog(@"%@", [[NSLocale currentLocale] localeIdentifier]);

NSLocale returns en_US, while NSBundle returns sv, which is correct for my phone.

Upvotes: 6

Joe
Joe

Reputation: 57179

NSLocale will have the locale information you need. Do note that foundation classes support suggested settings such as 24 hour clock and locale information.

NSLog(@"%@", [[NSLocale currentLocale] localeIdentifier]);

Upvotes: 10

Related Questions