We were using the NSDate Formatter class to format a printable month and year from an NSDate instance.
Fortunately there's a coarse-grained way you can figure out a user's locate without asking for location permission: is a user's region setting on their device, and you can read it without asking for permission.The corresponding instance variables are synthesized in the class implementation: This creates a default getter and setter for each ivar but we will create our own getter methods to allow the formatters to be configured the way we want them.The getter method for the date formatter which will show just the month and year could be written as follows: If the formatter does not already exist it will be created and stored in the ivar otherwise the existing object is returned.Current Locale Did Change Notification as the notification to monitor with NSNotification Center.I assume reader is already familiar with basic internationalization facilities and approaches used in i OS apps development.For example, if the locale is en-US it means they speak English and are in the US; if it's fr-CA it means they speak French are in Canada.
This is all wrapped up inside Now, there is a catch, but this is actually a bonus feature in my eyes: if a user travels abroad, their device will still be configured for their home country, so an American visiting France will still say "US".
NSBundle looks at your app and tells you which of what your app provides you should use according to user settings.
So, NSBundle is usually the one to ask for language.
Current Locale or construct a specific locale passing a locale code, for example 'new NSLocale ("es_ES_PREEURO").
You can get a list of the available device locale identifiers using the static NSLocale. Your application can be notified of changes in the system local by using the NSLocale.
A more efficient approach is to create them once in the view controller and cache the formatter objects in instance variables.