diff --git a/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java b/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java index 1a93cc1f2..d434c9489 100644 --- a/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java +++ b/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder.java @@ -130,6 +130,13 @@ public class PhoneNumberOfflineGeocoder { */ private String getCountryNameForNumber(PhoneNumber number, Locale language) { String regionCode = phoneUtil.getRegionCodeForNumber(number); + return getRegionDisplayName(regionCode, language); + } + + /** + * Returns the customary display name in the given language for the given region. + */ + private String getRegionDisplayName(String regionCode, Locale language) { return (regionCode == null || regionCode.equals("ZZ")) ? "" : new Locale("", regionCode).getDisplayCountry(language); } @@ -188,7 +195,7 @@ public class PhoneNumberOfflineGeocoder { return getDescriptionForValidNumber(number, languageCode); } // Otherwise, we just show the region(country) name for now. - return getCountryNameForNumber(number, languageCode); + return getRegionDisplayName(regionCode, languageCode); // TODO: Concatenate the lower-level and country-name information in an appropriate // way for each language. } diff --git a/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java b/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java index 96c9d3d79..a8f7b6bc5 100644 --- a/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java +++ b/java/geocoder/test/com/google/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoderTest.java @@ -117,13 +117,13 @@ public class PhoneNumberOfflineGeocoderTest extends TestCase { } public void testGetDescriptionForNumberWithUserRegion() { - // User in Italy, American number. We should just show United States, in German, and not more + // User in Italy, American number. We should just show United States, in Spanish, and not more // detailed information. - assertEquals("Vereinigte Staaten von Amerika", - geocoder.getDescriptionForNumber(US_NUMBER1, Locale.GERMAN, "IT")); + assertEquals("Estados Unidos", + geocoder.getDescriptionForNumber(US_NUMBER1, new Locale("es", "ES"), "IT")); // Unknown region - should just show country name. - assertEquals("Vereinigte Staaten von Amerika", - geocoder.getDescriptionForNumber(US_NUMBER1, Locale.GERMAN, "ZZ")); + assertEquals("Estados Unidos", + geocoder.getDescriptionForNumber(US_NUMBER1, new Locale("es", "ES"), "ZZ")); // User in the States, language German, should show detailed data. assertEquals("Kalifornien", geocoder.getDescriptionForNumber(US_NUMBER1, Locale.GERMAN, "US")); diff --git a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java index b9307e746..a648c7b7d 100644 --- a/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java @@ -162,9 +162,9 @@ public class PhoneNumberUtil { ALPHA_PHONE_MAPPINGS = Collections.unmodifiableMap(combinedMap); HashMap diallableCharMap = new HashMap(); + diallableCharMap.putAll(asciiDigitMappings); diallableCharMap.put('+', '+'); diallableCharMap.put('*', '*'); - diallableCharMap.putAll(asciiDigitMappings); DIALLABLE_CHAR_MAPPINGS = Collections.unmodifiableMap(diallableCharMap); HashMap allPlusNumberGroupings = new HashMap();