Příklad internacionalizace (i18n) a lokalizace (L10n) Spring MVC

Příklad internacionalizace (i18n) a lokalizace (L10n) Spring MVC

Úvod

Internacionalizace (i18n) a lokalizace (L10n) jsou důležité aspekty vývoje webových aplikací, které umožňují přizpůsobit aplikace uživatelům z různých kultur a jazyků. Framework Spring MVC poskytuje robustní podporu pro i18n a L10n, což umožňuje vývojářům snadno vytvářet aplikace, které lze přeložit do více jazyků a přizpůsobit pro různá místa.

V tomto článku prozkoumáme přístup i18n a L10n ve Spring MVC pomocí příkladu. Zaměříme se na vytvoření jednoduché webové aplikace, která zobrazí zprávu v různých jazycích v závislosti na požadavku uživatele.

Internacionalizace (i18n)

i18n se týká procesu přípravy aplikace tak, aby mohla být přeložena do více jazyků. Zahrnuje úpravy kódu tak, aby byl jazykově nezávislý, a vytvoření překladových souborů pro různé jazyky.

Vytvoření jazykově nezávislého kódu

Vytvoření jazykově nezávislého kódu vyžaduje oddělení textu od kódu aplikace. To lze provést pomocí mechanismu klíč-hodnota, kde jsou textové řetězce uloženy v překladových souborech a přístup k nim se získává pomocí klíčů.

Spring MVC poskytuje rozhraní MessageSource a jeho implementaci ResourceBundleMessageSource pro načítání textových řetězců z překladových souborů. Překladové soubory se obvykle ukládají ve formátu properties.

Vytvoření překladových souborů

Překladové soubory jsou prosté textové soubory, které obsahují klíče a odpovídající přeložené hodnoty. Jsou pojmenovány podle lokalizačního kódu jazyka. Například překladový soubor pro angličtinu by byl pojmenován messages_en.properties.

Každá položka v překladovém souboru se skládá z klíče, který slouží k identifikaci textového řetězce, a odpovídající přeložené hodnoty. Například:

properties
welcome.message=Vítejte

Lokalizace (L10n)

L10n je proces přizpůsobení aplikace konkrétní lokalitě. Zahrnuje překlad textu aplikace, formátování dat a čísel a další kulturní úpravy.

Překlad textu

K překladu textového obsahu aplikace do různých jazyků lze použít nástroje, jako jsou CAT (nástroje pro překlad s podporou počítače) nebo ruční překlad. Je důležité zajistit přesnost a konzistenci překladů.

Formátování dat a čísel

Různé lokality mají různé standardy pro formátování dat a čísel. Aplikace by měla být schopna upravit formátování tak, aby bylo v souladu s lokalizací uživatele. Spring MVC poskytuje třídu LocaleContextHolder pro načtení aktuálního místního nastavení a metody pro formátování dat v souladu s místním nastavením.

Kulturní úpravy

L10n také zahrnuje kulturní úpravy, jako je změna měny, měrných jednotek a data formátu. Aplikace by měla být schopna konfigurovat tyto kulturní aspekty podle aktuálního místního nastavení.

Příklady implementace v Spring MVC

1. Konfigurace MessageSource

xml
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages" />
</bean>

2. Načtení zprávy

java
@Controller
public class MyController {

@Autowired
private MessageSource messageSource;

@GetMapping("/")
public String homePage(@RequestParam(required = false) String lang, Model model) {
String message = messageSource.getMessage("welcome.message", null, LocaleContextHolder.getLocale());
model.addAttribute("message", message);
return "home";
}
}

3. Formátování čísel

java
@Controller
public class MyController {

@GetMapping("/numbers")
public String numbersPage(@RequestParam(required = false) String lang, Model model) {
BigDecimal number = new BigDecimal("123456789.12345");
NumberFormat numberFormat = NumberFormat.getNumberInstance(LocaleContextHolder.getLocale());
String formattedNumber = numberFormat.format(number);
model.addAttribute("formattedNumber", formattedNumber);
return "numbers";
}
}

Závěr

Internacionalizace a lokalizace jsou nezbytné pro vytváření webových aplikací, které oslovují globální publikum. Spring MVC poskytuje robustní podporu pro i18n a L10n, což vývojářům usnadňuje vytváření aplikací, které lze přeložit do více jazyků a přizpůsobit pro různá místa.

Díky oddělení textu od kódu a použití překladových souborů a místních nastavení mohou aplikace Spring MVC snadno přizpůsobit uživatelské zkušenosti různým kulturám a jazykům, což vede k lepší uživatelské spokojenosti a rozšířenému dosahu.

Často kladené otázky

1. Jaký je rozdíl mezi i18n a L10n?
i18n se týká přípravy aplikace pro překlad do více jazyků, zatímco L10n se týká přizpůsobení aplikace konkrétní lokalitě, včetně překladu, formátování a kulturních úprav.

2. Jaké jsou výhody i18n a L10n?
i18n a L10n umožňují aplikacím oslovit globální publikum, zlepšují uživatelskou zkušenost a rozšiřují dosah aplikací.

3. Jaké jsou dobré způsoby pro organizaci překladových souborů?
Překladové soubory by měly být organizovány podle jazyka a oblasti. Můžete například vytvořit adresář resources/messages, ve kterém budete mít oddělené podadresáře pro každý jazyk, například resources/messages/en a resources/messages/cs.

4. Jak mohu nakonfigurovat předvolené místní nastavení pro aplikaci Spring MVC?
Předvolené místní nastavení můžete nakonfigurovat pomocí třídy LocaleContextResolver. Příkladem může být:

java
public class MyLocaleResolver implements LocaleContextResolver {

@Override
public Locale resolveLocaleContext(HttpServletRequest request) {
String lang = request.getParameter("lang");
if (lang != null) {
return new Locale(lang);
} else {
return LocaleContextHolder.getLocale();
}
}

}

5. Jak mohu přidat podporu pro více místních nastavení do webové stránky?
Chcete-li přidat podporu pro více místních nastavení, můžete použít rozbalovací nabídku nebo přepínač jazyků, který umožňuje uživatelům vybrat požadované místní nastavení.

6. Jak mohu zajistit konzistenci překladů v aplikaci Spring MVC?
K zajištění konzistence překladů můžete použít nástroje pro kontrolu překladů nebo služby překladatelských agentur.

7. Jaké jsou běžné výzvy spojené s i18n a L10n?
Běžnými výzvami jsou překlady kontextu, kulturní citlivost a udržování aktuálnosti překladů.

8. Jaké nástroje lze použít pro i18n a L10n ve Spring MVC?
Spring MVC podporuje použití nástrojů pro překlad s podporou počítače, jako je Lokalise nebo Crowdin.