lokalisiertes time_ago_in_words für symfony

Eine Funktion für sog. -Pretty Dates- ist im symfony Date Helper ja enthalten. Diese ist aber standardmäßig auf Englisch lokalisiert. Will man die Ausgabe:
2 minutes ago
aber lieber zB auf Deutsch haben:
vor 2 Minuten
muss man das symfony erstmal beibringen.

Zunächst einmal muss man in der settings.yml die culture einstellen:

...
all:
  .settings:
    i18n:                   on 
    default_culture:        de_DE        # Default user culture
...

Dann im apps/frontend/i18n Ordner ein Wörterbuch anlegen: messages.de_DE.xml.
In diesem file stehen die Übersetzungen.
Hier ist mal der für time_ago_in_words

<?xml version="1.0" ?>
<xliff version="1.0">
  <file orginal="global" source-language="en_US" datatype="plaintext">
    <body>
      <trans-unit id="3">
        <source>1 minute</source>
        <target>1 Minute</target>
      </trans-unit>
      <trans-unit id="4">
        <source>%minutes% minutes</source>
        <target>%minutes% Minuten</target>
      </trans-unit>
      <trans-unit id="5">
        <source>less than a minute</source>
        <target>weniger als eine Minute</target>
      </trans-unit>
      <trans-unit id="6">
        <source>less than 5 seconds</source>
        <target>weniger als 5 Sekunden</target>
      </trans-unit>
      <trans-unit id="7">
        <source>less than 10 seconds</source>
        <target>weniger als 10 Sekunden</target>
      </trans-unit>
      <trans-unit id="8">
        <source>less than 20 seconds</source>
        <target>weniger als 20 Sekunden</target>
      </trans-unit>
      <trans-unit id="9">
        <source>half a minute</source>
        <target>eine halbe Minute</target>
      </trans-unit>
      <trans-unit id="10">
        <source>%minutes% minutes</source>
        <target>%minutes% Minuten</target>
      </trans-unit>
      <trans-unit id="11">
        <source>%minutes% minutes</source>
        <target>%minutes% Minuten</target>
      </trans-unit>
      <trans-unit id="12">
        <source>about 1 hour</source>
        <target>ca. 1 Stunde</target>
      </trans-unit>
      <trans-unit id="13">
        <source>about %hours% hours</source>
        <target>ca. %hours% Stunden</target>
      </trans-unit>
      <trans-unit id="14">
        <source>1 day</source>
        <target>1 Tag</target>
      </trans-unit>
      <trans-unit id="15">
        <source>%days% days</source>
        <target>%days% Tage</target>
      </trans-unit>
      <trans-unit id="16">
        <source>about 1 month</source>
        <target>ca. 1 Monat</target>
      </trans-unit>
      <trans-unit id="17">
        <source>%months% months</source>
        <target>%months% Monate</target>
      </trans-unit>
      <trans-unit id="18">
        <source>about 1 year</source>
        <target>ca. 1 Jahr</target>
      </trans-unit>
      <trans-unit id="19">
        <source>over %years% years</source>
        <target>über %years% Jahre</target>
      </trans-unit>
    </body>
  </file>
</xliff>

Dann den Cache leeren und fertig.

Ach so, ganz wichtig:

If you want to see the application with the new default culture, you need to clear the domain cookies or restart your browser.

One Reply to “lokalisiertes time_ago_in_words für symfony”

Comments are closed.