msgfmt_parse.phpt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. --TEST--
  2. msgfmt_parse() tests
  3. --EXTENSIONS--
  4. intl
  5. --FILE--
  6. <?php
  7. /*
  8. * Format a number using misc locales/patterns.
  9. */
  10. function ut_main()
  11. {
  12. $locales = array(
  13. 'en_US' => "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree",
  14. 'ru_UA' => "{0,number,integer} мавп на {1,number,integer} деревах це {2,number} мавпи на кожному деревi",
  15. 'de' => "{0,number,integer} Affen über {1,number,integer} Bäume um {2,number} Affen pro Baum",
  16. 'en_UK' => "{0,number,integer} monkeys on {1,number,integer} trees make {2,number} monkeys per tree",
  17. 'root' => '{0,whatever} would not work!',
  18. 'fr' => 'C\'est {0,number,integer}',
  19. );
  20. $results = array(
  21. 'en_US' => "4,560 monkeys on 123 trees make 37.073 monkeys per tree",
  22. 'ru_UA' => "4 560 мавп на 123 деревах це 37,073 мавпи на кожному деревi",
  23. 'de' => "4.560 Affen über 123 Bäume um 37,073 Affen pro Baum",
  24. 'en_UK' => "4,560 monkeys on 123 trees make 37.073 monkeys per tree",
  25. 'root' => "4,560 monkeys on 123 trees make 37.073 monkeys per tree",
  26. 'fr' => "C'est 42",
  27. );
  28. $str_res = '';
  29. foreach( $locales as $locale => $pattern )
  30. {
  31. $str_res .= "\nLocale is: $locale\n";
  32. $fmt = ut_msgfmt_create( $locale, $pattern );
  33. if(!$fmt) {
  34. $str_res .= dump(intl_get_error_message())."\n";
  35. continue;
  36. }
  37. $str_res .= dump( ut_msgfmt_parse( $fmt, $results[$locale] ) ) . "\n";
  38. $str_res .= dump( ut_msgfmt_parse_message($locale, $pattern, $results[$locale])) . "\n";
  39. }
  40. return $str_res;
  41. }
  42. include_once( 'ut_common.inc' );
  43. // Run the test
  44. ut_run();
  45. ?>
  46. --EXPECT--
  47. Locale is: en_US
  48. array (
  49. 0 => 4560,
  50. 1 => 123,
  51. 2 => 37.073,
  52. )
  53. array (
  54. 0 => 4560,
  55. 1 => 123,
  56. 2 => 37.073,
  57. )
  58. Locale is: ru_UA
  59. array (
  60. 0 => 4560,
  61. 1 => 123,
  62. 2 => 37.073,
  63. )
  64. array (
  65. 0 => 4560,
  66. 1 => 123,
  67. 2 => 37.073,
  68. )
  69. Locale is: de
  70. array (
  71. 0 => 4560,
  72. 1 => 123,
  73. 2 => 37.073,
  74. )
  75. array (
  76. 0 => 4560,
  77. 1 => 123,
  78. 2 => 37.073,
  79. )
  80. Locale is: en_UK
  81. array (
  82. 0 => 4560,
  83. 1 => 123,
  84. 2 => 37.073,
  85. )
  86. array (
  87. 0 => 4560,
  88. 1 => 123,
  89. 2 => 37.073,
  90. )
  91. Locale is: root
  92. 'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
  93. Locale is: fr
  94. array (
  95. 0 => 42,
  96. )
  97. array (
  98. 0 => 42,
  99. )