Comment traduire des chaînes plurielles avec Drush?

8

Si nous voulons traduire une chaîne plurielle en Drupal, nous pouvons utiliser la format_plural()fonction.

Si vous programmez des commandes drush, vous pouvez utiliser la dt()fonction pour traduire des chaînes, mais si vous voulez traduire plusieurs chaînes en drush, quelle est la fonction pour accomplir cela?

Adrian Cid Almaguer
la source

Réponses:

8

Entre les fonctions Drush qui traitent du texte , il n'y a pas une telle fonction, mais vous pouvez l'implémenter en utilisant le code de format_plural () , en remplaçant tout appel à t()par des appels à dt().

function drush_plural($count, $singular, $plural, array $args = array(), array $options = array()) {
  $args['@count'] = $count;
  if ($count == 1) {
    return dt($singular, $args, $options);
  }

  // Get the plural index through the gettext formula.
  $index = (function_exists('locale_get_plural')) ? locale_get_plural($count, isset($options['langcode']) ? $options['langcode'] : NULL) : -1;
  // If the index cannot be computed, use the plural as a fallback (which
  // allows for most flexiblity with the replaceable @count value).
  if ($index < 0) {
    return dt($plural, $args, $options);
  }
  else {
    switch ($index) {
      case "0":
        return dt($singular, $args, $options);
      case "1":
        return dt($plural, $args, $options);
      default:
        unset($args['@count']);
        $args['@count[' . $index . ']'] = $count;
        return dt(strtr($plural, array('@count' => '@count[' . $index . ']')), $args, $options);
    }
  }
}
kiamlaluno
la source