Poprawny język tłumaczeń w module admin w Symfony

04-02-2010 przez Michał Bielecki Zostaw odpowiedź »

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.

Reklama

1 komentarz

  1. Dawid says:

    Wielkie dzięki.

Zostaw odpowiedź