[ * 'plurals' => 2, * 'formula' => [ * // @todo * ] * ], * ] * @endcode * @var [] */ protected $formulae; /** * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager * @param \Drupal\Core\State\StateInterface $state */ public function __construct(LanguageManagerInterface $language_manager, StateInterface $state) { $this->languageManager = $language_manager; $this->state = $state; } /** * {@inheritdoc} */ public function setPluralFormula($langcode, $plural_count, array $formula) { // Ensure that the formulae are loaded. $this->loadFormulae(); $this->formulae[$langcode] = [ 'plurals' => $plural_count, 'formula' => $formula, ]; $this->state->set('locale.translation.formulae', $this->formulae); return $this; } /** * {@inheritdoc} */ public function getNumberOfPlurals($langcode = NULL) { // Ensure that the formulae are loaded. $this->loadFormulae(); // Set the langcode to use. $langcode = $langcode ?: $this->languageManager->getCurrentLanguage()->getId(); // We assume 2 plurals if there is no explicit information yet. if (!isset($this->formulae[$langcode]['plurals'])) { return 2; } return $this->formulae[$langcode]['plurals']; } /** * {@inheritdoc} */ public function getFormula($langcode) { $this->loadFormulae(); return isset($this->formulae[$langcode]['formula']) ? $this->formulae[$langcode]['formula'] : FALSE; } /** * Loads the formulae and stores them on the PluralFormula object if not set. * * @return array */ protected function loadFormulae() { if (!isset($this->formulae)) { $this->formulae = $this->state->get('locale.translation.formulae', []); } } /** * {@inheritdoc} */ public function reset() { $this->formulae = NULL; return $this; } }