Shaarli's translation
* translation system and unit tests * Translations everywhere Dont use translation merge It is not available with PHP builtin gettext, so it would have lead to inconsistency.
This commit is contained in:
parent
72cfe44436
commit
12266213d0
51 changed files with 2252 additions and 246 deletions
tests/languages
|
@ -1,7 +1,6 @@
|
|||
<?php
|
||||
if (! empty('UT_LOCALE')) {
|
||||
require_once 'tests/bootstrap.php';
|
||||
|
||||
if (! empty(getenv('UT_LOCALE'))) {
|
||||
setlocale(LC_ALL, getenv('UT_LOCALE'));
|
||||
}
|
||||
|
||||
require_once 'vendor/autoload.php';
|
||||
|
||||
|
|
173
tests/languages/fr/LanguagesFrTest.php
Normal file
173
tests/languages/fr/LanguagesFrTest.php
Normal file
|
@ -0,0 +1,173 @@
|
|||
<?php
|
||||
|
||||
|
||||
namespace Shaarli;
|
||||
|
||||
|
||||
use Shaarli\Config\ConfigManager;
|
||||
|
||||
/**
|
||||
* Class LanguagesFrTest
|
||||
*
|
||||
* Test the translation system in PHP and gettext mode with French language.
|
||||
*
|
||||
* @package Shaarli
|
||||
*/
|
||||
class LanguagesFrTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* @var string Config file path (without extension).
|
||||
*/
|
||||
protected static $configFile = 'tests/utils/config/configJson';
|
||||
|
||||
/**
|
||||
* @var ConfigManager
|
||||
*/
|
||||
protected $conf;
|
||||
|
||||
/**
|
||||
* Init: force French
|
||||
*/
|
||||
public function setUp()
|
||||
{
|
||||
$this->conf = new ConfigManager(self::$configFile);
|
||||
$this->conf->set('translation.language', 'fr');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the locale since gettext seems to mess with it, making it too long
|
||||
*/
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
if (! empty(getenv('UT_LOCALE'))) {
|
||||
setlocale(LC_ALL, getenv('UT_LOCALE'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 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('permalien', 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';
|
||||
// Not ID, so English fallback, and in english, plural 0
|
||||
$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';
|
||||
$this->assertEquals('shaare', 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('permalien', 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';
|
||||
// Not ID, so English fallback, and in english, plural 0
|
||||
$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('shaare', t($text, $nText, 0));
|
||||
$this->assertEquals('shaare', t($text, $nText, 1));
|
||||
$this->assertEquals('shaares', t($text, $nText, 2));
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
$this->assertEquals('voiture', t('car', 'car', 1, 'test'));
|
||||
$this->assertEquals('Fouille', 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);
|
||||
$this->assertEquals('voiture', t('car', 'car', 1, 'test'));
|
||||
$this->assertEquals('Fouille', t('Search', 'Search', 1, 'test'));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue