Improving the retrieval of the user's locale on Apple systems.

The previous behavior used the entire local identifier string that includes optional settings such as variant and calendar format. This returns locales like en_US_POSIX@calendar=buddhist which result in the user's culture being the invariant culture.

This change builds the locale from the language, country code and optional script code so that the locale returned is in the expected format. If the locale can not be constructed from the individual parts, it falls back to the previous behavior.