Skip to main content

Aplikacje wielojęzyczne

Aby nasza aplikacja odniosła sukces, musimy myśleć globalnie, czyli nie nastawiać się tylko na rynek lokalny.
Aplikacja powinna dostarczać wielojęzyczny interfejs użytkownika, aby trafiła do jak najszerszej grupy wizytowników.
To z kolei zwiększy liczbę pobrań naszej aplikacji i pozwoli odnieść większe korzyści finansowe, jeśli zechcesz pobierać opłaty za swój program.

Załóżmy, że na formularzu masz umieszczony przycisk o nazwie IDC_ORIENTATION_BUTTON.

Przycisk posiada atrybut Text, który możemy zmienić w oknie Properties.


Jako wartość możemy podać jakikolwiek tekst, lub wybrać z rozwijalnej listy odpowiedni identyfikator przetłumaczonego wcześniej tekstu, którego w tym momencie nie powinieneś widzieć.
Należy zaznaczyć, że nie każda kontrolka posiada taką funkcjonalność i wtedy trzeba zaprogramować odpowiednie działanie, co zostanie także opisane.

Spróbujmy więc dodać tłumaczenie tekstu naszego przycisku, który będzie wyświetlał tekst w języku angielskim i polskim.

Klikamy podwójnie na pozycję String w oknie Resource naszego projektu.

Pojawi nam się okno z listą zdefiniowanych języków. Na poniższym obrazku mam już zdefiniowane dwa języki i jeden String IDS_ORIENTATION (tekst do przycisku).

Po kliknięciu prawym klawiszem myszki na okno, z menu kontekstowego wybieramy Language Settings i pojawi nam się okno dialogowe, pokazane poniżej.
Zaznaczamy wybrany język z lewej listy i przenosimy na prawą stronę.

Potwierdzamy przez OK. Jeszcze raz klikamy prawym klawiszem i tym razem wybieramy z menu kontekstowego opcję Insert uzupełniając pola wg poniższego wzoru.
Teksty edytujemy przez podwójne kliknięcie na wybrane pole.

Wracamy jeszcze raz do naszego okna Properties i ustawiamy atrybut Text dla przycisku na wartość wybraną z listy IDS_ORIENTATION.

To wszystko, jeśli chodzi o tłumaczenie za pomocą bada UI Builder.

Jeśli kontrolka nie umożliwia wyboru zdefiniowanych stringów za pomocą listy, po prostu wpisz identyfikator stringa ręcznie i skorzystaj z poniższego kodu.
Fragment kodu (bez plików nagłówkowych) powinieneś umieścić w funkcji OnInitializing() formularza.

#include <FApp.h>
#include <FBase.h>
#include <FUi.h>

Osp::App::Application* pApp = Osp::App::Application::GetInstance();

Osp::Base::String button_text;

Osp::Ui::Controls::Button* button = static_cast<Button*>(GetControl("IDC_ORIENTATION_BUTTON"));

// Pobranie przetłumaczonego tekstu z Resource String
pApp->GetAppResource()->GetString(button->GetText(), button_text);

// Przypisanie tekstu do przycisku
button->SetText(button_text);

// Wyświetlenie tekstu w oknie Output
AppLogDebug("Button Text: %S", button_text->GetPointer());

Pozostaje pytanie, jak zmienić język i przetestować działanie naszego programu?
Każdy użytkownik ma możliwość wyboru języka w ustawieniach swojego telefonu.
Jeśli wybrany język istnieje w naszych zasobach, zostanie automatycznie załadowany, w przeciwnym razie zostanie wybrany domyślny język angielski.
Z tego też powodu, nigdy nie należy go usuwać z naszych zasobów.

 

markac

Full-stack Web Developer