getLocaleName does not return consistent results depending on the platform.
The documentation should be changed to state that it should return a BCP 47 representation of Unicode locale identifier (see http://www.unicode.org/reports/tr35/#Unicode_locale_identifier - section "3.3.1 BCP 47 tag conversion") to identify the culture of the user, and disambiguate the region as a place.
Implementation should be changed accordingly.
WindowsPhone 8 implementation is incorrect. Returning country code is not enough. It should use CultureInfo.CurrentCulture.Name.
Android and iOS should use "dashes" instead of "underscores".