salavert / time-ago-in-words

Time ago in words Twig extension for Symfony framework
90 stars 30 forks source link

Time ago in words Twig extension

[Packagist]() Build Status

This is a Twig extension for Symfony Framework where you can easily convert a datetime/timestamp to a distance of time in words.

By example

{{ user.lastLogin | time_ago_in_words }}

Outputs 3 days ago

Installation for Symfony

1) Update your composer.json

2) Register an Extension as a Service

Now you must let the Service Container know about your newly created Twig Extension:

YAML:

# app/config/config.yml
services:
    salavert.twig.time_ago:
        class: Salavert\Twig\Extension\TimeAgoExtension
        arguments: ["@translator"]
        tags:
            - { name: twig.extension }

XML:

# or into your bundle src\Acme\AcmeBundle\Resources\config\services.xml
<service id="salavert.twig.time_ago" class="Salavert\Twig\Extension\TimeAgoExtension">
    <tag name="twig.extension" />
    <argument type="service" id="translator" />
</service>

Usage

To display distance of time in words between a date and current date:

{{ message.created | time_ago_in_words }}

To display distance of time between two custom dates you should use

{{ message.created | distance_of_time_in_words(message.updated) }}

You also have two available options, for both time_ago_in_words & distance_of_time_in_words filters

Thus, if you want to have the months approximation but not the seconds one, you should use:

{{ message.created | time_ago_in_words(false, true) }}

Translations

Add the following translations to your

This is a translation to spanish:

# Time ago in words - Twig Extension
less than %seconds seconds ago: hace menos de %seconds segundos
half a minute ago: hace medio minuto
less than a minute ago: hace menos de un minuto
1 minute ago: hace 1 minuto
%minutes minutes ago: hace %minutes minutos
about 1 hour ago: hace casi 1 hora
about %hours hours ago: hace %hours horas
1 day ago: hace 1 día
%days days ago: hace %days días
"{1} 1 month ago |]1,Inf[ %months months ago": "{1} hace un mes |]1,Inf[ hace %months meses"
"{1} 1 year ago |]1,Inf[ %years years ago":  "hace un año |]1,Inf[ Hace %years años"

In the same case, for future:

# Time ago in words - Twig Extension
in less than %seconds seconds: en menos de %seconds segundos
in half a minute: en medio minuto
in less than a minute: en menos de un minuto
in 1 minute: en 1 minuto
in %minutes minutes: en %minutes minutos
in about 1 hour: dentro de casi 1 hora
in about %hours hours: en %hours horas
in 1 day: en 1 día
in %days days: en %days días

Testing

To launch all tests first make sure dependecies are met with composer and run:

./vendor/phpunit/phpunit/phpunit