Dwu językowa aplikacja

Sprawy związane z interfejsem użytkownika - kontrolki, wskaźniki, wyświetlacze, wykresy oraz inne zagadnienia tego typu...
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Dwu językowa aplikacja

Post autor: Gość »

Witam serdecznie

Jestem początkującym użytkownikiem LABView 7.1 Express

Mam za zadanie przerobić istniejącą aplikację, która jest cała w języku angielskim na taką z możliwością przełączania wyświetlanych tekstów (np. opisy przycisków itp.) z języka angielskiego na polski i odwrotnie

Proszę o jakąś podpowiedź :-)

Pozdrawiam
Jacek
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

Kontrolki na panelu mogą mieć dwa rodzaje opisów: Caption i Label.
W sytuacji o ktrą pytasz operuje się na opisach typu Label, gdyz można je edytować w czasie pracy VI'ja.
Panel każdego VI'ja można odczytać i sprawdzić nazwy kontrolek korzystając z węzłów własności (Property Node) w sposób taki jak na poniższym rysunku
Obrazek
Aby ustawić opisy kontrolek można wykorzystać taką strukturę diagramu
Obrazek
Jak widać to ten sam Vi druga ramka CASE. Dodatkowo ustawiany jest tryb Visible czyli widoczność obu rodzajow opisów.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

W sytuacji o którą pytasz operuje się na opisach typu Label, gdyz można je edytować w czasie pracy VI'ja.
Chyba właśnie na odwrót.
Label to niejako nazwa zmiennej(kontrolki), Caption to jej opis widoczny na panelu(tak przynajmniej powinno być) i to tą właśnie wartość należy edytować za pomocą Property Node. Sposób przedstawiony na rysunkach Mikrobiego działa w przypadku, gdy zmieniany vi jest w trybie edycji(czyli po ludzku jeśli nie jest w trakcie działania).
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

Racja. Idę się powstydzić do kąta.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

Racja. Idę się powstydzić do kąta.
Koniecznie na grochu
:D
A co do tej aplikacji jeszcze. Posprawdzaj najpierw czy angielskie opisy kontrolek są zawarte rzeczywiście w elementach Caption(tak być powinno, ale złe zwyczaje wpychają opisy dla Labela).
Wypisz na kartce typy wszystkich elementów tekstowych które trzeba będzie zmieniać na polski.
Reszta to kwestia decyzji, czy robić tłumaczenie "na żywca" w programie czy też - ładniej i ciut trudniej - porobić np. pliki językowe wczytywane w zależności od wybranego języka.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

jogurt_owocowy pisze:
Racja. Idę się powstydzić do kąta.
Koniecznie na grochu
:D
Pewnie, nie jest tak źle miałem jeszcze świeży na działce.
jogurt_owocowy pisze:A co do tej aplikacji jeszcze. Posprawdzaj najpierw czy angielskie opisy kontrolek są zawarte rzeczywiście w elementach Caption(tak być powinno, ale złe zwyczaje wpychają opisy dla Labela).
Między innymi dlatego, że domyślnie widoczny jest właśnie Label.
jogurt_owocowy pisze:Wypisz na kartce typy wszystkich elementów tekstowych które trzeba będzie zmieniać na polski.
Reszta to kwestia decyzji, czy robić tłumaczenie "na żywca" w programie czy też - ładniej i ciut trudniej - porobić np. pliki językowe wczytywane w zależności od wybranego języka.
Moim zdanie tak właśnie trzeba (plikiem). Diagram ma tylko pokazać metodę, a odczyt z pliku tekstowego nie jest przecież jeszcze Wyższą Szkołą Jazdy ;)
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

a odczyt z pliku tekstowego nie jest przecież jeszcze Wyższą Szkołą Jazdy
Odczyt pliku tekstowego to nie problem, ale zastanawiałem się trochę nad praktycznymi szczegółami takiego rozwiązania.
Załózmy, że mamy aplikację po angielsku, w pętelce wyciągamy z kontrolek opisy(jak na rysunku) i zapisujemy do pliku ang.txt. Tłumaczymy plik wiersz po wierszu na polski, zapisujemy w pol.txt, w analogicznej pętelce ładujemy nowy język i jest ok. Ale teraz mamy chęć zmienić trochę aplikację, skasować dwie kontrolki, dodać trzy nowe i jak załadujemy stary plik to się nam zrobi kuku, bo opisy nie będą odpowiadały kontrolkom(tablica referencji kontrolek się zmieni - górny rysunek).
Tak więc otwarte pytanie: Jak w pliku najlepiej skojarzyć kontrolkę z jej opisem, żeby poprawność wczytywania nie zależała od kolejności nazw w pliku, ale też żeby jednocześnie plik wyglądał "przyjaźnie" dla potencjalnego tłumacza? Etykiety (Label) mogą być takie same, a dobrze, żeby metoda była "idiotoodporna".
W międzyczasie przyszedł mi do głowy pomysł, że można by też wykorzystać pole Description każdej z kontrolek. Stworzyć sobie prostą składnię w rodzaju
<pol>guzik <ang>button ...
i w tym polu definiować wielojęzyczne nazwy. Przy zmianie języka w pętelce odczytujemy pole Description kolejnych kontrolek i odpowiednio ustawiamy ich opisy(Captiony). Wtedy przy zmianach aplikacji nam nic nie zginie :)
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

Label można wykorzystać jako niewidoczny indentyfikator kontrolki. Pozwoli to na korzystanie z takiego rozwiązania:
Obrazek
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

To oczywiście w znakomitej większości przypadków będzie działać. Ale jak już pisałem w poprzednim poście...
Co w takim wypadku?
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

Zwróć uwagę na to, że przynajmniej od wersji 6.1 kopiowanie kontrolki powoduje automatyczne uzupełnienie nazwy o indeks zaczynający się od "2".
Label jest etykietą identyfikującą kontrolkę również od strony diagramu. Z założenia więc nie powinny występować dwie kontrolki o tej samej nazwie. ... cóz, jeśli jednak ktoś chce popełniać podstawowe błędy logiczne podczas programowania, to wybacz, ale w tym przypadku pozwolę mu strzelić sobie w stopę. ;)
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

w tym przypadku pozwolę mu strzelić sobie w stopę
:D hehe - niech strzela
Wiadomo, że nikt normalny nie da dwóch takich samych nazw. LV dodaje sobie numerki, ale jak ktoś uparty mu numerek skasuje to nie protestuje. Moje pytanie było raczej czysto teoretyczne, mające na celu rozrywkę umysłową, poprawę kwalifikacji przez rozwiązywanie abstrakcyjnych problemów, bla bla bla... :)
PS. Dla żądnych rozrywki - referencja nie działa.
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

Cóż, jeśli chcesz sięgać Dalekich Abstrakcji 0. Operujemy z zewnetrznego VIja na naszym Abstrakcyjnym Problemie ;). (założenie zerowe) 1. Stworzyć tablicę klastrów dla wszystkich kontrolek, każdy klaster zawierający pobrane z referencji kontrolki dane:
Caption.Text Label.Text Position.Left Position.Top To nam da w zasadzie wszystkie informacje o kontrolkach, chyba że ktoś strzela sobie w stopę z obrzyna i w dodatku śrutem na dziki, czyli kładzie kontrolki jedna na drugiej (TopTopLevelAbstraction ;) ) 2. Wyciągnąć wszystkie nazwy Label.Text i Caption.Text 2. Jeśli nazwy się powtarzają ponumerować roboczo Caption.Text 3. Zamknąć VIja na którym operujesz przenieśc tymczasowe nazwy z Caption na Label (powinno zadzialać jeśli VI jest w trybie edycji, czyli operujemy "z zewnatrz") 4. Mamy zróżnicowane Label.Text . 5. Korzystamy z diagramu w poprzednim poście z lekkimi modyfikacjami.
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
Gość
Posty: 656
Rejestracja: 10 lis 2003 00:00

Re: Dwu językowa aplikacja

Post autor: Gość »

Pozwolę sobie na wtrącenie się.

Label to nazwa zmiennej NIE EDYTOWALNA w trakcie działania aplikacji.
Caption to string opisu EDYTOWALNY.

Sugeruję zatem użycie Caption do funkcji zmiany opisu elementu panelu frontowego (tudzież języka ...).

(:

Pozdrawiam,
PHdeR.
Awatar użytkownika
jogurt_owocowy
Posty: 1317
Rejestracja: 30 lis 2004 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków

Re: Dwu językowa aplikacja

Post autor: jogurt_owocowy »

Label to nazwa zmiennej NIE EDYTOWALNA w trakcie działania aplikacji. Caption to string opisu EDYTOWALNY.
Zgadza się - do tego już doszliśmy (:
No... tak się tylko zastanawiałem, że skoro LV jakoś wie która kontrolka jest która to może dałoby się to jakoś z niego wyciągnąć. Ale summa sumarum... wychodzi na to, że najlepszym sposobem identyfikacji kontrolki w takim zastosowaniu jest połączenie Labela z Captionem - albo kontrolka będzie jednoznacznie zidentyfikowana, albo - jeżli ma takie same Labele i Captiony - jej pomylenie z inną nie będzie miało znaczenia. Ale to jakieś takie... nieeleganckie trochę :P
To by było na tyle abstrakcyjnej rozrywki umysłowej. That's all folks (w czym to było... w Mapeciątkach? :D )
Awatar użytkownika
Mikrobi
Posty: 1210
Rejestracja: 08 paź 2003 00:00
Wersja środowiska: LabVIEW 2017

Re: Dwu językowa aplikacja

Post autor: Mikrobi »

jogurt_owocowy pisze:To by było na tyle abstrakcyjnej rozrywki umysłowej. That's all folks (w czym to było... w Mapeciątkach? :D )
Bugs. Królik Bugs i Inne: Warner Bros - Looney Tunes
pozdrawiam
Mikrobi

LabVIEW Champion, CLD, CPI
ODPOWIEDZ