Skip to content

Commit 97d28b5

Browse files
committed
Load plurals from mo files properly
1 parent 2774705 commit 97d28b5

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

src/Symfony/Component/Translation/Loader/MoFileLoader.php

+4-9
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,12 @@ protected function loadResource($resource)
111111
$ids = ['singular' => $singularId, 'plural' => $pluralId];
112112
$item = compact('ids', 'translated');
113113

114-
if (\is_array($item['translated'])) {
115-
$messages[$item['ids']['singular']] = stripcslashes($item['translated'][0]);
114+
if (!empty($item['ids']['singular'])) {
115+
$id = $item['ids']['singular'];
116116
if (isset($item['ids']['plural'])) {
117-
$plurals = [];
118-
foreach ($item['translated'] as $plural => $translated) {
119-
$plurals[] = sprintf('{%d} %s', $plural, $translated);
120-
}
121-
$messages[$item['ids']['plural']] = stripcslashes(implode('|', $plurals));
117+
$id .= '|'.$item['ids']['plural'];
122118
}
123-
} elseif (!empty($item['ids']['singular'])) {
124-
$messages[$item['ids']['singular']] = stripcslashes($item['translated']);
119+
$messages[$id] = stripcslashes(implode('|', (array) $item['translated']));
125120
}
126121
}
127122

src/Symfony/Component/Translation/Tests/Loader/MoFileLoaderTest.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ public function testLoadPlurals()
3434
$resource = __DIR__.'/../fixtures/plurals.mo';
3535
$catalogue = $loader->load($resource, 'en', 'domain1');
3636

37-
$this->assertEquals(['foo' => 'bar', 'foos' => '{0} bar|{1} bars'], $catalogue->all('domain1'));
37+
$this->assertEquals([
38+
'foo|foos' => 'bar|bars',
39+
'{0} no foos|one foo|%count% foos' => '{0} no bars|one bar|%count% bars',
40+
], $catalogue->all('domain1'));
3841
$this->assertEquals('en', $catalogue->getLocale());
3942
$this->assertEquals([new FileResource($resource)], $catalogue->getResources());
4043
}
Binary file not shown.

0 commit comments

Comments
 (0)