Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 translation, parameter not working

I'm having a problem with Symfony2's translator.

I have a DateTimeFormatter class (simplified here):

<?php

namespace Project\CommonBundle\Util;

use DateTime;
use Symfony\Component\Translation\TranslatorInterface;

class DateTimeFormatter
{
    private $translator;

    public function __construct(TranslatorInterface $translator)
    {
        $this->translator = $translator;
    }

    public function format(DateTime $datetime, array $options = array())
    {
        $delta = time() - $datetime->getTimestamp();

        return $this->translator->trans('datetime_formatter.seconds_ago', array('%seconds%', $delta);
    }
}

With translation file:

datetime_formatter:
    seconds_ago: %seconds% seconds ago

And I configured it as a service:

parameters:
    datetime_formatter.class: Skepin\CommonBundle\Util\DateTimeFormatter
services:
    common.util.datetime_formatter:
            class: %datetime_formatter.class%
            arguments: [@translator]

The problem is: when I use it, the text displayed is %seconds% seconds ago, the parameter is not replaced. What am I missing?

Thanks!

like image 721
Nanocom Avatar asked Jan 31 '26 22:01

Nanocom


1 Answers

Problem resolved:

return $this->translator->trans('datetime_formatter.seconds_ago', array('%seconds%' => $delta);

instead of:

return $this->translator->trans('datetime_formatter.seconds_ago', array('%seconds%', $delta);

Stupid error...

like image 77
Nanocom Avatar answered Feb 02 '26 12:02

Nanocom



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!