Spolszczenie raportu interaktywnego w Oracle APEX

post_img

Oracle APEX został przetłumaczony na język niemiecki, hiszpański, francuski, włoski, japoński, koreański, brazylijski portugalski, chiński uproszczony oraz chiński tradycyjny. Niestety nie istnieje oficjalne tłumaczenie APEX na język polski. Z tego powodu wszystkie dostępne w raporcie interaktywnym kontrolki prezentowane są w wersji anglojęzycznej. W swoim artykule przedstawię sposób spolszczenia raportu interaktywnego.

Istnieją dwa sposoby na przetłumaczenie komunikatów wyświetlanych w raporcie interaktywnym:

  1. tłumaczenie przy pomocy interfejsu tworzenia aplikacji APEX;
  2. tłumaczenie poprzez skrypty PL/SQL.

Tłumaczenie przy pomocy interfejsu tworzenia aplikacji Oracle APEX

Aby przetłumaczyć komunikaty należy:

  1. Przejść do strony tłumaczenia aplikacji:
    1. Na stronie głównej obszaru roboczego klikamy ikonę „Application Builder”;
    2. Wybieramy aplikację;
    3. Klikamy „Shared Components”;
    4. W regionie „Globalization” wybieramy „Text Messages”.

  2. Po przejściu na stronę tłumaczenia komunikatów wybieramy „Create Text Message”;
  3. Na stronie tworzenia komunikatu podajemy:
    1. Name – nazwę komunikatu, który ma być przetłumaczony (w kolejnym punkcie artykułu przedstawię sposób uzyskania pełnej listy nazw komunikatów);
    2. Language – język, dla którego komunikat będzie tłumaczony (pl);
    3. Text – tekst tłumaczenia, który ma zastąpić tekst oryginalny.

  4. Klikamy przycisk „Create”.

Powyższa procedura musi zostać wykonana dla każdego komunikatu, który chcemy przetłumaczyć.

Lista dostępnych komunikatów dotyczących raportu interaktywnego

Aby otrzymać pełną listę komunikatów związanych z raportem interaktywnym możemy posłużyć się zapytaniem:

1
2
3
4
select name, message_text, message_language
  from apex_040000.wwv_flow_messages$
 where name like 'APEXIR%'
 order by name;

Zapytanie to zwraca nazwy komunikatów oraz ich angielskie tłumaczenia. Na podstawie otrzymanych danych możemy dokonać tłumaczenia angielskich komunikatów na język polski. Zapytanie zostało wygenerowane dla APEX w wersji 4.0. Dla APEX 4.1 musimy zmienić schemat z apex_040000 na apex_040100. Potrzebne są do tego uprawnienia odczytu na wwv_flow_messages$.
Przykładowe nazwy komunikatów:

Tłumaczenia przy pomocy skryptu PL/SQL

Możemy sobie znacznie uprościć tłumaczenie komunikatów raportu interaktywnego wykorzystując dostępne API PL/SQL do zarządzania komunikatami.
Procedura dodawania komunikatu:

APEX_040000.wwv_flow_api.create_message(
p_flow_id => v_flow_id,
p_name => v_name,
p_message_language => v_lang,
p_message_text => v_msg
);

  • p_flow_id – identyfikator aplikacji;
  • p_name – nazwa komunikatu;
  • p_message_language – język dodawanego komunikatu ( pl );
  • p_message_text – przetłumaczony tekst komunikatu.

Do artykułu dołączam skrypt spolszczający raport interaktywny dla APEX 4.0.
insert_messages

Wymagania skryptu:

  • Skrypt musi zostać uruchomiony ze schematu, na którym jest oparta aplikacja APEX;
  • Schemat, z którego uruchamiany jest skrypt, musi posiadać uprawnienia odczytu oraz usuwania na tablicy apex_040000.wwv_flow_messages$ .

    Aby nadać uprawnienia dla naszego schematu, musimy zalogować się jako użytkownik z uprawnieniami SYS oraz wykonać polecenie:

    grant select,delete on apex_040000.wwv_flow_messages$ to ;

    Po wykonaniu operacji tłumaczenia możemy odebrać nadane uprawnienia.

Parametry skrypu:

  • flow_id – identyfikator aplikacji, dla której tłumaczenie ma zostać zastosowane;
  • workspace – nazwa obszaru roboczego, dla którego chcemy dodać komunikaty;
    Parametr workspace jest potrzeby, gdyż przed dodawaniem komunikatów musimy ustawić grupę bezpieczeństwa:

    wwv_flow_api.set_security_group_id(apex_util.find_security_group_id(p_workspace => v_workspace));

  • nadpisac – parametr przyjmujący wartości Y/N oraz określający, czy istniejące tłumaczenia komunikatów powinny zostać zastąpione.

Operacje wykonywane przez skrypt:

  1. Sprawdzenie czy istnieje tablica „polish_temp” i jeżeli tak to usunięcie jej;
  2. Stworzenie tablicy „polish_temp” przechowującej nazwę komunikatu, oryginalne tłumaczenie i tłumaczenie w języku polskim komunikatów raportu interaktywnego;
  3. Wpisanie do stworzonej tablicy tłumaczeń raportu interaktywnego;
  4. Pobranie od użytkownika wartości identyfikatora aplikacji, nazwy obszaru roboczego oraz sposobu zastępowania wierszy;
  5. Dodanie komunikatów z utworzonej tablicy „polish_temp” przy użyciu procedury APEX_040000.wwv_flow_api.create_message;
  6. Usunięcie tablicy „polish_temp”.

Uruchomienie skryptu:

  1. Przechodzimy do katalogu, w którym znajduje się nasz skrypt „insert_messages.sql”;
  2. Logujemy się do bazy danych przy pomocy sqlplus;
  3. Uruchamiamy skrypt poleceniem @insert_messages.sql .

Efekt tłumaczenia

Menu raportu przed tłumaczeniem:

Menu raportu po tłumaczeniu:

Podsumowanie

Oba przedstawione sposoby spolszczenia raportu interaktywnego dają ten sam efekt. Komunikaty dodane za pomocą skryptu są widoczne w interfejsie tworzenia aplikacji i na odwrót. Metoda tworzenia komunikatów przy pomocy interfejsu jest bardzo pracochłonna i zajmuje dużo czasu co sprawia, że jest używany do tłumaczenia pojedynczych komunikatów lub poprawy istniejących. Tworzenie komunikatów przy pomocy skryptu jest bardzo szybkie i wygodne. Raz stworzony skrypt jest uniwersalny i może być używany do tłumaczenia wielu aplikacji. Za pomocą przedstawionych sposobów możemy spolszczyć wszystkie komunikaty APEX.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *