Mercurial > hg > isophonics-drupal-site
view core/modules/locale/src/PluralFormula.php @ 19:fa3358dc1485 tip
Add ndrum files
author | Chris Cannam |
---|---|
date | Wed, 28 Aug 2019 13:14:47 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
<?php namespace Drupal\locale; use Drupal\Core\Language\LanguageManagerInterface; use Drupal\Core\State\StateInterface; /** * Manages the storage of plural formula per language in state. * * @see \Drupal\locale\PoDatabaseWriter::setHeader() */ class PluralFormula implements PluralFormulaInterface { /** * @var \Drupal\Core\Language\LanguageManagerInterface */ protected $languageManager; /** * @var \Drupal\Core\State\StateInterface */ protected $state; /** * The plural formula and count keyed by langcode. * * For example the structure looks like this: * @code * [ * 'de' => [ * 'plurals' => 2, * 'formula' => [ * // @todo * ] * ], * ] * @endcode * @var array */ 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; } }