Do not load translations from a relative path

When the application is installed outside of the
document root, loading translations will not work.
This commit is contained in:
Frederic Guillot
2016-11-15 20:43:14 -05:00
parent ebb6b2827d
commit 94cd5869bf
2 changed files with 62 additions and 9 deletions

View File

@@ -10,13 +10,6 @@ namespace Kanboard\Core;
*/ */
class Translator class Translator
{ {
/**
* Locale path
*
* @var string
*/
const PATH = 'app/Locale';
/** /**
* Locale * Locale
* *
@@ -171,9 +164,13 @@ class Translator
* @param string $language Locale code: fr_FR * @param string $language Locale code: fr_FR
* @param string $path Locale folder * @param string $path Locale folder
*/ */
public static function load($language, $path = self::PATH) public static function load($language, $path = '')
{ {
$filename = $path.DIRECTORY_SEPARATOR.$language.DIRECTORY_SEPARATOR.'translations.php'; if ($path === '') {
$path = self::getDefaultFolder();
}
$filename = implode(DIRECTORY_SEPARATOR, array($path, $language, 'translations.php'));
if (file_exists($filename)) { if (file_exists($filename)) {
self::$locales = array_merge(self::$locales, require($filename)); self::$locales = array_merge(self::$locales, require($filename));
@@ -190,4 +187,15 @@ class Translator
{ {
self::$locales = array(); self::$locales = array();
} }
/**
* Get default locales folder
*
* @access public
* @return string
*/
public static function getDefaultFolder()
{
return implode(DIRECTORY_SEPARATOR, array(__DIR__, '..', 'Locale'));
}
} }

View File

@@ -0,0 +1,45 @@
<?php
require_once __DIR__.'/../Base.php';
use Kanboard\Core\Translator;
class TranslatorTest extends Base
{
public function setUp()
{
parent::setUp();
Translator::unload();
}
public function testLoading()
{
$translator = new Translator();
$this->assertSame('Yes', $translator->translate('Yes'));
Translator::load('fr_FR');
$this->assertSame('Oui', $translator->translate('Yes'));
Translator::unload();
$this->assertSame('Yes', $translator->translate('Yes'));
Translator::load('de_DE', Translator::getDefaultFolder());
$this->assertSame('Ja', $translator->translate('Yes'));
}
public function testNumberFormatting()
{
$translator = new Translator();
$this->assertSame('1,024.42', $translator->number(1024.42));
Translator::load('fr_FR');
$this->assertSame('1 024,42', $translator->number(1024.42));
}
public function testTranslateEscaping()
{
$translator = new Translator();
$this->assertSame('&lt;b&gt;', $translator->translate('<b>'));
$this->assertSame('<b>', $translator->translateNoEscaping('<b>'));
}
}