Wielojęzyczność w systemie LogiShop

Napisany przez Radosław Gołębiowski dnia 28 maja 2009, godzina 10:50  Rss do tej wiadomości

Tagi: L10n + LogiShop + i18n + oprogramowanie sklepu + wielojęzyczność

W zastosowaniach informatycznych procesem umiędzynarodowienia (ang. "internationalization and localization") nazywamy zastosowanie odpowiednich technik i metod służących przystosowaniu oprogramowania komputerowego do pracy w różnych wersjach językowych. Użycie tych technik pozwala również na zmianę sposobu wyświetlania walut, dat oraz innych konstrukcji, które są inaczej wyświetlane w dla różnych narodowości. Internacjonalizacja pozwala na tworzenie oprogramowania w różnych wersjach językowych bez konieczności wprowadzania drastycznych zmian w kodzie samej aplikacji.

Integracja technik internacjonalizacji polega na wprowadzaniu odpowiednich komponentów do systemu, użyciu specjalnych metod (helperów) oraz dodaniu bazy tłumaczeń w różnych językach.

Często używa się skrótu i18n dla procesu umiędzynarodowienia. Liczba 18 oznacza ilość liter w pomiędzy "i" oraz "n" w wyrazie "internationalization" (pierwszą i ostatnią literą słowa) . Podobnie dla słowa "localisation" stosujemy skrót L10n. Inne stosowane również techniki to globalizacja (ang. "gloabalisation") oznaczona przez g11n.

Wielojęzyczność

W nowej wersji systemu LogiShop została wdrożona obsługa i18n. Realizowana jest ona poprzez użycie klasy sfI18N z bibliotek symfony. Dostosowanie systemu do wielojęzykowości sprowadza się do konfiguracji klasy, włączenia jest do systemu, umieszczenia wywołań odpowiednich metod w kodzie oraz dodania pliku tłumaczeń językowych w formacie XLIFF - dokumencie XML o specjalnej strukturze.

W systemie możemy wybrać dowolne języki poprzez dodanie odpowiednich tłumaczeń i ustawienie zmiennej culture w sesji. Po ustawieniu odpowiedniego języka za pomocą metody setCulture($culture) w całym systemie pamiętana jest zmienna oznaczająca wybraną narodowość. Następnie wystarczy użyć helperów dla fraz, które mają zostać przetłumaczone w systemie (funkcja __($content, $parameters)), a system sam przetłumaczy wybrany fragment na docelowy język.

Poniżej mamy przykłady użycia helpera, który umożliwia tłumaczenie.

W plikach akcji:

 

 

W szablonach: