123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- namespace Drupal\Core\StringTranslation;
- /**
- * Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface.
- *
- * Using this trait will add t() and formatPlural() methods to the class. These
- * must be used for every translatable string, similar to how procedural code
- * must use the global functions t() and \Drupal::translation()->formatPlural().
- * This allows string extractor tools to find translatable strings.
- *
- * If the class is capable of injecting services from the container, it should
- * inject the 'string_translation' service and assign it to
- * $this->stringTranslation.
- *
- * @see \Drupal\Core\StringTranslation\TranslationInterface
- * @see container
- *
- * @ingroup i18n
- */
- trait StringTranslationTrait {
- /**
- * The string translation service.
- *
- * @var \Drupal\Core\StringTranslation\TranslationInterface
- */
- protected $stringTranslation;
- /**
- * Translates a string to the current language or to a given language.
- *
- * See \Drupal\Core\StringTranslation\TranslatableMarkup::__construct() for
- * important security information and usage guidelines.
- *
- * In order for strings to be localized, make them available in one of the
- * ways supported by the
- * @link https://www.drupal.org/node/322729 Localization API @endlink. When
- * possible, use the \Drupal\Core\StringTranslation\StringTranslationTrait
- * $this->t(). Otherwise create a new
- * \Drupal\Core\StringTranslation\TranslatableMarkup object.
- *
- * @param string $string
- * A string containing the English text to translate.
- * @param array $args
- * (optional) An associative array of replacements to make after
- * translation. Based on the first character of the key, the value is
- * escaped and/or themed. See
- * \Drupal\Component\Render\FormattableMarkup::placeholderFormat() for
- * details.
- * @param array $options
- * (optional) An associative array of additional options, with the following
- * elements:
- * - 'langcode' (defaults to the current language): A language code, to
- * translate to a language other than what is used to display the page.
- * - 'context' (defaults to the empty context): The context the source
- * string belongs to. See the
- * @link i18n Internationalization topic @endlink for more information
- * about string contexts.
- *
- * @return \Drupal\Core\StringTranslation\TranslatableMarkup
- * An object that, when cast to a string, returns the translated string.
- *
- * @see \Drupal\Component\Render\FormattableMarkup::placeholderFormat()
- * @see \Drupal\Core\StringTranslation\TranslatableMarkup::__construct()
- *
- * @ingroup sanitization
- */
- protected function t($string, array $args = [], array $options = []) {
- return new TranslatableMarkup($string, $args, $options, $this->getStringTranslation());
- }
- /**
- * Formats a string containing a count of items.
- *
- * @see \Drupal\Core\StringTranslation\TranslationInterface::formatPlural()
- */
- protected function formatPlural($count, $singular, $plural, array $args = [], array $options = []) {
- return new PluralTranslatableMarkup($count, $singular, $plural, $args, $options, $this->getStringTranslation());
- }
- /**
- * Returns the number of plurals supported by a given language.
- *
- * @see \Drupal\locale\PluralFormulaInterface::getNumberOfPlurals()
- */
- protected function getNumberOfPlurals($langcode = NULL) {
- if (\Drupal::hasService('locale.plural.formula')) {
- return \Drupal::service('locale.plural.formula')->getNumberOfPlurals($langcode);
- }
- // We assume 2 plurals if Locale's services are not available.
- return 2;
- }
- /**
- * Gets the string translation service.
- *
- * @return \Drupal\Core\StringTranslation\TranslationInterface
- * The string translation service.
- */
- protected function getStringTranslation() {
- if (!$this->stringTranslation) {
- $this->stringTranslation = \Drupal::service('string_translation');
- }
- return $this->stringTranslation;
- }
- /**
- * Sets the string translation service to use.
- *
- * @param \Drupal\Core\StringTranslation\TranslationInterface $translation
- * The string translation service.
- *
- * @return $this
- */
- public function setStringTranslation(TranslationInterface $translation) {
- $this->stringTranslation = $translation;
- return $this;
- }
- }
|