Merge branch '2.4'
* 2.4: fixed CS allow the TextAreaFormField to be used with valid/invalid HTML Create security.id.xlf [DependencyInjection] Remove unneeded file [Twig] removed obsolete conditions on Twig versions added lines to exceptions for the trans and transchoice tags [FrameworkBundle] Merged multiple line input into one line to fix the tests. [Form] Make FormInterface::add docblock more explicit [Security] Add zh_CN translations Routing condition bugfix [Validator][Translation]update zh_CN translations [Validator] Minor fix in XmlLoader
This commit is contained in:
commit
6a0de7f512
@ -95,24 +95,12 @@ class TransNode extends \Twig_Node
|
|||||||
|
|
||||||
preg_match_all('/(?<!%)%([^%]+)%/', $msg, $matches);
|
preg_match_all('/(?<!%)%([^%]+)%/', $msg, $matches);
|
||||||
|
|
||||||
if (version_compare(\Twig_Environment::VERSION, '1.5', '>=')) {
|
|
||||||
foreach ($matches[1] as $var) {
|
foreach ($matches[1] as $var) {
|
||||||
$key = new \Twig_Node_Expression_Constant('%'.$var.'%', $body->getLine());
|
$key = new \Twig_Node_Expression_Constant('%'.$var.'%', $body->getLine());
|
||||||
if (!$vars->hasElement($key)) {
|
if (!$vars->hasElement($key)) {
|
||||||
$vars->addElement(new \Twig_Node_Expression_Name($var, $body->getLine()), $key);
|
$vars->addElement(new \Twig_Node_Expression_Name($var, $body->getLine()), $key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$current = array();
|
|
||||||
foreach ($vars as $name => $var) {
|
|
||||||
$current[$name] = true;
|
|
||||||
}
|
|
||||||
foreach ($matches[1] as $var) {
|
|
||||||
if (!isset($current['%'.$var.'%'])) {
|
|
||||||
$vars->setNode('%'.$var.'%', new \Twig_Node_Expression_Name($var, $body->getLine()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return array(new \Twig_Node_Expression_Constant(str_replace('%%', '%', trim($msg)), $body->getLine()), $vars);
|
return array(new \Twig_Node_Expression_Constant(str_replace('%%', '%', trim($msg)), $body->getLine()), $vars);
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,33 @@ class TranslationExtensionTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($expected, $this->getTemplate($template)->render($variables));
|
$this->assertEquals($expected, $this->getTemplate($template)->render($variables));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Twig_Error_Syntax
|
||||||
|
* @expectedExceptionMessage Unexpected token. Twig was looking for the "with", "from", or "into" keyword in "index" at line 3.
|
||||||
|
*/
|
||||||
|
public function testTransUnknownKeyword()
|
||||||
|
{
|
||||||
|
$output = $this->getTemplate("{% trans \n\nfoo %}{% endtrans %}")->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Twig_Error_Syntax
|
||||||
|
* @expectedExceptionMessage A message inside a trans tag must be a simple text in "index" at line 2.
|
||||||
|
*/
|
||||||
|
public function testTransComplexBody()
|
||||||
|
{
|
||||||
|
$output = $this->getTemplate("{% trans %}\n{{ 1 + 2 }}{% endtrans %}")->render();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Twig_Error_Syntax
|
||||||
|
* @expectedExceptionMessage A message inside a transchoice tag must be a simple text in "index" at line 2.
|
||||||
|
*/
|
||||||
|
public function testTransChoiceComplexBody()
|
||||||
|
{
|
||||||
|
$output = $this->getTemplate("{% transchoice count %}\n{{ 1 + 2 }}{% endtranschoice %}")->render();
|
||||||
|
}
|
||||||
|
|
||||||
public function getTransTests()
|
public function getTransTests()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
|
@ -64,7 +64,7 @@ class TransChoiceTokenParser extends TransTokenParser
|
|||||||
$body = $this->parser->subparse(array($this, 'decideTransChoiceFork'), true);
|
$body = $this->parser->subparse(array($this, 'decideTransChoiceFork'), true);
|
||||||
|
|
||||||
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
||||||
throw new \Twig_Error_Syntax('A message must be a simple text.');
|
throw new \Twig_Error_Syntax('A message inside a transchoice tag must be a simple text.', $body->getLine(), $stream->getFilename());
|
||||||
}
|
}
|
||||||
|
|
||||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||||
|
@ -55,7 +55,7 @@ class TransTokenParser extends \Twig_TokenParser
|
|||||||
$stream->next();
|
$stream->next();
|
||||||
$locale = $this->parser->getExpressionParser()->parseExpression();
|
$locale = $this->parser->getExpressionParser()->parseExpression();
|
||||||
} elseif (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
} elseif (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
||||||
throw new \Twig_Error_Syntax('Unexpected token. Twig was looking for the "with" or "from" keyword.');
|
throw new \Twig_Error_Syntax('Unexpected token. Twig was looking for the "with", "from", or "into" keyword.', $stream->getCurrent()->getLine(), $stream->getFilename());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ class TransTokenParser extends \Twig_TokenParser
|
|||||||
$body = $this->parser->subparse(array($this, 'decideTransFork'), true);
|
$body = $this->parser->subparse(array($this, 'decideTransFork'), true);
|
||||||
|
|
||||||
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
||||||
throw new \Twig_Error_Syntax('A message inside a trans tag must be a simple text');
|
throw new \Twig_Error_Syntax('A message inside a trans tag must be a simple text.', $body->getLine(), $stream->getFilename());
|
||||||
}
|
}
|
||||||
|
|
||||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||||
|
@ -1,5 +1 @@
|
|||||||
<input
|
<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 ?> />
|
||||||
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 ?>
|
|
||||||
/>
|
|
||||||
|
@ -1,9 +0,0 @@
|
|||||||
<?xml version="1.0" ?>
|
|
||||||
|
|
||||||
<container xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
|
||||||
<services>
|
|
||||||
<service id="foo" class="BarClass" />
|
|
||||||
</services>
|
|
||||||
</container>
|
|
@ -33,7 +33,7 @@ class TextareaFormField extends FormField
|
|||||||
|
|
||||||
$this->value = null;
|
$this->value = null;
|
||||||
foreach ($this->node->childNodes as $node) {
|
foreach ($this->node->childNodes as $node) {
|
||||||
$this->value .= $this->document->saveXML($node);
|
$this->value .= $node->wholeText;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,5 +29,18 @@ class TextareaFormFieldTest extends FormFieldTestCase
|
|||||||
} catch (\LogicException $e) {
|
} catch (\LogicException $e) {
|
||||||
$this->assertTrue(true, '->initialize() throws a \LogicException if the node is not a textarea');
|
$this->assertTrue(true, '->initialize() throws a \LogicException if the node is not a textarea');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ensure that valid HTML can be used on a textarea.
|
||||||
|
$node = $this->createNode('textarea', 'foo bar <h1>Baz</h1>');
|
||||||
|
$field = new TextareaFormField($node);
|
||||||
|
|
||||||
|
$this->assertEquals('foo bar <h1>Baz</h1>', $field->getValue(), '->initialize() sets the value of the field to the textarea node value');
|
||||||
|
|
||||||
|
// Ensure that we don't do any DOM manipulation/validation by passing in
|
||||||
|
// "invalid" HTML.
|
||||||
|
$node = $this->createNode('textarea', 'foo bar <h1>Baz</h2>');
|
||||||
|
$field = new TextareaFormField($node);
|
||||||
|
|
||||||
|
$this->assertEquals('foo bar <h1>Baz</h2>', $field->getValue(), '->initialize() sets the value of the field to the textarea node value');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ interface FormInterface extends \ArrayAccess, \Traversable, \Countable
|
|||||||
public function getParent();
|
public function getParent();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a child to the form.
|
* Adds or replaces a child to the form.
|
||||||
*
|
*
|
||||||
* @param FormInterface|string|integer $child The FormInterface instance or the name of the child.
|
* @param FormInterface|string|integer $child The FormInterface instance or the name of the child.
|
||||||
* @param string|null $type The child's type, if a name was passed.
|
* @param string|null $type The child's type, if a name was passed.
|
||||||
|
@ -167,6 +167,9 @@ class XmlFileLoader extends FileLoader
|
|||||||
if (null !== $host) {
|
if (null !== $host) {
|
||||||
$subCollection->setHost($host);
|
$subCollection->setHost($host);
|
||||||
}
|
}
|
||||||
|
if (null !== $condition) {
|
||||||
|
$subCollection->setCondition($condition);
|
||||||
|
}
|
||||||
if (null !== $schemes) {
|
if (null !== $schemes) {
|
||||||
$subCollection->setSchemes($schemes);
|
$subCollection->setSchemes($schemes);
|
||||||
}
|
}
|
||||||
|
@ -146,6 +146,7 @@ class YamlFileLoader extends FileLoader
|
|||||||
$requirements = isset($config['requirements']) ? $config['requirements'] : array();
|
$requirements = isset($config['requirements']) ? $config['requirements'] : array();
|
||||||
$options = isset($config['options']) ? $config['options'] : array();
|
$options = isset($config['options']) ? $config['options'] : array();
|
||||||
$host = isset($config['host']) ? $config['host'] : null;
|
$host = isset($config['host']) ? $config['host'] : null;
|
||||||
|
$condition = isset($config['condition']) ? $config['condition'] : null;
|
||||||
$schemes = isset($config['schemes']) ? $config['schemes'] : null;
|
$schemes = isset($config['schemes']) ? $config['schemes'] : null;
|
||||||
$methods = isset($config['methods']) ? $config['methods'] : null;
|
$methods = isset($config['methods']) ? $config['methods'] : null;
|
||||||
|
|
||||||
@ -157,6 +158,9 @@ class YamlFileLoader extends FileLoader
|
|||||||
if (null !== $host) {
|
if (null !== $host) {
|
||||||
$subCollection->setHost($host);
|
$subCollection->setHost($host);
|
||||||
}
|
}
|
||||||
|
if (null !== $condition) {
|
||||||
|
$subCollection->setCondition($condition);
|
||||||
|
}
|
||||||
if (null !== $schemes) {
|
if (null !== $schemes) {
|
||||||
$subCollection->setSchemes($schemes);
|
$subCollection->setSchemes($schemes);
|
||||||
}
|
}
|
||||||
|
@ -20,4 +20,6 @@
|
|||||||
<option key="compiler_class">RouteCompiler</option>
|
<option key="compiler_class">RouteCompiler</option>
|
||||||
<condition>context.getMethod() == "GET"</condition>
|
<condition>context.getMethod() == "GET"</condition>
|
||||||
</route>
|
</route>
|
||||||
|
|
||||||
|
<route id="blog_show_inherited" path="/blog/{slug}" />
|
||||||
</routes>
|
</routes>
|
||||||
|
@ -17,3 +17,6 @@ blog_show_legacy:
|
|||||||
condition: 'context.getMethod() == "GET"'
|
condition: 'context.getMethod() == "GET"'
|
||||||
options:
|
options:
|
||||||
compiler_class: RouteCompiler
|
compiler_class: RouteCompiler
|
||||||
|
|
||||||
|
blog_show_inherited:
|
||||||
|
path: /blog/{slug}
|
||||||
|
@ -8,5 +8,6 @@
|
|||||||
<default key="foo">123</default>
|
<default key="foo">123</default>
|
||||||
<requirement key="foo">\d+</requirement>
|
<requirement key="foo">\d+</requirement>
|
||||||
<option key="foo">bar</option>
|
<option key="foo">bar</option>
|
||||||
|
<condition>context.getMethod() == "POST"</condition>
|
||||||
</import>
|
</import>
|
||||||
</routes>
|
</routes>
|
||||||
|
@ -5,3 +5,4 @@ _blog:
|
|||||||
requirements: { 'foo': '\d+' }
|
requirements: { 'foo': '\d+' }
|
||||||
options: { 'foo': 'bar' }
|
options: { 'foo': 'bar' }
|
||||||
host: ""
|
host: ""
|
||||||
|
condition: 'context.getMethod() == "POST"'
|
||||||
|
@ -34,10 +34,12 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$routeCollection = $loader->load('validpattern.xml');
|
$routeCollection = $loader->load('validpattern.xml');
|
||||||
$routes = $routeCollection->all();
|
$routes = $routeCollection->all();
|
||||||
|
|
||||||
$this->assertCount(2, $routes, 'Two routes are loaded');
|
$this->assertCount(3, $routes, 'Three routes are loaded');
|
||||||
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
||||||
|
|
||||||
foreach ($routes as $route) {
|
$identicalRoutes = array_slice($routes, 0, 2);
|
||||||
|
|
||||||
|
foreach ($identicalRoutes as $route) {
|
||||||
$this->assertSame('/blog/{slug}', $route->getPath());
|
$this->assertSame('/blog/{slug}', $route->getPath());
|
||||||
$this->assertSame('{locale}.example.com', $route->getHost());
|
$this->assertSame('{locale}.example.com', $route->getHost());
|
||||||
$this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
|
$this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
|
||||||
@ -72,7 +74,7 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$routeCollection = $loader->load('validresource.xml');
|
$routeCollection = $loader->load('validresource.xml');
|
||||||
$routes = $routeCollection->all();
|
$routes = $routeCollection->all();
|
||||||
|
|
||||||
$this->assertCount(2, $routes, 'Two routes are loaded');
|
$this->assertCount(3, $routes, 'Three routes are loaded');
|
||||||
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
||||||
|
|
||||||
foreach ($routes as $route) {
|
foreach ($routes as $route) {
|
||||||
@ -81,6 +83,7 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertSame('\d+', $route->getRequirement('foo'));
|
$this->assertSame('\d+', $route->getRequirement('foo'));
|
||||||
$this->assertSame('bar', $route->getOption('foo'));
|
$this->assertSame('bar', $route->getOption('foo'));
|
||||||
$this->assertSame('', $route->getHost());
|
$this->assertSame('', $route->getHost());
|
||||||
|
$this->assertSame('context.getMethod() == "POST"', $route->getCondition());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,10 +68,12 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$routeCollection = $loader->load('validpattern.yml');
|
$routeCollection = $loader->load('validpattern.yml');
|
||||||
$routes = $routeCollection->all();
|
$routes = $routeCollection->all();
|
||||||
|
|
||||||
$this->assertCount(2, $routes, 'Two routes are loaded');
|
$this->assertCount(3, $routes, 'Three routes are loaded');
|
||||||
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
||||||
|
|
||||||
foreach ($routes as $route) {
|
$identicalRoutes = array_slice($routes, 0, 2);
|
||||||
|
|
||||||
|
foreach ($identicalRoutes as $route) {
|
||||||
$this->assertSame('/blog/{slug}', $route->getPath());
|
$this->assertSame('/blog/{slug}', $route->getPath());
|
||||||
$this->assertSame('{locale}.example.com', $route->getHost());
|
$this->assertSame('{locale}.example.com', $route->getHost());
|
||||||
$this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
|
$this->assertSame('MyBundle:Blog:show', $route->getDefault('_controller'));
|
||||||
@ -89,7 +91,7 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$routeCollection = $loader->load('validresource.yml');
|
$routeCollection = $loader->load('validresource.yml');
|
||||||
$routes = $routeCollection->all();
|
$routes = $routeCollection->all();
|
||||||
|
|
||||||
$this->assertCount(2, $routes, 'Two routes are loaded');
|
$this->assertCount(3, $routes, 'Three routes are loaded');
|
||||||
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
$this->assertContainsOnly('Symfony\Component\Routing\Route', $routes);
|
||||||
|
|
||||||
foreach ($routes as $route) {
|
foreach ($routes as $route) {
|
||||||
@ -98,6 +100,8 @@ class YamlFileLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertSame('\d+', $route->getRequirement('foo'));
|
$this->assertSame('\d+', $route->getRequirement('foo'));
|
||||||
$this->assertSame('bar', $route->getOption('foo'));
|
$this->assertSame('bar', $route->getOption('foo'));
|
||||||
$this->assertSame('', $route->getHost());
|
$this->assertSame('', $route->getHost());
|
||||||
|
$this->assertSame('context.getMethod() == "POST"', $route->getCondition());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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>Terjadi sebuah pengecualian otentikasi.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2">
|
||||||
|
<source>Authentication credentials could not be found.</source>
|
||||||
|
<target>Kredensial otentikasi tidak bisa ditemukan.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="3">
|
||||||
|
<source>Authentication request could not be processed due to a system problem.</source>
|
||||||
|
<target>Permintaan otentikasi tidak bisa diproses karena masalah sistem.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="4">
|
||||||
|
<source>Invalid credentials.</source>
|
||||||
|
<target>Kredensial salah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5">
|
||||||
|
<source>Cookie has already been used by someone else.</source>
|
||||||
|
<target>Cookie sudah digunakan oleh orang lain.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="6">
|
||||||
|
<source>Not privileged to request the resource.</source>
|
||||||
|
<target>Tidak berhak untuk meminta sumber daya.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="7">
|
||||||
|
<source>Invalid CSRF token.</source>
|
||||||
|
<target>Token CSRF salah.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="8">
|
||||||
|
<source>Digest nonce has expired.</source>
|
||||||
|
<target>Digest nonce telah berakhir.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="9">
|
||||||
|
<source>No authentication provider found to support the authentication token.</source>
|
||||||
|
<target>Tidak ditemukan penyedia otentikasi untuk mendukung token otentikasi.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="10">
|
||||||
|
<source>No session available, it either timed out or cookies are not enabled.</source>
|
||||||
|
<target>Tidak ada sesi yang tersedia, mungkin waktu sudah habis atau cookie tidak diaktifkan</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="11">
|
||||||
|
<source>No token could be found.</source>
|
||||||
|
<target>Tidak ada token yang bisa ditemukan.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="12">
|
||||||
|
<source>Username could not be found.</source>
|
||||||
|
<target>Username tidak bisa ditemukan.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="13">
|
||||||
|
<source>Account has expired.</source>
|
||||||
|
<target>Akun telah berakhir.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="14">
|
||||||
|
<source>Credentials have expired.</source>
|
||||||
|
<target>Kredensial telah berakhir.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="15">
|
||||||
|
<source>Account is disabled.</source>
|
||||||
|
<target>Akun dinonaktifkan.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="16">
|
||||||
|
<source>Account is locked.</source>
|
||||||
|
<target>Akun terkunci.</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
@ -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>身份验证发生异常。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="2">
|
||||||
|
<source>Authentication credentials could not be found.</source>
|
||||||
|
<target>没有找到身份验证的凭证。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="3">
|
||||||
|
<source>Authentication request could not be processed due to a system problem.</source>
|
||||||
|
<target>由于系统故障,身份验证的请求无法被处理。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="4">
|
||||||
|
<source>Invalid credentials.</source>
|
||||||
|
<target>无效的凭证。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="5">
|
||||||
|
<source>Cookie has already been used by someone else.</source>
|
||||||
|
<target>Cookie 已经被其他人使用。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="6">
|
||||||
|
<source>Not privileged to request the resource.</source>
|
||||||
|
<target>没有权限请求此资源。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="7">
|
||||||
|
<source>Invalid CSRF token.</source>
|
||||||
|
<target>无效的 CSRF token 。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="8">
|
||||||
|
<source>Digest nonce has expired.</source>
|
||||||
|
<target>摘要随机串(digest nonce)已过期。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="9">
|
||||||
|
<source>No authentication provider found to support the authentication token.</source>
|
||||||
|
<target>没有找到支持此 token 的身份验证服务提供方。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="10">
|
||||||
|
<source>No session available, it either timed out or cookies are not enabled.</source>
|
||||||
|
<target>Session 不可用。会话超时或没有启用 cookies 。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="11">
|
||||||
|
<source>No token could be found.</source>
|
||||||
|
<target>找不到 token 。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="12">
|
||||||
|
<source>Username could not be found.</source>
|
||||||
|
<target>找不到用户名。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="13">
|
||||||
|
<source>Account has expired.</source>
|
||||||
|
<target>帐号已过期。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="14">
|
||||||
|
<source>Credentials have expired.</source>
|
||||||
|
<target>凭证已过期。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="15">
|
||||||
|
<source>Account is disabled.</source>
|
||||||
|
<target>帐号已被禁用。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="16">
|
||||||
|
<source>Account is locked.</source>
|
||||||
|
<target>帐号已被锁定。</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
@ -39,7 +39,7 @@ abstract class AbstractLoader implements LoaderInterface
|
|||||||
* @param string $name The constraint name. Either a constraint relative
|
* @param string $name The constraint name. Either a constraint relative
|
||||||
* to the default constraint namespace, or a fully
|
* to the default constraint namespace, or a fully
|
||||||
* qualified class name
|
* qualified class name
|
||||||
* @param array $options The constraint options
|
* @param mixed $options The constraint options
|
||||||
*
|
*
|
||||||
* @return Constraint
|
* @return Constraint
|
||||||
*
|
*
|
||||||
|
@ -105,7 +105,7 @@ class XmlFileLoader extends FileLoader
|
|||||||
$options = null;
|
$options = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$constraints[] = $this->newConstraint($node['name'], $options);
|
$constraints[] = $this->newConstraint((string) $node['name'], $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $constraints;
|
return $constraints;
|
||||||
|
@ -4,223 +4,279 @@
|
|||||||
<body>
|
<body>
|
||||||
<trans-unit id="1">
|
<trans-unit id="1">
|
||||||
<source>This value should be false.</source>
|
<source>This value should be false.</source>
|
||||||
<target>该变量的值应为 false.</target>
|
<target>该变量的值应为 false 。</target>
|
||||||
</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>该变量的值应为 true.</target>
|
<target>该变量的值应为 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>
|
||||||
<target>该变量的类型应为 {{ type }}.</target>
|
<target>该变量的类型应为 {{ type }} 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="4">
|
<trans-unit id="4">
|
||||||
<source>This value should be blank.</source>
|
<source>This value should be blank.</source>
|
||||||
<target>该变量值应为空.</target>
|
<target>该变量值应为空。</target>
|
||||||
</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>选定变量的值不是有效的选项.</target>
|
<target>选定变量的值不是有效的选项。</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>
|
||||||
<target>您至少要选择 {{ limit }} 个选项.</target>
|
<target>您至少要选择 {{ limit }} 个选项。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="7">
|
<trans-unit id="7">
|
||||||
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
|
<source>You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices.</source>
|
||||||
<target>您最多能选择 {{ limit }} 个选项.</target>
|
<target>您最多能选择 {{ limit }} 个选项。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="8">
|
<trans-unit id="8">
|
||||||
<source>One or more of the given values is invalid.</source>
|
<source>One or more of the given values is invalid.</source>
|
||||||
<target>一个或者多个给定的值无效.</target>
|
<target>一个或者多个给定的值无效。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="9">
|
<trans-unit id="9">
|
||||||
<source>The fields {{ fields }} were not expected.</source>
|
<source>The fields {{ fields }} were not expected.</source>
|
||||||
<target>非预期字段 {{ fields }}.</target>
|
<target>非预期字段 {{ fields }} 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="10">
|
<trans-unit id="10">
|
||||||
<source>The fields {{ fields }} are missing.</source>
|
<source>The fields {{ fields }} are missing.</source>
|
||||||
<target>遗漏字段 {{ fields }}.</target>
|
<target>遗漏字段 {{ fields }} 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="11">
|
<trans-unit id="11">
|
||||||
<source>This value is not a valid date.</source>
|
<source>This value is not a valid date.</source>
|
||||||
<target>该值不是一个有效日期(date).</target>
|
<target>该值不是一个有效的日期(date)。</target>
|
||||||
</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>该值不是一个有效日期时间(datetime).</target>
|
<target>该值不是一个有效的日期时间(datetime)。</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>
|
||||||
<target>该值不是一个有效邮件地址.</target>
|
<target>该值不是一个有效的邮件地址。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="14">
|
<trans-unit id="14">
|
||||||
<source>The file could not be found.</source>
|
<source>The file could not be found.</source>
|
||||||
<target>文件未找到.</target>
|
<target>文件未找到。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="15">
|
<trans-unit id="15">
|
||||||
<source>The file is not readable.</source>
|
<source>The file is not readable.</source>
|
||||||
<target>文件不可读.</target>
|
<target>文件不可读。</target>
|
||||||
</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>文件太大 ({{ size }} {{ suffix }}). 文件大小不可以超过 {{ limit }} {{ suffix }}.</target>
|
<target>文件太大 ({{ size }} {{ suffix }})。文件大小不可以超过 {{ 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>文件类型不合法 ({{ type }}). 合法的文件类型有 {{ types }}.</target>
|
<target>无效的文件类型 ({{ type }}) 。允许的文件类型有 {{ 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>
|
||||||
<target>这个变量的值应该小于或等于 {{ limit }}.</target>
|
<target>这个变量的值应该小于或等于 {{ limit }}。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="19">
|
<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>
|
<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>字符串太长, 长度不可超过 {{ limit }} 个字符.</target>
|
<target>字符串太长,长度不可超过 {{ limit }} 个字符。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="20">
|
<trans-unit id="20">
|
||||||
<source>This value should be {{ limit }} or more.</source>
|
<source>This value should be {{ limit }} or more.</source>
|
||||||
<target>该变量的值应该大于或等于 {{ limit }}.</target>
|
<target>该变量的值应该大于或等于 {{ limit }}。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="21">
|
<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>
|
<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>字符串太短, 长度不可少于 {{ limit }} 个字符.</target>
|
<target>字符串太短,长度不可少于 {{ limit }} 个字符。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="22">
|
<trans-unit id="22">
|
||||||
<source>This value should not be blank.</source>
|
<source>This value should not be blank.</source>
|
||||||
<target>该变量不应为空.</target>
|
<target>该变量不应为空。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="23">
|
<trans-unit id="23">
|
||||||
<source>This value should not be null.</source>
|
<source>This value should not be null.</source>
|
||||||
<target>该变量不应为 null.</target>
|
<target>该变量不应为 null 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="24">
|
<trans-unit id="24">
|
||||||
<source>This value should be null.</source>
|
<source>This value should be null.</source>
|
||||||
<target>该变量应为空 null.</target>
|
<target>该变量应为空 null 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="25">
|
<trans-unit id="25">
|
||||||
<source>This value is not valid.</source>
|
<source>This value is not valid.</source>
|
||||||
<target>该变量值无效.</target>
|
<target>该变量值无效 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="26">
|
<trans-unit id="26">
|
||||||
<source>This value is not a valid time.</source>
|
<source>This value is not a valid time.</source>
|
||||||
<target>该值不是一个有效时间.</target>
|
<target>该值不是一个有效的时间。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="27">
|
<trans-unit id="27">
|
||||||
<source>This value is not a valid URL.</source>
|
<source>This value is not a valid URL.</source>
|
||||||
<target>该值不是一个有效的 URL 地址.</target>
|
<target>该值不是一个有效的 URL 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="31">
|
<trans-unit id="31">
|
||||||
<source>The two values should be equal.</source>
|
<source>The two values should be equal.</source>
|
||||||
<target>该两个变量的值应该相同.</target>
|
<target>这两个变量的值应该相等。</target>
|
||||||
</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>文件太大, 文件大小不可以超过 {{ limit }} {{ suffix }}.</target>
|
<target>文件太大,文件大小不可以超过 {{ 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>
|
||||||
<target>文件太大.</target>
|
<target>文件太大。</target>
|
||||||
</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>文件不可被上传.</target>
|
<target>无法上传此文件。</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>
|
||||||
<target>该值应该为有效的数字.</target>
|
<target>该值应该为有效的数字。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="36">
|
<trans-unit id="36">
|
||||||
<source>This value is not a valid country.</source>
|
<source>This value is not a valid country.</source>
|
||||||
<target>该值不是有效的国家名.</target>
|
<target>该值不是有效的国家名。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="37">
|
<trans-unit id="37">
|
||||||
<source>This file is not a valid image.</source>
|
<source>This file is not a valid image.</source>
|
||||||
<target>该文件不是有效的图片.</target>
|
<target>该文件不是有效的图片。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="38">
|
<trans-unit id="38">
|
||||||
<source>This is not a valid IP address.</source>
|
<source>This is not a valid IP address.</source>
|
||||||
<target>该值不是有效的IP地址.</target>
|
<target>该值不是有效的IP地址。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="39">
|
<trans-unit id="39">
|
||||||
<source>This value is not a valid language.</source>
|
<source>This value is not a valid language.</source>
|
||||||
<target>该值不是有效的语言名.</target>
|
<target>该值不是有效的语言名。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="40">
|
<trans-unit id="40">
|
||||||
<source>This value is not a valid locale.</source>
|
<source>This value is not a valid locale.</source>
|
||||||
<target>该值不是有效的区域值.</target>
|
<target>该值不是有效的区域值(locale)。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="41">
|
<trans-unit id="41">
|
||||||
<source>This value is already used.</source>
|
<source>This value is already used.</source>
|
||||||
<target>该值已经被使用了.</target>
|
<target>该值已经被使用。</target>
|
||||||
</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>不能解析图片大小.</target>
|
<target>不能解析图片大小。</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>图片太宽 ({{ width }}px),最大宽度为 {{ max_width }}px.</target>
|
<target>图片太宽 ({{ width }}px),最大宽度为 {{ 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>图片宽度不够 ({{ width }}px),最小宽度为 {{ min_width }}px.</target>
|
<target>图片宽度不够 ({{ width }}px),最小宽度为 {{ 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>图片太高 ({{ height }}px),最大高度为 {{ max_height }}px.</target>
|
<target>图片太高 ({{ height }}px),最大高度为 {{ 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>图片高度不够 ({{ height }}px),最小高度为 {{ min_height }}px.</target>
|
<target>图片高度不够 ({{ height }}px),最小高度为 {{ 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>
|
||||||
<target>该变量应为用户当前的密码.</target>
|
<target>该变量的值应为用户当前的密码。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="48">
|
<trans-unit id="48">
|
||||||
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
|
<source>This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters.</source>
|
||||||
<target>该变量应为 {{ limit }} 个字符.</target>
|
<target>该变量应为 {{ limit }} 个字符。</target>
|
||||||
</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>该文件的上传不完整.</target>
|
<target>该文件的上传不完整。</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>
|
||||||
<target>没有上传任何文件.</target>
|
<target>没有上传任何文件。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="51">
|
<trans-unit id="51">
|
||||||
<source>No temporary folder was configured in php.ini.</source>
|
<source>No temporary folder was configured in php.ini.</source>
|
||||||
<target>php.ini里没有配置临时文件目录.</target>
|
<target>php.ini 里没有配置临时文件目录。</target>
|
||||||
</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>临时文件写入磁盘失败.</target>
|
<target>临时文件写入磁盘失败。</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>某个PHP扩展造成上传失败.</target>
|
<target>某个 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>
|
||||||
<target>该集合最少应包含 {{ limit }} 个元素.</target>
|
<target>该集合最少应包含 {{ limit }} 个元素。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="55">
|
<trans-unit id="55">
|
||||||
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
|
<source>This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less.</source>
|
||||||
<target>该集合最多包含 {{ limit }} 个元素.</target>
|
<target>该集合最多包含 {{ limit }} 个元素。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="56">
|
<trans-unit id="56">
|
||||||
<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 }} 个元素element.</target>
|
<target>该集合应包含 {{ limit }} 个元素 element 。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="57">
|
<trans-unit id="57">
|
||||||
<source>Invalid card number.</source>
|
<source>Invalid card number.</source>
|
||||||
<target>无效的信用卡号.</target>
|
<target>无效的信用卡号。</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="58">
|
<trans-unit id="58">
|
||||||
<source>Unsupported card type or invalid card number.</source>
|
<source>Unsupported card type or invalid card number.</source>
|
||||||
<target>不支持的信用卡类型或无效的信用卡号.</target>
|
<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>该值不是有效的10位国际标准书号(ISBN-10)。</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="61">
|
||||||
|
<source>This value is not a valid ISBN-13.</source>
|
||||||
|
<target>该值不是有效的13位国际标准书号(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>该值不是有效的货币名(currency)。</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>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
</file>
|
</file>
|
||||||
|
Reference in New Issue
Block a user