PluralTranslation.php

Same filename in other branches
  1. 9 core/lib/Drupal/Core/Annotation/PluralTranslation.php
  2. 8.9.x core/lib/Drupal/Core/Annotation/PluralTranslation.php
  3. 11.x core/lib/Drupal/Core/Annotation/PluralTranslation.php

Namespace

Drupal\Core\Annotation

File

core/lib/Drupal/Core/Annotation/PluralTranslation.php

View source
<?php

namespace Drupal\Core\Annotation;

use Drupal\Component\Annotation\AnnotationBase;

/**
 * Defines an annotation object for strings that require plural forms.
 *
 * Note that the return values for both 'singular' and 'plural' keys needs to be
 * passed to
 * \Drupal\Core\StringTranslation\TranslationInterface::formatPlural().
 *
 * For example, the annotation can look like this:
 * @code
 *   label_count = @ PluralTranslation(
 *     singular = "@count item",
 *     plural = "@count items",
 *     context = "cart_items",
 *   ),
 * @endcode
 * Remove spaces after @ in your actual plugin - these are put into this sample
 * code so that it is not recognized as annotation.
 *
 * Code samples that make use of this annotation class and the definition sample
 * above:
 * @code
 *   // Returns: 1 item
 *   $entity_type->getCountLabel(1);
 *
 *   // Returns: 5 items
 *   $entity_type->getCountLabel(5);
 * @endcode
 *
 * @see \Drupal\Core\Entity\EntityType::getSingularLabel()
 * @see \Drupal\Core\Entity\EntityType::getPluralLabel()
 * @see \Drupal\Core\Entity\EntityType::getCountLabel()
 *
 * @ingroup plugin_translatable
 *
 * @Annotation
 */
class PluralTranslation extends AnnotationBase {
    
    /**
     * The string for the singular case.
     *
     * @var string
     */
    protected $singular;
    
    /**
     * The string for the plural case.
     *
     * @var string
     */
    protected $plural;
    
    /**
     * The context the source strings belong to.
     *
     * @var string
     */
    protected $context;
    
    /**
     * Constructs a new class instance.
     *
     * @param array $values
     *   An associative array with the following keys:
     *   - singular: The string for the singular case.
     *   - plural: The string for the plural case.
     *   - context: The context the source strings belong to.
     *
     * @throws \InvalidArgumentException
     *   Thrown when the keys 'singular' or 'plural' are missing from the $values
     *   array.
     */
    public function __construct(array $values) {
        if (!isset($values['singular'])) {
            throw new \InvalidArgumentException('Missing "singular" value in the PluralTranslation annotation');
        }
        if (!isset($values['plural'])) {
            throw new \InvalidArgumentException('Missing "plural" value in the PluralTranslation annotation');
        }
        $this->singular = $values['singular'];
        $this->plural = $values['plural'];
        if (isset($values['context'])) {
            $this->context = $values['context'];
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public function get() {
        return [
            'singular' => $this->singular,
            'plural' => $this->plural,
            'context' => $this->context,
        ];
    }

}

Classes

Title Deprecated Summary
PluralTranslation Defines an annotation object for strings that require plural forms.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.