Eric
Bischoff
Stefan
Asserhäll

    stefan.asserhall@telia.com

Översättare
2002-01-14
0.02.08
KDE
Potatismannen
teknisk referens

# Teknisk referens

Potatismannen erbjuder en mjuk och lönande inledning till anpassning och programmering av &kde;. Programmet kan utökas. Utan att koda kan till exempel nya lekplatser läggas till genom att ändra grafikfiler. Genom att lägga till lämpliga ljudfiler, kan översättare ändra ljuden till sitt modersmål!

Om du utökar eller lägger till något i spelet, fundera på att skicka dina tillägg till utvecklaren Eric Bischoff så att de kan läggas till i framtida utgåvor.

## För grafiker

Storleken och formen på lekplatsen och antalet objekt kan ändras. Nya lekplatser kan läggas till. Bara två bildfiler behöver skapas för varje lekplats: ett spelbräde och en mask. Maximalt åtta lekplatser tillåts, med endast två i användning för närvarande.

Fyra bilder används i Potatismannen: `potato-game.png`, `potato-mask.png`, `penguin-game.png` och `penguin-mask.png`. Den normala platsen för de här filerna är katalogen `$KDEDIR/share/apps/ktuberling/pics/`.

Den första typen bilder, `*-game.png` innehåller lekplatsen och objekten som användaren väljer. Det här är grafiken som användaren ser när spelet används.

Den andra typen bilder, `*-mask.png` innehåller bara masker för objekt. Maskerna används för att avgränsa kanterna på objekten, och i vissa fall ge objekten en viss genomskinlighet (till exempel glasögonen). Det rekommenderas, men krävs inte, att placera objekten på samma plats i spelbrädesfilen som i maskfilen.

I samma katalog, talar filen som heter `layout.xml` (`$KDEDIR/share/apps/ktuberling/pics/layout.xml`) om vilka bilder som ska användas och länkar ihop dem med menyalternativ. Den innehåller också platsparametrar för spelbrädet, objekten på spelbrädet och maskerna. Slutligen tilldelar den ljuden till objekt och placerar objekten i grupper. Den följer vanlig XML-syntax (se nedan för detaljer).

Fortfarande i samma katalog, upprepar en fil som heter `layout.i18n` (`$KDEDIR/share/apps/ktuberling/pics/layout.xml`) strängarna i `layout.xml` som kan översättas:

- Menyalternativen som låter dig välja spelbräden

- Namnen på objektkategorier

- Namnen på ljudfiler. Det här är ett programmeringstrick som tillåter att översättningsgrupperna spelar in någon som säger namnen på objekt på deras egna språk, och refererar till namnen på de här ljudfilerna om de finns.

En katalog ovanför finns en fil som heter `ktuberlingui.rc` `$KDEDIR/share/apps/ktuberling/ktuberlingui.rc`), som är en andra XML-fil där Potatismannens menyer beskrivs. Den ska innehålla en <action>-tagg för varje lekplats. Det symboliska namnet på åtgärden i den här filen ska vara identiskt med det symboliska namnet på åtgärden i `layout.xml`.

## Översättning

Förutom den vanliga `.po`-fil mekanismen för att översätta programrubriker och promptrar, kan ljuden också anpassas.

Om de olika översättarna kan spela in sina röster i `.wav` filer, kan de lagra filerna i en språkspecifik underkatalog. Namnen på ljudfilerna översätts sedan i `.po`-filen. Om språket som översätts till är italienska, kan översättaren spela in sin röst i `.ogg`-filer som placeras i `$KDEDIR/share/apps/ktuberling/sounds/it`. Därefter kan filnamn som `en/hat.wav` översättas till namn som `it/capello.wav`.

I en framtida utgåva, kommer &ktuberling; att använda OGG Vorbis rc3 filformatet för ljud. För närvarade är det möjligt att konvertera WAV-filer till OGG Vorbis rc3, med följande kommandorad:

    $ oggenc_rc3 -o ljud.ogg ljud.wav

Information om hur man arbetar med översättningsmekanismen i &kde; finns tillgänglig på KDE Translation HOWTO.

## För programmerare

Potatismannen är inte särskilt svår att utöka för programmerare.

### C++ klasser

`TopLevel`

  Toppnivåfönster och grundläggande programhantering

`ToDraw`

  Beskrivning av ett av de grafiska objekten som ska ritas

### Struktur för filen `.tuberling`

En `.tuberling`-fil innehåller all nödvändig data för att rita om en potatisman. Den kan redigeras med en vanlig texteditor.

Den första raden innehåller antalet lekplatser.

På alla andra rader finns det ett grafiskt objekt per rad, i den ordning som används för att rita upp dem. Varje rad innehåller fem tal: objektets identifierare och rektangeln där det ska ritas (vänster, över, höger, under). Talen skiljs med mellanslag.

## Struktur för layoutfilen (`layout.xml`)

Toppnivåtaggen är unik och heter <ktuberling>. Den innehåller flera <playground>-taggar, en för varje lekplats.

Taggen <playground> har två attribut: gameboard och masks. Dessa attribut ger namnen på filerna som innehåller bilderna. Taggen <playground> innehåller också en tagg som heter <menuitem>, en tagg som heter <editablearea>, flera taggar som heter <category> och flera taggar som heter <object>.

Taggen <menuitem> beskriver identifieraren för menyalternativet som tillåter att platsen för området där man kan släppa objekt väljs, och namnet på det här menyalternativet. Den här identifieraren ska vara identisk med den i `ktuberlingui.rc`.

Taggen <editablearea> beskriver platsen för området där man kan släppa objekt, och ljudet som hör ihop med detta.

Taggen <category> beskriver platsen och namnet på en text som anger en grupp av objekt. Den kan till exempel beskriva platsen och namnet på gruppen med godsaker.

Taggen <object> beskriver platsen för ett objekt (på spelbrädet och i maskerna), samt det engelska ljudet som hör ihop med det.

Taggarna på lägre nivå förklaras inte här, eftersom deras betydelse är ganska rättfram. Om du ändrar `layout.xml`, glöm då inte att också ändra `layout.i18n` och `ktuberlingui.rc`.