فهرست منبع

[Form][Locale] Implemented LocaleField and added script for updating ICU data

Bernhard Schussek 14 سال پیش
والد
کامیت
b9c2e98315
100فایلهای تغییر یافته به همراه73 افزوده شده و 6 حذف شده
  1. 23 0
      src/Symfony/Component/Form/LocaleField.php
  2. 48 0
      src/Symfony/Component/Locale/Locale.php
  3. 2 6
      src/Symfony/Component/Locale/Resources/data/UPDATE.txt
  4. BIN
      src/Symfony/Component/Locale/Resources/data/locales/af.res
  5. BIN
      src/Symfony/Component/Locale/Resources/data/locales/af_NA.res
  6. BIN
      src/Symfony/Component/Locale/Resources/data/locales/af_ZA.res
  7. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ak.res
  8. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ak_GH.res
  9. BIN
      src/Symfony/Component/Locale/Resources/data/locales/am.res
  10. BIN
      src/Symfony/Component/Locale/Resources/data/locales/am_ET.res
  11. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar.res
  12. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_AE.res
  13. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_BH.res
  14. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_DZ.res
  15. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_EG.res
  16. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_IQ.res
  17. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_JO.res
  18. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_KW.res
  19. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_LB.res
  20. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_LY.res
  21. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_MA.res
  22. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_OM.res
  23. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_QA.res
  24. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_SA.res
  25. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_SD.res
  26. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_SY.res
  27. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_TN.res
  28. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ar_YE.res
  29. BIN
      src/Symfony/Component/Locale/Resources/data/locales/as.res
  30. BIN
      src/Symfony/Component/Locale/Resources/data/locales/as_IN.res
  31. BIN
      src/Symfony/Component/Locale/Resources/data/locales/asa.res
  32. BIN
      src/Symfony/Component/Locale/Resources/data/locales/asa_TZ.res
  33. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az.res
  34. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az_AZ.res
  35. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az_Cyrl.res
  36. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az_Cyrl_AZ.res
  37. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az_Latn.res
  38. BIN
      src/Symfony/Component/Locale/Resources/data/locales/az_Latn_AZ.res
  39. BIN
      src/Symfony/Component/Locale/Resources/data/locales/be.res
  40. BIN
      src/Symfony/Component/Locale/Resources/data/locales/be_BY.res
  41. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bem.res
  42. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bem_ZM.res
  43. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bez.res
  44. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bez_TZ.res
  45. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bg.res
  46. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bg_BG.res
  47. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bm.res
  48. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bm_ML.res
  49. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bn.res
  50. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bn_BD.res
  51. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bn_IN.res
  52. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bo.res
  53. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bo_CN.res
  54. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bo_IN.res
  55. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bs.res
  56. BIN
      src/Symfony/Component/Locale/Resources/data/locales/bs_BA.res
  57. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ca.res
  58. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ca_ES.res
  59. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cgg.res
  60. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cgg_UG.res
  61. BIN
      src/Symfony/Component/Locale/Resources/data/locales/chr.res
  62. BIN
      src/Symfony/Component/Locale/Resources/data/locales/chr_US.res
  63. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cs.res
  64. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cs_CZ.res
  65. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cy.res
  66. BIN
      src/Symfony/Component/Locale/Resources/data/locales/cy_GB.res
  67. BIN
      src/Symfony/Component/Locale/Resources/data/locales/da.res
  68. BIN
      src/Symfony/Component/Locale/Resources/data/locales/da_DK.res
  69. BIN
      src/Symfony/Component/Locale/Resources/data/locales/dav.res
  70. BIN
      src/Symfony/Component/Locale/Resources/data/locales/dav_KE.res
  71. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de.res
  72. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_AT.res
  73. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_BE.res
  74. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_CH.res
  75. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_DE.res
  76. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_LI.res
  77. BIN
      src/Symfony/Component/Locale/Resources/data/locales/de_LU.res
  78. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ebu.res
  79. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ebu_KE.res
  80. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ee.res
  81. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ee_GH.res
  82. BIN
      src/Symfony/Component/Locale/Resources/data/locales/ee_TG.res
  83. BIN
      src/Symfony/Component/Locale/Resources/data/locales/el.res
  84. BIN
      src/Symfony/Component/Locale/Resources/data/locales/el_CY.res
  85. BIN
      src/Symfony/Component/Locale/Resources/data/locales/el_GR.res
  86. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en.res
  87. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_AS.res
  88. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_AU.res
  89. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_BE.res
  90. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_BW.res
  91. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_BZ.res
  92. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_CA.res
  93. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_GB.res
  94. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_GU.res
  95. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_HK.res
  96. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_IE.res
  97. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_IN.res
  98. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_JM.res
  99. BIN
      src/Symfony/Component/Locale/Resources/data/locales/en_MH.res
  100. 0 0
      src/Symfony/Component/Locale/Resources/data/locales/en_MP.res

+ 23 - 0
src/Symfony/Component/Form/LocaleField.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace Symfony\Component\Form;
+
+use Symfony\Component\Locale\Locale;
+
+/**
+ * A field for selecting from a list of locales
+ *
+ * @author Bernhard Schussek <bernhard.schussek@symfony-project.com>
+ */
+class LocaleField extends ChoiceField
+{
+    /**
+     * @inheritDoc
+     */
+    protected function configure()
+    {
+        $this->addOption('choices', Locale::getDisplayLocales($this->locale));
+
+        parent::configure();
+    }
+}

+ 48 - 0
src/Symfony/Component/Locale/Locale.php

@@ -25,6 +25,12 @@ class Locale extends \Locale
      */
     protected static $languages = array();
 
+    /**
+     * Caches the different locales
+     * @var array
+     */
+    protected static $locales = array();
+
     /**
      * Returns the country names for a locale
      *
@@ -116,4 +122,46 @@ class Locale extends \Locale
     {
         return array_keys(self::getDisplayLanguages(self::getDefault()));
     }
+
+    /**
+     * Returns the locale names for a locale
+     *
+     * @param  string $locale     The locale to use for the locale names
+     * @return array              The locale names with their codes as keys
+     * @throws RuntimeException   When the resource bundles cannot be loaded
+     */
+    public static function getDisplayLocales($locale)
+    {
+        if (!isset(self::$locales[$locale])) {
+            $bundle = new \ResourceBundle($locale, __DIR__.'/Resources/data/names');
+
+            if (null === $bundle) {
+                throw new \RuntimeException('The locale resource bundle could not be loaded');
+            }
+
+            $collator = new \Collator($locale);
+            $locales = array();
+
+            foreach ($bundle->get('Locales') as $code => $name) {
+                $locales[$code] = $name;
+            }
+
+            $collator->asort($locales);
+
+            self::$locales[$locale] = $locales;
+        }
+
+        return self::$locales[$locale];
+    }
+
+    /**
+     * Returns all available locale codes
+     *
+     * @return array              The locale codes
+     * @throws RuntimeException   When the resource bundles cannot be loaded
+     */
+    public static function getLocales()
+    {
+        return array_keys(self::getDisplayLocales(self::getDefault()));
+    }
 }

+ 2 - 6
src/Symfony/Component/Locale/Resources/data/UPDATE.txt

@@ -5,13 +5,9 @@ How to update the ICU data
 
    $ svn co http://source.icu-project.org/repos/icu/icu/trunk/source/data icu-data
 
-2. Build the region resource bundles
+2. Execute the build script
 
-   $ cd icu-data/region
-   $ mkdir build
-   $ genrb -d build *.txt
-   
-3a. Replace the *.res files bundled with Symfony2 with the new ones.
+   $ php update-data.php /path/to/icu-data
 
 .dat-package
 ------------

BIN
src/Symfony/Component/Locale/Resources/data/locales/af.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/af_NA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/af_ZA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ak.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ak_GH.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/am.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/am_ET.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_AE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_BH.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_DZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_EG.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_IQ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_JO.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_KW.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_LB.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_LY.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_MA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_OM.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_QA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_SA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_SD.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_SY.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_TN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ar_YE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/as.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/as_IN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/asa.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/asa_TZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az_AZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az_Cyrl.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az_Cyrl_AZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az_Latn.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/az_Latn_AZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/be.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/be_BY.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bem.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bem_ZM.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bez.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bez_TZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bg.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bg_BG.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bm.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bm_ML.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bn.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bn_BD.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bn_IN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bo.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bo_CN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bo_IN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bs.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/bs_BA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ca.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ca_ES.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cgg.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cgg_UG.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/chr.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/chr_US.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cs.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cs_CZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cy.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/cy_GB.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/da.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/da_DK.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/dav.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/dav_KE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_AT.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_BE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_CH.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_DE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_LI.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/de_LU.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ebu.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ebu_KE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ee.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ee_GH.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/ee_TG.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/el.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/el_CY.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/el_GR.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_AS.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_AU.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_BE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_BW.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_BZ.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_CA.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_GB.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_GU.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_HK.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_IE.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_IN.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_JM.res


BIN
src/Symfony/Component/Locale/Resources/data/locales/en_MH.res


+ 0 - 0
src/Symfony/Component/Locale/Resources/data/locales/en_MP.res


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است