locale_parse_locale2.phpt 4.9 KB

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