2015-03-29 8 views
5

Ich habe eine Entity-Methode, die eine PHP DateInterval zwischen einer DateTime Eigenschaft dieser Entität und jetzt, um zu wissen, wie viel Zeit noch vor diesem Datetime.Localize dateinterval in Zweig

Ich möchte Zweig dieses Intervall anzuzeigen, so habe ich so etwas wie das:

{{ myEntity.getTimeRemaining | date("%D days %H Hours %i Mins ") }} 

Es funktioniert gut.

Nun, wie kann ich dieses Format lokalisieren? (und schließlich den Plural betrachten) Ich habe transchoice Methode gefunden, aber es scheint nur um Datum zu lokalisieren, kein Intervall.

+0

Gute Frage. Können Sie genauer über "lokalisiert" sein? Meinst du nur übersetzt zu dem relevanten Gebietsschema, oder gibt es etwas anderes? –

+0

Ja, ich möchte nur eine Zeichenfolge übersetzen. So zum Beispiel "% D jours% H Heures% i Minuten" ist Benutzer local ist Französisch. Ich würde gerne den korrekten Plural auch anzeigen, aber das wäre ein Bonus :) –

+0

Ich denke, dass Sie einen benutzerdefinierten Twig-Filter benötigen, der den Übersetzer als Argument erhält, die Übersetzung für jeden der erforderlichen Begriffe bekommt, und dann tut die Verkettung manuell (sagen wir mit 'sprintf()'). –

Antwort

4

können Sie verwenden die KnpTimeBundle

ich denke, das Bündel der Implementierung vereinfachen können, so können Sie die Zeitdifferenz zwischen jetzt direkt Dump ohne durch eine DateInterval passieren, können Sie einfach mit dem aktuellen Datum:

{# Returns something like "3 minutes ago" #} 
{{ time_diff(myEntity.getMyTimeField) }} 

Dieser Vergleich mit dem anderen Termin:

{# Returns something like "3 minutes ago" #} 
{{ time_diff(myEntity.getMyTimeField , to) }} 

die Übersetzung standardmäßig aktiviert ist, einfach die Übersetzungen fi überprüfen les oder hinzufügen, wie Sie brauchen.

Hoffe diese Hilfe