
Dzięki wykorzystaniu internacjonalizacji tworzenie aplikacji w różnych językach (nie programowania ;) ) stało się bardzo proste. Możemy przygotować jeden plik wzorcowy, a następnie przekazać go do odpowiednich tłumaczy, którzy przygotują nam przetłumaczone teksty w narzuconym przez nas formacie. Skrótem używanym naprzemiennie z internacjonalizacją jest i18n. Jest to ilość znaków pomiędzy “i” oraz “n” w słowie “internationalization“.
Autokonfiguracja
Aby skorzystać z internacjonalizacji w Spring Boot’cie mamy do tego utworzoną odpowiednią auto-konfigurację MessageSourceAutoConfiguration. Dzięki temu nie musimy tworzyć ekstra beanów konfiguracyjnych tylko możemy wykorzystać plik application.properties:
# INTERNATIONALIZATION (MessageSourceAutoConfiguration)
Comma-separated list of basenames, each following the ResourceBundle convention.
spring.messages.basename=messages
Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles are cached forever.
spring.messages.cache-seconds=-1
Message bundles encoding.
spring.messages.encoding=UTF-8
Set whether to fall back to the system Locale if no files for a specific Locale have been found.
spring.messages.fallback-to-system-locale=true
Messages
Pliki z językami mają odpowiednie nazwy. Głównym plikiem domyślnym jest:
messages.properties
Jeśli chcemy utworzyć specyfikowany plik, dodajemy do niego postfix oznaczający język:
messages_pl.properties # polski
messages_de.properties # niemiecki
Pliki domyślnie są wyszukiwane na classpath’ie:
Static resources can be moved to /public (or /static or /resources or /META-INF/resources)
in the classpath root. Same for messages.properties (Spring Boot detects this automatically
in the root of the classpath).
Jeśli natomiast chcemy zmienić lokalizację plików messages, należy wykorzystać plik application.properties:
spring.messages.basename=locale/messages
Gdy dodaliśmy już interesujące nas pliki, możemy sprawdzić działanie w Tymianku (Thymleafie, ale ostatnio przeczytałem tłumaczenie i zostało mi w głowie ;)). W momencie wywołania sprawdzana jest lokalizacja. Jeśli nie ma żadnego pliku messages.properties, zostanie załadowana wartość domyślna, czyli “Default“.
Korzystamy
Dodajmy sobie teraz kod:
CodeCouple
A w plikach messages, messages_pl, messages_de dodajmy wartość z odpowiednimi końcówkami:
CompanyName=CodeCouple.tutaj_koncowka
Aby przetestować poprawność działania, wystarczy ustawić w przeglądarce domyślny język.