You are here

class DefaultTranslator in Plug 7

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>

Hierarchy

Expanded class hierarchy of DefaultTranslator

4 files declare their use of DefaultTranslator
LegacyValidator2Dot5ApiTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Validator/LegacyValidator2Dot5ApiTest.php
LegacyValidatorLegacyApiTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Validator/LegacyValidatorLegacyApiTest.php
RecursiveValidator2Dot5ApiTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/Validator/RecursiveValidator2Dot5ApiTest.php
ValidatorTest.php in lib/Symfony/validator/Symfony/Component/Validator/Tests/ValidatorTest.php

File

lib/Symfony/validator/Symfony/Component/Validator/DefaultTranslator.php, line 48

Namespace

Symfony\Component\Validator
View source
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';
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DefaultTranslator::getLocale public function Returns the locale of the translator. Overrides TranslatorInterface::getLocale
DefaultTranslator::setLocale public function Not supported. Overrides TranslatorInterface::setLocale
DefaultTranslator::trans public function Interpolates the given message. Overrides TranslatorInterface::trans
DefaultTranslator::transChoice public function Interpolates the given choice message by choosing a variant according to a number. Overrides TranslatorInterface::transChoice