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.