Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Validator/DefaultTranslator.php
Строк: 261
<?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 SymfonyComponentValidator;

trigger_error('The class '.__NAMESPACE__.'DefaultTranslator is deprecated since version 2.7 and will be removed in 3.0. Use SymfonyComponentTranslationIdentityTranslator instead.'E_USER_DEPRECATED);

use 
SymfonyComponentTranslationTranslatorInterface;
use 
SymfonyComponentValidatorExceptionBadMethodCallException;
use 
SymfonyComponentValidatorExceptionInvalidArgumentException;

/**
 * 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 SymfonyComponentTranslationTranslator} and can be used in places
 * where translation is not required by default but should be optional.
 *
 * @deprecated since version 2.7, to be removed in 3.0. Use SymfonyComponentTranslationIdentityTranslator instead.
 *
 * @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 SymfonyComponentTranslationTranslator}, 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 (
== $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';
    }
}
Онлайн: 1
Реклама