ab1e9f3f81
* 2.3: Configure firewall's kernel exception listener with configured entry point or a default entry point PSR-2 fixes [DependencyInjection] make paths relative to __DIR__ in the generated container Fixed the syntax of a composer.json file Fixed the symfony/config version constraint Tweaked the password-compat version constraint Docblock fixes define constant only if it wasn't defined before Fix incorrect spanish translation Fixed typos Conflicts: composer.json src/Symfony/Bridge/Twig/TwigEngine.php src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php src/Symfony/Bundle/FrameworkBundle/Templating/Loader/FilesystemLoader.php src/Symfony/Bundle/FrameworkBundle/composer.json src/Symfony/Component/Console/Descriptor/MarkdownDescriptor.php src/Symfony/Component/Console/Helper/TableHelper.php src/Symfony/Component/Console/Tests/Helper/HelperSetTest.php src/Symfony/Component/Debug/ErrorHandler.php src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php src/Symfony/Component/Finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php src/Symfony/Component/Form/Tests/Extension/Core/DataMapper/PropertyPathMapperTest.php src/Symfony/Component/HttpFoundation/Response.php src/Symfony/Component/HttpFoundation/StreamedResponse.php src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php src/Symfony/Component/HttpKernel/Controller/ControllerResolverInterface.php src/Symfony/Component/HttpKernel/Debug/TraceableEventDispatcher.php src/Symfony/Component/HttpKernel/Fragment/RoutableFragmentRenderer.php src/Symfony/Component/HttpKernel/Tests/DataCollector/RequestDataCollectorTest.php src/Symfony/Component/Intl/NumberFormatter/NumberFormatter.php src/Symfony/Component/Process/Process.php src/Symfony/Component/Process/Tests/AbstractProcessTest.php src/Symfony/Component/PropertyAccess/PropertyAccessorBuilder.php src/Symfony/Component/Routing/Tests/Fixtures/validpattern.php src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php src/Symfony/Component/Security/composer.json src/Symfony/Component/Serializer/Encoder/XmlEncoder.php src/Symfony/Component/Serializer/Normalizer/GetSetMethodNormalizer.php src/Symfony/Component/Stopwatch/StopwatchEvent.php src/Symfony/Component/Stopwatch/StopwatchPeriod.php src/Symfony/Component/Templating/PhpEngine.php src/Symfony/Component/Templating/TemplateReference.php src/Symfony/Component/Templating/TemplateReferenceInterface.php src/Symfony/Component/Translation/TranslatorInterface.php src/Symfony/Component/Validator/ConstraintViolation.php src/Symfony/Component/Validator/ExecutionContextInterface.php src/Symfony/Component/Validator/Mapping/ClassMetadata.php src/Symfony/Component/Validator/MetadataFactoryInterface.php
168 lines
5.1 KiB
PHP
168 lines
5.1 KiB
PHP
<?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\Component\Validator;
|
|
|
|
use Symfony\Component\Translation\TranslatorInterface;
|
|
use Symfony\Component\Validator\Exception\BadMethodCallException;
|
|
use Symfony\Component\Validator\Exception\InvalidArgumentException;
|
|
|
|
/**
|
|
* Simple translator implementation that simply replaces the parameters in
|
|
* the message IDs.
|
|
*
|
|
* Example usage:
|
|
*
|
|
* $translator = new DefaultTranslator();
|
|
*
|
|
* echo $translator->trans(
|
|
* 'This is a {{ var }}.',
|
|
* array('{{ var }}' => 'donkey')
|
|
* );
|
|
*
|
|
* // -> This is a donkey.
|
|
*
|
|
* echo $translator->transChoice(
|
|
* 'This is {{ count }} donkey.|These are {{ count }} donkeys.',
|
|
* 3,
|
|
* array('{{ count }}' => 'three')
|
|
* );
|
|
*
|
|
* // -> These are three donkeys.
|
|
*
|
|
* This translator does not support message catalogs, translation domains or
|
|
* locales. Instead, it implements a subset of the capabilities of
|
|
* {@link \Symfony\Component\Translation\Translator} and can be used in places
|
|
* where translation is not required by default but should be optional.
|
|
*
|
|
* @author Bernhard Schussek <bschussek@gmail.com>
|
|
*/
|
|
class DefaultTranslator implements TranslatorInterface
|
|
{
|
|
/**
|
|
* Interpolates the given message.
|
|
*
|
|
* Parameters are replaced in the message in the same manner that
|
|
* {@link strtr()} uses.
|
|
*
|
|
* Example usage:
|
|
*
|
|
* $translator = new DefaultTranslator();
|
|
*
|
|
* echo $translator->trans(
|
|
* 'This is a {{ var }}.',
|
|
* array('{{ var }}' => 'donkey')
|
|
* );
|
|
*
|
|
* // -> This is a donkey.
|
|
*
|
|
* @param string $id The message id
|
|
* @param array $parameters An array of parameters for the message
|
|
* @param string $domain Ignored
|
|
* @param string $locale Ignored
|
|
*
|
|
* @return string The interpolated string
|
|
*/
|
|
public function trans($id, array $parameters = array(), $domain = null, $locale = null)
|
|
{
|
|
return strtr($id, $parameters);
|
|
}
|
|
|
|
/**
|
|
* Interpolates the given choice message by choosing a variant according to a number.
|
|
*
|
|
* The variants are passed in the message ID using the format
|
|
* "<singular>|<plural>". "<singular>" is chosen if the passed $number is
|
|
* exactly 1. "<plural>" is chosen otherwise.
|
|
*
|
|
* This format is consistent with the format supported by
|
|
* {@link \Symfony\Component\Translation\Translator}, but it does not
|
|
* have the same expressiveness. While Translator supports intervals in
|
|
* message translations, which are needed for languages other than English,
|
|
* this translator does not. You should use Translator or a custom
|
|
* implementation of {@link TranslatorInterface} if you need this or similar
|
|
* functionality.
|
|
*
|
|
* Example usage:
|
|
*
|
|
* echo $translator->transChoice(
|
|
* 'This is {{ count }} donkey.|These are {{ count }} donkeys.',
|
|
* 0,
|
|
* array('{{ count }}' => 0)
|
|
* );
|
|
*
|
|
* // -> These are 0 donkeys.
|
|
*
|
|
* echo $translator->transChoice(
|
|
* 'This is {{ count }} donkey.|These are {{ count }} donkeys.',
|
|
* 1,
|
|
* array('{{ count }}' => 1)
|
|
* );
|
|
*
|
|
* // -> This is 1 donkey.
|
|
*
|
|
* echo $translator->transChoice(
|
|
* 'This is {{ count }} donkey.|These are {{ count }} donkeys.',
|
|
* 3,
|
|
* array('{{ count }}' => 3)
|
|
* );
|
|
*
|
|
* // -> These are 3 donkeys.
|
|
*
|
|
* @param string $id The message id
|
|
* @param int $number The number to use to find the index of the message
|
|
* @param array $parameters An array of parameters for the message
|
|
* @param string $domain Ignored
|
|
* @param string $locale Ignored
|
|
*
|
|
* @return string The translated string
|
|
*
|
|
* @throws InvalidArgumentException If the message id does not have the format
|
|
* "singular|plural".
|
|
*/
|
|
public function transChoice($id, $number, array $parameters = array(), $domain = null, $locale = null)
|
|
{
|
|
$ids = explode('|', $id);
|
|
|
|
if (1 == $number) {
|
|
return strtr($ids[0], $parameters);
|
|
}
|
|
|
|
if (!isset($ids[1])) {
|
|
throw new InvalidArgumentException(sprintf('The message "%s" cannot be pluralized, because it is missing a plural (e.g. "There is one apple|There are %%count%% apples").', $id));
|
|
}
|
|
|
|
return strtr($ids[1], $parameters);
|
|
}
|
|
|
|
/**
|
|
* Not supported.
|
|
*
|
|
* @param string $locale The locale
|
|
*
|
|
* @throws BadMethodCallException
|
|
*/
|
|
public function setLocale($locale)
|
|
{
|
|
throw new BadMethodCallException('Unsupported method.');
|
|
}
|
|
|
|
/**
|
|
* Returns the locale of the translator.
|
|
*
|
|
* @return string Always returns 'en'
|
|
*/
|
|
public function getLocale()
|
|
{
|
|
return 'en';
|
|
}
|
|
}
|