Od kilku dni bawię się z Symfony. Cały framework wygląda naprawdę fajnie, tym bardziej, że od pewnego już czasu korzystałem z niektórych zawartch w nim elementów (np. Propel).
Jedną z fajnieszych rzeczy w Symfony jest możliwość automatycznego wygenerowania panelu administracyjnego dla przygotowanego wcześniej modelu. Można go później do woli modyfikować i ulepszać, ale na samym początku zdecydowanie oszczędza to wiele godzin/dni pracy.
Łatwo znaleźć można (na stronie Symfony, lub przez wyszukiwarki) informację jak zmienić większość rzeczy (etykiety przy inputach, nazwy nagłówków, pola z bazy danych które mają być edytowalne, itp). Cały dzień dziś jednak straciłem na poszukiwaniu rozwiązania dla możliwości przetłumaczenia całego panelu.
Na początku kombinowałem z plikiem apps/{aplikacja}/modules/{moduł}/config/generator.yml można w nim bowiem zmieniać wiele. Można na przyklad ustawić nazwy akcji:
config:
actions:
_list: { label: Lista }
_save: { label: Zapisz }
_delete: { label: Usuń }
_new: { label: Dodaj }
_edit: { label: Edytuj }
Po częsci pomaga to w tłumaczeniu panelu, ale tylko częściowo – bo tak na prawdę zmiany te są zupełnie niepotrzebne w tym wypadku. Okazuje się bowiem, że Symfony ma już gotowe tłumaczenia (między innymi) dla języka polskiego dla tych akcji, ale i nie tylko.
W wielu wątkach w Internecie znaleźć można informacje o potrzebie ustawienia opcji .settings.default_culture na pl_PL w pliku apps/{aplikacja}/config/settings.yml. To jednak nie wystarczy. Nie wiem jak wyglądało to w starszych wersjach Symfony, ale przynajmnie w Symfony 1.4 opcja .settings.i18n ustawioną jest standardowo na “off”. Tak więc, aby tłumaczenia zadziałały poprawnie potrzeba, aby plik settings.yml w sekcji settings wyglądał mniej więcej tak:
all:
.settings:
i18n: on
default_culture: pl_PL
csrf_secret: .....
I to by było na tyle. Po ustawieniu tych opcji oraz po zresetowaniu cache’a symfony (poleceniem ./symfony cc) oraz plików cookie w przeglądarce cały panel administracyjny jest przetłumaczony na język polski.