locale_parse_locale2.phpt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. --TEST--
  2. locale_parse_locale() icu >= 4.8
  3. --EXTENSIONS--
  4. intl
  5. --FILE--
  6. <?php
  7. /*
  8. * Try parsing different Locales
  9. * with Procedural and Object methods.
  10. */
  11. function ut_main()
  12. {
  13. $res_str = '';
  14. $locales = array(
  15. 'uk-ua_CALIFORNIA@currency=;currency=GRN',
  16. 'root',
  17. 'uk@currency=EURO',
  18. 'Hindi',
  19. //Simple language subtag
  20. 'de',
  21. 'fr',
  22. 'ja',
  23. 'i-enochian', //(example of a grandfathered tag)
  24. //Language subtag plus Script subtag:
  25. 'zh-Hant',
  26. 'zh-Hans',
  27. 'sr-Cyrl',
  28. 'sr-Latn',
  29. //Language-Script-Region
  30. 'zh-Hans-CN',
  31. 'sr-Latn-CS',
  32. //Language-Variant
  33. 'sl-rozaj',
  34. 'sl-nedis',
  35. //Language-Region-Variant
  36. 'de-CH-1901',
  37. 'sl-IT-nedis',
  38. //Language-Script-Region-Variant
  39. 'sl-Latn-IT-nedis',
  40. //Language-Region:
  41. 'de-DE',
  42. 'en-US',
  43. 'es-419',
  44. //Private use subtags:
  45. 'de-CH-x-phonebk',
  46. 'az-Arab-x-AZE-derbend',
  47. //Extended language subtags
  48. 'zh-min',
  49. 'zh-min-nan-Hant-CN',
  50. //Private use registry values
  51. 'qaa-Qaaa-QM-x-southern',
  52. 'sr-Latn-QM',
  53. 'sr-Qaaa-CS',
  54. /*Tags that use extensions (examples ONLY: extensions MUST be defined
  55. by revision or update to this document or by RFC): */
  56. 'en-US-u-islamCal',
  57. 'zh-CN-a-myExt-x-private',
  58. 'en-a-myExt-b-another',
  59. //Some Invalid Tags:
  60. 'de-419-DE',
  61. 'a-DE',
  62. 'ar-a-aaa-b-bbb-a-ccc',
  63. 'x-AAAAAA',
  64. );
  65. $res_str = '';
  66. foreach( $locales as $locale )
  67. {
  68. $arr = ut_loc_locale_parse( $locale);
  69. $res_str .= "---------------------\n";
  70. $res_str .= "$locale:\n";
  71. if( $arr){
  72. foreach( $arr as $key => $value){
  73. $res_str .= "$key : '$value' , ";
  74. }
  75. $res_str = rtrim($res_str);
  76. }
  77. else{
  78. $res_str .= "No values found from Locale parsing.";
  79. }
  80. $res_str .= "\n";
  81. }
  82. $res_str .= "\n";
  83. return $res_str;
  84. }
  85. include_once( 'ut_common.inc' );
  86. ut_run();
  87. ?>
  88. --EXPECTF--
  89. ---------------------
  90. uk-ua_CALIFORNIA@currency=;currency=GRN:
  91. language : 'uk' , region : 'UA' , variant0 : 'CALIFORNIA' ,
  92. ---------------------
  93. root:
  94. %s
  95. ---------------------
  96. uk@currency=EURO:
  97. language : 'uk' ,
  98. ---------------------
  99. Hindi:
  100. language : 'hindi' ,
  101. ---------------------
  102. de:
  103. language : 'de' ,
  104. ---------------------
  105. fr:
  106. language : 'fr' ,
  107. ---------------------
  108. ja:
  109. language : 'ja' ,
  110. ---------------------
  111. i-enochian:
  112. grandfathered : 'i-enochian' ,
  113. ---------------------
  114. zh-Hant:
  115. language : 'zh' , script : 'Hant' ,
  116. ---------------------
  117. zh-Hans:
  118. language : 'zh' , script : 'Hans' ,
  119. ---------------------
  120. sr-Cyrl:
  121. language : 'sr' , script : 'Cyrl' ,
  122. ---------------------
  123. sr-Latn:
  124. language : 'sr' , script : 'Latn' ,
  125. ---------------------
  126. zh-Hans-CN:
  127. language : 'zh' , script : 'Hans' , region : 'CN' ,
  128. ---------------------
  129. sr-Latn-CS:
  130. language : 'sr' , script : 'Latn' , region : 'CS' ,
  131. ---------------------
  132. sl-rozaj:
  133. language : 'sl' , variant0 : 'ROZAJ' ,
  134. ---------------------
  135. sl-nedis:
  136. language : 'sl' , variant0 : 'NEDIS' ,
  137. ---------------------
  138. de-CH-1901:
  139. language : 'de' , region : 'CH' , variant0 : '1901' ,
  140. ---------------------
  141. sl-IT-nedis:
  142. language : 'sl' , region : 'IT' , variant0 : 'NEDIS' ,
  143. ---------------------
  144. sl-Latn-IT-nedis:
  145. language : 'sl' , script : 'Latn' , region : 'IT' , variant0 : 'NEDIS' ,
  146. ---------------------
  147. de-DE:
  148. language : 'de' , region : 'DE' ,
  149. ---------------------
  150. en-US:
  151. language : 'en' , region : 'US' ,
  152. ---------------------
  153. es-419:
  154. language : 'es' , region : '419' ,
  155. ---------------------
  156. de-CH-x-phonebk:
  157. language : 'de' , region : 'CH' , private0 : 'phonebk' ,
  158. ---------------------
  159. az-Arab-x-AZE-derbend:
  160. language : 'az' , script : 'Arab' , private0 : 'AZE' , private1 : 'derbend' ,
  161. ---------------------
  162. zh-min:
  163. grandfathered : 'zh-min' ,
  164. ---------------------
  165. zh-min-nan-Hant-CN:
  166. language : 'zh' , region : 'MIN' , variant0 : 'NAN' , variant1 : 'HANT' , variant2 : 'CN' ,
  167. ---------------------
  168. qaa-Qaaa-QM-x-southern:
  169. language : 'qaa' , script : 'Qaaa' , region : 'QM' , private0 : 'southern' ,
  170. ---------------------
  171. sr-Latn-QM:
  172. language : 'sr' , script : 'Latn' , region : 'QM' ,
  173. ---------------------
  174. sr-Qaaa-CS:
  175. language : 'sr' , script : 'Qaaa' , region : 'CS' ,
  176. ---------------------
  177. en-US-u-islamCal:
  178. language : 'en' , region : 'US' ,
  179. ---------------------
  180. zh-CN-a-myExt-x-private:
  181. language : 'zh' , region : 'CN' , private0 : 'private' ,
  182. ---------------------
  183. en-a-myExt-b-another:
  184. language : 'en' ,
  185. ---------------------
  186. de-419-DE:
  187. language : 'de' , region : '419' , variant0 : 'DE' ,
  188. ---------------------
  189. a-DE:
  190. No values found from Locale parsing.
  191. ---------------------
  192. ar-a-aaa-b-bbb-a-ccc:
  193. language : 'ar' ,
  194. ---------------------
  195. x-AAAAAA:
  196. private0 : 'AAAAAA' ,