Fix AsYouTypeFormatter formatting for Chinese geographical and tollfree numbers enter...
authorjia.shao.peng <jia.shao.peng@ee073f10-1060-11df-b6a4-87a95322a99c>
Tue, 17 Aug 2010 06:14:53 +0000 (06:14 +0000)
committerjia.shao.peng <jia.shao.peng@ee073f10-1060-11df-b6a4-87a95322a99c>
Tue, 17 Aug 2010 06:14:53 +0000 (06:14 +0000)
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@52 ee073f10-1060-11df-b6a4-87a95322a99c

42 files changed:
java/release_notes.txt
java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml
java/resources/com/google/i18n/phonenumbers/test/PhoneNumberMetaDataForTesting.xml
java/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java
java/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG
java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI
java/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java
java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO
java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS

index 8280fd7805e87c17935425410d46ac0a0e055928..22f95b79655d33da47c78820cc4bae8a771339ab 100644 (file)
@@ -1,3 +1,12 @@
+August 16th, 2010
+* Bug fixes
+  - AsYouTypeFormatter for formatting Chinese geographical numbers entered in national format.
+  - AsYouTypeFormatter for formatting Chinese 400/800 numbers entered in national format.
+* Metadata change:
+  - new countries: AM, AN, BH, GL, IS
+  - adding national prefix 1 to all NANPA countries.
+  - update to existing countries: BF, FR, UK, PK, RE
+
 August 4th, 2010
 
 * Further improve startup performance
index 6ae2b91e22d7473ee732604eca6f64ee6ddc7c3b..bb700a00c323256c1a79339edf6df7a5a11c276d 100644 (file)
     <!-- Antigua and Barbuda -->
     <!-- http://www.itu.int/oth/T0202000008/en -->
     <territory id="AG" countryCode="1" leadingDigits="268"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[289]\d{9}</nationalNumberPattern>
     <!-- Anguilla -->
     <!-- http://www.itu.int/oth/T0202000007/en -->
     <territory id="AI" countryCode="1" leadingDigits="264"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[289]\d{9}</nationalNumberPattern>
     </territory>
 
     <!-- Armenia -->
+    <!-- http://www.itu.int/oth/T020200000A/en -->
+    <!-- We think the national dialling prefix is 0 - it seems this was a change
+    in 2005 (or 2008) along with the new city codes. However, their official
+    document makes no mention of it, websites disagree, and we are not sure if
+    the change has actually been made. -->
     <territory id="AM" countryCode="374" internationalPrefix="00"
-               nationalPrefix="8">
+               nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)">
+      <availableFormats>
+        <numberFormat pattern="(\d{2})(\d{6})">
+          <leadingDigits>[17]|9[1-49]</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+        <numberFormat pattern="(\d{3})(\d{5})">
+          <leadingDigits>[23]</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+        <numberFormat pattern="(\d{3})(\d{2})(\d{3})"
+          nationalPrefixFormattingRule="$NP $FG">
+          <leadingDigits>8|90</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+      </availableFormats>
+      <generalDesc>
+        <nationalNumberPattern>[1-37-9]\d{7}</nationalNumberPattern>
+        <possibleNumberPattern>\d{5,8}</possibleNumberPattern>
+      </generalDesc>
+      <fixedLine>
+        <nationalNumberPattern>(?:10\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\d{5}</nationalNumberPattern>
+        <exampleNumber>10123456</exampleNumber>
+      </fixedLine>
+      <mobile>
+        <nationalNumberPattern>(?:77|9[1-49])\d{6}</nationalNumberPattern>
+        <possibleNumberPattern>\d{8}</possibleNumberPattern>
+        <exampleNumber>77123456</exampleNumber>
+      </mobile>
+      <tollFree>
+        <nationalNumberPattern>800\d{5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{8}</possibleNumberPattern>
+        <exampleNumber>80012345</exampleNumber>
+      </tollFree>
+      <premiumRate>
+        <nationalNumberPattern>90[016]\d{5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{8}</possibleNumberPattern>
+        <exampleNumber>90012345</exampleNumber>
+      </premiumRate>
+      <sharedCost>
+        <nationalNumberPattern>80[1-4]\d{5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{8}</possibleNumberPattern>
+        <exampleNumber>80112345</exampleNumber>
+      </sharedCost>
     </territory>
 
     <!-- Netherlands Antilles -->
+    <!-- http://www.itu.int/oth/T0202000097/en -->
     <territory id="AN" countryCode="599" internationalPrefix="00">
+      <availableFormats>
+        <numberFormat pattern="(\d{3})(\d{4})">
+          <leadingDigits>[13-7]</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+        <numberFormat pattern="(9)(\d{3})(\d{4})">
+          <leadingDigits>9</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+      </availableFormats>
+      <generalDesc>
+        <nationalNumberPattern>[13-79]\d{6,7}</nationalNumberPattern>
+        <possibleNumberPattern>\d{7,8}</possibleNumberPattern>
+      </generalDesc>
+      <fixedLine>
+        <nationalNumberPattern>(?:318|5(?:25|4\d|8[239])|7(?:1[578]|50)|9(?:[48]\d{2}|50\d|7(?:2[0-2]|[34]\d|6[35-7]|77)))\d{4}|416[0239]\d{3}</nationalNumberPattern>
+        <exampleNumber>7151234</exampleNumber>
+      </fixedLine>
+      <mobile>
+        <nationalNumberPattern>(?:318|5(?:1[01]|2[0-7]|5\d|8[016-8])|7(0[01]|[89]\d)|9(?:5(?:[1246]\d|3[01])|6(?:[1679]\d|3[01])))\d{4}|416[15-8]\d{3}</nationalNumberPattern>
+        <exampleNumber>3181234</exampleNumber>
+      </mobile>
+      <!-- Value-added services are lumped together under shared cost, since we
+      are not sure exactly what they are.-->
+      <sharedCost>
+        <nationalNumberPattern>(?:10|69)\d{5}</nationalNumberPattern>
+        <exampleNumber>1011234</exampleNumber>
+      </sharedCost>
     </territory>
 
     <!-- Angola -->
         <exampleNumber>222123456</exampleNumber>
       </fixedLine>
       <mobile>
-        <!-- Expanded the 92 prefix possibilities to matchnumbers found online. -->
+        <!-- Expanded the 92 prefix possibilities to match numbers found online. -->
         <nationalNumberPattern>9[1-3]\d{7}</nationalNumberPattern>
         <exampleNumber>923123456</exampleNumber>
       </mobile>
     <!-- American Samoa -->
     <!-- http://www.itu.int/oth/T0202000004/en -->
     <territory id="AS" countryCode="1" leadingDigits="684"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[689]\d{9}</nationalNumberPattern>
     <!-- Barbados -->
     <!-- http://www.itu.int/oth/T0202000013/en -->
     <territory id="BB" countryCode="1" leadingDigits="246"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[289]\d{9}</nationalNumberPattern>
         <exampleNumber>20491234</exampleNumber>
       </fixedLine>
       <mobile>
-        <!-- Adding 75 for Zain, Burkina Faso. This is actually used in the
-        help-line number for them. -->
-        <nationalNumberPattern>7(?:[04-6]\d|1[0-489]|2[0-8]|8[013-9]|90)\d{5}</nationalNumberPattern>
+        <!-- Including the whole range of 75 despite the document restricting it
+        to only a few, since even the Zain help-line is outside the range that
+        the document specifies. -->
+        <nationalNumberPattern>7(?:[024-6]\d|1[0-489]|8[013-9]|90)\d{5}</nationalNumberPattern>
         <exampleNumber>70123456</exampleNumber>
       </mobile>
     </territory>
     </territory>
 
     <!-- Bahrain -->
+    <!-- http://www.itu.int/oth/T0202000011/en -->
     <territory id="BH" countryCode="973" internationalPrefix="00">
+      <availableFormats>
+        <numberFormat pattern="(\d{4})(\d{4})">
+          <format>$1 $2</format>
+        </numberFormat>
+      </availableFormats>
+      <generalDesc>
+        <nationalNumberPattern>[1367]\d{7}</nationalNumberPattern>
+        <possibleNumberPattern>\d{8}</possibleNumberPattern>
+      </generalDesc>
+      <!-- Universal Service numbers are under both Mobile and Fixed-Line, as
+      they can be assigned to either. -->
+      <fixedLine>
+        <nationalNumberPattern>(?:1(?:3[3-6]|6[0156]|7\d)|6(?:1[16]|6[03469]|9[69])|77\d)\d{5}</nationalNumberPattern>
+        <exampleNumber>17001234</exampleNumber>
+      </fixedLine>
+      <mobile>
+        <nationalNumberPattern>(?:3(?:[369]\d|77|8[38])|6(?:1[16]|6[03469]|9[69])|77\d)\d{5}</nationalNumberPattern>
+        <exampleNumber>36001234</exampleNumber>
+      </mobile>
     </territory>
 
     <!-- Burundi -->
     <!-- Bermuda -->
     <!-- http://www.itu.int/oth/T0202000018/en -->
     <territory id="BM" countryCode="1" leadingDigits="441"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[489]\d{9}</nationalNumberPattern>
     <!-- Bahamas -->
     <!-- http://www.itu.int/dms_pub/itu-t/oth/02/02/T02020000100001MSWE.pdf -->
     <territory id="BS" countryCode="1" leadingDigits="242"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[289]\d{9}</nationalNumberPattern>
 
     <!-- Canada -->
     <!-- http://www.cnac.ca/canadian_dial_plan/canadian_dial_plan.htm -->
-    <territory id="CA" countryCode="1" internationalPrefix="011">
+    <territory id="CA" countryCode="1" internationalPrefix="011"
+      nationalPrefix="1">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[2-9]\d{9}|3\d{6}</nationalNumberPattern>
           <leadingDigits>80[2678]</leadingDigits>
           <format>$1 $2</format>
         </numberFormat>
+        <numberFormat pattern="([48]00)(\d{3})(\d{4})">
+          <leadingDigits>[48]00</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
         <!-- Local numbers -->
         <!-- Chinese fixed-line numbers can be dialed from a cell phone without area code and they
              can be 7 to 8 digits. This rule is here to make formatting work with such numbers, as
           <leadingDigits>1[3-58]</leadingDigits>
           <format>$1 $2 $3</format>
         </numberFormat>
-        <numberFormat pattern="([48]00)(\d{3})(\d{4})">
-          <leadingDigits>[48]00</leadingDigits>
-          <format>$1 $2 $3</format>
-        </numberFormat>
         <numberFormat pattern="(10800)(\d{3})(\d{4})">
           <leadingDigits>108</leadingDigits>
           <leadingDigits>1080</leadingDigits>
     <!-- Dominica -->
     <!-- http://www.itu.int/oth/T020200003B/en -->
     <territory id="DM" countryCode="1" leadingDigits="767"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[7-9]\d{9}</nationalNumberPattern>
     <!-- Dominican Rep. -->
     <!-- http://www.itu.int/oth/T020200003C/en -->
     <territory id="DO" countryCode="1" leadingDigits="8[024]9"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[89]\d{9}</nationalNumberPattern>
     <!-- http://www.arcep.fr/index.php?id=8146 -->
     <!-- http://en.wikipedia.org/wiki/%2B33 -->
     <territory id="FR" countryCode="33" internationalPrefix="[04579]0"
-               preferredInternationalPrefix="00"
-               nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
+      preferredInternationalPrefix="00"
+      nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG">
       <availableFormats>
         <numberFormat pattern="([1-79])(\d{2})(\d{2})(\d{2})(\d{2})">
           <leadingDigits>[1-79]</leadingDigits>
         <exampleNumber>801234567</exampleNumber>
       </tollFree>
       <premiumRate>
-        <nationalNumberPattern>8(?:1[01]|2[0156]|84|9[0-37-9])\d{6}</nationalNumberPattern>
-        <exampleNumber>810123456</exampleNumber>
+        <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern>
+        <exampleNumber>891123456</exampleNumber>
       </premiumRate>
+      <sharedCost>
+        <nationalNumberPattern>8(?:1[019]|2[0156]|84|90)\d{6}</nationalNumberPattern>
+        <exampleNumber>810123456</exampleNumber>
+      </sharedCost>
       <voip>
         <nationalNumberPattern>9\d{8}</nationalNumberPattern>
         <exampleNumber>912345678</exampleNumber>
       </generalDesc>
       <fixedLine>
         <!-- http://en.wikipedia.org/wiki/List_of_United_Kingdom_dialling_codes -->
-        <nationalNumberPattern>1(?:1[3-8]|[2-69]1)\d{7}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|8[02-9]|9[0-9])|3(?:0\d|[25][02-9]|3[02-579]|4[0-56-9]|[68][0-46-9]|7[1-35-79]|9[24578])|4(?:0[03-9]|2[02-57-9]|[37]\d|4[02-69]|5[0-8]|[69][0-79]|8[02-9])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|[57][03-9]|6\d|8[0-68]|9[0-57-9])|6(?:0[034689]|2[035689]|3[13-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|8[013-9]|9[0-24578])|7(?:0[0246-9]|2\d|3[0236-8]|4[03-9]|5[0-46-9]|6[13-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\d|8[2-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\d|9[2-57]))\d{5,6}|(?:2[03489]|3[0347]|55)\d{8}</nationalNumberPattern>
+        <nationalNumberPattern>1(?:1[3-8]|[2-69]1)\d{7}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|8[02-9]|9[0-9])|3(?:0\d|[25][02-9]|3[02-579]|4[0-56-9]|[68][0-46-9]|7[1-35-79]|9[24578])|4(?:0[03-9]|2[02-57-9]|[37]\d|4[02-69]|5[0-8]|[69][0-79]|8[02-9])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|[57][03-9]|6\d|8[0-68]|9[0-57-9])|6(?:0[034689]|2[0-35689]|3[13-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|8[013-9]|9[0-24578])|7(?:0[0246-9]|2\d|3[0236-8]|4[03-9]|5[0-46-9]|6[13-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\d|8[2-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\d|9[2-57]))\d{5,6}|(?:2[03489]|3[0347]|55)\d{8}</nationalNumberPattern>
         <exampleNumber>1212345678</exampleNumber>
       </fixedLine>
       <mobile>
     <!-- Grenada -->
     <!-- http://www.itu.int/oth/T0202000057/en -->
     <territory id="GD" countryCode="1" leadingDigits="473"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[489]\d{9}</nationalNumberPattern>
     </territory>
 
     <!-- Greenland -->
+    <!-- http://www.itu.int/oth/T0202000056/en -->
     <territory id="GL" countryCode="299" internationalPrefix="00">
+      <availableFormats>
+        <numberFormat pattern="(\d{2})(\d{2})(\d{2})">
+          <format>$1 $2 $3</format>
+        </numberFormat>
+      </availableFormats>
+      <generalDesc>
+        <nationalNumberPattern>[1-689]\d{5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{6}</possibleNumberPattern>
+      </generalDesc>
+      <fixedLine>
+        <!-- Including VSAT numbers here. -->
+        <nationalNumberPattern>(?:19|3[1-6]|6[14689]|8[14-79]|9\d)\d{4}</nationalNumberPattern>
+        <exampleNumber>321000</exampleNumber>
+      </fixedLine>
+      <mobile>
+        <nationalNumberPattern>[245][2-9]\d{4}</nationalNumberPattern>
+        <exampleNumber>221234</exampleNumber>
+      </mobile>
+      <tollFree>
+        <nationalNumberPattern>80\d{4}</nationalNumberPattern>
+        <exampleNumber>801234</exampleNumber>
+      </tollFree>
+      <voip>
+        <nationalNumberPattern>3[89]\d{4}</nationalNumberPattern>
+        <exampleNumber>381234</exampleNumber>
+      </voip>
     </territory>
 
     <!-- Gambia -->
     <!-- Guam -->
     <!-- http://en.wikipedia.org/wiki/%2B1_671 -->
     <territory id="GU" countryCode="1" leadingDigits="671"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[689]\d{9}</nationalNumberPattern>
     </territory>
 
     <!-- Iceland -->
-    <territory id="IS" countryCode="354" internationalPrefix="00"
-               nationalPrefix="0">
+    <!-- http://www.pta.is/default.aspx?cat_id=85 -->
+    <territory id="IS" countryCode="354" internationalPrefix="00">
+      <availableFormats>
+        <numberFormat pattern="(\d{3})(\d{4})">
+          <format>$1 $2</format>
+        </numberFormat>
+      </availableFormats>
+      <generalDesc>
+        <nationalNumberPattern>[4-9]\d{6}</nationalNumberPattern>
+        <possibleNumberPattern>\d{7}</possibleNumberPattern>
+      </generalDesc>
+      <fixedLine>
+        <!-- Including 87[23] XXXX here as it is listed as a fax number. -->
+        <nationalNumberPattern>(?:4(?:1[0-245]|2[0-7]|[37][0-8]|4[0245]|5[0-356]|6\d|8[0-46-8]|9[013-79])|5(?:05|[156]\d|2[02578]|3[013-6]|4[03-6]|7[0-2578]|8[0-25-9]|9[013-689])|87[23])\d{4}</nationalNumberPattern>
+        <exampleNumber>4101234</exampleNumber>
+      </fixedLine>
+      <mobile>
+        <nationalNumberPattern>(?:6(?:1[014-8]|2[0-8]|3[0-27-9]|4[0-29]|5[029]|[67][0-69]|[89]\d)|7(?:5[057]|7[0-7])|8(?:2[0-5]|[469]\d|5[1-9]))\d{4}</nationalNumberPattern>
+        <exampleNumber>6101234</exampleNumber>
+      </mobile>
+      <tollFree>
+        <nationalNumberPattern>800\d{4}</nationalNumberPattern>
+        <exampleNumber>8001234</exampleNumber>
+      </tollFree>
+      <premiumRate>
+        <nationalNumberPattern>90\d{5}</nationalNumberPattern>
+        <exampleNumber>9011234</exampleNumber>
+      </premiumRate>
+      <voip>
+        <nationalNumberPattern>49[013-79]\d{4}</nationalNumberPattern>
+        <exampleNumber>4931234</exampleNumber>
+      </voip>
     </territory>
 
     <!-- Italy -->
     <!-- Jamaica -->
     <!-- http://www.itu.int/oth/T020200006C/en -->
     <territory id="JM" countryCode="1" leadingDigits="876"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[89]\d{9}</nationalNumberPattern>
     <!-- Saint Kitts and Nevis -->
     <!-- http://www.itu.int/oth/T02020000B0/en -->
     <territory id="KN" countryCode="1" leadingDigits="869"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[89]\d{9}</nationalNumberPattern>
     <!-- Cayman Islands -->
     <!-- http://www.itu.int/oth/T0202000027/en -->
     <territory id="KY" countryCode="1" leadingDigits="345"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[389]\d{9}</nationalNumberPattern>
     <!-- Saint Lucia -->
     <!-- http://www.itu.int/oth/T02020000B1/en -->
     <territory id="LC" countryCode="1" leadingDigits="758"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[789]\d{9}</nationalNumberPattern>
     <!-- http://www.itu.int/oth/T02020000EE/en -->
     <!-- www.cnmiphonebook.com/ -->
     <territory id="MP" countryCode="1" leadingDigits="670"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[689]\d{9}</nationalNumberPattern>
     <!-- Montserrat -->
     <!-- http://www.itu.int/oth/T020200008F/en -->
     <territory id="MS" countryCode="1" leadingDigits="664"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[689]\d{9}</nationalNumberPattern>
     <territory id="MU" countryCode="230" internationalPrefix="020">
       <!-- There is a proposal to change this to 8 digits - this is supposed to
       happen August 2010, and 7 digit numbers will be phased out by 1 November
-      2010. -->
+      2010. Update Aug 9th: Changeover postponed to indeterminate later date.
+      -->
       <availableFormats>
         <numberFormat pattern="([2-9]\d{2})(\d{4})">
           <format>$1 $2</format>
         <exampleNumber>90012345</exampleNumber>
       </premiumRate>
       <sharedCost>
-        <!-- Data on what a UAN number is is hard to come by. http://www.ptcl.com.pk
+        <!-- Data on what a UAN is is hard to come by. http://www.ptcl.com.pk
         has information under http://www.ptcl.com.pk/contentb.php?NID=143#uan -
         which defines their format - but not what type of number they are. We
         place them here as they are listed under "value added services", but are
-        neither premium nor toll free (to our knowledge). -->
-        <nationalNumberPattern>(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467]|8[126])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\d{6}</nationalNumberPattern>
+        neither premium nor toll free (to our knowledge). We exclude Azad Jammu,
+        Kashmir and Northern Areas here since no online example UANs can be
+        found, and they have an "access code" at the start, making it difficult
+        to guess what a UAN in these areas would look like. -->
+        <nationalNumberPattern>(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\d{6}</nationalNumberPattern>
         <possibleNumberPattern>\d{11,12}</possibleNumberPattern>
         <exampleNumber>21111825888</exampleNumber>
       </sharedCost>
     <!-- Puerto Rico -->
     <!-- http://www.itu.int/oth/T02020000AA/en -->
     <territory id="PR" countryCode="1" leadingDigits="787|939"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[789]\d{9}</nationalNumberPattern>
         <exampleNumber>801234567</exampleNumber>
       </tollFree>
       <premiumRate>
-        <nationalNumberPattern>8(?:1[01]|2[0156]|84|9[0-37-9])\d{6}</nationalNumberPattern>
-        <exampleNumber>810123456</exampleNumber>
+        <nationalNumberPattern>89[1-37-9]\d{6}</nationalNumberPattern>
+        <exampleNumber>891123456</exampleNumber>
       </premiumRate>
+      <sharedCost>
+        <nationalNumberPattern>8(?:1[019]|2[0156]|84|90)\d{6}</nationalNumberPattern>
+        <exampleNumber>810123456</exampleNumber>
+      </sharedCost>
     </territory>
 
     <!-- Romania -->
     <!-- Turks and Caicos Islands -->
     <!-- http://www.itu.int/oth/T02020000D8/en -->
     <territory id="TC" countryCode="1" leadingDigits="649"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[689]\d{9}</nationalNumberPattern>
     <!-- Trinidad and Tobago -->
     <!-- http://www.itu.int/oth/T02020000D4/en -->
     <territory id="TT" countryCode="1" leadingDigits="868"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>[89]\d{9}</nationalNumberPattern>
          who are calling formatByPattern can specify
          NationalPrefixFormattingRule if they want to. -->
     <territory id="US" countryCode="1" internationalPrefix="011"
-               mainCountryForCode="true" nationalPrefix="1">
+      mainCountryForCode="true" nationalPrefix="1">
       <availableFormats>
         <numberFormat pattern="(\d{3})(\d{3})(\d{4})">
           <format>($1) $2-$3</format>
     <!-- Saint Vincent and the Grenadines -->
     <!-- http://www.itu.int/oth/T02020000B3/en -->
     <territory id="VC" countryCode="1" leadingDigits="784"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>(?:784|8(?:00|66|77|88)|900)[2-9]\d{6}</nationalNumberPattern>
     <!-- Virgin Islands, British -->
     <!-- http://www.itu.int/oth/T020200001E/en -->
     <territory id="VG" countryCode="1" leadingDigits="284"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>(?:284|8(?:00|66|77|88)|900)[2-9]\d{6}</nationalNumberPattern>
     <!-- Virgin Islands, United States -->
     <!-- http://www.itu.int/oth/T02020000DF/en -->
     <territory id="VI" countryCode="1" leadingDigits="340"
-      internationalPrefix="011">
+      nationalPrefix="1" internationalPrefix="011">
       <generalDesc>
         <!-- NANPA country - uses US formatting rules -->
         <nationalNumberPattern>340(?:6[49]2|7[17]\d)\d{4}|(?:8(?:00|66|77|88)|900)[2-9]\d{6}</nationalNumberPattern>
index 012cf0eda755e1c0f276396783897afd10ca9fab..8604fa552879102e92a987a89e7b1a1977672566 100644 (file)
     </territory>
 
     <!-- Angola -->
-    <!-- http://www.itu.int/oth/T0202000006/en -->
-    <territory id="AO" countryCode="244" internationalPrefix="00">
+    <!-- This country has been coopted to test the case of a national prefix
+    with a non-numeric symbol in it. -->
+      
+    <territory id="AO" countryCode="244" internationalPrefix="00" nationalPrefix="0~0">
       <availableFormats>
         <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
           <format>$1 $2 $3</format>
     </territory>
 
     <!-- Bahamas -->
-    <territory id="BS" countryCode="1" internationalPrefix="011">
+    <territory id="BS" countryCode="1" internationalPrefix="011"
+               nationalPrefix="1">
       <generalDesc>
         <nationalNumberPattern>(242|8(00|66|77|88)|900)\d{7}</nationalNumberPattern>
         <possibleNumberPattern>\d{7,10}</possibleNumberPattern>
index 89b57e063d6f5b4b31d6346c001cc75376b583ba..37e7629252774507abd1e738cf751f0accb8ea95 100644 (file)
@@ -376,6 +376,10 @@ public class AsYouTypeFormatter {
     } else if (currentMetaData.hasNationalPrefix()) {
       Matcher m = nationalPrefixForParsing.matcher(nationalNumber);
       if (m.lookingAt()) {
+        // When the national prefix is detected, we use international formatting rules instead of
+        // national ones, because national formatting rules could contain local formatting rules
+        // for numbers entered without area code.
+        isInternationalFormatting = true;
         startOfNationalNumber = m.end();
         prefixBeforeNationalNumber.append(nationalNumber.substring(0, startOfNationalNumber));
       }
index 46d7edb1d3cd21ad997f74fc7261a5f3473d6cbb..12a51c0e6aac43b44c19be9efdb42a43f4d4b7c6 100644 (file)
@@ -2114,6 +2114,44 @@ public class PhoneNumberUtil {
     return metadata.getCountryCode();
   }
 
+  /**
+   * Returns the national dialling prefix for a specific region. For example, this would be 1 for
+   * the United States, and 0 for New Zealand. Set stripNonDigits to true to strip symbols like "~"
+   * (which indicates a wait for a dialling tone) from the prefix returned. If no national prefix is
+   * present, we return null.
+   *
+   * Warning: Do not use this method for do-your-own formatting - for some countries, the national
+   * dialling prefix is used only for certain types of numbers. Use the library's formatting
+   * functions to prefix the national prefix when required.
+   *
+   * @param regionCode  the ISO 3166-1 two-letter country code that denotes
+   *                    the country/region that we want to get the dialling prefix for
+   * @param stripNonDigits  true to strip non-digits from the national dialling prefix
+   * @return  the dialling prefix for the country/region denoted by regionCode
+   */
+  public String getNddPrefixForRegion(String regionCode, boolean stripNonDigits) {
+    if (!isValidRegionCode(regionCode)) {
+      LOGGER.log(Level.SEVERE, "Invalid or missing country code provided.");
+      return null;
+    }
+    PhoneMetadata metadata = getMetadataForRegion(regionCode);
+    if (metadata == null) {
+      LOGGER.log(Level.SEVERE, "Unsupported country code provided.");
+      return null;
+    }
+    String nationalPrefix = metadata.getNationalPrefix();
+    // If no national prefix was found, we return null.
+    if (nationalPrefix.length() == 0) {
+      return null;
+    }
+    if (stripNonDigits) {
+      // Note: if any other non-numeric symbols are ever used in national prefixes, these would have
+      // to be removed here as well.
+      nationalPrefix = nationalPrefix.replace("~", "");
+    }
+    return nationalPrefix;
+  }
+
   /**
    * Check if a country is one of the countries under the North American Numbering Plan
    * Administration (NANPA).
@@ -2674,7 +2712,8 @@ public class PhoneNumberUtil {
       throw new NumberParseException(NumberParseException.ErrorType.TOO_LONG,
                                      "The string supplied is too long to be a phone number.");
     }
-    if (normalizedNationalNumber.charAt(0) == '0' && isLeadingZeroCountry(countryCode)) {
+    if (normalizedNationalNumber.charAt(0) == '0' &&
+        isLeadingZeroCountry(countryCode)) {
       phoneNumber.setItalianLeadingZero(true);
     }
     phoneNumber.setNationalNumber(Long.parseLong(normalizedNationalNumber.toString()));
index 7bec359676d4a715af3d6cd0f085e529d256b4d9..66f24184b5d14fabf20e5182ca2374e75599327b 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AG differ
index b880a406fd5416ac83b053d68722f93d71e2142d..9cd89aa57ed2f2e3ab873843e407e94907c7551f 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AI differ
index fa2e8019382e1e31ef9a19377aa0691ae0208cf6..33486f3c8c548e9fcd3d53afd0a3d7b108d34696 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM differ
index 3d50a13fce8c92999669c5d30e3943e1637f4807..9de37b8487e98dda9cc723cfe56efd4a18812de0 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AN differ
index d200cff11202c8b7c8e56bec4049d7d4890a9039..0bd9622a5a9f0c8cc6f10c683ae499ddc5f72713 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AS differ
index 9d3d34202ba91d8bae96f7b0d8f9e555b04dafa6..98f886d8c31b6130469a77dc4cf2eb17c39cfb94 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BB differ
index 9226d8c2b5fc4563b598c5bebeac9e99a3082b31..3652a996be03c7840efcf53391f34809d514a147 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BF differ
index 96b238fe9629ea78f707612cdb2f84fe790ff81f..c6f3a40184adf076ebac182411d7d9018ac96eb8 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BH differ
index 3d2e26ccea7b4f2a4d4772b9570d504d4d913e05..71e0fae65eeee6c6e155d83bbd3f0bdccba10ea3 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BM differ
index 6464fc766c341b9780e572d76bc827f107568c21..6178a92339ca1a3303af37511e4814db916dfad4 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BS differ
index 2432c8273324500a68a3bd614a22c7cd67db5287..af5d41327a44ff7579c5671fb4a891977f3c3aa8 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CA differ
index 0e551a66194b0aad6de5790875f146c396f2846c..1343ba9a1707ba7f2ef0eab02343872174e0e1f4 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN differ
index e9474210dbfe209c5107a6a9e7af593aabd3b993..709a98e673d9c4a46c5aa7d8d4bc5ade05be1436 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DM differ
index 001987198fb225d9e71d33670b0a7ce5750910d8..1edd2e7c6e55d8d00e904951fd48c9a49780f639 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_DO differ
index 3db0cfd8c99fbd840a7a1ec6c72c943c341a2f9c..e05f4fbe0fc7f5f3b61be0899930a8463be1dc31 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FR differ
index 965f0379848a0deed89047d0e632b26b078a6121..e13dd9b76cf37d1ab3ba427f05dacccdeb9cd981 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GB differ
index b5deb684b5d8efeeac7124ecdf95a362379eb3ea..e0bea32c028de4a78fbfb3bb809a4a1be43e3b3f 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GD differ
index 19d3222cfdabb8780f71f9eabc852852523d91f7..75374232091774971c347219fc1d6eceda2f4465 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GL differ
index 6eaf05e6e940e3fafa8ad7dfc18391218353166f..c10a5087ee7f6cddcba3fbaff6f0856399ae7868 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GU differ
index 649fab3b94f59f00432bcd0eb3cb795a845b265a..6d3c9f87afb8565e59fa1df81e10f454b694caf2 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IS differ
index 829eb7d864331ea0c6d8a26649a2e14544aa97d2..6c4efe1bd8c997c27f266b30aa69515a0f4d6615 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_JM differ
index 113fbbeaf04e1e16aae5b41bb2265a1a0829b0f4..8356909039c205abc9734f1bbfd08cb893dea9c0 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN differ
index 704e2fb563c452f3c34d0525c7660292c08ac81b..0e3ac3e81401c1af663c2d041518b613cf7739e6 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KY differ
index 99ca1e0b559fc6a4776c61a9d49c9ced5b243b0c..8543a6b2edf499bb82b586120da02f56e865fa58 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LC differ
index 238d1f15468e9936dd11f1f4bd681262e8ac8f19..2218205f71010bccfd92890c9a6341850506184d 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MP differ
index c34f7cac433ec39566f70070b7d4f34f913b2653..943d6346eb70efa1223bc5325c8dae471d3e4ffb 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MS differ
index ad32cfe7602f6583c83cf88ca4041cbd6f343e7c..f2d411319e4f5453de2136e455531a9fb62a93d8 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PK differ
index 4f4566013b5f5ded40066dc31e3cf9bfd4404211..164477d9857f8046211c62aeefe16078bf2ffbb4 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_PR differ
index 000910edb964bce4ee8c7bb155a8aa8ead1fac0c..73db8fecc0e58176b285d81accfe7fee1b52d192 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_RE differ
index 5c3d9e5949b2296b576bfa12a45651e4584650cc..8334306d4d5b2bf25a952941b324fd8342d8b0d3 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TC differ
index 0158a4d21bf2dbf7e60d01ad0a68102b38e0b0a0..dcfe980cba4096d655ddab8be15d96c19c0d7078 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TT differ
index d592fba5209a3485a6a657de78a1256a8eca951d..c3cebe315dbb90841b3a078045226bf9645d0da8 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VC differ
index a1b0d8ced3022793dc2039d4d8748aba40449125..c75a295421224a6ab8860b65378879cc9c378c66 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VG differ
index cb79137b0ce01847815f125bcb2f47ac5d2c0bcf..294281b01e7559cd63ad6c65c7738be1da73b95f 100644 (file)
Binary files a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI and b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI differ
index 1a45d620669cccd30ee0b84d3422637a9ca008a9..e52a91202bc8fcae578aaf52eb828ccc4c0073d7 100644 (file)
@@ -953,6 +953,23 @@ public class PhoneNumberUtilTest extends TestCase {
     assertEquals(0, phoneUtil.getCountryCodeForRegion("CS"));
   }
 
+  @SuppressWarnings("deprecation")
+  public void testGetNationalDiallingPrefixForRegion() {
+    assertEquals("1", phoneUtil.getNddPrefixForRegion("US", false));
+    // Test non-main country to see it gets the national dialling prefix for the main country with
+    // that country calling code.
+    assertEquals("1", phoneUtil.getNddPrefixForRegion("BS", false));
+    assertEquals("0", phoneUtil.getNddPrefixForRegion("NZ", false));
+    // Test case with non digit in the national prefix.
+    assertEquals("0~0", phoneUtil.getNddPrefixForRegion("AO", false));
+    assertEquals("00", phoneUtil.getNddPrefixForRegion("AO", true));
+    // Test cases with invalid regions.
+    assertEquals(null, phoneUtil.getNddPrefixForRegion(null, false));
+    assertEquals(null, phoneUtil.getNddPrefixForRegion("ZZ", false));
+    // CS is already deprecated so the library doesn't support it.
+    assertEquals(null, phoneUtil.getNddPrefixForRegion("CS", false));
+  }
+
   public void testIsNANPACountry() {
     assertTrue(phoneUtil.isNANPACountry("US"));
     assertTrue(phoneUtil.isNANPACountry("BS"));
index 06a7dee0c5919b9b7ce5f350f7e990338dd78e94..1fe371f1ff497624f1e24935eaee5621f134b7bf 100644 (file)
Binary files a/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO and b/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_AO differ
index 47ecb7c57b3a76f97ae88e0b2f26766fd7345a70..543069b4bb3756a119e139cc818f4b6c19030fdd 100644 (file)
Binary files a/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS and b/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_BS differ