StringTranslationTrait.php in Drupal 10
Same filename and directory in other branches
Namespace
Drupal\Core\StringTranslationFile
core/lib/Drupal/Core/StringTranslation/StringTranslationTrait.phpView source
<?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;
}
}
Traits
Name | Description |
---|---|
StringTranslationTrait | Wrapper methods for \Drupal\Core\StringTranslation\TranslationInterface. |