Merge branch '2.4'
* 2.4: (35 commits) Update validators.ro.xlf add non-standard port to HTTP_HOST fixed attribute "source-language" for translations [Process] clarify idle timeout [Security] fix DI for SimpleFormAuthenticationListener Update PluralizationRules.php Update validators.pt_BR.xlf Translated remaining items (57-72) Updated Vietnamese translation allow null value in fragment handler added missing dot in translation updated Arabic translations Update validators.id.xlf [Validator] Translate validator messages into Brazilian Portuguese Added more Swedish validator translations Update validators.ca.xlf fixed typos in Welsh translation Added missing Croatian translations [Form] fixed allow render 0 and 0.0 numeric input values Fixed validators.nl.xlf ... Conflicts: src/Symfony/Bridge/Twig/composer.json
This commit is contained in:
commit
2e2a65c0f4
10
.travis.yml
10
.travis.yml
@ -15,11 +15,11 @@ services: mongodb
|
|||||||
|
|
||||||
before_script:
|
before_script:
|
||||||
- sudo apt-get install parallel
|
- sudo apt-get install parallel
|
||||||
- sh -c 'if [ $(php -r "echo (int) defined('HHVM_VERSION');") -eq 0 ]; then echo "" >> "~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini"; fi;'
|
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then echo "" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini; fi;'
|
||||||
- sh -c 'if [ $(php -r "echo (int) defined('HHVM_VERSION');") -eq 0 ]; then echo "extension = mongo.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then echo "extension = mongo.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
||||||
- sh -c 'if [ $(php -r "echo PHP_MINOR_VERSION;") -le 4 ]; then echo "extension = apc.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ] && [ $(php -r "echo PHP_MINOR_VERSION;") -le 4 ]; then echo "extension = apc.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
||||||
- sh -c 'if [ $(php -r "echo (int) defined('HHVM_VERSION');") -eq 0 ]; then echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
||||||
- sh -c 'if [ $(php -r "echo (int) defined('HHVM_VERSION');") -eq 0 ]; then echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
- sh -c 'if [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then echo "extension = memcache.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini; fi;'
|
||||||
- COMPOSER_ROOT_VERSION=dev-master composer --prefer-source --dev install
|
- COMPOSER_ROOT_VERSION=dev-master composer --prefer-source --dev install
|
||||||
|
|
||||||
script:
|
script:
|
||||||
|
@ -81,9 +81,18 @@ class ORMQueryBuilderLoader implements EntityLoaderInterface
|
|||||||
$parameter = 'ORMQueryBuilderLoader_getEntitiesByIds_'.$identifier;
|
$parameter = 'ORMQueryBuilderLoader_getEntitiesByIds_'.$identifier;
|
||||||
$where = $qb->expr()->in($alias.'.'.$identifier, ':'.$parameter);
|
$where = $qb->expr()->in($alias.'.'.$identifier, ':'.$parameter);
|
||||||
|
|
||||||
|
// Guess type
|
||||||
|
$entity = current($qb->getRootEntities());
|
||||||
|
$metadata = $qb->getEntityManager()->getClassMetadata($entity);
|
||||||
|
if (in_array($metadata->getTypeOfField($identifier), array('integer', 'bigint', 'smallint'))) {
|
||||||
|
$parameterType = Connection::PARAM_INT_ARRAY;
|
||||||
|
} else {
|
||||||
|
$parameterType = Connection::PARAM_STR_ARRAY;
|
||||||
|
}
|
||||||
|
|
||||||
return $qb->andWhere($where)
|
return $qb->andWhere($where)
|
||||||
->getQuery()
|
->getQuery()
|
||||||
->setParameter($parameter, $values, Connection::PARAM_STR_ARRAY)
|
->setParameter($parameter, $values, $parameterType)
|
||||||
->getResult();
|
->getResult();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,10 @@
|
|||||||
namespace Symfony\Bridge\Doctrine\Tests\Form\ChoiceList;
|
namespace Symfony\Bridge\Doctrine\Tests\Form\ChoiceList;
|
||||||
|
|
||||||
use Symfony\Bridge\Doctrine\Form\ChoiceList\ORMQueryBuilderLoader;
|
use Symfony\Bridge\Doctrine\Form\ChoiceList\ORMQueryBuilderLoader;
|
||||||
|
use Symfony\Bridge\Doctrine\Tests\DoctrineOrmTestCase;
|
||||||
|
use Doctrine\DBAL\Connection;
|
||||||
|
|
||||||
class ORMQueryBuilderLoaderTest extends \PHPUnit_Framework_TestCase
|
class ORMQueryBuilderLoaderTest extends DoctrineOrmTestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @expectedException \Symfony\Component\Form\Exception\UnexpectedTypeException
|
* @expectedException \Symfony\Component\Form\Exception\UnexpectedTypeException
|
||||||
@ -32,4 +34,43 @@ class ORMQueryBuilderLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
new ORMQueryBuilderLoader($closure);
|
new ORMQueryBuilderLoader($closure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testIdentifierTypeIsStringArray()
|
||||||
|
{
|
||||||
|
$this->checkIdentifierType('Symfony\Bridge\Doctrine\Tests\Fixtures\SingleStringIdEntity', Connection::PARAM_STR_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testIdentifierTypeIsIntegerArray()
|
||||||
|
{
|
||||||
|
$this->checkIdentifierType('Symfony\Bridge\Doctrine\Tests\Fixtures\SingleIntIdEntity', Connection::PARAM_INT_ARRAY);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function checkIdentifierType($classname, $expectedType)
|
||||||
|
{
|
||||||
|
$em = $this->createTestEntityManager();
|
||||||
|
|
||||||
|
$query = $this->getMockBuilder('QueryMock')
|
||||||
|
->setMethods(array('setParameter', 'getResult', 'getSql', '_doExecute'))
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$query->expects($this->once())
|
||||||
|
->method('setParameter')
|
||||||
|
->with('ORMQueryBuilderLoader_getEntitiesByIds_id', array(), $expectedType)
|
||||||
|
->will($this->returnValue($query));
|
||||||
|
|
||||||
|
$qb = $this->getMockBuilder('Doctrine\ORM\QueryBuilder')
|
||||||
|
->setConstructorArgs(array($em))
|
||||||
|
->setMethods(array('getQuery'))
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$qb->expects($this->once())
|
||||||
|
->method('getQuery')
|
||||||
|
->will($this->returnValue($query));
|
||||||
|
|
||||||
|
$qb->select('e')
|
||||||
|
->from($classname, 'e');
|
||||||
|
|
||||||
|
$loader = new ORMQueryBuilderLoader($qb);
|
||||||
|
$loader->getEntitiesByIds('id', array());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -330,6 +330,23 @@ class UniqueValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals(1, $violationsList->count());
|
$this->assertEquals(1, $violationsList->count());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAssociatedEntityWithNull()
|
||||||
|
{
|
||||||
|
$entityManagerName = "foo";
|
||||||
|
$em = DoctrineTestHelper::createTestEntityManager();
|
||||||
|
$this->createSchema($em);
|
||||||
|
$validator = $this->createValidator($entityManagerName, $em, 'Symfony\Bridge\Doctrine\Tests\Fixtures\AssociationEntity', array('single'), null, 'findBy', false);
|
||||||
|
|
||||||
|
$associated = new AssociationEntity();
|
||||||
|
$associated->single = null;
|
||||||
|
|
||||||
|
$em->persist($associated);
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$violationsList = $validator->validate($associated);
|
||||||
|
$this->assertEquals(0, $violationsList->count());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @group GH-1635
|
* @group GH-1635
|
||||||
*/
|
*/
|
||||||
|
@ -89,7 +89,7 @@ class UniqueEntityValidator extends ConstraintValidator
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($class->hasAssociation($fieldName)) {
|
if (null !== $criteria[$fieldName] && $class->hasAssociation($fieldName)) {
|
||||||
/* Ensure the Proxy is initialized before using reflection to
|
/* Ensure the Proxy is initialized before using reflection to
|
||||||
* read its identifiers. This is necessary because the wrapped
|
* read its identifiers. This is necessary because the wrapped
|
||||||
* getter methods in the Proxy are being bypassed.
|
* getter methods in the Proxy are being bypassed.
|
||||||
|
@ -30,7 +30,7 @@ class ExpressionExtension extends \Twig_Extension
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function createExpression($expression)
|
public function createExpression($expression)
|
||||||
{
|
{
|
||||||
return new Expression($expression);
|
return new Expression($expression);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Symfony package.
|
||||||
|
*
|
||||||
|
* (c) Fabien Potencier <fabien@symfony.com>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Symfony\Bridge\Twig\Tests\Extension;
|
||||||
|
|
||||||
|
use Symfony\Bridge\Twig\Extension\ExpressionExtension;
|
||||||
|
use Symfony\Component\ExpressionLanguage\Expression;
|
||||||
|
|
||||||
|
class ExpressionExtensionTest extends \PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
protected $helper;
|
||||||
|
|
||||||
|
public function testExpressionCreation()
|
||||||
|
{
|
||||||
|
$template = "{{ expression('1 == 1') }}";
|
||||||
|
$twig = new \Twig_Environment(new \Twig_Loader_String(), array('debug' => true, 'cache' => false, 'autoescape' => true, 'optimizations' => 0));
|
||||||
|
$twig->addExtension(new ExpressionExtension());
|
||||||
|
|
||||||
|
$output = $twig->render($template);
|
||||||
|
$this->assertEquals('1 == 1', $output);
|
||||||
|
}
|
||||||
|
}
|
@ -18,7 +18,7 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": ">=5.3.3",
|
"php": ">=5.3.3",
|
||||||
"symfony/security-csrf": "~2.4",
|
"symfony/security-csrf": "~2.4",
|
||||||
"twig/twig": "~1.11"
|
"twig/twig": "~1.12"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/form": "~2.2",
|
"symfony/form": "~2.2",
|
||||||
@ -29,7 +29,8 @@
|
|||||||
"symfony/yaml": "~2.0",
|
"symfony/yaml": "~2.0",
|
||||||
"symfony/security": "~2.4",
|
"symfony/security": "~2.4",
|
||||||
"symfony/stopwatch": "~2.2",
|
"symfony/stopwatch": "~2.2",
|
||||||
"symfony/console": "~2.2"
|
"symfony/console": "~2.2",
|
||||||
|
"symfony/expression-language": "~2.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/form": "For using the FormExtension",
|
"symfony/form": "For using the FormExtension",
|
||||||
@ -39,7 +40,8 @@
|
|||||||
"symfony/translation": "For using the TranslationExtension",
|
"symfony/translation": "For using the TranslationExtension",
|
||||||
"symfony/yaml": "For using the YamlExtension",
|
"symfony/yaml": "For using the YamlExtension",
|
||||||
"symfony/security": "For using the SecurityExtension",
|
"symfony/security": "For using the SecurityExtension",
|
||||||
"symfony/stopwatch": "For using the StopwatchExtension"
|
"symfony/stopwatch": "For using the StopwatchExtension",
|
||||||
|
"symfony/expression": "For using the ExpressionExtension"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-0": { "Symfony\\Bridge\\Twig\\": "" }
|
"psr-0": { "Symfony\\Bridge\\Twig\\": "" }
|
||||||
|
@ -15,6 +15,7 @@ use Symfony\Component\DependencyInjection\ContainerAware;
|
|||||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,11 +40,13 @@ class RedirectController extends ContainerAware
|
|||||||
* @param Boolean|array $ignoreAttributes Whether to ignore attributes or an array of attributes to ignore
|
* @param Boolean|array $ignoreAttributes Whether to ignore attributes or an array of attributes to ignore
|
||||||
*
|
*
|
||||||
* @return Response A Response instance
|
* @return Response A Response instance
|
||||||
|
*
|
||||||
|
* @throws HttpException In case the route name is empty
|
||||||
*/
|
*/
|
||||||
public function redirectAction(Request $request, $route, $permanent = false, $ignoreAttributes = false)
|
public function redirectAction(Request $request, $route, $permanent = false, $ignoreAttributes = false)
|
||||||
{
|
{
|
||||||
if ('' == $route) {
|
if ('' == $route) {
|
||||||
return new Response(null, $permanent ? 410 : 404);
|
throw new HttpException($permanent ? 410 : 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$attributes = array();
|
$attributes = array();
|
||||||
@ -75,11 +78,13 @@ class RedirectController extends ContainerAware
|
|||||||
* @param integer|null $httpsPort The HTTPS port (null to keep the current one for the same scheme or the configured port in the container)
|
* @param integer|null $httpsPort The HTTPS port (null to keep the current one for the same scheme or the configured port in the container)
|
||||||
*
|
*
|
||||||
* @return Response A Response instance
|
* @return Response A Response instance
|
||||||
|
*
|
||||||
|
* @throws HttpException In case the path is empty
|
||||||
*/
|
*/
|
||||||
public function urlRedirectAction(Request $request, $path, $permanent = false, $scheme = null, $httpPort = null, $httpsPort = null)
|
public function urlRedirectAction(Request $request, $path, $permanent = false, $scheme = null, $httpPort = null, $httpsPort = null)
|
||||||
{
|
{
|
||||||
if ('' == $path) {
|
if ('' == $path) {
|
||||||
return new Response(null, $permanent ? 410 : 404);
|
throw new HttpException($permanent ? 410 : 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$statusCode = $permanent ? 301 : 302;
|
$statusCode = $permanent ? 301 : 302;
|
||||||
|
@ -1 +1,5 @@
|
|||||||
<input type="<?php echo isset($type) ? $view->escape($type) : 'text' ?>" <?php echo $view['form']->block($form, 'widget_attributes') ?><?php if (!empty($value)): ?> value="<?php echo $view->escape($value) ?>"<?php endif ?> />
|
<input
|
||||||
|
type="<?php echo isset($type) ? $view->escape($type) : 'text' ?>"
|
||||||
|
<?php echo $view['form']->block($form, 'widget_attributes') ?>
|
||||||
|
<?php if (!empty($value) || is_numeric($value)): ?> value="<?php echo $view->escape($value) ?>"<?php endif ?>
|
||||||
|
/>
|
||||||
|
@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Controller;
|
|||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Component\HttpFoundation\ParameterBag;
|
use Symfony\Component\HttpFoundation\ParameterBag;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
|
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
|
||||||
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
|
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
|
||||||
|
|
||||||
@ -27,13 +28,19 @@ class RedirectControllerTest extends TestCase
|
|||||||
$request = new Request();
|
$request = new Request();
|
||||||
$controller = new RedirectController();
|
$controller = new RedirectController();
|
||||||
|
|
||||||
$returnResponse = $controller->redirectAction($request, '', true);
|
try {
|
||||||
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
|
$controller->redirectAction($request, '', true);
|
||||||
$this->assertEquals(410, $returnResponse->getStatusCode());
|
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
|
||||||
|
} catch (HttpException $e) {
|
||||||
|
$this->assertSame(410, $e->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
$returnResponse = $controller->redirectAction($request, '', false);
|
try {
|
||||||
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
|
$controller->redirectAction($request, '', false);
|
||||||
$this->assertEquals(404, $returnResponse->getStatusCode());
|
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
|
||||||
|
} catch (HttpException $e) {
|
||||||
|
$this->assertSame(404, $e->getStatusCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -98,13 +105,19 @@ class RedirectControllerTest extends TestCase
|
|||||||
$request = new Request();
|
$request = new Request();
|
||||||
$controller = new RedirectController();
|
$controller = new RedirectController();
|
||||||
|
|
||||||
$returnResponse = $controller->urlRedirectAction($request, '', true);
|
try {
|
||||||
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
|
$controller->urlRedirectAction($request, '', true);
|
||||||
$this->assertEquals(410, $returnResponse->getStatusCode());
|
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
|
||||||
|
} catch (HttpException $e) {
|
||||||
|
$this->assertSame(410, $e->getStatusCode());
|
||||||
|
}
|
||||||
|
|
||||||
$returnResponse = $controller->urlRedirectAction($request, '', false);
|
try {
|
||||||
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
|
$controller->urlRedirectAction($request, '', false);
|
||||||
$this->assertEquals(404, $returnResponse->getStatusCode());
|
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
|
||||||
|
} catch (HttpException $e) {
|
||||||
|
$this->assertSame(404, $e->getStatusCode());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testFullURL()
|
public function testFullURL()
|
||||||
|
@ -75,12 +75,10 @@ class FormLoginFactory extends AbstractFactory
|
|||||||
{
|
{
|
||||||
$listenerId = parent::createListener($container, $id, $config, $userProvider);
|
$listenerId = parent::createListener($container, $id, $config, $userProvider);
|
||||||
|
|
||||||
if (isset($config['csrf_provider'])) {
|
$container
|
||||||
$container
|
->getDefinition($listenerId)
|
||||||
->getDefinition($listenerId)
|
->addArgument(isset($config['csrf_provider']) ? new Reference($config['csrf_provider']) : null)
|
||||||
->addArgument(new Reference($config['csrf_provider']))
|
;
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $listenerId;
|
return $listenerId;
|
||||||
}
|
}
|
||||||
|
@ -63,11 +63,6 @@ class SimpleFormFactory extends FormLoginFactory
|
|||||||
protected function createListener($container, $id, $config, $userProvider)
|
protected function createListener($container, $id, $config, $userProvider)
|
||||||
{
|
{
|
||||||
$listenerId = parent::createListener($container, $id, $config, $userProvider);
|
$listenerId = parent::createListener($container, $id, $config, $userProvider);
|
||||||
$listener = $container->getDefinition($listenerId);
|
|
||||||
|
|
||||||
if (!isset($config['csrf_token_generator'])) {
|
|
||||||
$listener->addArgument(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
$simpleAuthHandlerId = 'security.authentication.simple_success_failure_handler.'.$id;
|
$simpleAuthHandlerId = 'security.authentication.simple_success_failure_handler.'.$id;
|
||||||
$simpleAuthHandler = $container->setDefinition($simpleAuthHandlerId, new DefinitionDecorator('security.authentication.simple_success_failure_handler'));
|
$simpleAuthHandler = $container->setDefinition($simpleAuthHandlerId, new DefinitionDecorator('security.authentication.simple_success_failure_handler'));
|
||||||
@ -75,6 +70,7 @@ class SimpleFormFactory extends FormLoginFactory
|
|||||||
$simpleAuthHandler->replaceArgument(1, new Reference($this->getSuccessHandlerId($id)));
|
$simpleAuthHandler->replaceArgument(1, new Reference($this->getSuccessHandlerId($id)));
|
||||||
$simpleAuthHandler->replaceArgument(2, new Reference($this->getFailureHandlerId($id)));
|
$simpleAuthHandler->replaceArgument(2, new Reference($this->getFailureHandlerId($id)));
|
||||||
|
|
||||||
|
$listener = $container->getDefinition($listenerId);
|
||||||
$listener->replaceArgument(5, new Reference($simpleAuthHandlerId));
|
$listener->replaceArgument(5, new Reference($simpleAuthHandlerId));
|
||||||
$listener->replaceArgument(6, new Reference($simpleAuthHandlerId));
|
$listener->replaceArgument(6, new Reference($simpleAuthHandlerId));
|
||||||
$listener->addArgument(new Reference($config['authenticator']));
|
$listener->addArgument(new Reference($config['authenticator']));
|
||||||
|
@ -227,7 +227,7 @@ class ProfilerController
|
|||||||
|
|
||||||
$session = $request->getSession();
|
$session = $request->getSession();
|
||||||
|
|
||||||
if (null !== $session && $session->getFlashBag() instanceof AutoExpireFlashBag) {
|
if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) {
|
||||||
// keep current flashes for one more request if using AutoExpireFlashBag
|
// keep current flashes for one more request if using AutoExpireFlashBag
|
||||||
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
|
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ class WebDebugToolbarListener implements EventSubscriberInterface
|
|||||||
|
|
||||||
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
|
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
|
||||||
$session = $request->getSession();
|
$session = $request->getSession();
|
||||||
if ($session && $session->getFlashBag() instanceof AutoExpireFlashBag) {
|
if (null !== $session && $session->isStarted() && $session->getFlashBag() instanceof AutoExpireFlashBag) {
|
||||||
// keep current flashes for one more request if using AutoExpireFlashBag
|
// keep current flashes for one more request if using AutoExpireFlashBag
|
||||||
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
|
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
|
||||||
}
|
}
|
||||||
|
@ -295,12 +295,18 @@ abstract class Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
$uri = $this->getAbsoluteUri($uri);
|
$uri = $this->getAbsoluteUri($uri);
|
||||||
|
|
||||||
$server = array_merge($this->server, $server);
|
$server = array_merge($this->server, $server);
|
||||||
|
|
||||||
if (!$this->history->isEmpty()) {
|
if (!$this->history->isEmpty()) {
|
||||||
$server['HTTP_REFERER'] = $this->history->current()->getUri();
|
$server['HTTP_REFERER'] = $this->history->current()->getUri();
|
||||||
}
|
}
|
||||||
|
|
||||||
$server['HTTP_HOST'] = parse_url($uri, PHP_URL_HOST);
|
$server['HTTP_HOST'] = parse_url($uri, PHP_URL_HOST);
|
||||||
|
|
||||||
|
if ($port = parse_url($uri, PHP_URL_PORT)) {
|
||||||
|
$server['HTTP_HOST'] .= ':'.$port;
|
||||||
|
}
|
||||||
|
|
||||||
$server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);
|
$server['HTTPS'] = 'https' == parse_url($uri, PHP_URL_SCHEME);
|
||||||
|
|
||||||
$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);
|
$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);
|
||||||
|
@ -160,6 +160,11 @@ class ClientTest extends \PHPUnit_Framework_TestCase
|
|||||||
$client->request('GET', 'https://www.example.com');
|
$client->request('GET', 'https://www.example.com');
|
||||||
$headers = $client->getRequest()->getServer();
|
$headers = $client->getRequest()->getServer();
|
||||||
$this->assertTrue($headers['HTTPS'], '->request() sets the HTTPS header');
|
$this->assertTrue($headers['HTTPS'], '->request() sets the HTTPS header');
|
||||||
|
|
||||||
|
$client = new TestClient();
|
||||||
|
$client->request('GET', 'http://www.example.com:8080');
|
||||||
|
$headers = $client->getRequest()->getServer();
|
||||||
|
$this->assertEquals('www.example.com:8080', $headers['HTTP_HOST'], '->request() sets the HTTP_HOST header with port');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRequestURIConversion()
|
public function testRequestURIConversion()
|
||||||
@ -416,6 +421,24 @@ class ClientTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($headers, $client->getRequest()->getServer());
|
$this->assertEquals($headers, $client->getRequest()->getServer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testFollowRedirectWithPort()
|
||||||
|
{
|
||||||
|
$headers = array(
|
||||||
|
'HTTP_HOST' => 'www.example.com:8080',
|
||||||
|
'HTTP_USER_AGENT' => 'Symfony2 BrowserKit',
|
||||||
|
'HTTPS' => false
|
||||||
|
);
|
||||||
|
|
||||||
|
$client = new TestClient();
|
||||||
|
$client->followRedirects(false);
|
||||||
|
$client->setNextResponse(new Response('', 302, array(
|
||||||
|
'Location' => 'http://www.example.com:8080/redirected',
|
||||||
|
)));
|
||||||
|
$client->request('GET', 'http://www.example.com:8080/');
|
||||||
|
|
||||||
|
$this->assertEquals($headers, $client->getRequest()->getServer());
|
||||||
|
}
|
||||||
|
|
||||||
public function testBack()
|
public function testBack()
|
||||||
{
|
{
|
||||||
$client = new TestClient();
|
$client = new TestClient();
|
||||||
|
@ -696,7 +696,8 @@ class Application
|
|||||||
do {
|
do {
|
||||||
$title = sprintf(' [%s] ', get_class($e));
|
$title = sprintf(' [%s] ', get_class($e));
|
||||||
$len = $strlen($title);
|
$len = $strlen($title);
|
||||||
$width = $this->getTerminalWidth() ? $this->getTerminalWidth() - 1 : PHP_INT_MAX;
|
// HHVM only accepts 32 bits integer in str_split, even when PHP_INT_MAX is a 64 bit integer: https://github.com/facebook/hhvm/issues/1327
|
||||||
|
$width = $this->getTerminalWidth() ? $this->getTerminalWidth() - 1 : (defined('HHVM_VERSION') ? 1 << 31 : PHP_INT_MAX);
|
||||||
$formatter = $output->getFormatter();
|
$formatter = $output->getFormatter();
|
||||||
$lines = array();
|
$lines = array();
|
||||||
foreach (preg_split('/\r?\n/', $e->getMessage()) as $line) {
|
foreach (preg_split('/\r?\n/', $e->getMessage()) as $line) {
|
||||||
@ -1053,7 +1054,7 @@ class Application
|
|||||||
* if nothing is found in $collection, try in $abbrevs
|
* if nothing is found in $collection, try in $abbrevs
|
||||||
*
|
*
|
||||||
* @param string $name The string
|
* @param string $name The string
|
||||||
* @param array|Traversable $collection The collection
|
* @param array|\Traversable $collection The collection
|
||||||
*
|
*
|
||||||
* @return array A sorted array of similar string
|
* @return array A sorted array of similar string
|
||||||
*/
|
*/
|
||||||
|
@ -378,6 +378,11 @@ class Parser implements ParserInterface
|
|||||||
$stream->skipWhitespace();
|
$stream->skipWhitespace();
|
||||||
$value = $stream->getNext();
|
$value = $stream->getNext();
|
||||||
|
|
||||||
|
if ($value->isNumber()) {
|
||||||
|
// if the value is a number, it's casted into a string
|
||||||
|
$value = new Token(Token::TYPE_STRING, (string) $value->getValue(), $value->getPosition());
|
||||||
|
}
|
||||||
|
|
||||||
if (!($value->isIdentifier() || $value->isString())) {
|
if (!($value->isIdentifier() || $value->isString())) {
|
||||||
throw SyntaxErrorException::unexpectedToken('string or identifier', $value);
|
throw SyntaxErrorException::unexpectedToken('string or identifier', $value);
|
||||||
}
|
}
|
||||||
|
@ -133,6 +133,7 @@ class ParserTest extends \PHPUnit_Framework_TestCase
|
|||||||
array('div#foobar', array('Hash[Element[div]#foobar]')),
|
array('div#foobar', array('Hash[Element[div]#foobar]')),
|
||||||
array('div:not(div.foo)', array('Negation[Element[div]:not(Class[Element[div].foo])]')),
|
array('div:not(div.foo)', array('Negation[Element[div]:not(Class[Element[div].foo])]')),
|
||||||
array('td ~ th', array('CombinedSelector[Element[td] ~ Element[th]]')),
|
array('td ~ th', array('CombinedSelector[Element[td] ~ Element[th]]')),
|
||||||
|
array('.foo[data-bar][data-baz=0]', array("Attribute[Attribute[Class[Element[*].foo][data-bar]][data-baz = '0']]")),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,12 +81,12 @@ class GetAttrNode extends Node
|
|||||||
return call_user_func_array(array($obj, $this->nodes['attribute']->evaluate($functions, $values)), $this->nodes['arguments']->evaluate($functions, $values));
|
return call_user_func_array(array($obj, $this->nodes['attribute']->evaluate($functions, $values)), $this->nodes['arguments']->evaluate($functions, $values));
|
||||||
|
|
||||||
case self::ARRAY_CALL:
|
case self::ARRAY_CALL:
|
||||||
$values = $this->nodes['node']->evaluate($functions, $values);
|
$array = $this->nodes['node']->evaluate($functions, $values);
|
||||||
if (!is_array($values) && !$values instanceof \ArrayAccess) {
|
if (!is_array($array) && !$array instanceof \ArrayAccess) {
|
||||||
throw new \RuntimeException('Unable to get an item on a non-array.');
|
throw new \RuntimeException('Unable to get an item on a non-array.');
|
||||||
}
|
}
|
||||||
|
|
||||||
return $values[$this->nodes['attribute']->evaluate($functions, $values)];
|
return $array[$this->nodes['attribute']->evaluate($functions, $values)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ class GetAttrNodeTest extends AbstractNodeTest
|
|||||||
array('bar', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), array('foo' => new Obj())),
|
array('bar', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), array('foo' => new Obj())),
|
||||||
|
|
||||||
array('baz', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), array('foo' => new Obj())),
|
array('baz', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), array('foo' => new Obj())),
|
||||||
|
array('a', new GetAttrNode(new NameNode('foo'), new NameNode('index'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL), array('foo' => array('b' => 'a', 'b'), 'index' => 'b')),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ class GetAttrNodeTest extends AbstractNodeTest
|
|||||||
array('$foo->foo', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), array('foo' => new Obj())),
|
array('$foo->foo', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), array('foo' => new Obj())),
|
||||||
|
|
||||||
array('$foo->foo(array("b" => "a", 0 => "b"))', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), array('foo' => new Obj())),
|
array('$foo->foo(array("b" => "a", 0 => "b"))', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), array('foo' => new Obj())),
|
||||||
|
array('$foo[$index]', new GetAttrNode(new NameNode('foo'), new NameNode('index'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -82,8 +82,8 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
|
|||||||
foreach ($values as $key => $value) {
|
foreach ($values as $key => $value) {
|
||||||
if (is_array($value)) {
|
if (is_array($value)) {
|
||||||
$this->checkNonScalar($value);
|
$this->checkNonScalar($value);
|
||||||
} elseif (!is_scalar($value)) {
|
} elseif (!is_scalar($value) && null !== $value) {
|
||||||
throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar values (value for key "%s" is not a scalar).', $key));
|
throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ class Logger implements LoggerInterface
|
|||||||
*/
|
*/
|
||||||
public function crit($message, array $context = array())
|
public function crit($message, array $context = array())
|
||||||
{
|
{
|
||||||
trigger_error('Use crit() which is PSR-3 compatible', E_USER_DEPRECATED);
|
trigger_error('Use critical() which is PSR-3 compatible', E_USER_DEPRECATED);
|
||||||
|
|
||||||
$this->log('critical', $message, $context);
|
$this->log('critical', $message, $context);
|
||||||
}
|
}
|
||||||
@ -111,7 +111,7 @@ class Logger implements LoggerInterface
|
|||||||
*/
|
*/
|
||||||
public function err($message, array $context = array())
|
public function err($message, array $context = array())
|
||||||
{
|
{
|
||||||
trigger_error('Use err() which is PSR-3 compatible', E_USER_DEPRECATED);
|
trigger_error('Use error() which is PSR-3 compatible', E_USER_DEPRECATED);
|
||||||
|
|
||||||
$this->log('error', $message, $context);
|
$this->log('error', $message, $context);
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ class Logger implements LoggerInterface
|
|||||||
*/
|
*/
|
||||||
public function warn($message, array $context = array())
|
public function warn($message, array $context = array())
|
||||||
{
|
{
|
||||||
trigger_error('Use warn() which is PSR-3 compatible', E_USER_DEPRECATED);
|
trigger_error('Use warning() which is PSR-3 compatible', E_USER_DEPRECATED);
|
||||||
|
|
||||||
$this->log('warning', $message, $context);
|
$this->log('warning', $message, $context);
|
||||||
}
|
}
|
||||||
|
@ -100,8 +100,8 @@ class FullTransformer
|
|||||||
/**
|
/**
|
||||||
* Return the formatted ICU value for the matched date characters
|
* Return the formatted ICU value for the matched date characters
|
||||||
*
|
*
|
||||||
* @param string $dateChars The date characters to be replaced with a formatted ICU value
|
* @param string $dateChars The date characters to be replaced with a formatted ICU value
|
||||||
* @param DateTime $dateTime A DateTime object to be used to generate the formatted value
|
* @param \DateTime $dateTime A DateTime object to be used to generate the formatted value
|
||||||
*
|
*
|
||||||
* @return string The formatted value
|
* @return string The formatted value
|
||||||
*
|
*
|
||||||
|
@ -730,7 +730,7 @@ class Process
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the process timeout.
|
* Gets the process timeout (max. runtime).
|
||||||
*
|
*
|
||||||
* @return float|null The timeout in seconds or null if it's disabled
|
* @return float|null The timeout in seconds or null if it's disabled
|
||||||
*/
|
*/
|
||||||
@ -740,9 +740,9 @@ class Process
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the process idle timeout.
|
* Gets the process idle timeout (max. time since last output).
|
||||||
*
|
*
|
||||||
* @return float|null
|
* @return float|null The timeout in seconds or null if it's disabled
|
||||||
*/
|
*/
|
||||||
public function getIdleTimeout()
|
public function getIdleTimeout()
|
||||||
{
|
{
|
||||||
@ -750,7 +750,7 @@ class Process
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the process timeout.
|
* Sets the process timeout (max. runtime).
|
||||||
*
|
*
|
||||||
* To disable the timeout, set this value to null.
|
* To disable the timeout, set this value to null.
|
||||||
*
|
*
|
||||||
@ -768,9 +768,11 @@ class Process
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the process idle timeout.
|
* Sets the process idle timeout (max. time since last output).
|
||||||
*
|
*
|
||||||
* @param integer|float|null $timeout
|
* To disable the timeout, set this value to null.
|
||||||
|
*
|
||||||
|
* @param integer|float|null $timeout The timeout in seconds
|
||||||
*
|
*
|
||||||
* @return self The current Process instance.
|
* @return self The current Process instance.
|
||||||
*
|
*
|
||||||
@ -991,7 +993,7 @@ class Process
|
|||||||
throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL);
|
throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (0 < $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) {
|
if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) {
|
||||||
$this->stop(0);
|
$this->stop(0);
|
||||||
|
|
||||||
throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE);
|
throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE);
|
||||||
|
@ -57,7 +57,7 @@ use Psr\Log\LoggerInterface;
|
|||||||
*/
|
*/
|
||||||
class {$options['class']} extends {$options['base_class']}
|
class {$options['class']} extends {$options['base_class']}
|
||||||
{
|
{
|
||||||
static private \$declaredRoutes = {$this->generateDeclaredRoutes()};
|
private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
@ -22,6 +22,13 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
|
|||||||
private $key;
|
private $key;
|
||||||
private $providerKey;
|
private $providerKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param UserCheckerInterface $userChecker An UserCheckerInterface interface
|
||||||
|
* @param string $key A key
|
||||||
|
* @param string $providerKey A provider key
|
||||||
|
*/
|
||||||
public function __construct(UserCheckerInterface $userChecker, $key, $providerKey)
|
public function __construct(UserCheckerInterface $userChecker, $key, $providerKey)
|
||||||
{
|
{
|
||||||
$this->userChecker = $userChecker;
|
$this->userChecker = $userChecker;
|
||||||
@ -29,6 +36,9 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
|
|||||||
$this->providerKey = $providerKey;
|
$this->providerKey = $providerKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function authenticate(TokenInterface $token)
|
public function authenticate(TokenInterface $token)
|
||||||
{
|
{
|
||||||
if (!$this->supports($token)) {
|
if (!$this->supports($token)) {
|
||||||
@ -48,6 +58,9 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
|
|||||||
return $authenticatedToken;
|
return $authenticatedToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function supports(TokenInterface $token)
|
public function supports(TokenInterface $token)
|
||||||
{
|
{
|
||||||
return $token instanceof RememberMeToken && $token->getProviderKey() === $this->providerKey;
|
return $token instanceof RememberMeToken && $token->getProviderKey() === $this->providerKey;
|
||||||
|
@ -22,6 +22,9 @@ class InMemoryTokenProvider implements TokenProviderInterface
|
|||||||
{
|
{
|
||||||
private $tokens = array();
|
private $tokens = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function loadTokenBySeries($series)
|
public function loadTokenBySeries($series)
|
||||||
{
|
{
|
||||||
if (!isset($this->tokens[$series])) {
|
if (!isset($this->tokens[$series])) {
|
||||||
@ -31,6 +34,9 @@ class InMemoryTokenProvider implements TokenProviderInterface
|
|||||||
return $this->tokens[$series];
|
return $this->tokens[$series];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function updateToken($series, $tokenValue, \DateTime $lastUsed)
|
public function updateToken($series, $tokenValue, \DateTime $lastUsed)
|
||||||
{
|
{
|
||||||
if (!isset($this->tokens[$series])) {
|
if (!isset($this->tokens[$series])) {
|
||||||
@ -47,11 +53,17 @@ class InMemoryTokenProvider implements TokenProviderInterface
|
|||||||
$this->tokens[$series] = $token;
|
$this->tokens[$series] = $token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function deleteTokenBySeries($series)
|
public function deleteTokenBySeries($series)
|
||||||
{
|
{
|
||||||
unset($this->tokens[$series]);
|
unset($this->tokens[$series]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function createNewToken(PersistentTokenInterface $token)
|
public function createNewToken(PersistentTokenInterface $token)
|
||||||
{
|
{
|
||||||
$this->tokens[$token->getSeries()] = $token;
|
$this->tokens[$token->getSeries()] = $token;
|
||||||
|
@ -58,9 +58,7 @@ final class PersistentToken implements PersistentTokenInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the class of the user
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getClass()
|
public function getClass()
|
||||||
{
|
{
|
||||||
@ -68,9 +66,7 @@ final class PersistentToken implements PersistentTokenInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the username
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getUsername()
|
public function getUsername()
|
||||||
{
|
{
|
||||||
@ -78,9 +74,7 @@ final class PersistentToken implements PersistentTokenInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the series
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getSeries()
|
public function getSeries()
|
||||||
{
|
{
|
||||||
@ -88,9 +82,7 @@ final class PersistentToken implements PersistentTokenInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the token value
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
*/
|
*/
|
||||||
public function getTokenValue()
|
public function getTokenValue()
|
||||||
{
|
{
|
||||||
@ -98,9 +90,7 @@ final class PersistentToken implements PersistentTokenInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the time the token was last used
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return \DateTime
|
|
||||||
*/
|
*/
|
||||||
public function getLastUsed()
|
public function getLastUsed()
|
||||||
{
|
{
|
||||||
|
@ -20,31 +20,36 @@ namespace Symfony\Component\Security\Core\Authentication\RememberMe;
|
|||||||
interface PersistentTokenInterface
|
interface PersistentTokenInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns the class of the user
|
* Returns the class of the user.
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getClass();
|
public function getClass();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the username
|
* Returns the username.
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getUsername();
|
public function getUsername();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the series
|
* Returns the series.
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getSeries();
|
public function getSeries();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the token value
|
* Returns the token value.
|
||||||
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getTokenValue();
|
public function getTokenValue();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the last time the cookie was used
|
* Returns the time the token was last used.
|
||||||
|
*
|
||||||
* @return \DateTime
|
* @return \DateTime
|
||||||
*/
|
*/
|
||||||
public function getLastUsed();
|
public function getLastUsed();
|
||||||
|
@ -70,6 +70,9 @@ abstract class AbstractToken implements TokenInterface
|
|||||||
return (string) $this->user;
|
return (string) $this->user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function getUser()
|
public function getUser()
|
||||||
{
|
{
|
||||||
return $this->user;
|
return $this->user;
|
||||||
|
@ -18,7 +18,6 @@ use Symfony\Component\Security\Core\Role\RoleInterface;
|
|||||||
*
|
*
|
||||||
* @author Fabien Potencier <fabien@symfony.com>
|
* @author Fabien Potencier <fabien@symfony.com>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class AnonymousToken extends AbstractToken
|
class AnonymousToken extends AbstractToken
|
||||||
{
|
{
|
||||||
private $key;
|
private $key;
|
||||||
|
@ -41,11 +41,19 @@ class PreAuthenticatedToken extends AbstractToken
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the provider key.
|
||||||
|
*
|
||||||
|
* @return string The provider key
|
||||||
|
*/
|
||||||
public function getProviderKey()
|
public function getProviderKey()
|
||||||
{
|
{
|
||||||
return $this->providerKey;
|
return $this->providerKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function getCredentials()
|
public function getCredentials()
|
||||||
{
|
{
|
||||||
return $this->credentials;
|
return $this->credentials;
|
||||||
@ -61,11 +69,17 @@ class PreAuthenticatedToken extends AbstractToken
|
|||||||
$this->credentials = null;
|
$this->credentials = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function serialize()
|
public function serialize()
|
||||||
{
|
{
|
||||||
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
|
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function unserialize($str)
|
public function unserialize($str)
|
||||||
{
|
{
|
||||||
list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);
|
list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);
|
||||||
|
@ -51,6 +51,9 @@ class RememberMeToken extends AbstractToken
|
|||||||
parent::setAuthenticated(true);
|
parent::setAuthenticated(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function setAuthenticated($authenticated)
|
public function setAuthenticated($authenticated)
|
||||||
{
|
{
|
||||||
if ($authenticated) {
|
if ($authenticated) {
|
||||||
@ -60,16 +63,29 @@ class RememberMeToken extends AbstractToken
|
|||||||
parent::setAuthenticated(false);
|
parent::setAuthenticated(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the provider key.
|
||||||
|
*
|
||||||
|
* @return string The provider key
|
||||||
|
*/
|
||||||
public function getProviderKey()
|
public function getProviderKey()
|
||||||
{
|
{
|
||||||
return $this->providerKey;
|
return $this->providerKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the key.
|
||||||
|
*
|
||||||
|
* @return string The Key
|
||||||
|
*/
|
||||||
public function getKey()
|
public function getKey()
|
||||||
{
|
{
|
||||||
return $this->key;
|
return $this->key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function getCredentials()
|
public function getCredentials()
|
||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
|
@ -60,11 +60,19 @@ class UsernamePasswordToken extends AbstractToken
|
|||||||
parent::setAuthenticated(false);
|
parent::setAuthenticated(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function getCredentials()
|
public function getCredentials()
|
||||||
{
|
{
|
||||||
return $this->credentials;
|
return $this->credentials;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the provider key.
|
||||||
|
*
|
||||||
|
* @return string The provider key
|
||||||
|
*/
|
||||||
public function getProviderKey()
|
public function getProviderKey()
|
||||||
{
|
{
|
||||||
return $this->providerKey;
|
return $this->providerKey;
|
||||||
|
@ -34,11 +34,7 @@ class RoleHierarchy implements RoleHierarchyInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of all roles reachable by the given ones.
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @param RoleInterface[] $roles An array of RoleInterface instances
|
|
||||||
*
|
|
||||||
* @return RoleInterface[] An array of RoleInterface instances
|
|
||||||
*/
|
*/
|
||||||
public function getReachableRoles(array $roles)
|
public function getReachableRoles(array $roles)
|
||||||
{
|
{
|
||||||
|
@ -19,7 +19,7 @@ namespace Symfony\Component\Security\Core\Role;
|
|||||||
interface RoleHierarchyInterface
|
interface RoleHierarchyInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Returns an array of all reachable roles.
|
* Returns an array of all reachable roles by the given ones.
|
||||||
*
|
*
|
||||||
* Reachable roles are the roles directly assigned but also all roles that
|
* Reachable roles are the roles directly assigned but also all roles that
|
||||||
* are transitively reachable from them in the role hierarchy.
|
* are transitively reachable from them in the role hierarchy.
|
||||||
|
@ -46,14 +46,9 @@ class SecurityContext implements SecurityContextInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the attributes are granted against the current token.
|
* {@inheritdoc}
|
||||||
*
|
*
|
||||||
* @throws AuthenticationCredentialsNotFoundException when the security context has no authentication token.
|
* @throws AuthenticationCredentialsNotFoundException when the security context has no authentication token.
|
||||||
*
|
|
||||||
* @param mixed $attributes
|
|
||||||
* @param mixed|null $object
|
|
||||||
*
|
|
||||||
* @return Boolean
|
|
||||||
*/
|
*/
|
||||||
final public function isGranted($attributes, $object = null)
|
final public function isGranted($attributes, $object = null)
|
||||||
{
|
{
|
||||||
@ -73,9 +68,7 @@ class SecurityContext implements SecurityContextInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the currently authenticated token.
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @return TokenInterface|null A TokenInterface instance or null if no authentication information is available
|
|
||||||
*/
|
*/
|
||||||
public function getToken()
|
public function getToken()
|
||||||
{
|
{
|
||||||
@ -83,9 +76,7 @@ class SecurityContext implements SecurityContextInterface
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the currently authenticated token.
|
* {@inheritdoc}
|
||||||
*
|
|
||||||
* @param TokenInterface $token A TokenInterface token, or null if no further authentication information should be stored
|
|
||||||
*/
|
*/
|
||||||
public function setToken(TokenInterface $token = null)
|
public function setToken(TokenInterface $token = null)
|
||||||
{
|
{
|
||||||
|
@ -34,14 +34,14 @@ interface SecurityContextInterface
|
|||||||
/**
|
/**
|
||||||
* Sets the authentication token.
|
* Sets the authentication token.
|
||||||
*
|
*
|
||||||
* @param TokenInterface $token
|
* @param TokenInterface $token A TokenInterface token, or null if no further authentication information should be stored
|
||||||
*/
|
*/
|
||||||
public function setToken(TokenInterface $token = null);
|
public function setToken(TokenInterface $token = null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if the attributes are granted against the current authentication token and optionally supplied object.
|
* Checks if the attributes are granted against the current authentication token and optionally supplied object.
|
||||||
*
|
*
|
||||||
* @param array $attributes
|
* @param mixed $attributes
|
||||||
* @param mixed $object
|
* @param mixed $object
|
||||||
*
|
*
|
||||||
* @return Boolean
|
* @return Boolean
|
||||||
|
@ -21,6 +21,9 @@ class UserPassword extends Constraint
|
|||||||
public $message = 'This value should be the user current password.';
|
public $message = 'This value should be the user current password.';
|
||||||
public $service = 'security.validator.user_password';
|
public $service = 'security.validator.user_password';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function validatedBy()
|
public function validatedBy()
|
||||||
{
|
{
|
||||||
return $this->service;
|
return $this->service;
|
||||||
|
@ -29,6 +29,9 @@ class UserPasswordValidator extends ConstraintValidator
|
|||||||
$this->encoderFactory = $encoderFactory;
|
$this->encoderFactory = $encoderFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
public function validate($password, Constraint $constraint)
|
public function validate($password, Constraint $constraint)
|
||||||
{
|
{
|
||||||
$user = $this->securityContext->getToken()->getUser();
|
$user = $this->securityContext->getToken()->getUser();
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
<file source-language="no" datatype="plaintext" original="file.ext">
|
<file source-language="en" datatype="plaintext" original="file.ext">
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="1">
|
<trans-unit id="1">
|
||||||
<source>An authentication exception occurred.</source>
|
<source>An authentication exception occurred.</source>
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<file source-language="en" datatype="plaintext" original="file.ext">
|
||||||
|
<body>
|
||||||
|
<trans-unit id="1">
|
||||||
|
<source>An authentication exception occurred.</source>
|
||||||
|
<target>Dogodila se autentifikacijske iznimka.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2">
|
||||||
|
<source>Authentication credentials could not be found.</source>
|
||||||
|
<target>Autentifikacijski podaci nisu pronađeni.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="3">
|
||||||
|
<source>Authentication request could not be processed due to a system problem.</source>
|
||||||
|
<target>Autentifikacijski zahtjev nije moguće provesti uslijed sistemskog problema.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="4">
|
||||||
|
<source>Invalid credentials.</source>
|
||||||
|
<target>Neispravni akreditacijski podaci.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5">
|
||||||
|
<source>Cookie has already been used by someone else.</source>
|
||||||
|
<target>Cookie je već netko drugi iskoristio.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="6">
|
||||||
|
<source>Not privileged to request the resource.</source>
|
||||||
|
<target>Nemate privilegije zahtijevati resurs.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="7">
|
||||||
|
<source>Invalid CSRF token.</source>
|
||||||
|
<target>Neispravan CSRF token.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="8">
|
||||||
|
<source>Digest nonce has expired.</source>
|
||||||
|
<target>Digest nonce je isteko.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="9">
|
||||||
|
<source>No authentication provider found to support the authentication token.</source>
|
||||||
|
<target>Nije pronađen autentifikacijski provider koji bi podržao autentifikacijski token.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="10">
|
||||||
|
<source>No session available, it either timed out or cookies are not enabled.</source>
|
||||||
|
<target>Sesija nije dostupna, ili je istekla ili cookies nisu omogućeni.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="11">
|
||||||
|
<source>No token could be found.</source>
|
||||||
|
<target>Token nije pronađen.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="12">
|
||||||
|
<source>Username could not be found.</source>
|
||||||
|
<target>Korisničko ime nije pronađeno.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="13">
|
||||||
|
<source>Account has expired.</source>
|
||||||
|
<target>Račun je isteko.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="14">
|
||||||
|
<source>Credentials have expired.</source>
|
||||||
|
<target>Akreditacijski podaci su istekli.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="15">
|
||||||
|
<source>Account is disabled.</source>
|
||||||
|
<target>Račun je onemogućen.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="16">
|
||||||
|
<source>Account is locked.</source>
|
||||||
|
<target>Račun je zaključan.</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
<file source-language="no" datatype="plaintext" original="file.ext">
|
<file source-language="en" datatype="plaintext" original="file.ext">
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="1">
|
<trans-unit id="1">
|
||||||
<source>An authentication exception occurred.</source>
|
<source>An authentication exception occurred.</source>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5">
|
<trans-unit id="5">
|
||||||
<source>Cookie has already been used by someone else.</source>
|
<source>Cookie has already been used by someone else.</source>
|
||||||
<target>Este cookie já esta em uso.</target>
|
<target>Este cookie já está em uso.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6">
|
<trans-unit id="6">
|
||||||
<source>Not privileged to request the resource.</source>
|
<source>Not privileged to request the resource.</source>
|
||||||
@ -40,7 +40,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="10">
|
<trans-unit id="10">
|
||||||
<source>No session available, it either timed out or cookies are not enabled.</source>
|
<source>No session available, it either timed out or cookies are not enabled.</source>
|
||||||
<target>Nenhuma sessão disponível, ela expirou ou cookies estão desativados.</target>
|
<target>Nenhuma sessão disponível, ela expirou ou os cookies estão desativados.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="11">
|
<trans-unit id="11">
|
||||||
<source>No token could be found.</source>
|
<source>No token could be found.</source>
|
||||||
@ -52,7 +52,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="13">
|
<trans-unit id="13">
|
||||||
<source>Account has expired.</source>
|
<source>Account has expired.</source>
|
||||||
<target>A conta esta expirada.</target>
|
<target>A conta está expirada.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="14">
|
<trans-unit id="14">
|
||||||
<source>Credentials have expired.</source>
|
<source>Credentials have expired.</source>
|
||||||
@ -64,7 +64,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="16">
|
<trans-unit id="16">
|
||||||
<source>Account is locked.</source>
|
<source>Account is locked.</source>
|
||||||
<target>A conta esta travada.</target>
|
<target>A conta está travada.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<file source-language="en" datatype="plaintext" original="file.ext">
|
||||||
|
<body>
|
||||||
|
<trans-unit id="1">
|
||||||
|
<source>An authentication exception occurred.</source>
|
||||||
|
<target>Có lỗi trong quá trình xác thực.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2">
|
||||||
|
<source>Authentication credentials could not be found.</source>
|
||||||
|
<target>Thông tin dùng để xác thực không tìm thấy.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="3">
|
||||||
|
<source>Authentication request could not be processed due to a system problem.</source>
|
||||||
|
<target>Yêu cầu xác thực không thể thực hiện do lỗi của hệ thống.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="4">
|
||||||
|
<source>Invalid credentials.</source>
|
||||||
|
<target>Thông tin dùng để xác thực không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5">
|
||||||
|
<source>Cookie has already been used by someone else.</source>
|
||||||
|
<target>Cookie đã được dùng bởi người dùng khác.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="6">
|
||||||
|
<source>Not privileged to request the resource.</source>
|
||||||
|
<target>Không được phép yêu cầu tài nguyên.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="7">
|
||||||
|
<source>Invalid CSRF token.</source>
|
||||||
|
<target>Mã CSRF không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="8">
|
||||||
|
<source>Digest nonce has expired.</source>
|
||||||
|
<target>Mã dùng một lần đã hết hạn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="9">
|
||||||
|
<source>No authentication provider found to support the authentication token.</source>
|
||||||
|
<target>Không tìm thấy nhà cung cấp dịch vụ xác thực nào cho mã xác thực mà bạn sử dụng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="10">
|
||||||
|
<source>No session available, it either timed out or cookies are not enabled.</source>
|
||||||
|
<target>Không tìm thấy phiên làm việc. Phiên làm việc hoặc cookie có thể bị tắt.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="11">
|
||||||
|
<source>No token could be found.</source>
|
||||||
|
<target>Không tìm thấy mã token.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="12">
|
||||||
|
<source>Username could not be found.</source>
|
||||||
|
<target>Không tìm thấy tên người dùng username.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="13">
|
||||||
|
<source>Account has expired.</source>
|
||||||
|
<target>Tài khoản đã hết hạn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="14">
|
||||||
|
<source>Credentials have expired.</source>
|
||||||
|
<target>Thông tin xác thực đã hết hạn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="15">
|
||||||
|
<source>Account is disabled.</source>
|
||||||
|
<target>Tài khoản bị tạm ngừng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="16">
|
||||||
|
<source>Account is locked.</source>
|
||||||
|
<target>Tài khoản bị khóa.</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
@ -114,6 +114,7 @@ class PluralizationRules
|
|||||||
case 'pap':
|
case 'pap':
|
||||||
case 'ps':
|
case 'ps':
|
||||||
case 'pt':
|
case 'pt':
|
||||||
|
case 'xbr':
|
||||||
case 'so':
|
case 'so':
|
||||||
case 'sq':
|
case 'sq':
|
||||||
case 'sv':
|
case 'sv':
|
||||||
@ -134,7 +135,6 @@ class PluralizationRules
|
|||||||
case 'ln':
|
case 'ln':
|
||||||
case 'mg':
|
case 'mg':
|
||||||
case 'nso':
|
case 'nso':
|
||||||
case 'xbr':
|
|
||||||
case 'ti':
|
case 'ti':
|
||||||
case 'wa':
|
case 'wa':
|
||||||
return (($number == 0) || ($number == 1)) ? 0 : 1;
|
return (($number == 0) || ($number == 1)) ? 0 : 1;
|
||||||
|
@ -242,6 +242,42 @@
|
|||||||
<source>This value is not a valid ISSN.</source>
|
<source>This value is not a valid ISSN.</source>
|
||||||
<target>هذه القيمة ليست ISSN صالحة.</target>
|
<target>هذه القيمة ليست ISSN صالحة.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>العُملة غير صحيحة.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تساوي {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تكون اعلي من {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تكون مساوية او اعلي من {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تطابق {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تكون اقل من {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان تساوي او تقل عن {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان لا تساوي {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>القيمة يجب ان لا تطابق {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -214,6 +214,70 @@
|
|||||||
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
|
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
|
||||||
<target>Колекцията трябва да съдържа точно {{ limit }} елемент.|Колекцията трябва да съдържа точно {{ limit }} елемента.</target>
|
<target>Колекцията трябва да съдържа точно {{ limit }} елемент.|Колекцията трябва да съдържа точно {{ limit }} елемента.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="57">
|
||||||
|
<source>Invalid card number.</source>
|
||||||
|
<target>Невалиден номер на картата.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="58">
|
||||||
|
<source>Unsupported card type or invalid card number.</source>
|
||||||
|
<target>Неподдържан тип карта или невалиден номер на картата.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="59">
|
||||||
|
<source>This is not a valid International Bank Account Number (IBAN).</source>
|
||||||
|
<target>Невалиден Международен номер на банкова сметка (IBAN).</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="60">
|
||||||
|
<source>This value is not a valid ISBN-10.</source>
|
||||||
|
<target>Невалиден ISBN-10.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="61">
|
||||||
|
<source>This value is not a valid ISBN-13.</source>
|
||||||
|
<target>Невалиден ISBN-13.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="62">
|
||||||
|
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
|
||||||
|
<target>Невалидна стойност както за ISBN-10, така и за ISBN-13 .</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="63">
|
||||||
|
<source>This value is not a valid ISSN.</source>
|
||||||
|
<target>Невалиден Международен стандартен сериен номер (ISSN).</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Невалидна валута.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде равна на {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде по-голяма от {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде по-голяма или равна на {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде по-малка {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Стойността трябва да бъде по-малка или равна на {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Стойността не трябва да бъде равна на {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Стойността не трябва да бъде идентична с {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -242,6 +242,42 @@
|
|||||||
<source>This value is not a valid ISSN.</source>
|
<source>This value is not a valid ISSN.</source>
|
||||||
<target>Aquest valor no és un ISSN vàlid.</target>
|
<target>Aquest valor no és un ISSN vàlid.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Aquest valor no és una divisa vàlida.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser més gran a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser major o igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser menor a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor hauria de ser menor o igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor no hauria de ser igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Aquest valor no hauria de idèntic a {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="5">
|
<trans-unit id="5">
|
||||||
<source>The value you selected is not a valid choice.</source>
|
<source>The value you selected is not a valid choice.</source>
|
||||||
<target>Nid yw'r gwerth <EFBFBD> ddewiswyd yn ddilys.</target>
|
<target>Nid yw'r gwerth â ddewiswyd yn ddilys.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="6">
|
<trans-unit id="6">
|
||||||
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
|
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
|
||||||
@ -64,11 +64,11 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="16">
|
<trans-unit id="16">
|
||||||
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
||||||
<target>Mae'r ffeil yn rhy fawr ({{ size }} {{ suffix }}). Yr uchafswm <EFBFBD> ganiateir yw {{ limit }} {{ suffix }}.</target>
|
<target>Mae'r ffeil yn rhy fawr ({{ size }} {{ suffix }}). Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="17">
|
<trans-unit id="17">
|
||||||
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
|
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
|
||||||
<target>Nid yw math mime y ffeil yn ddilys ({{ type }}). Dyma'r mathau <EFBFBD> ganiateir {{ types }}.</target>
|
<target>Nid yw math mime y ffeil yn ddilys ({{ type }}). Dyma'r mathau â ganiateir {{ types }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="18">
|
<trans-unit id="18">
|
||||||
<source>This value should be {{ limit }} or less.</source>
|
<source>This value should be {{ limit }} or less.</source>
|
||||||
@ -116,7 +116,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="32">
|
<trans-unit id="32">
|
||||||
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
||||||
<target>Mae'r ffeil yn rhy fawr. Yr uchafswm <EFBFBD> ganiateir yw {{ limit }} {{ suffix }}.</target>
|
<target>Mae'r ffeil yn rhy fawr. Yr uchafswm â ganiateir yw {{ limit }} {{ suffix }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="33">
|
<trans-unit id="33">
|
||||||
<source>The file is too large.</source>
|
<source>The file is too large.</source>
|
||||||
@ -124,7 +124,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="34">
|
<trans-unit id="34">
|
||||||
<source>The file could not be uploaded.</source>
|
<source>The file could not be uploaded.</source>
|
||||||
<target>Methwyd <EFBFBD> uwchlwytho'r ffeil.</target>
|
<target>Methwyd ag uwchlwytho'r ffeil.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="35">
|
<trans-unit id="35">
|
||||||
<source>This value should be a valid number.</source>
|
<source>This value should be a valid number.</source>
|
||||||
@ -156,23 +156,23 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="42">
|
<trans-unit id="42">
|
||||||
<source>The size of the image could not be detected.</source>
|
<source>The size of the image could not be detected.</source>
|
||||||
<target>Methwyd <EFBFBD> darganfod maint y ddelwedd.</target>
|
<target>Methwyd â darganfod maint y ddelwedd.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="43">
|
<trans-unit id="43">
|
||||||
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
|
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
|
||||||
<target>Mae lled y ddelwedd yn rhy fawr ({{ width }}px). Y lled mwyaf <EFBFBD> ganiateir yw {{ max_width }}px.</target>
|
<target>Mae lled y ddelwedd yn rhy fawr ({{ width }}px). Y lled mwyaf â ganiateir yw {{ max_width }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="44">
|
<trans-unit id="44">
|
||||||
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
|
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
|
||||||
<target>Mae lled y ddelwedd yn rhy fach ({{ width }}px). Y lled lleiaf <EFBFBD> ganiateir yw {{ min_width }}px.</target>
|
<target>Mae lled y ddelwedd yn rhy fach ({{ width }}px). Y lled lleiaf â ganiateir yw {{ min_width }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="45">
|
<trans-unit id="45">
|
||||||
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
|
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
|
||||||
<target>Mae uchder y ddelwedd yn rhy fawr ({{ width }}px). Yr uchder mwyaf <EFBFBD> ganiateir yw {{ max_height }}px.</target>
|
<target>Mae uchder y ddelwedd yn rhy fawr ({{ width }}px). Yr uchder mwyaf â ganiateir yw {{ max_height }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46">
|
<trans-unit id="46">
|
||||||
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
|
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
|
||||||
<target>Mae uchder y ddelwedd yn rhy fach ({{ width }}px). Yr uchder lleiaf <EFBFBD> ganiateir yw {{ min_height }}px.</target>
|
<target>Mae uchder y ddelwedd yn rhy fach ({{ width }}px). Yr uchder lleiaf â ganiateir yw {{ min_height }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="47">
|
<trans-unit id="47">
|
||||||
<source>This value should be the user current password.</source>
|
<source>This value should be the user current password.</source>
|
||||||
@ -184,7 +184,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="49">
|
<trans-unit id="49">
|
||||||
<source>The file was only partially uploaded.</source>
|
<source>The file was only partially uploaded.</source>
|
||||||
<target>Dim ond rhan o'r ffeil <EFBFBD> uwchlwythwyd.</target>
|
<target>Dim ond rhan o'r ffeil ag uwchlwythwyd.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="50">
|
<trans-unit id="50">
|
||||||
<source>No file was uploaded.</source>
|
<source>No file was uploaded.</source>
|
||||||
@ -196,11 +196,11 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="52">
|
<trans-unit id="52">
|
||||||
<source>Cannot write temporary file to disk.</source>
|
<source>Cannot write temporary file to disk.</source>
|
||||||
<target>Methwyd <EFBFBD> ysgrifennu'r ffeil dros-dro ar ddisg.</target>
|
<target>Methwyd ag ysgrifennu'r ffeil dros-dro ar ddisg.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="53">
|
<trans-unit id="53">
|
||||||
<source>A PHP extension caused the upload to fail.</source>
|
<source>A PHP extension caused the upload to fail.</source>
|
||||||
<target>Methwyd <EFBFBD> uwchlwytho oherwydd ategyn PHP.</target>
|
<target>Methwyd ag uwchlwytho oherwydd ategyn PHP.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="54">
|
<trans-unit id="54">
|
||||||
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
|
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
|
||||||
|
@ -242,6 +242,42 @@
|
|||||||
<source>This value is not a valid ISSN.</source>
|
<source>This value is not a valid ISSN.</source>
|
||||||
<target>Ova vrijednost nije ispravan ISSN.</target>
|
<target>Ova vrijednost nije ispravan ISSN.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Ova vrijednost nije ispravna valuta.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti jednaka {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti veća od {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti veća ili jednaka od {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti manja od {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost bi trebala biti manja ili jednaka {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost ne bi trebala biti {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Ova vrijednost ne bi trebala biti {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -222,6 +222,62 @@
|
|||||||
<source>Unsupported card type or invalid card number.</source>
|
<source>Unsupported card type or invalid card number.</source>
|
||||||
<target>Jenis kartu tidak didukung atau nomor kartu tidak sah.</target>
|
<target>Jenis kartu tidak didukung atau nomor kartu tidak sah.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="59">
|
||||||
|
<source>This is not a valid International Bank Account Number (IBAN).</source>
|
||||||
|
<target>Ini bukan Nomor Rekening Bank Internasional (IBAN) yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="60">
|
||||||
|
<source>This value is not a valid ISBN-10.</source>
|
||||||
|
<target>Nilai ini bukan ISBN-10 yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="61">
|
||||||
|
<source>This value is not a valid ISBN-13.</source>
|
||||||
|
<target>Nilai ini bukan ISBN-13 yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="62">
|
||||||
|
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
|
||||||
|
<target>Nilai ini bukan ISBN-10 maupun ISBN-13 yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="63">
|
||||||
|
<source>This value is not a valid ISSN.</source>
|
||||||
|
<target>Nilai ini bukan ISSN yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Nilai ini bukan mata uang yang sah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya sama dengan {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya lebih dari {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya lebih dari atau sama dengan {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya kurang dari {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya kurang dari atau sama dengan {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya tidak sama dengan {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Nilai ini seharusnya tidak identik dengan {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -242,6 +242,42 @@
|
|||||||
<source>This value is not a valid ISSN.</source>
|
<source>This value is not a valid ISSN.</source>
|
||||||
<target>Dëse Wäert ass keng gëlteg ISSN.</target>
|
<target>Dëse Wäert ass keng gëlteg ISSN.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Dëse Wäert ass keng gëlteg Währung.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt méi grouss wéi {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt méi grouss wéi oder gläich {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt méi kleng wéi {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt méi kleng wéi oder gläich {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt net {{ compared_value }} sinn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Dëse Wäert sollt net identesch si mat {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -272,11 +272,11 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="71">
|
<trans-unit id="71">
|
||||||
<source>This value should not be equal to {{ compared_value }}.</source>
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
<target>Deze waarde moet niet gelijk zijn aan {{ compared_value }}.</target>
|
<target>Deze waarde mag niet gelijk zijn aan {{ compared_value }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="72">
|
<trans-unit id="72">
|
||||||
<source>This valuemahould not be identical to {{ compared_value }}.</source>
|
<source>This value should not be identical to {{ compared_value }}.</source>
|
||||||
<target>Deze waarde moet niet identiek zijn aan {{ compared_value }}.</target>
|
<target>Deze waarde mag niet identiek zijn aan {{ compared_value }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
@ -242,6 +242,42 @@
|
|||||||
<source>This value is not a valid ISSN.</source>
|
<source>This value is not a valid ISSN.</source>
|
||||||
<target>Este valor não é um ISSN válido.</target>
|
<target>Este valor não é um ISSN válido.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Este não é um valor monetário válido.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser maior que {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser maior ou igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser menor que {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Este valor deve ser menor ou igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Este valor não deve ser igual a {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Este valor não deve ser idêntico a {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="2">
|
<trans-unit id="2">
|
||||||
<source>This value should be true.</source>
|
<source>This value should be true.</source>
|
||||||
<target>Această valoare ar trebui să fie adevarătă (true).</target>
|
<target>Această valoare ar trebui să fie adevărată (true).</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="3">
|
<trans-unit id="3">
|
||||||
<source>This value should be of type {{ type }}.</source>
|
<source>This value should be of type {{ type }}.</source>
|
||||||
@ -48,7 +48,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="12">
|
<trans-unit id="12">
|
||||||
<source>This value is not a valid datetime.</source>
|
<source>This value is not a valid datetime.</source>
|
||||||
<target>Această valoare nu reprezintă o dată și oră o valide.</target>
|
<target>Această valoare nu reprezintă o dată și oră validă.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="13">
|
<trans-unit id="13">
|
||||||
<source>This value is not a valid email address.</source>
|
<source>This value is not a valid email address.</source>
|
||||||
@ -168,11 +168,11 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="45">
|
<trans-unit id="45">
|
||||||
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
|
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
|
||||||
<target>Înlățimea imaginii este prea mare ({{ height }}px). Înălțimea maximă permisă este de {{ max_height }}px.</target>
|
<target>Înălțimea imaginii este prea mare ({{ height }}px). Înălțimea maximă permisă este de {{ max_height }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="46">
|
<trans-unit id="46">
|
||||||
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
|
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
|
||||||
<target>Înlățimea imaginii este prea mică ({{ height }}px). Înălțimea minimă permisă este de {{ min_height }}px.</target>
|
<target>Înălțimea imaginii este prea mică ({{ height }}px). Înălțimea minimă permisă este de {{ min_height }}px.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="47">
|
<trans-unit id="47">
|
||||||
<source>This value should be the user current password.</source>
|
<source>This value should be the user current password.</source>
|
||||||
@ -276,7 +276,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="72">
|
<trans-unit id="72">
|
||||||
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
<target>Această valoare nu trebuie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
|
<target>Această valoare nu trebuie să fie identică cu {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
@ -132,7 +132,7 @@
|
|||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="36">
|
<trans-unit id="36">
|
||||||
<source>This file is not a valid image.</source>
|
<source>This file is not a valid image.</source>
|
||||||
<target>Den är filen är ingen giltig bild.</target>
|
<target>Filen är ingen giltig bild.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="37">
|
<trans-unit id="37">
|
||||||
<source>This is not a valid IP address.</source>
|
<source>This is not a valid IP address.</source>
|
||||||
@ -214,6 +214,70 @@
|
|||||||
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
|
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
|
||||||
<target>Den här samlingen ska innehålla exakt {{ limit }} element.|Den här samlingen ska innehålla exakt {{ limit }} element.</target>
|
<target>Den här samlingen ska innehålla exakt {{ limit }} element.|Den här samlingen ska innehålla exakt {{ limit }} element.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
<trans-unit id="57">
|
||||||
|
<source>Invalid card number.</source>
|
||||||
|
<target>Ogiltigt kortnummer.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="58">
|
||||||
|
<source>Unsupported card type or invalid card number.</source>
|
||||||
|
<target>Okänd korttyp eller ogiltigt kortnummer.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="59">
|
||||||
|
<source>This is not a valid International Bank Account Number (IBAN).</source>
|
||||||
|
<target>Det här är inte en giltig International Bank Account Number (IBANK).</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="60">
|
||||||
|
<source>This value is not a valid ISBN-10.</source>
|
||||||
|
<target>Värdet är inte en giltig ISBN-10.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="61">
|
||||||
|
<source>This value is not a valid ISBN-13.</source>
|
||||||
|
<target>Värdet är inte en giltig ISBN-13.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="62">
|
||||||
|
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
|
||||||
|
<target>Värdet är varken en giltig ISBN-10 eller en giltig ISBN-13.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="63">
|
||||||
|
<source>This value is not a valid ISSN.</source>
|
||||||
|
<target>Värdet är inte en giltig ISSN.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Värdet är inte en giltig valuta.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska vara detsamma som {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska vara större än {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska bara större än eller detsamma som {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska vara identiskt till {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska vara mindre än {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska vara mindre än eller detsamma som {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska inte vara detsamma som {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Värdet ska inte vara identiskt med {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
</xliff>
|
</xliff>
|
||||||
|
@ -0,0 +1,283 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
|
||||||
|
<file source-language="en" datatype="plaintext" original="file.ext">
|
||||||
|
<body>
|
||||||
|
<trans-unit id="1">
|
||||||
|
<source>This value should be false.</source>
|
||||||
|
<target>Giá trị này phải là sai.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2">
|
||||||
|
<source>This value should be true.</source>
|
||||||
|
<target>Giá trị này phải là đúng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="3">
|
||||||
|
<source>This value should be of type {{ type }}.</source>
|
||||||
|
<target>Giá trị này phải là kiểu {{ type }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="4">
|
||||||
|
<source>This value should be blank.</source>
|
||||||
|
<target>Giá trị này phải rỗng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5">
|
||||||
|
<source>The value you selected is not a valid choice.</source>
|
||||||
|
<target>Giá trị bạn vừa chọn không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="6">
|
||||||
|
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
|
||||||
|
<target>Bạn phải chọn ít nhất {{ limit }} lựa chọn.|Bạn phải chọn ít nhất {{ limit }} lựa chọn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="7">
|
||||||
|
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
|
||||||
|
<target>Bạn phải chọn nhiều nhất {{ limit }} lựa chọn.|Bạn phải chọn nhiều nhất {{ limit }} lựa chọn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="8">
|
||||||
|
<source>One or more of the given values is invalid.</source>
|
||||||
|
<target>Một hoặc nhiều giá trị được chọn không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="9">
|
||||||
|
<source>The fields {{ fields }} were not expected.</source>
|
||||||
|
<target>Trường có tên {{ fields }} không được chấp nhận.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="10">
|
||||||
|
<source>The fields {{ fields }} are missing.</source>
|
||||||
|
<target>Trường có tên {{ fields }} không tìm thấy.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="11">
|
||||||
|
<source>This value is not a valid date.</source>
|
||||||
|
<target>Giá trị không phải là ngày hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="12">
|
||||||
|
<source>This value is not a valid datetime.</source>
|
||||||
|
<target>Giá trị không phải là ngày tháng hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="13">
|
||||||
|
<source>This value is not a valid email address.</source>
|
||||||
|
<target>Giá trị này không phải là email hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="14">
|
||||||
|
<source>The file could not be found.</source>
|
||||||
|
<target>Tập tin không tìm thấy.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="15">
|
||||||
|
<source>The file is not readable.</source>
|
||||||
|
<target>Tập tin không thể đọc được.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="16">
|
||||||
|
<source>The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
||||||
|
<target>Tập tin quá lớn ({{ size }} {{ suffix }}). Kích thước tối đa cho phép {{ limit }} {{ suffix }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="17">
|
||||||
|
<source>The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}.</source>
|
||||||
|
<target>Kiểu mime của tập tin không hợp lệ ({{ type }}). Kiểu hợp lệ là {{ types }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="18">
|
||||||
|
<source>This value should be {{ limit }} or less.</source>
|
||||||
|
<target>Giá trị phải bằng hoặc nhỏ hơn {{ limit }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="19">
|
||||||
|
<source>This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.</source>
|
||||||
|
<target>Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.|Giá trị quá dài. Phải bằng hoặc ít hơn {{ limit }} kí tự.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="20">
|
||||||
|
<source>This value should be {{ limit }} or more.</source>
|
||||||
|
<target>Giá trị phải lớn hơn hoặc bằng {{ limit }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="21">
|
||||||
|
<source>This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.</source>
|
||||||
|
<target>Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.|Giá trị quá ngắn. Phải hơn hoặc bằng {{ limit }} kí tự.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="22">
|
||||||
|
<source>This value should not be blank.</source>
|
||||||
|
<target>Giá trị không được phép để trống.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="23">
|
||||||
|
<source>This value should not be null.</source>
|
||||||
|
<target>Giá trị không được phép rỗng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="24">
|
||||||
|
<source>This value should be null.</source>
|
||||||
|
<target>Giá trị phải rỗng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="25">
|
||||||
|
<source>This value is not valid.</source>
|
||||||
|
<target>Giá trị không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="26">
|
||||||
|
<source>This value is not a valid time.</source>
|
||||||
|
<target>Giá trị không phải là thời gian hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="27">
|
||||||
|
<source>This value is not a valid URL.</source>
|
||||||
|
<target>Giá trị không phải là địa chỉ URL hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="31">
|
||||||
|
<source>The two values should be equal.</source>
|
||||||
|
<target>Hai giá trị phải bằng nhau.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="32">
|
||||||
|
<source>The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}.</source>
|
||||||
|
<target>Tập tin quá lớn. Kích thước tối đa cho phép là {{ limit }} {{ suffix }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="33">
|
||||||
|
<source>The file is too large.</source>
|
||||||
|
<target>Tập tin quá lớn.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="34">
|
||||||
|
<source>The file could not be uploaded.</source>
|
||||||
|
<target>Tập tin không thể tải lên.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="35">
|
||||||
|
<source>This value should be a valid number.</source>
|
||||||
|
<target>Giá trị phải là con số.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="36">
|
||||||
|
<source>This file is not a valid image.</source>
|
||||||
|
<target>Tập tin không phải là hình ảnh.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="37">
|
||||||
|
<source>This is not a valid IP address.</source>
|
||||||
|
<target>Địa chỉ IP không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="38">
|
||||||
|
<source>This value is not a valid language.</source>
|
||||||
|
<target>Giá trị không phải là ngôn ngữ hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="39">
|
||||||
|
<source>This value is not a valid locale.</source>
|
||||||
|
<target>Giá trị không phải là một bản địa địa phương hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="40">
|
||||||
|
<source>This value is not a valid country.</source>
|
||||||
|
<target>Giá trị không phải là nước hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="41">
|
||||||
|
<source>This value is already used.</source>
|
||||||
|
<target>Giá trị đã được sử dụng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="42">
|
||||||
|
<source>The size of the image could not be detected.</source>
|
||||||
|
<target>Kích thước của hình ảnh không thể xác định.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="43">
|
||||||
|
<source>The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px.</source>
|
||||||
|
<target>Chiều rộng của hình quá lớn ({{ width }}px). Chiều rộng tối đa phải là {{ max_width }}px.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="44">
|
||||||
|
<source>The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px.</source>
|
||||||
|
<target>Chiều rộng của hình quá thấp ({{ width }}px). Chiều rộng tối thiểu phải là {{ min_width }}px.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="45">
|
||||||
|
<source>The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px.</source>
|
||||||
|
<target>Chiều cao của hình quá cao ({{ height }}px). Chiều cao tối đa phải là {{ max_height }}px.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="46">
|
||||||
|
<source>The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px.</source>
|
||||||
|
<target>Chiều cao của hình quá thấp ({{ height }}px). Chiều cao tối thiểu phải là {{ min_height }}px.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="47">
|
||||||
|
<source>This value should be the user current password.</source>
|
||||||
|
<target>Giá trị này phải là mật khẩu hiện tại của người dùng.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="48">
|
||||||
|
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
|
||||||
|
<target>Giá trị phải có chính xác {{ limit }} kí tự.|Giá trị phải có chính xác {{ limit }} kí tự.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="49">
|
||||||
|
<source>The file was only partially uploaded.</source>
|
||||||
|
<target>Tập tin chỉ được tải lên một phần.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="50">
|
||||||
|
<source>No file was uploaded.</source>
|
||||||
|
<target>Tập tin không được tải lên.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="51">
|
||||||
|
<source>No temporary folder was configured in php.ini.</source>
|
||||||
|
<target>Thư mục tạm không được định nghĩa trong php.ini.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="52">
|
||||||
|
<source>Cannot write temporary file to disk.</source>
|
||||||
|
<target>Không thể ghi tập tin tạm ra đĩa.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="53">
|
||||||
|
<source>A PHP extension caused the upload to fail.</source>
|
||||||
|
<target>Một PHP extension đã phá hỏng quá trình tải lên của tập tin.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="54">
|
||||||
|
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>
|
||||||
|
<target>Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc nhiều hơn thành phần.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="55">
|
||||||
|
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
|
||||||
|
<target>Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.|Danh sách phải chứa {{ limit }} hoặc ít hơn thành phần.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="56">
|
||||||
|
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
|
||||||
|
<target>Danh sách phải chứa chính xác {{ limit }} thành phần.|Danh sách phải chứa chính xác {{ limit }} thành phần.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="57">
|
||||||
|
<source>Invalid card number.</source>
|
||||||
|
<target>Số thẻ không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="58">
|
||||||
|
<source>Unsupported card type or invalid card number.</source>
|
||||||
|
<target>Thẻ không được hỗ trợ hoặc số thẻ không hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="59">
|
||||||
|
<source>This is not a valid International Bank Account Number (IBAN).</source>
|
||||||
|
<target>Giá trị không phải là International Bank Account Number (IBAN) hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="60">
|
||||||
|
<source>This value is not a valid ISBN-10.</source>
|
||||||
|
<target>Giá trị không phải là ISBN-10 hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="61">
|
||||||
|
<source>This value is not a valid ISBN-13.</source>
|
||||||
|
<target>Giá trị không phải là ISBN-13 hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="62">
|
||||||
|
<source>This value is neither a valid ISBN-10 nor a valid ISBN-13.</source>
|
||||||
|
<target>Giá trị không phải là ISBN-10 hoặc ISBN-13 hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="63">
|
||||||
|
<source>This value is not a valid ISSN.</source>
|
||||||
|
<target>Giá trị không là ISSN hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="64">
|
||||||
|
<source>This value is not a valid currency.</source>
|
||||||
|
<target>Giá trị không phải là đơn vi tiền tệ hợp lệ.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="65">
|
||||||
|
<source>This value should be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị phải bằng {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="66">
|
||||||
|
<source>This value should be greater than {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị phải lớn hơn {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="67">
|
||||||
|
<source>This value should be greater than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị phải lớn hơn hoặc bằng {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="68">
|
||||||
|
<source>This value should be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị phải giống {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="69">
|
||||||
|
<source>This value should be less than {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị phải bé hơn {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="70">
|
||||||
|
<source>This value should be less than or equal to {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị không được phép nhỏ hơn hoặc bằng {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="71">
|
||||||
|
<source>This value should not be equal to {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị không được phép bằng {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="72">
|
||||||
|
<source>This value should not be identical to {{ compared_value_type }} {{ compared_value }}.</source>
|
||||||
|
<target>Giá trị không được phép giống như {{ compared_value_type }} {{ compared_value }}.</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
Reference in New Issue
Block a user