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:
Fabien Potencier 2014-01-24 15:36:35 +01:00
commit 2e2a65c0f4
60 changed files with 1128 additions and 131 deletions

View File

@ -15,11 +15,11 @@ services: mongodb
before_script:
- 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 [ $(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 [ $(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 [ $(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 "" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.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 [ "$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 [ "$TRAVIS_PHP_VERSION" != "hhvm" ]; then echo "extension = memcached.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
script:

View File

@ -81,9 +81,18 @@ class ORMQueryBuilderLoader implements EntityLoaderInterface
$parameter = 'ORMQueryBuilderLoader_getEntitiesByIds_'.$identifier;
$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)
->getQuery()
->setParameter($parameter, $values, Connection::PARAM_STR_ARRAY)
->setParameter($parameter, $values, $parameterType)
->getResult();
}
}

View File

@ -12,8 +12,10 @@
namespace Symfony\Bridge\Doctrine\Tests\Form\ChoiceList;
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
@ -32,4 +34,43 @@ class ORMQueryBuilderLoaderTest extends \PHPUnit_Framework_TestCase
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());
}
}

View File

@ -330,6 +330,23 @@ class UniqueValidatorTest extends \PHPUnit_Framework_TestCase
$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
*/

View File

@ -89,7 +89,7 @@ class UniqueEntityValidator extends ConstraintValidator
return;
}
if ($class->hasAssociation($fieldName)) {
if (null !== $criteria[$fieldName] && $class->hasAssociation($fieldName)) {
/* Ensure the Proxy is initialized before using reflection to
* read its identifiers. This is necessary because the wrapped
* getter methods in the Proxy are being bypassed.

View File

@ -30,7 +30,7 @@ class ExpressionExtension extends \Twig_Extension
);
}
private function createExpression($expression)
public function createExpression($expression)
{
return new Expression($expression);
}

View File

@ -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);
}
}

View File

@ -18,7 +18,7 @@
"require": {
"php": ">=5.3.3",
"symfony/security-csrf": "~2.4",
"twig/twig": "~1.11"
"twig/twig": "~1.12"
},
"require-dev": {
"symfony/form": "~2.2",
@ -29,7 +29,8 @@
"symfony/yaml": "~2.0",
"symfony/security": "~2.4",
"symfony/stopwatch": "~2.2",
"symfony/console": "~2.2"
"symfony/console": "~2.2",
"symfony/expression-language": "~2.4"
},
"suggest": {
"symfony/form": "For using the FormExtension",
@ -39,7 +40,8 @@
"symfony/translation": "For using the TranslationExtension",
"symfony/yaml": "For using the YamlExtension",
"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": {
"psr-0": { "Symfony\\Bridge\\Twig\\": "" }

View File

@ -15,6 +15,7 @@ use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;
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
*
* @return Response A Response instance
*
* @throws HttpException In case the route name is empty
*/
public function redirectAction(Request $request, $route, $permanent = false, $ignoreAttributes = false)
{
if ('' == $route) {
return new Response(null, $permanent ? 410 : 404);
throw new HttpException($permanent ? 410 : 404);
}
$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)
*
* @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)
{
if ('' == $path) {
return new Response(null, $permanent ? 410 : 404);
throw new HttpException($permanent ? 410 : 404);
}
$statusCode = $permanent ? 301 : 302;

View File

@ -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 ?>
/>

View File

@ -14,6 +14,7 @@ namespace Symfony\Bundle\FrameworkBundle\Tests\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\ParameterBag;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Symfony\Bundle\FrameworkBundle\Controller\RedirectController;
use Symfony\Bundle\FrameworkBundle\Tests\TestCase;
@ -27,13 +28,19 @@ class RedirectControllerTest extends TestCase
$request = new Request();
$controller = new RedirectController();
$returnResponse = $controller->redirectAction($request, '', true);
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
$this->assertEquals(410, $returnResponse->getStatusCode());
try {
$controller->redirectAction($request, '', true);
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
} catch (HttpException $e) {
$this->assertSame(410, $e->getStatusCode());
}
$returnResponse = $controller->redirectAction($request, '', false);
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
$this->assertEquals(404, $returnResponse->getStatusCode());
try {
$controller->redirectAction($request, '', false);
$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();
$controller = new RedirectController();
$returnResponse = $controller->urlRedirectAction($request, '', true);
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
$this->assertEquals(410, $returnResponse->getStatusCode());
try {
$controller->urlRedirectAction($request, '', true);
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
} catch (HttpException $e) {
$this->assertSame(410, $e->getStatusCode());
}
$returnResponse = $controller->urlRedirectAction($request, '', false);
$this->assertInstanceOf('\Symfony\Component\HttpFoundation\Response', $returnResponse);
$this->assertEquals(404, $returnResponse->getStatusCode());
try {
$controller->urlRedirectAction($request, '', false);
$this->fail('Expected Symfony\Component\HttpKernel\Exception\HttpException to be thrown');
} catch (HttpException $e) {
$this->assertSame(404, $e->getStatusCode());
}
}
public function testFullURL()

View File

@ -75,12 +75,10 @@ class FormLoginFactory extends AbstractFactory
{
$listenerId = parent::createListener($container, $id, $config, $userProvider);
if (isset($config['csrf_provider'])) {
$container
->getDefinition($listenerId)
->addArgument(new Reference($config['csrf_provider']))
;
}
$container
->getDefinition($listenerId)
->addArgument(isset($config['csrf_provider']) ? new Reference($config['csrf_provider']) : null)
;
return $listenerId;
}

View File

@ -63,11 +63,6 @@ class SimpleFormFactory extends FormLoginFactory
protected function 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;
$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(2, new Reference($this->getFailureHandlerId($id)));
$listener = $container->getDefinition($listenerId);
$listener->replaceArgument(5, new Reference($simpleAuthHandlerId));
$listener->replaceArgument(6, new Reference($simpleAuthHandlerId));
$listener->addArgument(new Reference($config['authenticator']));

View File

@ -227,7 +227,7 @@ class ProfilerController
$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
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
}

View File

@ -76,7 +76,7 @@ class WebDebugToolbarListener implements EventSubscriberInterface
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
$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
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
}

View File

@ -295,12 +295,18 @@ abstract class Client
}
$uri = $this->getAbsoluteUri($uri);
$server = array_merge($this->server, $server);
if (!$this->history->isEmpty()) {
$server['HTTP_REFERER'] = $this->history->current()->getUri();
}
$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);
$this->internalRequest = new Request($uri, $method, $parameters, $files, $this->cookieJar->allValues($uri), $server, $content);

View File

@ -160,6 +160,11 @@ class ClientTest extends \PHPUnit_Framework_TestCase
$client->request('GET', 'https://www.example.com');
$headers = $client->getRequest()->getServer();
$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()
@ -416,6 +421,24 @@ class ClientTest extends \PHPUnit_Framework_TestCase
$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()
{
$client = new TestClient();

View File

@ -696,7 +696,8 @@ class Application
do {
$title = sprintf(' [%s] ', get_class($e));
$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();
$lines = array();
foreach (preg_split('/\r?\n/', $e->getMessage()) as $line) {
@ -1053,7 +1054,7 @@ class Application
* if nothing is found in $collection, try in $abbrevs
*
* @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
*/

View File

@ -378,6 +378,11 @@ class Parser implements ParserInterface
$stream->skipWhitespace();
$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())) {
throw SyntaxErrorException::unexpectedToken('string or identifier', $value);
}

View File

@ -133,6 +133,7 @@ class ParserTest extends \PHPUnit_Framework_TestCase
array('div#foobar', array('Hash[Element[div]#foobar]')),
array('div:not(div.foo)', array('Negation[Element[div]:not(Class[Element[div].foo])]')),
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']]")),
);
}

View File

@ -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));
case self::ARRAY_CALL:
$values = $this->nodes['node']->evaluate($functions, $values);
if (!is_array($values) && !$values instanceof \ArrayAccess) {
$array = $this->nodes['node']->evaluate($functions, $values);
if (!is_array($array) && !$array instanceof \ArrayAccess) {
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)];
}
}
}

View File

@ -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('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(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)),
);
}

View File

@ -82,8 +82,8 @@ abstract class RoutableFragmentRenderer implements FragmentRendererInterface
foreach ($values as $key => $value) {
if (is_array($value)) {
$this->checkNonScalar($value);
} elseif (!is_scalar($value)) {
throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar values (value for key "%s" is not a scalar).', $key));
} elseif (!is_scalar($value) && null !== $value) {
throw new \LogicException(sprintf('Controller attributes cannot contain non-scalar/non-null values (value for key "%s" is not a scalar or null).', $key));
}
}
}

View File

@ -101,7 +101,7 @@ class Logger implements LoggerInterface
*/
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);
}
@ -111,7 +111,7 @@ class Logger implements LoggerInterface
*/
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);
}
@ -121,7 +121,7 @@ class Logger implements LoggerInterface
*/
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);
}

View File

@ -100,8 +100,8 @@ class FullTransformer
/**
* 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 DateTime $dateTime A DateTime object to be used to generate the formatted 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
*
* @return string The formatted value
*

View File

@ -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
*/
@ -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()
{
@ -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.
*
@ -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.
*
@ -991,7 +993,7 @@ class Process
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);
throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE);

View File

@ -57,7 +57,7 @@ use Psr\Log\LoggerInterface;
*/
class {$options['class']} extends {$options['base_class']}
{
static private \$declaredRoutes = {$this->generateDeclaredRoutes()};
private static \$declaredRoutes = {$this->generateDeclaredRoutes()};
/**
* Constructor.

View File

@ -22,6 +22,13 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
private $key;
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)
{
$this->userChecker = $userChecker;
@ -29,6 +36,9 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
$this->providerKey = $providerKey;
}
/**
* {@inheritdoc}
*/
public function authenticate(TokenInterface $token)
{
if (!$this->supports($token)) {
@ -48,6 +58,9 @@ class RememberMeAuthenticationProvider implements AuthenticationProviderInterfac
return $authenticatedToken;
}
/**
* {@inheritdoc}
*/
public function supports(TokenInterface $token)
{
return $token instanceof RememberMeToken && $token->getProviderKey() === $this->providerKey;

View File

@ -22,6 +22,9 @@ class InMemoryTokenProvider implements TokenProviderInterface
{
private $tokens = array();
/**
* {@inheritdoc}
*/
public function loadTokenBySeries($series)
{
if (!isset($this->tokens[$series])) {
@ -31,6 +34,9 @@ class InMemoryTokenProvider implements TokenProviderInterface
return $this->tokens[$series];
}
/**
* {@inheritdoc}
*/
public function updateToken($series, $tokenValue, \DateTime $lastUsed)
{
if (!isset($this->tokens[$series])) {
@ -47,11 +53,17 @@ class InMemoryTokenProvider implements TokenProviderInterface
$this->tokens[$series] = $token;
}
/**
* {@inheritdoc}
*/
public function deleteTokenBySeries($series)
{
unset($this->tokens[$series]);
}
/**
* {@inheritdoc}
*/
public function createNewToken(PersistentTokenInterface $token)
{
$this->tokens[$token->getSeries()] = $token;

View File

@ -58,9 +58,7 @@ final class PersistentToken implements PersistentTokenInterface
}
/**
* Returns the class of the user
*
* @return string
* {@inheritdoc}
*/
public function getClass()
{
@ -68,9 +66,7 @@ final class PersistentToken implements PersistentTokenInterface
}
/**
* Returns the username
*
* @return string
* {@inheritdoc}
*/
public function getUsername()
{
@ -78,9 +74,7 @@ final class PersistentToken implements PersistentTokenInterface
}
/**
* Returns the series
*
* @return string
* {@inheritdoc}
*/
public function getSeries()
{
@ -88,9 +82,7 @@ final class PersistentToken implements PersistentTokenInterface
}
/**
* Returns the token value
*
* @return string
* {@inheritdoc}
*/
public function getTokenValue()
{
@ -98,9 +90,7 @@ final class PersistentToken implements PersistentTokenInterface
}
/**
* Returns the time the token was last used
*
* @return \DateTime
* {@inheritdoc}
*/
public function getLastUsed()
{

View File

@ -20,31 +20,36 @@ namespace Symfony\Component\Security\Core\Authentication\RememberMe;
interface PersistentTokenInterface
{
/**
* Returns the class of the user
* Returns the class of the user.
*
* @return string
*/
public function getClass();
/**
* Returns the username
* Returns the username.
*
* @return string
*/
public function getUsername();
/**
* Returns the series
* Returns the series.
*
* @return string
*/
public function getSeries();
/**
* Returns the token value
* Returns the token value.
*
* @return string
*/
public function getTokenValue();
/**
* Returns the last time the cookie was used
* Returns the time the token was last used.
*
* @return \DateTime
*/
public function getLastUsed();

View File

@ -70,6 +70,9 @@ abstract class AbstractToken implements TokenInterface
return (string) $this->user;
}
/**
* {@inheritdoc}
*/
public function getUser()
{
return $this->user;

View File

@ -18,7 +18,6 @@ use Symfony\Component\Security\Core\Role\RoleInterface;
*
* @author Fabien Potencier <fabien@symfony.com>
*/
class AnonymousToken extends AbstractToken
{
private $key;

View File

@ -41,11 +41,19 @@ class PreAuthenticatedToken extends AbstractToken
}
}
/**
* Returns the provider key.
*
* @return string The provider key
*/
public function getProviderKey()
{
return $this->providerKey;
}
/**
* {@inheritdoc}
*/
public function getCredentials()
{
return $this->credentials;
@ -61,11 +69,17 @@ class PreAuthenticatedToken extends AbstractToken
$this->credentials = null;
}
/**
* {@inheritdoc}
*/
public function serialize()
{
return serialize(array($this->credentials, $this->providerKey, parent::serialize()));
}
/**
* {@inheritdoc}
*/
public function unserialize($str)
{
list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);

View File

@ -51,6 +51,9 @@ class RememberMeToken extends AbstractToken
parent::setAuthenticated(true);
}
/**
* {@inheritdoc}
*/
public function setAuthenticated($authenticated)
{
if ($authenticated) {
@ -60,16 +63,29 @@ class RememberMeToken extends AbstractToken
parent::setAuthenticated(false);
}
/**
* Returns the provider key.
*
* @return string The provider key
*/
public function getProviderKey()
{
return $this->providerKey;
}
/**
* Returns the key.
*
* @return string The Key
*/
public function getKey()
{
return $this->key;
}
/**
* {@inheritdoc}
*/
public function getCredentials()
{
return '';

View File

@ -60,11 +60,19 @@ class UsernamePasswordToken extends AbstractToken
parent::setAuthenticated(false);
}
/**
* {@inheritdoc}
*/
public function getCredentials()
{
return $this->credentials;
}
/**
* Returns the provider key.
*
* @return string The provider key
*/
public function getProviderKey()
{
return $this->providerKey;

View File

@ -34,11 +34,7 @@ class RoleHierarchy implements RoleHierarchyInterface
}
/**
* Returns an array of all roles reachable by the given ones.
*
* @param RoleInterface[] $roles An array of RoleInterface instances
*
* @return RoleInterface[] An array of RoleInterface instances
* {@inheritdoc}
*/
public function getReachableRoles(array $roles)
{

View File

@ -19,7 +19,7 @@ namespace Symfony\Component\Security\Core\Role;
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
* are transitively reachable from them in the role hierarchy.

View File

@ -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.
*
* @param mixed $attributes
* @param mixed|null $object
*
* @return Boolean
*/
final public function isGranted($attributes, $object = null)
{
@ -73,9 +68,7 @@ class SecurityContext implements SecurityContextInterface
}
/**
* Gets the currently authenticated token.
*
* @return TokenInterface|null A TokenInterface instance or null if no authentication information is available
* {@inheritdoc}
*/
public function getToken()
{
@ -83,9 +76,7 @@ class SecurityContext implements SecurityContextInterface
}
/**
* Sets the currently authenticated token.
*
* @param TokenInterface $token A TokenInterface token, or null if no further authentication information should be stored
* {@inheritdoc}
*/
public function setToken(TokenInterface $token = null)
{

View File

@ -34,14 +34,14 @@ interface SecurityContextInterface
/**
* 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);
/**
* Checks if the attributes are granted against the current authentication token and optionally supplied object.
*
* @param array $attributes
* @param mixed $attributes
* @param mixed $object
*
* @return Boolean

View File

@ -21,6 +21,9 @@ class UserPassword extends Constraint
public $message = 'This value should be the user current password.';
public $service = 'security.validator.user_password';
/**
* {@inheritdoc}
*/
public function validatedBy()
{
return $this->service;

View File

@ -29,6 +29,9 @@ class UserPasswordValidator extends ConstraintValidator
$this->encoderFactory = $encoderFactory;
}
/**
* {@inheritdoc}
*/
public function validate($password, Constraint $constraint)
{
$user = $this->securityContext->getToken()->getUser();

View File

@ -1,6 +1,6 @@
<?xml version="1.0"?>
<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>
<trans-unit id="1">
<source>An authentication exception occurred.</source>

View 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>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>

View File

@ -1,6 +1,6 @@
<?xml version="1.0"?>
<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>
<trans-unit id="1">
<source>An authentication exception occurred.</source>

View File

@ -20,7 +20,7 @@
</trans-unit>
<trans-unit id="5">
<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 id="6">
<source>Not privileged to request the resource.</source>
@ -40,7 +40,7 @@
</trans-unit>
<trans-unit id="10">
<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 id="11">
<source>No token could be found.</source>
@ -52,7 +52,7 @@
</trans-unit>
<trans-unit id="13">
<source>Account has expired.</source>
<target>A conta esta expirada.</target>
<target>A conta está expirada.</target>
</trans-unit>
<trans-unit id="14">
<source>Credentials have expired.</source>
@ -64,7 +64,7 @@
</trans-unit>
<trans-unit id="16">
<source>Account is locked.</source>
<target>A conta esta travada.</target>
<target>A conta está travada.</target>
</trans-unit>
</body>
</file>

View 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>

View File

@ -114,6 +114,7 @@ class PluralizationRules
case 'pap':
case 'ps':
case 'pt':
case 'xbr':
case 'so':
case 'sq':
case 'sv':
@ -134,7 +135,6 @@ class PluralizationRules
case 'ln':
case 'mg':
case 'nso':
case 'xbr':
case 'ti':
case 'wa':
return (($number == 0) || ($number == 1)) ? 0 : 1;

View File

@ -242,6 +242,42 @@
<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>
</file>
</xliff>

View File

@ -214,6 +214,70 @@
<source>This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements.</source>
<target>Колекцията трябва да съдържа точно {{ limit }} елемент.|Колекцията трябва да съдържа точно {{ limit }} елемента.</target>
</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>
</file>
</xliff>

View File

@ -242,6 +242,42 @@
<source>This value is not a valid ISSN.</source>
<target>Aquest valor no és un ISSN vàlid.</target>
</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>
</file>
</xliff>

View File

@ -20,7 +20,7 @@
</trans-unit>
<trans-unit id="5">
<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 id="6">
<source>You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices.</source>
@ -64,11 +64,11 @@
</trans-unit>
<trans-unit id="16">
<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 id="17">
<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 id="18">
<source>This value should be {{ limit }} or less.</source>
@ -116,7 +116,7 @@
</trans-unit>
<trans-unit id="32">
<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 id="33">
<source>The file is too large.</source>
@ -124,7 +124,7 @@
</trans-unit>
<trans-unit id="34">
<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 id="35">
<source>This value should be a valid number.</source>
@ -156,23 +156,23 @@
</trans-unit>
<trans-unit id="42">
<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 id="43">
<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 id="44">
<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 id="45">
<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 id="46">
<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 id="47">
<source>This value should be the user current password.</source>
@ -184,7 +184,7 @@
</trans-unit>
<trans-unit id="49">
<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 id="50">
<source>No file was uploaded.</source>
@ -196,11 +196,11 @@
</trans-unit>
<trans-unit id="52">
<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 id="53">
<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 id="54">
<source>This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more.</source>

View File

@ -242,6 +242,42 @@
<source>This value is not a valid ISSN.</source>
<target>Ova vrijednost nije ispravan ISSN.</target>
</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>
</file>
</xliff>

View File

@ -222,6 +222,62 @@
<source>Unsupported card type or invalid card number.</source>
<target>Jenis kartu tidak didukung atau nomor kartu tidak sah.</target>
</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>
</file>
</xliff>

View File

@ -242,6 +242,42 @@
<source>This value is not a valid ISSN.</source>
<target>Dëse Wäert ass keng gëlteg ISSN.</target>
</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>
</file>
</xliff>

View File

@ -272,11 +272,11 @@
</trans-unit>
<trans-unit id="71">
<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 id="72">
<source>This valuemahould not be identical to {{ compared_value }}.</source>
<target>Deze waarde moet niet identiek zijn aan {{ compared_value }}.</target>
<source>This value should not be identical to {{ compared_value }}.</source>
<target>Deze waarde mag niet identiek zijn aan {{ compared_value }}.</target>
</trans-unit>
</body>
</file>

View File

@ -242,6 +242,42 @@
<source>This value is not a valid ISSN.</source>
<target>Este valor não é um ISSN válido.</target>
</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>
</file>
</xliff>

View File

@ -8,7 +8,7 @@
</trans-unit>
<trans-unit id="2">
<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 id="3">
<source>This value should be of type {{ type }}.</source>
@ -48,7 +48,7 @@
</trans-unit>
<trans-unit id="12">
<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 id="13">
<source>This value is not a valid email address.</source>
@ -168,11 +168,11 @@
</trans-unit>
<trans-unit id="45">
<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 id="46">
<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 id="47">
<source>This value should be the user current password.</source>
@ -276,7 +276,7 @@
</trans-unit>
<trans-unit id="72">
<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>
</body>
</file>

View File

@ -132,7 +132,7 @@
</trans-unit>
<trans-unit id="36">
<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 id="37">
<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>
<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 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>
</file>
</xliff>

View File

@ -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>