Co czytasz jest dokumentacja Gałązka, a nie Symfony2, nawet jeśli oba są wykonane przez SensioLabs.
Jeśli używasz Symfony ram full-komin, Symfony \ Komponent \ Translation \ TranslatorInterfacejest już zdefiniowany jako argument konstruktora swojego rozszerzenia patyk.
Aby upewnić się, spojrzeć na plik znajduje się na \ vendor \ gałązka \ rozszerzeń \ lib \ Gałązka \ Extensions \ Extension \ date.php
Powinieneś zobaczyć coś takiego:
*\vendor\twig\extensions\lib\Twig\Extensions\Extension\date.php*
<?php
/**
* This file is part of Twig.
*
* (c) 2014 Fabien Potencier
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use Symfony\Component\Translation\TranslatorInterface;
/**
* @author Robin van der Vleuten <[email protected]>
*/
class Twig_Extensions_Extension_Date extends Twig_Extension
{
public static $units = array(
'y' => 'year',
'm' => 'month',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
/**
* @var TranslatorInterface
*/
private $translator;
/**
* Constructor.
*
* @param TranslatorInterface $translator A TranslatorInterface instance.
*/
public function __construct(TranslatorInterface $translator = null)
{
$this->translator = $translator;
}
// etc.
Jeśli to jest to, co masz po swojej stronie, to musisz teraz dokonać tłumaczenia.
Symfony2 nie jest dostarczana z gotowym plikiem przetłumaczonym, w zależności od ustawień użytkownika, musisz to zrobić (lub znaleźć osobę, która już to zrobiła i jest OK, aby udostępnić ją ty).
Najpierw dodaj ten argument gałązka Extension w services.yml:
*services.yml*
twig.extension.date:
class: Twig_Extensions_Extension_Date
arguments: ["@translator"] // careful of quotes
tags:
- { name: twig.extension }
Następnie utwórz "date.fr.xliff" w miejscu \ app \ Resources \ tłumaczenia. Dostosuj lokalizację, jeśli pracujesz w Pakiecie własnym, tzn. Innym od AppBundle. Oczywiście, w zależności od języka, którego szukasz, dostosuj "fr" (np. "De", "es" ...). Dlaczego rozszerzenie ".xliff"? Oczywiście możesz na przykład utworzyć plik ".yml". Ale użycie ".xliff" pozwala ci wykorzystać to, co proponuję ci dalej.
Następnie, jeśli będę kontynuować z francuskim przykładem tłumaczenia, otwórz "date.fr.wliff”pliku i kopiuj/wklej translation provided by the KnpTimeBundle.
Nie zapomnij wyczyścić pamięć podręczną dev jeśli trzeba.
Jeśli szukasz tłumaczenia, które odbędzie się w szablonie gałązka, tylko użyć filtru bez zmieniania czegokolwiek (nie starają się dodać drugi filtr „| trans”):
{{ user.createdAt|time_diff }}
oczywiście zastąpić „user.createdAt” przez co trzeba tam
przypadku. chcesz, po prostu zaimplementuj K npTimeBundle w aplikacji, aby zrobić to wszystko dla ciebie. W przeciwnym razie, możesz kopiować/wklejać pliki tłumaczeń dostarczone przez KnpTimeBundle dla ogromnej ilości różnych języków, po prostu zadbaj o zastąpienie ich nazwy pliku "time.fr.xliff" słowem "date.fr.xliff" , który jest potrzebny przez rozszerzenie Twig dostępne w pakiecie Symfony2.
Jeszcze jeden krok: musisz odkomentować tę linię w config.yml: 'translator: {fallbacks: ["% locale% "]}' –
Pomogło mi to. Dziękujemy za przesłanie odpowiedzi –