class TranslationManager in Zircon Profile 8.0
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/StringTranslation/TranslationManager.php \Drupal\Core\StringTranslation\TranslationManager
 
Defines a chained translation implementation combining multiple translators.
Hierarchy
- class \Drupal\Core\StringTranslation\TranslationManager implements TranslationInterface, TranslatorInterface
 
Expanded class hierarchy of TranslationManager
1 file declares its use of TranslationManager
- TranslationManagerTest.php in core/
tests/ Drupal/ Tests/ Core/ StringTranslation/ TranslationManagerTest.php  - Contains \Drupal\Tests\Core\StringTranslation\TranslationManagerTest.
 
1 string reference to 'TranslationManager'
- core.services.yml in core/
core.services.yml  - core/core.services.yml
 
1 service uses TranslationManager
File
- core/
lib/ Drupal/ Core/ StringTranslation/ TranslationManager.php, line 16  - Contains \Drupal\Core\StringTranslation\TranslationManager.
 
Namespace
Drupal\Core\StringTranslationView source
class TranslationManager implements TranslationInterface, TranslatorInterface {
  /**
   * An array of active translators keyed by priority.
   *
   * @var array
   *   Array of \Drupal\Core\StringTranslation\Translator\TranslatorInterface objects
   */
  protected $translators = array();
  /**
   * Holds the array of translators sorted by priority.
   *
   * If this is NULL a rebuild will be triggered.
   *
   * @var array
   *   An array of path processor objects.
   *
   * @see \Drupal\Core\StringTranslation\TranslationManager::addTranslator()
   * @see \Drupal\Core\StringTranslation\TranslationManager::sortTranslators()
   */
  protected $sortedTranslators = NULL;
  /**
   * The default langcode used in translations.
   *
   * @var string
   *   A language code.
   */
  protected $defaultLangcode;
  /**
   * Constructs a TranslationManager object.
   *
   * @param \Drupal\Core\Language\LanguageDefault $default_language
   *   The default language.
   */
  public function __construct(LanguageDefault $default_language) {
    $this->defaultLangcode = $default_language
      ->get()
      ->getId();
  }
  /**
   * Appends a translation system to the translation chain.
   *
   * @param \Drupal\Core\StringTranslation\Translator\TranslatorInterface $translator
   *   The translation interface to be appended to the translation chain.
   * @param int $priority
   *   The priority of the logger being added.
   *
   * @return \Drupal\Core\StringTranslation\TranslationManager
   *   The called object.
   */
  public function addTranslator(TranslatorInterface $translator, $priority = 0) {
    $this->translators[$priority][] = $translator;
    // Reset sorted translators property to trigger rebuild.
    $this->sortedTranslators = NULL;
    return $this;
  }
  /**
   * Sorts translators according to priority.
   *
   * @return array
   *   A sorted array of translators objects.
   */
  protected function sortTranslators() {
    $sorted = array();
    krsort($this->translators);
    foreach ($this->translators as $translators) {
      $sorted = array_merge($sorted, $translators);
    }
    return $sorted;
  }
  /**
   * {@inheritdoc}
   */
  public function getStringTranslation($langcode, $string, $context) {
    if ($this->sortedTranslators === NULL) {
      $this->sortedTranslators = $this
        ->sortTranslators();
    }
    foreach ($this->sortedTranslators as $translator) {
      $translation = $translator
        ->getStringTranslation($langcode, $string, $context);
      if ($translation !== FALSE) {
        return $translation;
      }
    }
    // No translator got a translation.
    return FALSE;
  }
  /**
   * {@inheritdoc}
   */
  public function translate($string, array $args = array(), array $options = array()) {
    return new TranslatableMarkup($string, $args, $options, $this);
  }
  /**
   * {@inheritdoc}
   */
  public function translateString(TranslatableMarkup $translated_string) {
    return $this
      ->doTranslate($translated_string
      ->getUntranslatedString(), $translated_string
      ->getOptions());
  }
  /**
   * Translates a string to the current language or to a given language.
   *
   * @param string $string
   *   A string containing the English text to translate.
   * @param array $options
   *   An associative array of additional options, with the following elements:
   *   - 'langcode': The language code to translate to a language other than
   *      what is used to display the page.
   *   - 'context': The context the source string belongs to.
   *
   * @return string
   *   The translated string.
   */
  protected function doTranslate($string, array $options = array()) {
    // If a NULL langcode has been provided, unset it.
    if (!isset($options['langcode']) && array_key_exists('langcode', $options)) {
      unset($options['langcode']);
    }
    // Merge in options defaults.
    $options = $options + [
      'langcode' => $this->defaultLangcode,
      'context' => '',
    ];
    $translation = $this
      ->getStringTranslation($options['langcode'], $string, $options['context']);
    return $translation === FALSE ? $string : $translation;
  }
  /**
   * {@inheritdoc}
   */
  public function formatPlural($count, $singular, $plural, array $args = array(), array $options = array()) {
    return new PluralTranslatableMarkup($count, $singular, $plural, $args, $options, $this);
  }
  /**
   * Sets the default langcode.
   *
   * @param string $langcode
   *   A language code.
   */
  public function setDefaultLangcode($langcode) {
    $this->defaultLangcode = $langcode;
  }
  /**
   * {@inheritdoc}
   */
  public function reset() {
    if ($this->sortedTranslators === NULL) {
      $this->sortedTranslators = $this
        ->sortTranslators();
    }
    foreach ($this->sortedTranslators as $translator) {
      $translator
        ->reset();
    }
  }
}Members
| 
            Name | 
                  Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| 
            TranslationManager:: | 
                  protected | property | The default langcode used in translations. | |
| 
            TranslationManager:: | 
                  protected | property | Holds the array of translators sorted by priority. | |
| 
            TranslationManager:: | 
                  protected | property | An array of active translators keyed by priority. | |
| 
            TranslationManager:: | 
                  public | function | Appends a translation system to the translation chain. | |
| 
            TranslationManager:: | 
                  protected | function | Translates a string to the current language or to a given language. | |
| 
            TranslationManager:: | 
                  public | function | 
            Formats a string containing a count of items. Overrides TranslationInterface:: | 
                  |
| 
            TranslationManager:: | 
                  public | function | 
            Retrieves English string to given language. Overrides TranslatorInterface:: | 
                  |
| 
            TranslationManager:: | 
                  public | function | 
            Resets translation cache. Overrides TranslatorInterface:: | 
                  |
| 
            TranslationManager:: | 
                  public | function | Sets the default langcode. | |
| 
            TranslationManager:: | 
                  protected | function | Sorts translators according to priority. | |
| 
            TranslationManager:: | 
                  public | function | 
            Translates a string to the current language or to a given language. Overrides TranslationInterface:: | 
                  |
| 
            TranslationManager:: | 
                  public | function | 
            Translates a TranslatableMarkup object to a string. Overrides TranslationInterface:: | 
                  |
| 
            TranslationManager:: | 
                  public | function | Constructs a TranslationManager object. | 1 |