Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] translacja panelu administracyjnego
Forum PHP.pl > Forum > PHP > Frameworki
phpion
Witam,
możliwe, że ktoś z Was już coś takiego robił; szukając w googlach oraz bezpośrednio na forum Symfony nic nie znalazłem więc piszę tutaj.

W jaki najprostszy sposób zmienić wyświetlane napisy w generatorze admina? Przeglądałem źródła admina i część elementów jest wyświetlania poprzez gettext. Spróbowałem więc dodać do app/backend/i18n pliczek messages.pl.xml wrzucając tam tłumaczenia jednak to nie pomogło (oczywiście i18n on + default_culture pl). Udało mi się przetłumaczyć dla testu napis "create" poprzez edycję samych źródeł szablonów jednak nie jest to zbyt dobre wyjście (co podczas update'u?). Ponadto nazwa buttona określa jego klasę i identyfikator w HTML (oraz samo location.href):
  1. <input class="sf_admin_action_create" value="create" type="button" onclick="document.location.href='/backend_dev.php/region/create';" />

na
  1. <input class="sf_admin_action_utworz" value="utworz" type="button" onclick="document.location.href='/backend_dev.php/region/utworz';" />

więc na pewno nie tędy droga.

Pytanie więc - jak Wy to robicie? O ile w ogóle robicie... ja po raz pierwszy zostałem "zmuszony" do zmiany języka admina na polski.

Pozdrawiam: pion
destroyerr
U mnie działa normalnie. Jeśli nie zmieniałeś nic w generatorze to wszystko powinno być ok. Pokaż plik messages.pl.xml, sprawdź też (np. w layout.php) czy na pewno default_culture jest odpowiednio ustawione.
phpion
Niestety nie mam już tych plików. Po prostu próbując coraz to innego rozwiązania usuwałem ślady po poprzednim. Ale mogę powiedzieć, że plik wyglądał standardowo:
  1. ...
  2. <source>create</source>
  3. <target>Utwórz</target>
  4. ...

plik ten (messages.pl.xml) wrzuciłem do app/backend/i18n; w app/backend/i18n/config/i18n.yml ustawiłem default_culture na "pl" (oczywiście wcześniej włączyłem i18n on w settings.yml.

Jeśli mógłbyś to prosiłbym o przesłanie Twoich plików z tłumaczeniami (adres maila pozwolę sobie podać na PW) oraz udzielenie ew. korekt do mojego sposobu (może o czymś zapomniałem?).

Pozdrawiam: pion
kwiateusz
a jedno pytanie bo miałem z tym zabawe wchodzisz od razu bezpośrednio do backendu czy najpierw frontend a potem backend? bo zauwazyłem ze nawet przy wyłaczonym i18n we frontendzie domyslnie ustala culture na en i wtedy po przejsciu do backendu pozostaje wszystko po angielsku
strife
A czy po zmianie default_culture na "pl" masz np. polski zapis dat? Chodzi o to, aby sprawdzić czy na pewno łapie język polski na tym etapie. Mogę Ci podać jak ja mam to rozwiązane.

apps/backend/config/i18n.yml

Kod
all:
  default_culture:     pl_PL
  source:              XLIFF
#  debug:               off
#  cache:               on
#  untranslated_prefix: "[T]"
#  untranslated_suffix: "[/T]"


apps/backend/config/settings.yml

Kod
.settings:
#    available:              on        # Enable the whole application. Switch to off to redirect all requests to the unavailable module and action.
#
#    # Optional features. Deactivating unused features boots performance a bit.
#    use_database:           on        # Enable database manager. Set to off if you don't use a database.
#    use_security:           on        # Enable security features (login and credentials). Set to off for public applications.
#    use_flash:              on        # Enable flash parameter feature. Set to off if you never use the set_flash() method in actions.
    i18n:                   on       #  WAZNE !


apps/backend/i18n/messages.pl.xml

  1. <?xml version="1.0" ?>
  2. <xliff version="1.0">
  3.  <file orginal="global" source-language="pl_PL" datatype="plaintext">
  4.    <body>
  5.      <trans-unit id="1">
  6.        <source>Actions</source>
  7.        <target>Wybierz akcje</target>
  8.      </trans-unit>
  9.      <trans-unit id="2">
  10.            <source>create</source>
  11.            <target>Stwórz nowy</target>
  12.      </trans-unit>
  13.      <trans-unit id="3">
  14.            <source>result</source>
  15.            <target>wynik</target>
  16.      </trans-unit>      
  17.      <trans-unit id="4">
  18.            <source>Title</source>
  19.            <target>Nazwa</target>
  20.      </trans-unit>            
  21.    </body>
  22.  </file>
  23. </xliff>


Pamiętaj o zresetowaniu przeglądarki i wyczyszczeniu cache.

Pozdrawiam.
phpion
Dziękuje wszystkim za zainteresowanie i pomoc. W zasadzie wypowiedź każdego była mi pomocna (hehe temat będzie zakolorowiony) więc tym większe dzięki. Możliwe, że w którymś momencie zapomniałem o symfony cc bo daję sobie głowę uciąć, że robiłem tak samo jak Wy opisaliście. Dzięki smile.gif

// EDIT:
jednak czyszczenie cache nie ma tu nic do rzeczy - zmiany są widoczne i bez tego. W związku z tym dałem sobie uciąć głowę winksmiley.jpg musiałem więc coś robić źle.
Przetłumaczyłem kilka komunikatów; na razie te, które widać na pierwszy rzut oka:
  1. <?xml version="1.0" ?>
  2. <xliff version="1.0">
  3.      <file orginal="global" source-language="en" datatype="plaintext">
  4.            <body>
  5.                  <trans-unit id="1">
  6.                        <source>create</source>
  7.                        <target>Utwórz</target>
  8.                  </trans-unit>
  9.                  <trans-unit id="2">
  10.                        <source>filters</source>
  11.                        <target>Filtry</target>
  12.                  </trans-unit>
  13.                  <trans-unit id="3">
  14.                        <source>reset</source>
  15.                        <target>Wyczyść</target>
  16.                  </trans-unit>
  17.                  <trans-unit id="4">
  18.                        <source>filter</source>
  19.                        <target>Filtruj</target>
  20.                  </trans-unit>
  21.                  <trans-unit id="5">
  22.                        <source>yes or no</source>
  23.                        <target> </target>
  24.                  </trans-unit>
  25.                  <trans-unit id="6">
  26.                        <source>yes</source>
  27.                        <target>Tak</target>
  28.                  </trans-unit>
  29.                  <trans-unit id="7">
  30.                        <source>no</source>
  31.                        <target>Nie</target>
  32.                  </trans-unit>
  33.                  <trans-unit id="8">
  34.                        <source>no result</source>
  35.                        <target>Brak rekordów</target>
  36.                  </trans-unit>
  37.  
  38.                  <trans-unit id="9">
  39.                        <source>delete</source>
  40.                        <target>Usuń</target>
  41.                  </trans-unit>
  42.                  <trans-unit id="10">
  43.                        <source>Are you sure?</source>
  44.                        <target>Czy na pewno chcesz wykonać tą operację?</target>
  45.                  </trans-unit>
  46.                  <trans-unit id="11">
  47.                        <source>list</source>
  48.                        <target>Powrót do listy</target>
  49.                  </trans-unit>
  50.                  <trans-unit id="12">
  51.                        <source>save</source>
  52.                        <target>Zapisz</target>
  53.                  </trans-unit>
  54.                  <trans-unit id="13">
  55.                        <source>save and add</source>
  56.                        <target>Zapisz i dodaj następny</target>
  57.                  </trans-unit>
  58.                  <trans-unit id="14">
  59.                        <source>Your modifications have been saved</source>
  60.                        <target>Zmiany zostały pomyślnie zapisane</target>
  61.                  </trans-unit>
  62.            </body>
  63.      </file>
  64. </xliff>
magnus
Odkopuję dość stary wątek, ale jedyny jaki znalazłem pasujący.

Może ktoś będzie wiedział jak konkretnie przetłumaczyć ilości z polską odmianą. Czyli:
1 result = 1 wynik
2-4 results = 2-4 wyniki
5+ results = 5+ wyników

To nie działa:
Kod
<trans-unit id="15">
  <source>[0] no result|[1] 1 result|[2,4] %1% results|(5,+Inf] %2% results</source>
  <target>[0] Brak wyników|[1] 1 rekord|[2,4] %1% wyniki|(5,+Inf] %2% wyników</target>
</trans-unit>


Natomiast taka konstrukcja bez problemu:
Kod
<trans-unit id="6">
  <source>[0] no result|[1] 1 result|(1,+Inf] %1% results</source>
  <target>[0] brak wyników|[1] 1 wynik|(1,+Inf] %1% wyników</target>
</trans-unit>


Próbowałem z różnymi kombinacjami, ale bez skutku a nie znalazłem dokumentacji, która by to wyjaśniła sad.gif
Więc może ktoś wie jak to zapisać??
misiaczekmarek
witam,

to chyba najwłaściwszy temat do zadania mojego zapytania.

czy można, a jeśli tak to gdzie ustawić opcje aby genertaor crud generował automatycznie teksty dostosowane do wymagań i18n czyli używał helpera __()?

np. żeby zamiast lini:

Kod
<a href="<?php echo url_for('sl_firmy/create') ?>">Create</a>


wygenerował:

Kod
<a href="<?php echo url_for('sl_firmy/create') ?>"><?php echo __('Create')?></a>



ręczne zmiany nie uśmiechają mi się aaevil.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.