Преглед на файлове

[translatable] do not force lowercase locale, closes #306

gedi преди 13 години
родител
ревизия
49c7c97a67

+ 7 - 0
README.md

@@ -13,6 +13,13 @@ master branch is based on 2.3.x versions and may not work with older components.
 
 ### Latest updates
 
+**2012-04-09**
+
+- **Translatable** now does not force lowercase letters on locale or language. If your database is case
+sensitive, take this into account and upgrade your current translations in the database. This change
+will not be backported into 2.2 or older versions of extensions and will be available in comming
+releases.
+
 **2012-03-04**
 
 - We should be very grateful for contributions of [comfortablynumb](http://github.com/comfortablynumb)

+ 5 - 5
lib/Gedmo/Translatable/TranslatableListener.php

@@ -50,7 +50,7 @@ class TranslatableListener extends MappedEventSubscriber
      *
      * @var string
      */
-    protected $locale = 'en_us';
+    protected $locale = 'en_US';
 
     /**
      * Default locale, this changes behavior
@@ -61,7 +61,7 @@ class TranslatableListener extends MappedEventSubscriber
      *
      * @var string
      */
-    private $defaultLocale = 'en_us';
+    private $defaultLocale = 'en_US';
 
     /**
      * If this is set to false, when if entity does
@@ -218,7 +218,7 @@ class TranslatableListener extends MappedEventSubscriber
     public function setTranslatableLocale($locale)
     {
         $this->validateLocale($locale);
-        $this->locale = strtolower($locale);
+        $this->locale = $locale;
         return $this;
     }
 
@@ -233,7 +233,7 @@ class TranslatableListener extends MappedEventSubscriber
     public function setDefaultLocale($locale)
     {
         $this->validateLocale($locale);
-        $this->defaultLocale = strtolower($locale);
+        $this->defaultLocale = $locale;
         return $this;
     }
 
@@ -282,7 +282,7 @@ class TranslatableListener extends MappedEventSubscriber
             $value = $reflectionProperty->getValue($object);
             try {
                 $this->validateLocale($value);
-                $locale = strtolower($value);
+                $locale = $value;
             } catch(\Gedmo\Exception\InvalidArgumentException $e) {}
         }
 

+ 9 - 9
tests/Gedmo/Sluggable/TranslatableManySlugTest.php

@@ -32,7 +32,7 @@ class TranslatableManySlugTest extends BaseTestCaseORM
 
         $evm = new EventManager;
         $this->translatableListener = new TranslatableListener();
-        $this->translatableListener->setTranslatableLocale('en_us');
+        $this->translatableListener->setTranslatableLocale('en_US');
         $evm->addEventSubscriber(new SluggableListener);
         $evm->addEventSubscriber($this->translatableListener);
 
@@ -52,7 +52,7 @@ class TranslatableManySlugTest extends BaseTestCaseORM
         $this->assertCount(0, $translations);
 
         $article = $this->em->find(self::ARTICLE, $this->articleId);
-        $article->setTranslatableLocale('de_de');
+        $article->setTranslatableLocale('de_DE');
         $article->setCode('code in de');
         $article->setTitle('title in de');
 
@@ -63,15 +63,15 @@ class TranslatableManySlugTest extends BaseTestCaseORM
         $repo = $this->em->getRepository(self::TRANSLATION);
         $translations = $repo->findTranslations($article);
         $this->assertCount(1, $translations);
-        $this->assertArrayHasKey('de_de', $translations);
-        $this->assertCount(3, $translations['de_de']);
+        $this->assertArrayHasKey('de_DE', $translations);
+        $this->assertCount(3, $translations['de_DE']);
 
-        $this->assertEquals('title in de', $translations['de_de']['title']);
+        $this->assertEquals('title in de', $translations['de_DE']['title']);
 
-        $this->assertArrayHasKey('slug', $translations['de_de']);
-        $this->assertEquals('title-in-de-code-in-de', $translations['de_de']['slug']);
+        $this->assertArrayHasKey('slug', $translations['de_DE']);
+        $this->assertEquals('title-in-de-code-in-de', $translations['de_DE']['slug']);
     }
-    
+
     public function testUniqueness()
     {
        $a0 = new TransArticleManySlug;
@@ -110,7 +110,7 @@ class TranslatableManySlugTest extends BaseTestCaseORM
         $article->setTitle('the title');
         $article->setCode('my code');
         $article->setUniqueTitle('the unique title');
-        
+
         $this->em->persist($article);
         $this->em->flush();
         $this->em->clear();

+ 10 - 10
tests/Gedmo/Sluggable/TranslatableSlugTest.php

@@ -36,7 +36,7 @@ class TranslatableSlugTest extends BaseTestCaseORM
 
         $evm = new EventManager;
         $this->translatableListener = new TranslatableListener();
-        $this->translatableListener->setTranslatableLocale('en_us');
+        $this->translatableListener->setTranslatableLocale('en_US');
         $evm->addEventSubscriber(new SluggableListener);
         $evm->addEventSubscriber($this->translatableListener);
 
@@ -55,7 +55,7 @@ class TranslatableSlugTest extends BaseTestCaseORM
         $this->assertCount(0, $translations);
 
         $article = $this->em->find(self::ARTICLE, $this->articleId);
-        $article->setTranslatableLocale('de_de');
+        $article->setTranslatableLocale('de_DE');
         $article->setCode('code in de');
         $article->setTitle('title in de');
 
@@ -66,17 +66,17 @@ class TranslatableSlugTest extends BaseTestCaseORM
         $repo = $this->em->getRepository(self::TRANSLATION);
         $translations = $repo->findTranslations($article);
         $this->assertCount(1, $translations);
-        $this->assertArrayHasKey('de_de', $translations);
-        $this->assertCount(3, $translations['de_de']);
+        $this->assertArrayHasKey('de_DE', $translations);
+        $this->assertCount(3, $translations['de_DE']);
 
-        $this->assertArrayHasKey('code', $translations['de_de']);
-        $this->assertEquals('code in de', $translations['de_de']['code']);
+        $this->assertArrayHasKey('code', $translations['de_DE']);
+        $this->assertEquals('code in de', $translations['de_DE']['code']);
 
-        $this->assertArrayHasKey('title', $translations['de_de']);
-        $this->assertEquals('title in de', $translations['de_de']['title']);
+        $this->assertArrayHasKey('title', $translations['de_DE']);
+        $this->assertEquals('title in de', $translations['de_DE']['title']);
 
-        $this->assertArrayHasKey('slug', $translations['de_de']);
-        $this->assertEquals('title-in-de-code-in-de', $translations['de_de']['slug']);
+        $this->assertArrayHasKey('slug', $translations['de_DE']);
+        $this->assertEquals('title-in-de-code-in-de', $translations['de_DE']['slug']);
     }
 
     public function testConcurrentChanges()

+ 1 - 1
tests/Gedmo/Timestampable/ProtectedPropertySupperclassTest.php

@@ -28,7 +28,7 @@ class ProtectedPropertySupperclassTest extends BaseTestCaseORM
 
         $evm = new EventManager;
         $translatableListener = new TranslatableListener;
-        $translatableListener->setTranslatableLocale('en_us');
+        $translatableListener->setTranslatableLocale('en_US');
         $evm->addEventSubscriber($translatableListener);
         $evm->addEventSubscriber(new TimestampableListener);
 

+ 11 - 11
tests/Gedmo/Tree/TranslatableSluggableTreeTest.php

@@ -37,7 +37,7 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
         $evm = new EventManager;
         $evm->addEventSubscriber(new TreeListener);
         $this->translatableListener = new TranslatableListener;
-        $this->translatableListener->setTranslatableLocale('en_us');
+        $this->translatableListener->setTranslatableLocale('en_US');
         $evm->addEventSubscriber(new SluggableListener);
         $evm->addEventSubscriber($this->translatableListener);
 
@@ -60,13 +60,13 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
 
         // run second translation test
 
-        $this->translatableListener->setTranslatableLocale('de_de');
+        $this->translatableListener->setTranslatableLocale('de_DE');
         $vegies->setTitle('Deutschebles');
         $this->em->persist($vegies);
         $this->em->flush();
         $this->em->clear();
 
-        $this->translatableListener->setTranslatableLocale('en_us');
+        $this->translatableListener->setTranslatableLocale('en_US');
 
         $vegies = $this->em->getRepository(self::CATEGORY)
             ->find($vegies->getId());
@@ -75,13 +75,13 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
             ->findTranslations($vegies);
 
         $this->assertCount(1, $translations);
-        $this->assertArrayHasKey('de_de', $translations);
+        $this->assertArrayHasKey('de_DE', $translations);
 
-        $this->assertArrayHasKey('title', $translations['de_de']);
-        $this->assertEquals('Deutschebles', $translations['de_de']['title']);
+        $this->assertArrayHasKey('title', $translations['de_DE']);
+        $this->assertEquals('Deutschebles', $translations['de_DE']['title']);
 
-        $this->assertArrayHasKey('slug', $translations['de_de']);
-        $this->assertEquals('deutschebles', $translations['de_de']['slug']);
+        $this->assertArrayHasKey('slug', $translations['de_DE']);
+        $this->assertEquals('deutschebles', $translations['de_DE']['slug']);
     }
 
     public function testTranslations()
@@ -97,7 +97,7 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
         $this->assertEquals('Food', $food->getTitle());
 
         $this->em->clear();
-        $this->translatableListener->setTranslatableLocale('de_de');
+        $this->translatableListener->setTranslatableLocale('de_DE');
 
         $vegies = $repo->find(4);
         $this->assertEquals('Gemüse', $vegies->getTitle());
@@ -118,7 +118,7 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
 
     private function populateDeTranslations()
     {
-        $this->translatableListener->setTranslatableLocale('de_de');
+        $this->translatableListener->setTranslatableLocale('de_DE');
         $repo = $this->em->getRepository(self::CATEGORY);
         $food = $repo->findOneByTitle('Food');
         $food->setTitle('Lebensmittel');
@@ -130,7 +130,7 @@ class TranslatableSluggableTreeTest extends BaseTestCaseORM
         $this->em->persist($vegies);
         $this->em->flush();
         $this->em->clear();
-        $this->translatableListener->setTranslatableLocale('en_us');
+        $this->translatableListener->setTranslatableLocale('en_US');
     }
 
     private function populate()