diff --git a/DataFixtures/ORM/LoadCountries.php b/DataFixtures/ORM/LoadCountries.php index a4e6da740..6f0967586 100644 --- a/DataFixtures/ORM/LoadCountries.php +++ b/DataFixtures/ORM/LoadCountries.php @@ -14,7 +14,7 @@ use Chill\MainBundle\Command\LoadCountriesCommand; * * @author Julien Fastré */ -class LoadCountries extends AbstractFixture implements ContainerAwareInterface { +class LoadCountries extends AbstractFixture implements ContainerAwareInterface, OrderedFixtureInterface { /** * @@ -28,7 +28,7 @@ class LoadCountries extends AbstractFixture implements ContainerAwareInterface { } public function getOrder() { - return 1001; + return 20; } public function load(ObjectManager $manager) { diff --git a/DataFixtures/ORM/LoadLanguages.php b/DataFixtures/ORM/LoadLanguages.php new file mode 100644 index 000000000..325f139a0 --- /dev/null +++ b/DataFixtures/ORM/LoadLanguages.php @@ -0,0 +1,80 @@ + + */ +class LoadLanguages extends AbstractFixture implements ContainerAwareInterface, OrderedFixtureInterface +{ + // The regional version of language are language with _ in the code + // This array contains regional code to not exclude + private $regionalVersionToInclude = ["ro_MD"]; + + // Array of ancien languages (to exclude) + private $ancientToExclude = ["ang", "egy", "fro", "goh", "grc", "la", "non", "peo", "pro", "sga", + "dum", "enm", "frm", "gmh", "mga", "akk", "phn", "zxx", "got", "und"]; + + /** + * + * @var ContainerInterface + */ + private $container; + + public function setContainer(ContainerInterface $container = null) + { + $this->container = $container; + } + + public function getOrder() { + return 10; + } + + public function load(ObjectManager $manager) { + + echo "loading languages... \n"; + + foreach (Intl::getLanguageBundle()->getLanguageNames() as $code => $language) { + if ( + !in_array($code, $this->regionalVersionToInclude) + && + !in_array($code, $this->ancientToExclude) + ) { + + $lang = (new Language()) + ->setId($code) + ->setName($this->prepareName($code)) + ; + $manager->persist($lang); + } + } + + $manager->flush(); + } + + /** + * prepare names for languages + * + * @param string $languageCode + * @return string[] languages name indexed by available language code + */ + private function prepareName($languageCode) { + foreach ($this->container->getParameter('chill_main.available_languages') as $lang) { + $names[$lang] = Intl::getLanguageBundle()->getLanguageName($languageCode); + } + + return $names; + } + + +}