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:
- tłumaczenie przy pomocy interfejsu tworzenia aplikacji APEX;
- tłumaczenie poprzez skrypty PL/SQL.
Tłumaczenie przy pomocy interfejsu tworzenia aplikacji Oracle APEX
Aby przetłumaczyć komunikaty należy:
- Przejść do strony tłumaczenia aplikacji:
- Na stronie głównej obszaru roboczego klikamy ikonę „Application Builder”;
- Wybieramy aplikację;
- Klikamy „Shared Components”;
- W regionie „Globalization” wybieramy „Text Messages”.
- Po przejściu na stronę tłumaczenia komunikatów wybieramy „Create Text Message”;
- Na stronie tworzenia komunikatu podajemy:
- Name – nazwę komunikatu, który ma być przetłumaczony (w kolejnym punkcie artykułu przedstawię sposób uzyskania pełnej listy nazw komunikatów);
- Language – język, dla którego komunikat będzie tłumaczony (pl);
- Text – tekst tłumaczenia, który ma zastąpić tekst oryginalny.
- 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:
- Sprawdzenie czy istnieje tablica „polish_temp” i jeżeli tak to usunięcie jej;
- Stworzenie tablicy „polish_temp” przechowującej nazwę komunikatu, oryginalne tłumaczenie i tłumaczenie w języku polskim komunikatów raportu interaktywnego;
- Wpisanie do stworzonej tablicy tłumaczeń raportu interaktywnego;
- Pobranie od użytkownika wartości identyfikatora aplikacji, nazwy obszaru roboczego oraz sposobu zastępowania wierszy;
- Dodanie komunikatów z utworzonej tablicy „polish_temp” przy użyciu procedury APEX_040000.wwv_flow_api.create_message;
- Usunięcie tablicy „polish_temp”.
Uruchomienie skryptu:
- Przechodzimy do katalogu, w którym znajduje się nasz skrypt „insert_messages.sql”;
- Logujemy się do bazy danych przy pomocy sqlplus;
- 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.