Internacjonalizacja modułów

W przypadku gdy istnieje konieczność zinternacjonalizowania wyników działania danego modułu (najczęściej dotyczy to modułów generujących interfejs użytkownika np. wyświetlenie informacji walidatora formularza) można skorzystać ze wsparcia jakie oferuje bazowa klasa modułu. Mechanizm internacjonalizacji jest realizowany za pomocą modułu Lang.

Poniżej przedstawiono metody wspierające internacjonalizację:

public String getModuleTranslation(String key)
protected void setModuleTranslation(String key, String languageCode, String value) throws PalioException
protected void initModuleTranslations() throws PalioException

WAŻNE! Kategorią tłumaczeń dla danego modułu jest pełna nazwa klasy modułu

Metoda getModuleTranslation służy do pobierania tłumaczenia związanego z danym modułem, dla podanego klucza, dla bieżącego języka. W przypadku gdy w bazie danych tłumaczeń brakuje wpisów dot. modułu, wywoływana jest metoda initModuleTranslations, której zadaniem jest dodanie brakujących wpisów. Dodanie tych wpisów powinno być realizowane przy użyciu metody setModuleTranslation.

 

Przykładowa implementacja metody initModuleTranslations

protected void initModuleTranslations() throws PalioException    setModuleTranslation("invalidLoginOrPassword", "pl", "Nieprawidłowy login lub hasło");
setModuleTranslation("invalidLoginOrPassword", "en", "Invalid login or password");

setModuleTranslation("insufficientPrivileges", "pl", "Niewystarczające uprawnienia");
setModuleTranslation("insufficientPrivileges", "pl", "Insufficient privileges");
}

Przykładowe użycie metody getModuleTranslation

getModuleTranslation("invalidLoginOrPassword")

tring languageCode, String value) throws PalioException {
Lang lang = (Lang) this.instance.getModule("lang");
lang.insertTranslation(key, languageCode, getClass().getName(), value);
}

/**
* Jeżeli moduł korzysta z mechanizmu internacjonalizacji w metodzie tej można zainijalizować tłumaczenia niezbędne to prawidłowego
* działania modułu. Metoda powinna zawierać wywołania metody {@link #setModuleTranslation(String, String, String)}. Jest ona
* automatycznie wywoływana w metodzie {@link #getModuleTranslation(String)} wówczas gdy w bazie danych tłumaczeń nie ma kategorii
* odpowiadającej danemu modułowi (brak kategorii, której kod jest równy nazwie klasy danego modułu). Metoda ta wywoływana jest tylko
* raz.
*
* @throws PalioException
*/
protected void initModuleTranslations() throws PalioException {

}
    /**
* Zwraca tłumaczenie dla podanego klucza. Jeżeli w bazie danych tłumaczeń brakuje wpisów dot. modułu na rzecz którego została wywołana
* ta metoda (brak kategorii, której kod jest równy nazwie klasy danego modułu) zostaje wykonana metoda
* {@link #initModuleTranslations()}. W przypadku gdy podczas pobierania klucza wystąpi wyjątek, wyjątek jest logowany a zwracaną
* wartością jest podany klucz.
*
* @param key klucz
*/
public String getModuleTranslation(String key) {
try {
Lang lang = (Lang) this.instance.getModule("lang");
if (this.translationsNotInited)
synchronized (this) {
if (this.translationsNotInited) {
// if (!lang.categoryExists(getClass().getName())) {
initModuleTranslations();
this.translationsNotInited = false;
// }
}
}
return lang.getTranslation(key, getClass().getName());
} catch (PalioException ex) {
Logger.error(Instance.getCurrent().getInstance(), "[" + this.getClass().getName() + "] getting translation error for key: "
+ key, ex);
return key;
}
}

protected void setModuleTranslation(String key, String languageCode, String value) throws PalioException {
Lang lang = (Lang) this.instance.getModule("lang");
lang.insertTranslation(key, languageCode, getClass().getName(), value);
}

/**
* Jeżeli moduł korzysta z mechanizmu internacjonalizacji w metodzie tej można zainijalizować tłumaczenia niezbędne to prawidłowego
* działania modułu. Metoda powinna zawierać wywołania metody {@link #setModuleTranslation(String, String, String)}. Jest ona
* automatycznie wywoływana w metodzie {@link #getModuleTranslation(String)} wówczas gdy w bazie danych tłumaczeń nie ma kategorii
* odpowiadającej danemu modułowi (brak kategorii, której kod jest równy nazwie klasy danego modułu). Metoda ta wywoływana jest tylko
* raz.
*
* @throws PalioException
*/
protected void initModuleTranslations() throws PalioException {

}