forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			172 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			172 lines
		
	
	
		
			5.5 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;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@trigger_error('The class '.__NAMESPACE__.'\DefaultTranslator is deprecated since Symfony 2.7 and will be removed in 3.0. Use Symfony\Component\Translation\IdentityTranslator instead.', E_USER_DEPRECATED);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @deprecated since version 2.7, to be removed in 3.0. Use Symfony\Component\Translation\IdentityTranslator 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 \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 \Symfony\Component\Translation\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';
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |