Graafisen käyttöliittymän ohjelmointi Syksy 2013



Samankaltaiset tiedostot
Käyttöliittymän lokalisointi. Juha Järvensivu 2008

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu

Tapahtumapohjainen ohjelmointi

Graafisen käyttöliittymän ohjelmointi

QT framework. Juha Järvensivu 2007

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Tiedostonkäsittely ja asetusten tallentaminen. Graafisen käyttöliittymän ohjelmointi Luento 14

Qt perusteet. Juha-Matti Vanhatupa. (vanhan kurssin Graafisen käyttöliittymän ohjelmointi materiaalia)

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Racket ohjelmointia. Tiina Partanen 2014

Qt-käyttöliittymäkirjasto

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Harjoitustyö: virtuaalikone

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Tekijät: Hellevi Kupila, Katja Leinonen, Tuomo Talala, Hanna Tuhkanen, Pekka Vaaraniemi

-versiot) Mozilla Firefox Safari Chrome. selaimista. Windows. Windows. Vista. Windows

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

ITKP102 Ohjelmointi 1 (6 op)

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Massaeditorikoulutus KANSALLISKIRJASTO - Kirjastoverkkopalvelut

Windows Live SkyDrive - esittely

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Sonera Hosted Mail -palvelun käyttöohje

Harjoitustehtävät ja ratkaisut viikolle 48

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmoinnin perusteet Y Python

Graafisen käyttöliittymän ohjelmointi

Loppukurssin järjestelyt

Ohjelmointi 1 Taulukot ja merkkijonot

Flash ActionScript osa 4

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Ala- ja loppuviite. Viitteen lisääminen

15. Ohjelmoinnin tekniikkaa 15.1

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

- Valitaan kohta Asetukset / NAT / Ohjelmallinen palvelin - Seuraavassa esimerkki asetuksista: valitaan käytössä oleva ohjelmistorajapinta

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ)

Message Broadcasting. Käyttöympäristö. Message Broadcasting -laajennuksen asentaminen. Viestien luominen

Valppaan asennus- ja käyttöohje

Rakenteiset tietotyypit Moniulotteiset taulukot

Kielitaito ja talous. Roope Uusitalo

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Racket ohjelmointia I

Esimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005

Ohjelmointiharjoituksia Arduino-ympäristössä

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Hyvä vesihuoltohanke, suunnittelijan näkökulma

Loppukurssin järjestelyt C:n edistyneet piirteet

Lokalisointitestaus. Matti Vuori, 1(17)

Osion kaksi kertaus. Jukka Juslin. Jukka Juslin

Valikot ja työkalupalkit. 2008

Taulukot. Jukka Harju, Jukka Juslin

8. Näppäimistöltä lukeminen 8.1

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Tietokannan rakenteen suunnittelu

Molemmille yhteistä asiaa tulee kerralla enemmän opeteltavaa on huomattavasti enemmän kuin englannissa

Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006

Voit käyttää tekemääsi ohjelmaa seuraavan viikon harjoituksissa, joten kopio työsi hedelmät talteen äläkä tuhoa niitä.

Luento 5. Timo Savola. 28. huhtikuuta 2006

STS Uuden Tapahtuma-dokumentin teko

Digi-TV:n uusi aikakausi

Racket ohjelmointia II. Tiina Partanen 2015

Ohjelmointi 1 C#, kevät 2013,

OHJ-1151 Ohjelmointi IIe

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

4. Lausekielinen ohjelmointi 4.1

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Johdatus L A TEXiin. 6. Omat komennot ja lauseympäristöt Markus Harju. Matemaattiset tieteet

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

ITKP102 Ohjelmointi 1 (6 op)

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

5. HelloWorld-ohjelma 5.1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

8. Näppäimistöltä lukeminen 8.1

Tutkimusdatanhallinnan suunnittelu ja DMPTuuli-työkalu

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Asteri Kirjanpito Dos ALV% nousu 1 %-yksiköllä Vuosipäivitys

Discgolf scorekeeper - Fisbeegolf pistetilasto. Ville-Veikko Saari 12. tammikuuta 2016

Nspire CAS - koulutus Ohjelmiston käytön alkeet Pekka Vienonen

Tietorakenteet ja algoritmit

P-Analyzer. PPA-Budjetointi. Käyttöohjeet

Tekninen suunnittelu

Ohjeita. Datan lukeminen

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Tarkoitus. Edellytykset. Kirjautuminen HAKA-tunnistautumisen kautta

LINGMACHINE S-E. TranSmart -järjestelmän lokalisointi ulkoasiainministeriölle

1. Mitä tehdään ensiksi?

Rakenteisen ohjelmoinnin harjoitustyö

Avoindata.fi. Palvelu julkishallinnon avoimen datan ja yhteentoimivuutta edistävien ohjeiden jakamiseen

14. Hyvä ohjelmointitapa 14.1

Android ohjelmointi Tunti 5. SQLite, Cursor, Intent ja ADB

Lyhyt kertaus osoittimista

ITKP102 Ohjelmointi 1 (6 op)

Web-teknologiat. XML-datan kysely Topi Sarkkinen

Tutkimusaineistojen tekijänoikeus. TTA, Tekijänoikeus ja tutkimusetiikka, Helsinki OTT Pirjo Kontkanen

5.5 Jäsenninkombinaattoreista

Transkriptio:

TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 11 Käyttöliittymän lokalisointi Juha-Matti Vanhatupa

Sisältö Lokalisoinnin haasteita Käännöksen käyttöönotto

Termejä Internationalisointi on tuotteiden sovittamista potentiaaliseen käyttöön periaatteessa missä tahansa. Tuotteesta tehdään siis sellainen, että kieli- ja kulttuuritaustoiltaan erilaiset ihmiset pystyvät hyödyntämään sitä vaivatta. lokalisointi tarkoittaa erityispiirteiden lisäämistä tietyssä määrätyssä kohteessa tapahtuvaa käyttöä varten.

Lokalisoinnin painopisteitä Päiväys ja kellonaika Valuutta Kielet Puhelinnumerot ja osoitteet Mittayksiköt

Haasteita Käyttöliittymään liitetyt tekstit ovat eri mittaisia eri kielillä kirjoitettuna Joissakin maissa luetaan vasemmalta oikealle Erikoismerkit esim ääkköset (Kalenterit) Päivämäärän formaatti ddmmyy, yymmdd Lukujen esittäminen desimaalipilkku vai -piste

Ratkaisuja Jaetaan käyttöliittymä kulttuuri-neutraaliin osaan ja lokalisoitavaan osaan Suuri osa ohjelmasta toimii suoraan kaikissa kulttuureissa Tallennetaan kulttuurisidonnaiset osat resurssitiedostoihin Uuden kulttuurin tukeminen ei vaadi muutoksia lähdekooditasolla

Kielen valinta Mitä kieltä ohjelma käyttää Voiko käyttäjä valita käytettävän kielen ohjelman asetuksista? Valitaanko kieli jo ohjelman asennusvaiheessa? Valitseeko ohjelma käytettävän kielen automaattisesti käyttöjärjestelmän kielen perusteella? Kaksikielisyyttä tulee välttää ohjelmassa ei saa olla sekaisin esim. suomen ja englannin kieltä

1. Mieti minkälaista lokalisointia ohjelmalta mahdollisesti vaaditaan - Lokalisointi yleensä huomattavasti yksinkertaisempaa sukulaiskielille LTR vs RTL

2. Toteuta ohjelmaan tuki lokalisoinnille vaikka lokalisointia ei olisi tarkoitus heti tehdäkään - Vähäinenkin tuki helpottaa huomattavasti lokalisoinnin toteutusta jälkikäteen

3. Määrittele ohjelman merkkijonot omassa tiedostossaan (tai lue Esim. suoraan resurssitiedostosta) // Translations const String STR_BUTTON_OK = OK ; const String STR_BUTTON_CANCEL = Cancel ; const String STR_FILE_MENU = &File ; const String STR_FILE_ERROR = File cannot be read. ;

4. Suunnittele dialogin layout siten, että käännösteksteille jää riittävästi tilaa - Rivitä pitkät UI-tekstit label = Teksti joka jakaantuu usealle riville label.setwordwrap(true);

5. Noudata yhdenmukaista linjaa - OK vs Ok toimintojen nimeämisessä - File vs &File - Entä jos samalla sanalla onkin useampi merkitys toisessa kielessä?

Qt:n kielituki QT:n sisään rakennettu tuki useille eri kielille All East Asian languages (Chinese, Japanese and Korean) All Western languages (using Latin script) Arabic Cyrillic languages (Russian, Ukrainian, etc.) Greek Hebrew Thai and Lao All scripts in Unicode 4.0 that do not require special processing

QT:n lokalisointiprosessin vaiheet 1. Määritellään tekstit lokalisoituviksi (translate-funktio) 2. Määritellään tuetut kielet projekti-filessä (.pro) 3. Generoidaan ts-tiedostot (lupdate) 4. Tehdään varsinainen käännös (Linguist) 5. Generoidaan valmiit binäärit (lrelease) 6. Otetaan käännös käyttöön aplikaatiossa (QTranslate)

tr() -funktio Merkitsee merkkijonon käännöskohteeksi (translation target) Koska tr funktiota yleensä kutsutaan QObject:n aliluokassa sitä voidaan kutsua suoraan, mutta myös QPushButton::tr("&Quit") tai QObject::tr("&Quit") toimivat Merkkijonot tunnistetaan isäntäkomponentin avulla

tr() -funktio Kaksi samaa merkkijonoa samassa komponentissa voidaan erottaa käyttäen tr() funktion toista parametriä rbc = new QRadioButton(tr("Enabled", "Color frame"),this); rbh = new QRadioButton(tr("Enabled", "Hue frame"),this);

Projektitiedoston muutokset Lisää projekti-tiedostoon(.pro) tarvittavat kielet TRANSLATIONS += arrowpad_en.ts TRANSLATIONS += arrowpad_fi.ts

lupdate - komento Käyttö: lupdate myproject.pro Etsii projektin koodeista käännettävät tekstit ja luo/päivittää translaatio tiedostot (ts-filet). Generoidut ts-filet annetaan kääntäjälle, joka tekee käännökset Qt Linguist ohjelmalla.

Ts-tiedosto XML-tiedosto, joka sisältää käännettävät tekstit <!DOCTYPE TS><TS> <context> <name>menu text </name> <message> <source> &File </source> <translation type="unfinished"></translation> </message> <comment> text shown on file menu </comment> </context> </TS>

Käännöksen tekeminen QtLinguist ohjelmalla Onko kääntäjällä ajettava ohjelma käytössä vai pitääkö käännös tehdä annetun kontekstin ja optionaalisen kommentin varassa?

Käännöksen tekeminen

Target locale Voidaan määrittää ts-filessä <!DOCTYPE TS><TS version="1.1" language="fi"> Jos ei ole määritetty, niin liguist yrittää arvata kielen tiedoston nimestä myapp_fi.ts

lrelease - komento Käyttö: lrelease myproject.pro Muuntaa xml-muotoiset ts-tiedostot binääri muotoon (qm-file) Sovellus käyttää lokalisoitua tekstiä qm-filestä, jos sellainen löytyy lrelease hyväksyy vain ne merkkijonot, jotka ovat tyyppiä finished.

Translaation käyttöönotto int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator translator; translator.load("hellotr_la"); app.installtranslator(&translator); QPushButton hello(qpushbutton::tr("hello world!")); hello.resize(100, 30); hello.show(); return app.exec(); }

Translaation käyttöönotto (vaihtoehto 2) int main(int argc, char *argv[]) { } QApplication app(argc, argv); QString locale = QLocale::system().name(); QTranslator translator; translator.load(qstring("arrowpad_") + locale); app.installtranslator(&translator);