Mercurial > hg > isophonics-drupal-site
comparison core/lib/Drupal/Core/Annotation/PluralTranslation.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Core\Annotation; | |
4 | |
5 use Drupal\Component\Annotation\AnnotationBase; | |
6 | |
7 /** | |
8 * Defines an annotation object for strings that require plural forms. | |
9 * | |
10 * Note that the return values for both 'singular' and 'plural' keys needs to be | |
11 * passed to | |
12 * \Drupal\Core\StringTranslation\TranslationInterface::formatPlural(). | |
13 * | |
14 * For example, the annotation can look like this: | |
15 * @code | |
16 * label_count = @ PluralTranslation( | |
17 * singular = "@count item", | |
18 * plural = "@count items", | |
19 * context = "cart_items", | |
20 * ), | |
21 * @endcode | |
22 * Remove spaces after @ in your actual plugin - these are put into this sample | |
23 * code so that it is not recognized as annotation. | |
24 * | |
25 * Code samples that make use of this annotation class and the definition sample | |
26 * above: | |
27 * @code | |
28 * // Returns: 1 item | |
29 * $entity_type->getCountLabel(1); | |
30 * | |
31 * // Returns: 5 items | |
32 * $entity_type->getCountLabel(5); | |
33 * @endcode | |
34 * | |
35 * @see \Drupal\Core\Entity\EntityType::getSingularLabel() | |
36 * @see \Drupal\Core\Entity\EntityType::getPluralLabel() | |
37 * @see \Drupal\Core\Entity\EntityType::getCountLabel() | |
38 * | |
39 * @ingroup plugin_translatable | |
40 * | |
41 * @Annotation | |
42 */ | |
43 class PluralTranslation extends AnnotationBase { | |
44 | |
45 /** | |
46 * The string for the singular case. | |
47 * | |
48 * @var string | |
49 */ | |
50 protected $singular; | |
51 | |
52 /** | |
53 * The string for the plural case. | |
54 * | |
55 * @var string | |
56 */ | |
57 protected $plural; | |
58 | |
59 /** | |
60 * The context the source strings belong to. | |
61 * | |
62 * @var string | |
63 */ | |
64 protected $context; | |
65 | |
66 /** | |
67 * Constructs a new class instance. | |
68 * | |
69 * @param array $values | |
70 * An associative array with the following keys: | |
71 * - singular: The string for the singular case. | |
72 * - plural: The string for the plural case. | |
73 * - context: The context the source strings belong to. | |
74 * | |
75 * @throws \InvalidArgumentException | |
76 * Thrown when the keys 'singular' or 'plural' are missing from the $values | |
77 * array. | |
78 */ | |
79 public function __construct(array $values) { | |
80 if (!isset($values['singular'])) { | |
81 throw new \InvalidArgumentException('Missing "singular" value in the PluralTranslation annotation'); | |
82 } | |
83 if (!isset($values['plural'])) { | |
84 throw new \InvalidArgumentException('Missing "plural" value in the PluralTranslation annotation'); | |
85 } | |
86 | |
87 $this->singular = $values['singular']; | |
88 $this->plural = $values['plural']; | |
89 if (isset($values['context'])) { | |
90 $this->context = $values['context']; | |
91 } | |
92 } | |
93 | |
94 /** | |
95 * {@inheritdoc} | |
96 */ | |
97 public function get() { | |
98 return [ | |
99 'singular' => $this->singular, | |
100 'plural' => $this->plural, | |
101 'context' => $this->context, | |
102 ]; | |
103 } | |
104 | |
105 } |