![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam kolejny problem logistyczny. Zadanie wydaje się proste, formularze mają mieć tłumaczenia opisów pól. Wszystko wydaje się proste, w szablonie *.twig czegoś w rodzaju: i po sprawie. Z formualrzami już nie ma tak prosto, bo formualrz domyślnie może wyglądać tak: ...więc trzeba by zdefiniować odpowiednie teksty w samym pliku formularza *Type.php. Tylko, że tam nie mam dostępu do metody $this->get('translate'). Możecie mi podpowiedzieć, jakiś sposób tłumaczenie? Może to kwestia dodefiniowania czegoś w formularzu? Mnie przychodzi albo tłumaczenie po stronie pliku twig każdego pola oddzielnie albo podmiana form_label(filter_form) podobnie jak podają na stronie http://symfony.com/doc/current/cookbook/fo...to-field-labels Chyba, że mogę uzyskać dostęp do obiektu translatora jakoś z poziomu pliku *Type.php Ciągle się uczę, proszę więc o wyrozumiałość. To pewnie jest oczywiste jak już się to wie. -- Znalazłem coś takiego: http://sf.khepin.com/2012/01/form-label-tr...n-in-symfony-2/ Warto przetestować... -- Niestety powyższa metoda kiepsko sobie radzi z polami entity kiedy mają być pokazane jako chceckboxy. Są wtedy tłumaczone wartości a nie sam opis pola. -- Ostatecznie rzecz rozwiązałem średnio fajnie, ale działa i działa tak jak chcę. Może komuś się przyda. W kontrolerze po utworzeniu obiektu fotmularza przekazuję obiekt z translatorem:
Same tłumaczenia umieściłem w Resources\translations\messages.pl.yml dzięki czemu nie muszę niczego więcej podawać translatorowi. W samej klasie TextFilterType jest po prostu metoda:
oczywiście gdzieś wcześniej deklaruję private $tr; w samym formularzu używam już tylko
Osobiście uważam, że to duże niedopatrzenie, że muszę dookoła trochę rzecz robić. W końcu opisy pól zwyke też się tłumaczy a zalecenie jest, żeby korzystać właśnie z katalogu Form do trzymania tam formatek. Jeśli ktoś ma lepsze rozwiązanie, to poproszę bardzo, nawet na priv jakoś. Ten post edytował rcetra 25.01.2012, 12:57:10 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 435 Pomógł: 40 Dołączył: 16.02.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
W Symfony2 standardowe szablony pól formularzy / labela uwzględniają tłumaczenie.
Spójrz np na szablon form_label (czyli to co wywołujesz w Twigu: {{ form_label(form.input1) }} https://github.com/symfony/symfony/blob/mas..._label.html.php Widać tutaj, że następuje próba tłumaczenia tekstu labela. Więc spróbuj ustawić sobie normalnie labele dla pól w swoim pliku *Type i następnie dodaj w pliku z tłumaczeniami ich przetłumaczone odpowiedniki. Powinno zadziałać. ... więc Twój kod
powoduje to, że następuje 'podwójne tłumaczenie' labela. (Najpierw to twoje tr->trans a potem trans z szablonu form_label). Spróbuj zmienić na samo: 'label' => 'text.filter.lang' i daj znać czy działa tak samo jak Twoja wersja. Ten post edytował ano 27.01.2012, 22:39:05 -------------------- Linkedin | ...
|
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 16.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
Hej, działa!
Wniosek jest taki, że to domyślne działanie tylko kiedy teksty są umieszczone w pliku messages.XX.yml. Ta zmienna $translation_domain mnie intryguje, bo jest z tego co pamiętam parametrem skąd trans() ma brać teksty. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 01:14 |