wiki:ReDesign/localization

Lokalizace uživatelského rozhraní

Nastavení jazyka se provádí pomocí HTTP requestu, který je zpracován na úrovni datové vrstvy ve třídě DefaultActionBean? v metoděsetContext().

Nastavení jazyka na úrovni datové vrstvy.

Při příchodu požadavku s parametrem ddlLanguage, je v této metodě zpracován a do session je uložen aktuální jazyk. Dáleje provedeno nastavení jazyka, který používá datová vrstva při odesílání zpráv do uživatelského rozhraní. Následující část kódu obstarává nastavení jazyza v datové vrstvě.

String language = ctx.getRequest().getParameter("ddlLanguage");
Object currentLanguage = ctx.getRequest().getSession().getAttribute("lang");
String currentLanguageStr="";
         
if (currentLanguage != null) {
  currentLanguageStr = currentLanguage.toString()
}

Locale currentLocale = new Locale("cs", "CZ");
        
if ("en_GB".equals(language) || "en_GB".equals(currentLanguageStr)) {
  ctx.getRequest().getSession().setAttribute("lang", "en_GB");
  currentLocale = new Locale("en", "GB");
  currentLanguageStr = "en_GB";
  ctx.getRequest().getSession().setAttribute("lang", "en_GB");
}
        
if ("cs_CZ".equals(language) || "cs_CZ".equals(currentLanguageStr)) {
  ctx.getRequest().getSession().setAttribute("lang", "cs_CZ");
  currentLocale = new Locale("cs", "CZ");
  currentLanguageStr = "cs_CZ";
  ctx.getRequest().getSession().setAttribute("lang", "cs_CZ");
}
  
bundle = ResourceBundle.getBundle("StripesResources", currentLocale);

Nastavení jazyka na úrovni prezentační vrstvy

V JSP šablonách se pro výpis statických textů používají JSTL formátovací tagy, těm se aktuální jazyk nastavuje na začátku každé layout JSP šablony. Výpis statických textů poté probíhá pomocí formáovacího tagu <f:message>, který jako atribut přijímá klíč jednoznačně určující konkrétní text pro výpis. Dle aktuálního jazyka formátovací tag použije konkrétní soubor s texty.

Následující část kódu provádí nastavení jazyka, souboru s jazykovými překlady a provádí výpis textu do HTML kódu.

<c:set var="current" value="${param.ddlLanguage}" scope="session" />
<c:if test="${not empty current}">
  <f:setLocale value="${current}" scope="session" />
</c:if>

<f:setBundle basename="StripesResources" scope="session" />

<f:message key="menu-accessibility.mainMenu" />

Lokalizační soubory

Jazykové překlady jsou umístěny v adresáři resources, ve kterémse součsně nacházejí tři soubory:

  • StripesResources?.properties – výchozí jazyk systému
  • StripesResources_cs_CZ.properties – český jazyk
  • StripesResources_en_GB.properties – anglický jazyk

Jazykové překlady v souborech StripesResoources?.properties jsou formátovány klíč=hodnota. Jednotlivé texty jsou odděleny na novém řádku.

admin.message.warning=Výstraha
admin.message.error=Chyba
admin.message.information=Informace
admin.message.ok=Ok
admin.message.close=Zavřít
admin.message.required=(povinné)
admin.message.recomended=(doporučené)
Last modified 19 months ago Last modified on 04/13/19 14:32:38