mirror of
https://github.com/flarum/core.git
synced 2025-08-04 23:47:32 +02:00
chore: switch formatter to format-message
(#4088)
Co-authored-by: Robert Korulczyk <robert@korulczyk.pl>
This commit is contained in:
91
framework/core/tests/unit/Locale/TranslatorTest.php
Normal file
91
framework/core/tests/unit/Locale/TranslatorTest.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Tests\unit\Locale;
|
||||
|
||||
use Flarum\Locale\Translator;
|
||||
use Flarum\Testing\unit\TestCase;
|
||||
use Symfony\Component\Translation\Loader\ArrayLoader;
|
||||
use Symfony\Component\Translation\MessageCatalogueInterface;
|
||||
|
||||
class TranslatorTest extends TestCase
|
||||
{
|
||||
private const DOMAIN = 'messages'.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX;
|
||||
|
||||
/*
|
||||
* These tests should be in sync with JS tests in `js/tests/unit/common/utils/Translator.test.ts`, to make sure that JS
|
||||
* translator works in the same way as JS translator.
|
||||
*/
|
||||
|
||||
/** @test */
|
||||
public function placeholders_encoding()
|
||||
{
|
||||
$translator = new Translator('en');
|
||||
$translator->addLoader('array', new ArrayLoader());
|
||||
$translator->addResource('array', [
|
||||
'test1' => 'test1 {placeholder} test1',
|
||||
'test2' => 'test2 {placeholder} test2',
|
||||
], 'en', self::DOMAIN);
|
||||
|
||||
$this->assertSame("test1 ' test1", $translator->trans('test1', ['placeholder' => "'"]));
|
||||
$this->assertSame("test1 test2 ' test2 test1", $translator->trans('test1', ['placeholder' => $translator->trans('test2', ['placeholder' => "'"])]));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function missing_placeholders()
|
||||
{
|
||||
$translator = new Translator('en');
|
||||
$translator->addLoader('array', new ArrayLoader());
|
||||
$translator->addResource('array', [
|
||||
'test1' => 'test1 {placeholder} test1',
|
||||
], 'en', self::DOMAIN);
|
||||
|
||||
$this->assertSame('test1 {placeholder} test1', $translator->trans('test1', []));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function escaped_placeholders()
|
||||
{
|
||||
$translator = new Translator('en');
|
||||
$translator->addLoader('array', new ArrayLoader());
|
||||
$translator->addResource('array', [
|
||||
'test3' => "test1 {placeholder} '{placeholder}' test1",
|
||||
], 'en', self::DOMAIN);
|
||||
|
||||
$this->assertSame("test1 ' {placeholder} test1", $translator->trans('test3', ['placeholder' => "'"]));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function plural_rules()
|
||||
{
|
||||
$translator = new Translator('en');
|
||||
$translator->addLoader('array', new ArrayLoader());
|
||||
$translator->addResource('array', [
|
||||
'test4' => '{pageNumber, plural, =1 {{forumName}} other {Page # - {forumName}}}',
|
||||
], 'en', self::DOMAIN);
|
||||
|
||||
$this->assertSame('A & B', $translator->trans('test4', ['forumName' => 'A & B', 'pageNumber' => 1]));
|
||||
$this->assertSame('Page 2 - A & B', $translator->trans('test4', ['forumName' => 'A & B', 'pageNumber' => 2]));
|
||||
}
|
||||
|
||||
/** @test */
|
||||
public function plural_rules_2()
|
||||
{
|
||||
$translator = new Translator('pl');
|
||||
$translator->addLoader('array', new ArrayLoader());
|
||||
$translator->addResource('array', [
|
||||
'test4' => '{count, plural, one {# post} few {# posty} many {# postów} other {# posta}}',
|
||||
], 'pl', self::DOMAIN);
|
||||
|
||||
$this->assertSame('1 post', $translator->trans('test4', ['count' => 1]));
|
||||
$this->assertSame('2 posty', $translator->trans('test4', ['count' => 2]));
|
||||
$this->assertSame('5 postów', $translator->trans('test4', ['count' => 5]));
|
||||
$this->assertSame('1,5 posta', $translator->trans('test4', ['count' => 1.5]));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user