Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]argumenty helpera __()
Forum PHP.pl > Forum > PHP > Frameworki
harvesterix
Witam mam pytanie odnośnie tłumaczenia na stronach we wszystkich przypadkach które do tej pory widziałem (fakt nie wiele jeszcze widziałem:)) w helperze _() używa się jako pierwszego argumentu stringa, np.

  1. __("przetłumacz to")


no ale jeśli mam do przetłumaczenia całą podstronę to mam wrzucić jako argument całą treść podstrony blinksmiley.gif jak dla mnie to troche głupie w książce 'Practical symfony' tej od jobeeta jest takie zdanie odnośnie tego helpera:

Cytat
The __() helper can take the string for the default language or you can also use a unique identifier ...


No właśnie wolałbym użyć tego unikalnego identyfikatora tylko nie bardzo wiem jak.
Proszę o jakieś linki do przykładu jak tego użyć i jak powinien wyglądać plik z tłumaczeniem dla takiego użycia.
Crozin
Ten mechanizm translacji służy bardziej tłumaczeniu interfejsu niż treści. Prawdopodobnie najwygodniejszym rozwiązaniem będzie tutaj przerzucenie danych do bazy danych.
destroyerr
Co znaczy, że masz do przetłumaczenia całą podstronę? Jak wrzucisz całą treść do tłumaczenia to będzie szukał całego tekstu ze strony w tłumaczeniach. Razem z tagami. Musisz tłumaczyć każdy tekst osobno.

Tego unikalnego identyfikatora powinieneś użyć dokładnie tak jak domyślnego języka. Linki sobie sam znajdziesz.
Przykładowo:
  1. __('translate.it');
harvesterix
Cytat
Co znaczy, że masz do przetłumaczenia całą podstronę?

To znaczy że mam do przetłumaczenia treść z tej podstrony, sam content bez żadnych znaczników. Chodzi o to że ta treść to nie jest pojedyncze zdanie tylko powiedzmy dziesięć długich zdań wiem że jak wrzucę całą tą treść do helpera __() to ją znajdzie i przetłumaczy tylko czy w przypadku tak długich treści nie jest to zbyt czasochłonne (porównywać tak długie stringi), sądzę że dążąc do optymalizacji kodu lepiej by było użyć jakiegoś id treści do przetłumaczenia niż samej treści. No i z tego cytatu z książki wynika że jest taka możliwość tylko że nie pokazali przykładu.

W sumie teraz to nawet jest mniej ważne bo okazało się że nawet tak jak jest w książce mi nie działa. Napiszę co się dzieje:
Robiłem wszystko standardowo (jak opisali w książce od jobeeta) poza jednym szczegółem zamiast selecta zmieniającego język mam nad menu dwa linki
  1. [<a <?php echo $kultura == 'pl' ? "class=\"active\" href=\"\"" : "href=\"".url_for('@zmien_jezyk')."\"" ?>>Polski</a>] [<a <?php echo $kultura == 'en' ? "class=\"active\" href=\"\"" : "href=\"".url_for('@zmien_jezyk')."\"" ?>>English</a>]


linki kierują do akcji która zmienia kulturę następująco:

  1. if ($this->getUser()->getCulture() == 'pl')
  2. $this->getUser()->setCulture('en');
  3. else
  4. $this->getUser()->setCulture('pl');
  5.  
  6. return $this->redirect('@localized_homepage');


Linki działają bo jak sprawdzam na pasku deweloperskim config->user->culture to zawsze w zależności od wyboru jest en lub pl poza tym link też ma prefix pl/ lub en/
w templatce strony głównej w menu mam taki link do przetłumaczenia:
  1. <a href=""><?php echo __('Strona Główna') ?></a>


no i jest zonk bo niezaleznie czy klikne polski czy english dostaję 'Strona Główna',
dodam że
  1. symfony i18n:extract frontend en --auto-save

dziwnie tworzy pliczek tłumaczeń, wygląda tak:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE xliff PUBLIC "-//XLIFF//DTD XLIFF//EN" "http://www.oasis-open.org/committees/xliff/documents/xliff.dtd">
  3. <xliff version="1.0">
  4. <file[color="#FF0000"] source-language="EN" target-language="en"[/color] datatype="plaintext" original="messages" date="2011-01-28T12:58:07Z" product-name="messages">
  5. <header/>
  6. <body>
  7. <trans-unit id="1">
  8. <source>Strona Główna</source>
  9. <target>Home<target/>
  10. </trans-unit>
  11. ...
  12. ...
  13. ...
  14. </body>
  15. </file>
  16. </xliff>

czyli zarówno 'source-language' jak i 'target-language' ustawia en, (nawet gdy zmienię któryś na pl to i tak nie tłumaczy)

Czy widzicie gdzieś błąd? Albo macie jakieś pomysły co może być nietete?
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.