|
44 | 44 | # limitations under the License. |
45 | 45 |
|
46 | 46 | from .phonenumberutil import format_number, PhoneNumberFormat, number_type |
47 | | -from .phonenumberutil import region_code_for_number, PhoneNumberType |
| 47 | +from .phonenumberutil import region_code_for_number, PhoneNumberType, PhoneNumber |
| 48 | +from .phonenumberutil import country_mobile_token, national_significant_number |
48 | 49 | try: |
49 | 50 | from .geodata import GEOCODE_DATA, GEOCODE_LONGEST_PREFIX |
50 | 51 | from .geodata.locale import LOCALE_DATA |
@@ -222,7 +223,19 @@ def description_for_valid_number(numobj, lang, script=None, region=None): |
222 | 223 | number, or an empty string if no description is available.""" |
223 | 224 | number_region = region_code_for_number(numobj) |
224 | 225 | if region is None or region == number_region: |
225 | | - area_description = _area_description_for_number(numobj, lang, script, region) |
| 226 | + mobile_token = country_mobile_token(numobj.country_code) |
| 227 | + national_number = national_significant_number(numobj) |
| 228 | + if mobile_token != "" and national_number.startswith(mobile_token): |
| 229 | + # In some countries, eg. Argentina, mobile numbers have a mobile token |
| 230 | + # before the national destination code, this should be removed before |
| 231 | + # geocoding. |
| 232 | + national_number = national_number[len(mobile_token):] |
| 233 | + copied_numobj = PhoneNumber(country_code=numobj.country_code, |
| 234 | + national_number=national_number, |
| 235 | + italian_leading_zero=national_number.startswith("0")) |
| 236 | + area_description = _area_description_for_number(copied_numobj, lang, script, region) |
| 237 | + else: |
| 238 | + area_description = _area_description_for_number(numobj, lang, script, region) |
226 | 239 | if area_description != "": |
227 | 240 | return area_description |
228 | 241 | else: |
|
0 commit comments