Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] i18n - jedno słowo - dwa tłumaczenia.
Forum PHP.pl > Forum > PHP > Frameworki
SnakeEater
Problem jest prosty. Mam słowo po angielsku i chcę w partialu należącym do jednej akcji przetłumaczyć go inaczej, a w partialu innej akcji inaczej. Czy jest na to jakiś sposób? Na przykład wybór pliku tłumaczeń? Czy jakoś inaczej.
destroyerr
Możesz do tego wykorzystać katalogi/słowniki. Nie będę się rozpisywał, skoro już wszystko jest w dokumentacji, w tym podrozdziale i następnym.
yaotzin
Cytat(destroyerr @ 29.12.2010, 22:38:45 ) *
Możesz do tego wykorzystać katalogi/słowniki. Nie będę się rozpisywał, skoro już wszystko jest w dokumentacji, w tym podrozdziale i następnym.


Jak dla mnie mechanizm internacjonalizacji w symfony to bieda straszna. Dlaczego nie zrobili tego jak w JAVA na przykład. Zamiast XML użyć cos na wzór properties.
destroyerr
Nie wiem jak jest w JAVA, ale JAVA to chyba język, a symfony to framework.
Zrobiłem bardzo szybki przegląd i nie widzę znaczących różnic. Możesz jakieś wksazać? Jeśli chodzi tylko o to, że symfony domyślnie bierze tłumaczenia z XML'a w formacie XLIFF, to nie jest to problemem. Jest przecież sfIMessageSource więc można dopisać swój sterownik.
yaotzin
Cytat(destroyerr @ 7.01.2011, 20:21:55 ) *
Nie wiem jak jest w JAVA, ale JAVA to chyba język, a symfony to framework.
Zrobiłem bardzo szybki przegląd i nie widzę znaczących różnic. Możesz jakieś wksazać? Jeśli chodzi tylko o to, że symfony domyślnie bierze tłumaczenia z XML'a w formacie XLIFF, to nie jest to problemem. Jest przecież sfIMessageSource więc można dopisać swój sterownik.


Znowu moja wiedza na temat symfony jest nikła, więc może podobne rozwiązanie działa. No napisałem ogólnie JAVA, ten język opiera się na standardach chociażby fakt, że każda klasa powinna zaczynać się dużą literą i jeżeli składa się z więcej niż jednego wyrazu to też każdy nowy wyraz jest dużą literą pisany. Więc w wielu kwestiach pomiędzy PHP a JAVA widać różnice. No ale nie o tym mowa smile.gif

Mnie chodzi bardziej o fakt iż jest to tam bardziej czytelne niż w przypadku XLIFF'a. Po prostu w tekście odwołujesz się do klucza. Nie wiem na czym polega siła XLIFF'a względem istniejących rozwiązań stąd moje marudzenie:

Oto przyklad pliku properties z jakimiś tekstami (za wikipedią http://en.wikipedia.org/wiki/.properties):

  1. # You are reading the ".properties" entry.
  2. ! The exclamation mark can also mark text as comments.
  3. website = <a href="http://en.wikipedia.org/" target="_blank">http://en.wikipedia.org/</a>
  4. language = English
  5. # The backslash below tells the application to continue reading
  6. # the value onto the next line.
  7. message = Welcome to \
  8. Wikipedia!
  9. # Add spaces to the key
  10. key\ with\ spaces = This is the value that could be looked up with the key "key with spaces".
  11. # Unicode
  12. tab : \u0009
destroyerr
Cytat
Mnie chodzi bardziej o fakt iż jest to tam bardziej czytelne niż w przypadku XLIFF'a

Śliska sprawa z czytelnością, ja np. wolę jak edytor mi pokoloruje xml'a.

Cytat
Po prostu w tekście odwołujesz się do klucza.

Czyli tak samo jak w i18n w symfony i w formacie XLIFF i pewnie w wielu innych systemach tłumaczeń.

Tak mógłby wyglądać plik z XLIFF (nie wiem tylko jak wygląda sprawa z unicode):
  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 original="global" source-language="plain" datatype="plaintext">
  5. <body>
  6. <trans-unit>
  7. <source>website</source>
  8. <target>
  9. <![CDATA[
  10. <a href="http://en.wikipedia.org/" target="_blank">http://en.wikipedia.org/</a>
  11. ]]>
  12. </target>
  13. </trans-unit>
  14. <trans-unit>
  15. <source>language</source>
  16. <target>English</target>
  17. </trans-unit>
  18. <trans-unit>
  19. <source>message</source>
  20. <target>Welcome to
  21. Wikipedia!
  22. </target>
  23. </trans-unit>
  24. <trans-unit>
  25. <source>key with spaces</source>
  26. <target>This is the value that could be looked up with the key "key with spaces".</target>
  27. </trans-unit>
  28. </body>
  29. </file>
  30. </xliff>


Czyli marudzenie jest nieuzasadnione tongue.gif

Cytat
No napisałem ogólnie JAVA, ten język opiera się na standardach chociażby fakt, że każda klasa powinna zaczynać się dużą literą i jeżeli składa się z więcej niż jednego wyrazu to też każdy nowy wyraz jest dużą literą pisany.

Java jest np. starsza więc miała więcej czasu na wypracowanie standardów. W symfony nazwa każdej klasy w zasadzie jest rozpoczynana wielką literą. Przedrostek sf ma być prymitywną przestrzenią nazw.
yaotzin
To może nie tak, bo z tego co pamiętam to JAVA początkowo miała być rozwijana jako produkt komercyjny, więc może dlatego te standardy. A PHP miał całkiem inną drogę rozwoju winksmiley.jpg

Jeżeli o mnie chodzi to zdarza mi się pracować z różnymi językami i technologiami, niektóre z nich nawet nie wiedziałem, że istnieją. Co do języka programowania czy framework'a to cóż można powiedzieć tylko tyle, że każdy programuje w czym chce. Ja zaczynałem od C++ przeszedłem do PHP, no a teraz to różnie zazwyczaj jest to JAVA winksmiley.jpg

Wróciłem do PHP bo chcę coś napisać, i szukałem języka, dla którego jest najłatwiej i najtaniej znaleźć hosting. A Symfony zostało wybrane przez wzgląd na framework SEAM dla JAVA, z którym również pracowałem i baaardzo przypadł mi do gustu smile.gif

A teraz sobie marudzę smile.gif


EDIT:
A co do XILFF - w sumie to muszę Ci przyznać rację smile.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.