Merge pull request #6724 from open-sausages/pulls/4.0/fix-i18n-pluralise

Fix and test pluralisation usages
This commit is contained in:
Chris Joe 2017-03-21 18:20:16 +13:00 committed by GitHub
commit 66f37012f7
4 changed files with 25 additions and 8 deletions

View File

@ -681,10 +681,10 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
public function i18n_pluralise($count)
{
$default = 'one ' . $this->i18n_singular_name() . '|{count} ' . $this->i18n_plural_name();
return i18n::pluralise(
return i18n::_t(
static::class.'.PLURALS',
$default,
$count
[ 'count' => $count ]
);
}

View File

@ -493,16 +493,16 @@ class ChangeSet extends DataObject
// Describe non-important items
if ($countedOther) {
if ($counted) {
$parts[] = i18n::pluralise(
$parts[] = i18n::_t(
'ChangeSet.DESCRIPTION_OTHER_ITEM_PLURALS',
'one other item|{count} other items',
$countedOther
[ 'count' => $countedOther ]
);
} else {
$parts[] = i18n::pluralise(
$parts[] = i18n::_t(
'ChangeSet.DESCRIPTION_ITEM_PLURALS',
'one item|{count} items',
$countedOther
[ 'count' => $countedOther ]
);
}
}

View File

@ -104,6 +104,17 @@ class ChangeSetTest extends SapphireTest
);
}
public function testDescription()
{
$cs = new ChangeSet();
$cs->write();
$cs->addObject($this->objFromFixture(ChangeSetTest\EndObject::class, 'end1'));
$this->assertEquals('one item', $cs->getDescription());
$cs->addObject($this->objFromFixture(ChangeSetTest\EndObjectChild::class, 'endchild1'));
$this->assertEquals('2 items', $cs->getDescription());
}
public function testRepeatedSyncIsNOP()
{
$this->publishAllFixtures();

View File

@ -4,6 +4,7 @@ namespace SilverStripe\ORM\Tests;
use SilverStripe\Core\Config\Config;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\i18n\i18n;
use SilverStripe\ORM\DataObjectSchema;
use SilverStripe\ORM\FieldType\DBBoolean;
use SilverStripe\ORM\FieldType\DBField;
@ -1645,13 +1646,18 @@ class DataObjectTest extends SapphireTest
DataObjectTest\Bogey::class => 'Bogeys',
DataObjectTest\Ploy::class => 'Ploys',
);
i18n::set_locale('en_NZ');
foreach ($assertions as $class => $expectedPluralName) {
$this->assertEquals(
$expectedPluralName,
singleton($class)->plural_name(),
DataObject::singleton($class)->plural_name(),
"Assert that the plural_name for '$class' is correct."
);
$this->assertEquals(
$expectedPluralName,
DataObject::singleton($class)->i18n_plural_name(),
"Assert that the i18n_plural_name for '$class' is correct."
);
}
}