Browse Source

Sotring plurals as an array instead of a magic string, this will be easier to manage

Jose Lorenzo Rodriguez 11 years ago
parent
commit
a9bf58f61d

+ 1 - 1
src/I18n/Parser/MoFileParser.php

@@ -119,7 +119,7 @@ class MoFileParser {
 			$translated = explode("\000", $translated);
 			$messages[$singularId] = stripcslashes($translated[0]);
 			if ($pluralId !== null) {
-				$messages[$pluralId] = stripcslashes(implode('&&&', $translated));
+				$messages[$pluralId] = array_map('stripcslashes', $translated);
 			}
 		}
 

+ 1 - 1
src/I18n/Parser/PoFileParser.php

@@ -138,7 +138,7 @@ class PoFileParser  {
 				$empties = array_fill(0, $count + 1, '');
 				$plurals += $empties;
 				ksort($plurals);
-				$messages[stripcslashes($item['ids']['plural'])] = stripcslashes(implode('&&&', $plurals));
+				$messages[stripcslashes($item['ids']['plural'])] = array_map('stripcslashes', $plurals);
 			}
 		} elseif (!empty($item['ids']['singular'])) {
 			$messages[stripcslashes($item['ids']['singular'])] = stripcslashes($item['translated']);

+ 9 - 2
tests/TestCase/I18n/Parser/MoFileParserTest.php

@@ -35,7 +35,10 @@ class MoFileParserTest extends TestCase {
 		$this->assertCount(3, $messages);
 		$expected = [
 			'%d = 1 (from core)' => '%d = 1 (from core translated)',
-			'%d = 0 or > 1 (from core)' => '%d = 1 (from core translated)&&&%d = 0 or > 1 (from core translated)',
+			'%d = 0 or > 1 (from core)' => [
+				'%d = 1 (from core translated)',
+				'%d = 0 or > 1 (from core translated)'
+			],
 			'Plural Rule 1 (from core)' => 'Plural Rule 1 (from core translated)'
 		];
 		$this->assertEquals($expected, $messages);
@@ -53,7 +56,11 @@ class MoFileParserTest extends TestCase {
 		$this->assertCount(3, $messages);
 		$expected = [
 			'%d = 1 (from core)' => '%d is 1 (from core translated)',
-			'%d = 0 or > 1 (from core)' => '%d is 1 (from core translated)&&&%d ends in 2-4, not 12-14 (from core translated)&&&%d everything else (from core translated)',
+			'%d = 0 or > 1 (from core)' => [
+				'%d is 1 (from core translated)',
+				'%d ends in 2-4, not 12-14 (from core translated)',
+				'%d everything else (from core translated)'
+			],
 			'Plural Rule 1 (from core)' => 'Plural Rule 9 (from core translated)'
 		];
 		$this->assertEquals($expected, $messages);

+ 11 - 2
tests/TestCase/I18n/Parser/PoFileParserTest.php

@@ -36,9 +36,18 @@ class PoFileParserTest extends TestCase {
 		$expected = [
 			'Plural Rule 1' => 'Plural Rule 1 (translated)',
 			'%d = 1' => '%d = 1 (translated)',
-			'%d = 0 or > 1' => '%d = 1 (translated)&&&%d = 0 or > 1 (translated)',
+			'%d = 0 or > 1' => [
+				 0 => '%d = 1 (translated)',
+				 1 => '%d = 0 or > 1 (translated)'
+			],
 			'%-5d = 1' => '%-5d = 1 (translated)',
-			'%-5d = 0 or > 1' => '%-5d = 1 (translated)&&&&&&&&&&&&%-5d = 0 or > 1 (translated)'
+			'%-5d = 0 or > 1' => [
+				0 => '%-5d = 1 (translated)',
+				1 => '',
+				2 => '',
+				3 => '',
+				4 => '%-5d = 0 or > 1 (translated)'
+			]
 		];
 		$this->assertEquals($expected, $messages);
 	}

+ 0 - 3
tests/bootstrap.php

@@ -131,7 +131,4 @@ Log::config([
 	]
 ]);
 
-// Initialize the empty language.
-I18n::translate('empty');
-
 Carbon\Carbon::setTestNow(Carbon\Carbon::now());