NSLocale currentLocale always returns "en_US" not user's current language

[NSLocale currentLocale] is based on the device's Region Format settings, not the language. If the region is set to United States you will get en_US regardless of which language you're using.


Instead of querying defaults directly using an undocumented key, ask the NSLocale class for the array of preferred languages.


To get the current device language use this instead:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];

As described here: Getting current device language in iOS?