diff --git a/app/code/community/Ovs/Magefaker/Model/Faker.php b/app/code/community/Ovs/Magefaker/Model/Faker.php index f6f0ea6..224e108 100644 --- a/app/code/community/Ovs/Magefaker/Model/Faker.php +++ b/app/code/community/Ovs/Magefaker/Model/Faker.php @@ -73,10 +73,7 @@ public function insertCategories($count, $parentId, $customNames, $anchor, $thum } } } else { - $faker = new Faker\Generator(); - $faker->addProvider(new Faker\Provider\en_US\Person($faker)); - $faker->addProvider(new Faker\Provider\Lorem($faker)); - $faker->addProvider(new Faker\Provider\MageFaker($faker)); + $faker = $this->_getFakerInstance(); for ($i = 0; $i < $count; $i++) { $this->_insertCategory($faker->categoryName(), $parentId, $anchor, $thumbnail); @@ -102,10 +99,7 @@ protected function insertProduct($categories, $type, $incReviews, $color_value = { Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); - $faker = new Faker\Generator(); - $faker->addProvider(new Faker\Provider\en_US\Person($faker)); - $faker->addProvider(new Faker\Provider\Lorem($faker)); - $faker->addProvider(new Faker\Provider\MageFaker($faker)); + $faker = $this->_getFakerInstance(); $name = $faker->productName; $sku = $faker->sku($name); @@ -325,10 +319,7 @@ protected function insertProduct($categories, $type, $incReviews, $color_value = protected function _insertCategory($name, $parentId, $anchor, $thumbnail) { try { - $faker = new Faker\Generator(); - $faker->addProvider(new Faker\Provider\en_US\Person($faker)); - $faker->addProvider(new Faker\Provider\Lorem($faker)); - $faker->addProvider(new Faker\Provider\MageFaker($faker)); + $faker = $this->_getFakerInstance(); $parentCategory = Mage::getModel('catalog/category')->load($parentId); @@ -424,10 +415,7 @@ protected function _insertAttribute($code, $input, $optionValues, $defaultValue, */ protected function _addProductReviews($productId) { - $faker = new Faker\Generator(); - $faker->addProvider(new Faker\Provider\en_US\Person($faker)); - $faker->addProvider(new Faker\Provider\Lorem($faker)); - + $faker = $this->_getFakerInstance(); $reviewCount = mt_rand(0, 10); $rating_options = [ @@ -462,4 +450,33 @@ protected function _addProductReviews($productId) $review->aggregate(); } } + + /** + * Return a new faker instance with the locale set to the current + * admin interface locale. This is only used by the review generator. + * + * This function is basically a reimplementation of \Faker\Factory::create($locale); + * which does not seem to play nice with the Varien autoload implementation. + * + * @return \Faker\Generator + */ + protected function _getFakerInstance() + { + $fallbackLocale = 'en_US'; + $currentLocale = Mage::app()->getLocale()->getLocaleCode(); + + $faker = new Faker\Generator(); + + if (class_exists("Faker\Provider\\${currentLocale}\Person")) { + $fakerPerson = "Faker\Provider\\${currentLocale}\Person"; + } else { + $fakerPerson = "Faker\Provider\\${$fallbackLocale}\Person"; + } + + $faker->addProvider(new $fakerPerson($faker)); + $faker->addProvider(new Faker\Provider\Lorem($faker)); + $faker->addProvider(new Faker\Provider\MageFaker($faker)); + + return $faker; + } }