/**
  * @param PreciseDifference $difference
  * @param string            $locale
  *
  * @return string
  */
 public function formatDifference(PreciseDifference $difference, $locale = 'en')
 {
     $diff = array();
     foreach ($difference->getCompoundResults() as $result) {
         $diff[] = $this->translator->transChoice('compound.' . $result->getUnit()->getName(), $result->getQuantity(), array('%count%' => $result->getQuantity()), 'difference', $locale);
     }
     return $this->translator->trans('compound.' . ($difference->isPast() ? 'past' : 'future'), array('%value%' => implode(', ', $diff)), 'difference', $locale);
 }
 /**
  * @param PreciseDifference $difference
  * @param string $locale
  * @return string
  */
 public function formatDifference(PreciseDifference $difference, $locale = 'en')
 {
     $diff = array();
     foreach ($difference->getCompoundResults() as $result) {
         $diff[] = $this->translator->transChoice("compound." . $result->getUnit()->getName(), $result->getQuantity(), array('%count%' => $result->getQuantity()), 'difference', $locale);
     }
     $suffix = $difference->isPast() ? 'compound.ago' : 'compound.from_now';
     return join(", ", $diff) . ' ' . $this->translator->trans($suffix, array(), 'difference', $locale);
 }
 function it_format_compound_datetime_diff_for_specific_locale(PreciseDifference $diff, CompoundResult $dayResult, CompoundResult $hourResult)
 {
     $dayResult->getUnit()->willReturn(new Day());
     $dayResult->getQuantity()->willReturn(10);
     $hourResult->getUnit()->willReturn(new Hour());
     $hourResult->getQuantity()->willReturn(5);
     $diff->getCompoundResults()->willReturn(array($dayResult, $hourResult));
     $diff->isPast()->willReturn(false);
     $this->formatDifference($diff, 'ru')->shouldReturn('через 10 дней, 5 часов');
 }