Dwu językowa aplikacja
Dwu językowa aplikacja
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
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
Re: Dwu językowa aplikacja
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
Aby ustawić opisy kontrolek można wykorzystać taką strukturę diagramu
Jak widać to ten sam Vi druga ramka CASE. Dodatkowo ustawiany jest tryb Visible czyli widoczność obu rodzajow opisów.
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
Aby ustawić opisy kontrolek można wykorzystać taką strukturę diagramu
Jak widać to ten sam Vi druga ramka CASE. Dodatkowo ustawiany jest tryb Visible czyli widoczność obu rodzajow opisów.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
Chyba właśnie na odwrót.W sytuacji o którą pytasz operuje się na opisach typu Label, gdyz można je edytować w czasie pracy VI'ja.
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).
Re: Dwu językowa aplikacja
Racja. Idę się powstydzić do kąta.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
Koniecznie na grochuRacja. Idę się powstydzić do kąta.
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.
Re: Dwu językowa aplikacja
Pewnie, nie jest tak źle miałem jeszcze świeży na działce.jogurt_owocowy pisze:Koniecznie na grochuRacja. Idę się powstydzić do kąta.
Między innymi dlatego, że domyślnie widoczny jest właśnie Label.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).
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 ;)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.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
Odczyt pliku tekstowego to nie problem, ale zastanawiałem się trochę nad praktycznymi szczegółami takiego rozwiązania.a odczyt z pliku tekstowego nie jest przecież jeszcze Wyższą Szkołą Jazdy
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
Re: Dwu językowa aplikacja
Label można wykorzystać jako niewidoczny indentyfikator kontrolki. Pozwoli to na korzystanie z takiego rozwiązania:
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
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?
Co w takim wypadku?
Re: Dwu językowa aplikacja
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ę. ;)
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ę. ;)
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
hehe - niech strzelaw tym przypadku pozwolę mu strzelić sobie w stopę
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.
Re: Dwu językowa aplikacja
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.
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.
Re: Dwu językowa aplikacja
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.
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.
- jogurt_owocowy
- Posty: 1317
- Rejestracja: 30 lis 2004 00:00
- Wersja środowiska: LabVIEW 2015
- Lokalizacja: Kraków
Re: Dwu językowa aplikacja
Zgadza się - do tego już doszliśmy (:Label to nazwa zmiennej NIE EDYTOWALNA w trakcie działania aplikacji. Caption to string opisu EDYTOWALNY.
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ę
To by było na tyle abstrakcyjnej rozrywki umysłowej. That's all folks (w czym to było... w Mapeciątkach? )
Re: Dwu językowa aplikacja
Bugs. Królik Bugs i Inne: Warner Bros - Looney Tunesjogurt_owocowy pisze:To by było na tyle abstrakcyjnej rozrywki umysłowej. That's all folks (w czym to było... w Mapeciątkach? )