229 lines
7.1 KiB
PHP
229 lines
7.1 KiB
PHP
<?php
|
|
|
|
namespace Shaarli;
|
|
|
|
use Shaarli\Config\ConfigManager;
|
|
|
|
/**
|
|
* Class LanguagesTest.
|
|
*/
|
|
class LanguagesTest extends \Shaarli\TestCase
|
|
{
|
|
/**
|
|
* @var string Config file path (without extension).
|
|
*/
|
|
protected static $configFile = 'tests/utils/config/configJson';
|
|
|
|
/**
|
|
* @var ConfigManager
|
|
*/
|
|
protected $conf;
|
|
|
|
/**
|
|
*
|
|
*/
|
|
protected function setUp(): void
|
|
{
|
|
$this->conf = new ConfigManager(self::$configFile);
|
|
}
|
|
|
|
/**
|
|
* Test t() with a simple non identified value.
|
|
*/
|
|
public function testTranslateSingleNotIDGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
new Languages('en', $this->conf);
|
|
$text = 'abcdé 564 fgK';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with a simple identified value in gettext mode.
|
|
*/
|
|
public function testTranslateSingleIDGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
new Languages('en', $this->conf);
|
|
$text = 'permalink';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with a non identified plural form in gettext mode.
|
|
*/
|
|
public function testTranslatePluralNotIDGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
new Languages('en', $this->conf);
|
|
$text = 'sandwich';
|
|
$nText = 'sandwiches';
|
|
$this->assertEquals('sandwiches', t($text, $nText, 0));
|
|
$this->assertEquals('sandwich', t($text, $nText, 1));
|
|
$this->assertEquals('sandwiches', t($text, $nText, 2));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an identified plural form in gettext mode.
|
|
*/
|
|
public function testTranslatePluralIDGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
new Languages('en', $this->conf);
|
|
$text = 'shaare';
|
|
$nText = 'shaares';
|
|
// In english, zero is followed by plural form
|
|
$this->assertEquals('shaares', t($text, $nText, 0));
|
|
$this->assertEquals('shaare', t($text, $nText, 1));
|
|
$this->assertEquals('shaares', t($text, $nText, 2));
|
|
}
|
|
|
|
/**
|
|
* Test t() with a simple non identified value.
|
|
*/
|
|
public function testTranslateSingleNotIDPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
new Languages('en', $this->conf);
|
|
$text = 'abcdé 564 fgK';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with a simple identified value in PHP mode.
|
|
*/
|
|
public function testTranslateSingleIDPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
new Languages('en', $this->conf);
|
|
$text = 'permalink';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with a non identified plural form in PHP mode.
|
|
*/
|
|
public function testTranslatePluralNotIDPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
new Languages('en', $this->conf);
|
|
$text = 'sandwich';
|
|
$nText = 'sandwiches';
|
|
$this->assertEquals('sandwiches', t($text, $nText, 0));
|
|
$this->assertEquals('sandwich', t($text, $nText, 1));
|
|
$this->assertEquals('sandwiches', t($text, $nText, 2));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an identified plural form in PHP mode.
|
|
*/
|
|
public function testTranslatePluralIDPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
new Languages('en', $this->conf);
|
|
$text = 'shaare';
|
|
$nText = 'shaares';
|
|
// In english, zero is followed by plural form
|
|
$this->assertEquals('shaares', t($text, $nText, 0));
|
|
$this->assertEquals('shaare', t($text, $nText, 1));
|
|
$this->assertEquals('shaares', t($text, $nText, 2));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an invalid language set in the configuration in gettext mode.
|
|
*/
|
|
public function testTranslateWithInvalidConfLanguageGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
$this->conf->set('translation.language', 'nope');
|
|
new Languages('fr', $this->conf);
|
|
$text = 'grumble';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an invalid language set in the configuration in PHP mode.
|
|
*/
|
|
public function testTranslateWithInvalidConfLanguagePhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
$this->conf->set('translation.language', 'nope');
|
|
new Languages('fr', $this->conf);
|
|
$text = 'grumble';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an invalid language set with auto language in gettext mode.
|
|
*/
|
|
public function testTranslateWithInvalidAutoLanguageGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
new Languages('nope', $this->conf);
|
|
$text = 'grumble';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an invalid language set with auto language in PHP mode.
|
|
*/
|
|
public function testTranslateWithInvalidAutoLanguagePhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
new Languages('nope', $this->conf);
|
|
$text = 'grumble';
|
|
$this->assertEquals($text, t($text));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an extension language file coming from the theme in gettext mode
|
|
*/
|
|
public function testTranslationThemeExtensionGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
$this->conf->set('raintpl_tpl', 'tests/utils/customtpl/');
|
|
$this->conf->set('theme', 'dummy');
|
|
new Languages('en', $this->conf);
|
|
$txt = 'rooster'; // ignore me poedit
|
|
$this->assertEquals('rooster', t($txt, $txt, 1, 'dummy'));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an extension language file coming from the theme in PHP mode
|
|
*/
|
|
public function testTranslationThemeExtensionPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
$this->conf->set('raintpl_tpl', 'tests/utils/customtpl/');
|
|
$this->conf->set('theme', 'dummy');
|
|
new Languages('en', $this->conf);
|
|
$txt = 'rooster'; // ignore me poedit
|
|
$this->assertEquals('rooster', t($txt, $txt, 1, 'dummy'));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an extension language file in gettext mode
|
|
*/
|
|
public function testTranslationExtensionGettext()
|
|
{
|
|
$this->conf->set('translation.mode', 'gettext');
|
|
$this->conf->set('translation.extensions.test', 'tests/utils/languages/');
|
|
new Languages('en', $this->conf);
|
|
$txt = 'car'; // ignore me poedit
|
|
$this->assertEquals('car', t($txt, $txt, 1, 'test'));
|
|
$this->assertEquals('Search', t('Search', 'Search', 1, 'test'));
|
|
}
|
|
|
|
/**
|
|
* Test t() with an extension language file in PHP mode
|
|
*/
|
|
public function testTranslationExtensionPhp()
|
|
{
|
|
$this->conf->set('translation.mode', 'php');
|
|
$this->conf->set('translation.extensions.test', 'tests/utils/languages/');
|
|
new Languages('en', $this->conf);
|
|
$txt = 'car'; // ignore me poedit
|
|
$this->assertEquals('car', t($txt, $txt, 1, 'test'));
|
|
$this->assertEquals('Search', t('Search', 'Search', 1, 'test'));
|
|
}
|
|
}
|