Używanie tłumaczeń

Mając ustawiony bieżący język jak opisano w poprzednim punkcie do tłumaczeń możemy odwoływać się przez metody z modułu $lang:

$// pobranie wartości dla tłumaczenia house bez żadnej kategorii
$lang.getTranslation("house")
$// pobranie wartości dla tłumaczenia house w kategorii address
$lang.getTranslation("house", "address")

Aby ułatwić pracę z tłumaczeniami w jPALIO istnieje dedykowany operator $#(...) którym można pobierać tłumaczenia. Ten sam przykład przy wykorzystaniu operatora wygląda następująco:

$// pobranie wartości dla tłumaczenia house bez żadnej kategorii
$#("house")
$// pobranie wartości dla tłumaczenia house w kategorii address
$#("house", "address")

W obiekcie Groovy do tłumaczeń odwołujemy się następujący sposób:

import palio.*
import palio.modules.*

Groovy.module("lang").getTranslation("house")
Groovy.module("lang").getTranslation("house", "address")

Poniżej przedstawię inne przydatne opcje mechanizmu tłumaczeń. Dla ułatwienia będę korzystał z operatora $#:

$// ustawienie bieżącej kategorii na address
$=("lang.languageCategoryCode", "address")
$// teraz poniższe wywołania zwrócą to samo tłumaczenie
$#("house")
$#("house", "address")
$// Zakladając że dla klucza 'ala' jest tłumaczenie '{0} ma {1}' w bieżącym języku.
$// Wtedy poniższe wywołanie zwróci Ala ma kota.
$#("ala", ["Ala", "kota"])

$// Przy parametryzowanych tłumaczeniach możemy wykorzystać również kategorię
$#("ala", "uczennica", ["Ala", "kota"])
$// pobieranie kodu bieżącego języka i wypisanie odpowiadającego mu języka na ekran
$if($==($lang.currentLanguage(), "pl"), {
Bieżący język: polski
})
$if($==($lang.currentLanguage(), "en"), {
Current language: English
})
$// pobranie listy języków
$=("langList", $lang.getLanguageList())
$// zablokowanie języka o zadanym id (zablokowany język nie jest zwracany przez getLanguageList())
$=(@plLangId, 1)
$lang.lockLanguage($@plLangId)
$// odblokowanie języka o zadanym id (zablokowany język nie jest zwracany przez getLanguageList())
$lang.unlockLanguage($@plLangId)
$// pobieranie listy kategorii
$=("catList", $lang.getCategoryList())
$// sprawdzenie czy kategoria istnieje
$if($lang.categoryExists("jakas_kategoria"), {
kategoria istnieje
}, {
kategoria nie istnieje
})

Dodawanie lub edycje języków, tłumaczeń i kategorii realizujemy za pomocą dwóch funkcji:

$lang.insertTranslation(String key, String languageCode, String categoryCode, String value)
$lang.setTranslation(String key, String languageCode, String categoryCode, String value)

Ich działanie jest prawie identyczne: dodają nowy lub aktualizują język, kategorię lub klucz tłumaczenia. Jedyną różnica pomiędzy nimi jest fakt, że metoda $lang.insertTranslation nie aktualizuje istniejących tłumaczeń, natomiast metoda $lang.setTranslation aktualizuje je.

Brak tłumaczeń

W przypadku braku tłumaczenia dla danego klucza domyślnie jest zwracana następująca wartość:

kod_języka#kod_kategorii#klucz

Można zmienić to zachowanie wykorzystując metody $lang.getTranslation(...) z parametrem 'String mode'. Parametr mode przyjmuje następujące:

Wsparcie w jDesignerze

Dla ułatwienia stosowania tłumaczeń w codziennej pracy w jDesignerze powstał panel tłumaczeń. Szczegóły jego obsługi można znaleźć w artykule: Dokumentacja > Środowisko programistyczne > jDesigner > Internacjonalizacja.