Wielojęzyczność w Neosie¶
Od wersji 4.1.3 aplikacja Sente S4 umożliwia tłumaczenie treści okien aplikacji na inne języki. Tłumaczeniu podlegają wszelkie wyświetlane etykiety, komunikaty, itp. Tłumaczeniu nie podlegają dane z bazy danych.
Niniejszy dokument opisuje wielojęzyczność w aplikacjach neosowych. Jeśli chcesz się dowiedzieć, jak użyć wielojęzyczności w aplikacjach nieneosowych (okna standardowe, okna wbudowane w c++, komunikaty, menu, itp), przeczytaj ten dokument.
Przygotowanie aplikacji do wielojęzyczności¶
- Upgrade warstwy technologicznej co najmniej do wersji
4.1.3 - Zweryfikowanie, że w BD jest tabela
LANGUAGES. - W tabeli LANGUAGES powinny być wpisane te języki, które nas interesują. Pole
CODEpowinno zawierać dwuznakowy kod języka wg standardu ISO-639. - W pliku
appnależy w sekcji[General]dodać wpisLanguages=<tutaj dwuznakowe kody dostępnych języków oddzielone średnikiem>. - Dla użytkowników obcojęzycznych należy przygotować jeden plik app i tak skonfigurować skrót do uruchomienia aplikacji aby użytkownik nie musiał wybierać profilu. Okno wyboru profilu nie podlega tłumaczeniu, gdyż przed wyborem profilu aplikacja nie jest jeszcze podłączona do żadnej bazy danych.
Przygotowanie tłumaczeń stałych elementów obiektów i okien¶
- Uruchomić aplikację. W oknie logowania powinna się pojawić możliwosć wyboru języka. Po zmianie w combo na angielski, okno logowania powinno się automatycznie przetłumaczyć na angielski. Aplikacja też powinna pokazać główne okno po angielsku. Przetłumaczone są jedynie niektóre opcje we wstążce i stałe menu okna głównego. W oknie głównym powinny w menu być opcje wielojęzyczne.
- Wejść do Neos Experta i wybrać obiekt, który chcemy przetłumaczyć. Jeśli jakieś etykiety obiektu, pól, okien są już przetłumaczone na wybrany język, to wyświetlą się w tym języku. Jeśli nie, to wyświetlą się w języku domyślnym, czyli po polsku. Można w Neos Expercie tłumaczyć ręcznie, po prostu zastępując polskie nazwy obcojęzycznymi.
- Jeśli w menu okna głównego zmienimy język na polski, zobaczymy że wszystkie etykiety w Neos Expercie powróciły do języka polskiego (a więc nie zginęły). Jeśli znów zmienimy język na obcy, to przetłumaczone uprzednio etykiety pokażą się w języku obcym (a więc także nie zginęły). W ten sposób możemy tłumaczyć aplikację na dowolną ilość języków.
- Aby łatwiej ogarnąć wszystkie etykiety zdefiniowane w obiekcie, w drzewie Neos Experta jest dostępna funkcja
Panel tłumaczeń. Jest to inne okno niż panel tłumaczeń aplikacji nieneosowych. Pokazuje ono listę wszystkich etykiet do tłumaczenia z danego obiektu. Można w nim dokonywać zbiorczych tłumaczeń, aby robić to szybciej i wygodniej. - Jeśli uruchomimy przetłumaczone okno, to pokaże się ono w wybranym języku. Zmiana wybranego języka w trakcie pracy aplikacji nie powoduje jednak nagłej zmiany języka w otwartych oknach. Należy okno zamknąć i uruchomić je ponownie.
Zmiana tłumaczeń systemowych¶
Od wersji Neosa 6.0.10 istnieje możliwość przesłonięcia etykiet systemowych.
Przykładowo mając systemowy tekst, który wyświetla się w mailu do resetowania hasła:
Witaj,\nAby ustawić nowe hasło do swojego konta, kliknij w poniższy odnośnik: #1.
Aby go zmienić należy w Panelu tłumaczeń w dowolnym obiekcie wprowadzić nowe tłumaczenie kontekstowe:
- Kategoria: TRANSLATIONS.
- Klucz: ALWAYS.
- Tłumaczenie 1: Witaj,\nAby ustawić nowe hasło do swojego konta, kliknij w poniższy odnośnik: #1.
- polski: np. Witamy, \naby ustawić nowe hasło do swojego konta, kliknij w poniższy odnośnik: #1.\nJeżeli to nie Ty dokonałeś tej operacji, zignoruj tą wiadomość.\nPozdrawiamy\n\nKlient.
Przygotowanie tłumaczeń kontekstowych¶
W oknach neosowych teksty pochodzą nie tylko z elementów stałych definiowanych w Neos Expercie, ale także z metod na etykietę, na objaśnienie oraz z komunikatów generowanych przez aplikację neosową (tzw. tłumaczenia kontekstowe). Aby przetłumaczyć takie wyrażenia należy skorzystać z trybu tłumacza (neosowego).
- W menu okna głównego zmień język na obcy.
- Uruchom neosowy tryb tłumacza (Konfiguracja -> Neos -> Tryb tłumacza).
- Uruchom okno, w którym chcesz przetłumaczyć teksty i popracuj na nim. Zobaczysz, że nowo tłumaczone teksty pokażą się w logu na dole ekranu.
- Wyłącz neosowy tryb tłumacza.
- Wejdź do neosowego panelu tłumaczeń tego obiektu. Zobaczysz w nim nowe teksty, które możesz tłumaczyć. Są one widoczne jedynie w panelu tłumaczeń, nie zobaczysz ich nigdzie indziej w Neos Expercie. Jeśli chcesz zobaczyć tylko tłumaczenia kontekstowe bez tłumaczeń stałych, kliknij "Pokaż tylko tłumaczenia kontekstowe"/"Show context translations only".
- Możesz używać tłumaczeń parametrycznych tak samo jak w panelu tłumaczeń aplikacji nieneosowych
Przykład
Mając tekst:
"Dokument XAB/123/2016 nie został zaakceptowany, gdyż towaru ABC13425 nie ma w magazynie."
zamień tekst polski na: "Dokument #1 nie został zaakceptowany, gdyż towaru #2 nie ma w magazynie."
i przetłumacz zostawiając #1 i #2 w tekście angielskim w dowolnym miejscu. Np tak: "Due to lack of #2, dokument #1 was not accepted."
Tłumaczenia kontestowe są stosowane wszędzie tam, gdzie tekst jest zwracany przez metody na etykietę lub objaśnienie oraz do generowania komunikatów (ShowMessageBox i ShowBalloonHint).
Tłumaczenie programowe¶
Nie podlegają tłumaczeniom dane ani wartości parametrów, gdyż te mogą często pochodzić np z bazy danych, w której wielojęzyczność nie jest do końca obsłużona. Jeśli wyświetlasz np parametr na oknie i metodą na inicjalizację przypisujesz do niego jakąś wartość, możesz programowo wymusić przejście przez mechanizm tłumaczeń kontekstowych, np zastępując:
public string Initialize_label()
{
return "Faktura: "+this.SYMBOL;
}
przez kod:
public string Initialize_label()
{
return TranslateText("Faktura: "+this.SYMBOL);
}
Podobnie wygląda sytuacja w przypadku tworzenia akcji dynamicznych. Możesz zastąpić kod:
Actions.CreateAction("Rezygnuję")
następującym:
Actions.CreateAction(TranslateText("Rezygnuję"))
Metoda TranslateText() przepuszcza dowolne teksty wskazane przez programistę przez mechanizm tłumaczeń kontekstowych, a więc teksty do tłumaczenia znajdą się w neosowym panelu tłumacza. Można do nich oczywiście stosować tłumaczenia parametryczne.
Uwaga!
Wszystkie tłumaczenia obiektów neosowych (także kontekstowe) nie są przechowywane w bazie danych, ale w plikach obiektów (*.bobj, *.bform).
Eksport / import tłumaczeń z excela¶
Od wersji 4.1.7 tłumaczenia można przygotowywać wsadowo w programie Excel lub Libre Office. W pierwszej kolejności należy wyeksportować arkusz do tłumaczeń. Realizujemy to w następujących krokach:
- Wchodzimy do panelu tłumaczeń (neosowego).
- Zawężamy dziedzinę w dowolny sposób (wskazując projekt, obiekt, itp).
- Naciskamy prawy przycisk myszy na gridzie -> Eksport danych -> excel
- Koniecznie wybieramy kolumny: PROJECTUUID, OBJECTUUID, ITEMUUID, PARENTUUID, Kategoria, Klucz, Nazwa a także wartości w języku polskim i wybranych innych językach. Same pola z kodem języka nie są konieczne.
- Zapisujemy plik na dysku. Plik powstaje w formacie starego excela (*.xls).
Następnie edytujemy arkusz w programie zewnętrznym. Możemy w arkuszu dodać kolejne kolumny z innymi językami. Jeśli to zrobimy, to nazwę języka należy napisać w nagłówku kolumny w języku polskim małymi literami. Pamiętajmy jednak aby arkusz koniecznie zapisać w formacie nowego excela (*.xlsx).
Import zredagowanego arkusza przeprowadzamy następująco:
- Wchodzimy do panelu tłumaczeń (neosowego).
- Naciskamy przycisk
Importuj z xlsx. - Wybieramy plik z arkuszem i naciskamy
Rozpocznij import.
Po udanym imporcie otrzymamy informację z ilością zaimportowanych tłumaczeń. W przypadku błędów pojawi się w logu stosowna informacja. Aby import działał musi być skonfigurowany transfer plików.